@loaders.gl/scene 5.0.0-beta.2 → 5.0.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (276) hide show
  1. package/DRACO-README.md +1 -1
  2. package/GLTF-README.md +1 -1
  3. package/OBJ-README.md +1 -1
  4. package/README.md +6 -1
  5. package/THIRD-PARTY-NOTICES.md +6 -0
  6. package/dist/dist.dev.js +6557 -1363
  7. package/dist/dist.min.js +24 -16
  8. package/dist/draco/draco-javascript-loader-with-parser.d.ts +2 -2
  9. package/dist/draco/draco-loader-types.cjs +3 -3
  10. package/dist/draco/draco-loader-types.cjs.map +2 -2
  11. package/dist/draco/draco-loader-types.d.ts +1 -1
  12. package/dist/draco/draco-loader-types.d.ts.map +1 -1
  13. package/dist/draco/draco-loader-types.js +1 -1
  14. package/dist/draco/draco-loader-types.js.map +1 -1
  15. package/dist/draco/draco-loader.d.ts +2 -2
  16. package/dist/draco/draco-wasm-loader-with-parser.d.ts +2 -2
  17. package/dist/draco/draco3d-loader-with-parser.d.ts +2 -2
  18. package/dist/draco/lib/utils/version.cjs +1 -1
  19. package/dist/draco/lib/utils/version.js +1 -1
  20. package/dist/draco-worker-node.js +806 -158
  21. package/dist/draco-worker-node.js.map +4 -4
  22. package/dist/draco-worker.js +775 -158
  23. package/dist/draco-worker.js.map +4 -4
  24. package/dist/draco-writer-worker-node.cjs +2122 -219
  25. package/dist/draco-writer-worker-node.cjs.map +4 -4
  26. package/dist/draco-writer-worker.js +2053 -220
  27. package/dist/draco-writer-worker.js.map +4 -4
  28. package/dist/gltf/gltf-loader-types.cjs.map +2 -2
  29. package/dist/gltf/gltf-loader-types.d.ts +6 -0
  30. package/dist/gltf/gltf-loader-types.d.ts.map +1 -1
  31. package/dist/gltf/gltf-loader-types.js.map +1 -1
  32. package/dist/gltf/index.cjs +2 -0
  33. package/dist/gltf/index.cjs.map +2 -2
  34. package/dist/gltf/index.d.ts +2 -2
  35. package/dist/gltf/index.d.ts.map +1 -1
  36. package/dist/gltf/index.js +1 -1
  37. package/dist/gltf/index.js.map +1 -1
  38. package/dist/gltf/lib/api/gltf-extensions.cjs +7 -2
  39. package/dist/gltf/lib/api/gltf-extensions.cjs.map +2 -2
  40. package/dist/gltf/lib/api/gltf-extensions.d.ts.map +1 -1
  41. package/dist/gltf/lib/api/gltf-extensions.js +7 -5
  42. package/dist/gltf/lib/api/gltf-extensions.js.map +1 -1
  43. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs +1 -0
  44. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs.map +2 -2
  45. package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  46. package/dist/gltf/lib/extensions/EXT_texture_webp.js +3 -0
  47. package/dist/gltf/lib/extensions/EXT_texture_webp.js.map +1 -1
  48. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs +45 -0
  49. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs.map +7 -0
  50. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts +6 -0
  51. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts.map +1 -0
  52. package/dist/gltf/lib/extensions/KHR_accessor_float64.js +20 -0
  53. package/dist/gltf/lib/extensions/KHR_accessor_float64.js.map +1 -0
  54. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs +23 -7
  55. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs.map +2 -2
  56. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts +2 -1
  57. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts.map +1 -1
  58. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js +21 -5
  59. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js.map +1 -1
  60. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs +64 -0
  61. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs.map +7 -0
  62. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts +12 -0
  63. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts.map +1 -0
  64. package/dist/gltf/lib/extensions/MSFT_texture_dds.js +39 -0
  65. package/dist/gltf/lib/extensions/MSFT_texture_dds.js.map +1 -0
  66. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs +1 -1
  67. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs.map +2 -2
  68. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -1
  69. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js +3 -1
  70. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js.map +1 -1
  71. package/dist/gltf/lib/parsers/parse-gltf.cjs +25 -0
  72. package/dist/gltf/lib/parsers/parse-gltf.cjs.map +2 -2
  73. package/dist/gltf/lib/parsers/parse-gltf.d.ts +2 -0
  74. package/dist/gltf/lib/parsers/parse-gltf.d.ts.map +1 -1
  75. package/dist/gltf/lib/parsers/parse-gltf.js +18 -0
  76. package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -1
  77. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs +22 -0
  78. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs.map +2 -2
  79. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts +23 -0
  80. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts.map +1 -1
  81. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js +22 -0
  82. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js.map +1 -1
  83. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs.map +1 -1
  84. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts +1 -1
  85. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts.map +1 -1
  86. package/dist/gltf/lib/types/gltf-extension-schemas.cjs +8 -0
  87. package/dist/gltf/lib/types/gltf-extension-schemas.cjs.map +2 -2
  88. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts +27 -0
  89. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts.map +1 -1
  90. package/dist/gltf/lib/types/gltf-extension-schemas.js +8 -1
  91. package/dist/gltf/lib/types/gltf-extension-schemas.js.map +1 -1
  92. package/dist/gltf/lib/types/gltf-json-schema.cjs.map +1 -1
  93. package/dist/gltf/lib/types/gltf-json-schema.d.ts +2 -2
  94. package/dist/gltf/lib/types/gltf-json-schema.d.ts.map +1 -1
  95. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs +19 -0
  96. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs.map +7 -0
  97. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts +45 -0
  98. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts.map +1 -0
  99. package/dist/gltf/lib/types/gltf-texture-procedurals.js +5 -0
  100. package/dist/gltf/lib/types/gltf-texture-procedurals.js.map +1 -0
  101. package/dist/gltf/lib/types/gltf-types.cjs.map +1 -1
  102. package/dist/gltf/lib/types/gltf-types.d.ts +7 -0
  103. package/dist/gltf/lib/types/gltf-types.d.ts.map +1 -1
  104. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts +34 -0
  105. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts.map +1 -1
  106. package/dist/gltf/lib/types/gltf-zod-schema.cjs +4 -1
  107. package/dist/gltf/lib/types/gltf-zod-schema.cjs.map +2 -2
  108. package/dist/gltf/lib/types/gltf-zod-schema.d.ts +56 -0
  109. package/dist/gltf/lib/types/gltf-zod-schema.d.ts.map +1 -1
  110. package/dist/gltf/lib/types/gltf-zod-schema.js +6 -2
  111. package/dist/gltf/lib/types/gltf-zod-schema.js.map +1 -1
  112. package/dist/gltf/lib/utils/version.cjs +1 -1
  113. package/dist/gltf/lib/utils/version.js +1 -1
  114. package/dist/gltf/schema.cjs +3 -0
  115. package/dist/gltf/schema.cjs.map +2 -2
  116. package/dist/gltf/schema.d.ts +1 -0
  117. package/dist/gltf/schema.d.ts.map +1 -1
  118. package/dist/gltf/schema.js +1 -0
  119. package/dist/gltf/schema.js.map +1 -1
  120. package/dist/gltf-loader-types.cjs.map +2 -2
  121. package/dist/index.cjs +7 -1
  122. package/dist/index.cjs.map +2 -2
  123. package/dist/index.d.ts +3 -0
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +3 -1
  126. package/dist/index.js.map +1 -1
  127. package/dist/materialx/parse-materialx.cjs +61 -0
  128. package/dist/materialx/parse-materialx.cjs.map +7 -0
  129. package/dist/materialx/parse-materialx.d.ts +23 -0
  130. package/dist/materialx/parse-materialx.d.ts.map +1 -0
  131. package/dist/materialx/parse-materialx.js +39 -0
  132. package/dist/materialx/parse-materialx.js.map +1 -0
  133. package/dist/materialx/procedural-graph.cjs +77 -0
  134. package/dist/materialx/procedural-graph.cjs.map +7 -0
  135. package/dist/materialx/procedural-graph.d.ts +40 -0
  136. package/dist/materialx/procedural-graph.d.ts.map +1 -0
  137. package/dist/materialx/procedural-graph.js +59 -0
  138. package/dist/materialx/procedural-graph.js.map +1 -0
  139. package/dist/materialx-loader-types.cjs +57 -0
  140. package/dist/materialx-loader-types.cjs.map +7 -0
  141. package/dist/materialx-loader-types.d.ts +34 -0
  142. package/dist/materialx-loader-types.d.ts.map +1 -0
  143. package/dist/materialx-loader-types.js +20 -0
  144. package/dist/materialx-loader-types.js.map +1 -0
  145. package/dist/materialx-loader.cjs +40 -0
  146. package/dist/materialx-loader.cjs.map +7 -0
  147. package/dist/materialx-loader.d.ts +19 -0
  148. package/dist/materialx-loader.d.ts.map +1 -0
  149. package/dist/materialx-loader.js +14 -0
  150. package/dist/materialx-loader.js.map +1 -0
  151. package/dist/mtl-loader-types.cjs +1 -1
  152. package/dist/obj/mtl-loader-types.cjs +1 -1
  153. package/dist/obj/mtl-loader-types.js +1 -1
  154. package/dist/obj/obj-loader-types.cjs +3 -3
  155. package/dist/obj/obj-loader-types.cjs.map +2 -2
  156. package/dist/obj/obj-loader-types.d.ts +1 -1
  157. package/dist/obj/obj-loader-types.d.ts.map +1 -1
  158. package/dist/obj/obj-loader-types.js +2 -2
  159. package/dist/obj/obj-loader-types.js.map +1 -1
  160. package/dist/obj/obj-loader.cjs +5 -5
  161. package/dist/obj/obj-loader.cjs.map +2 -2
  162. package/dist/obj/obj-loader.d.ts +1 -1
  163. package/dist/obj/obj-loader.d.ts.map +1 -1
  164. package/dist/obj/obj-loader.js +1 -1
  165. package/dist/obj/obj-loader.js.map +1 -1
  166. package/dist/obj/obj-writer.cjs +1 -1
  167. package/dist/obj/obj-writer.js +1 -1
  168. package/dist/obj-loader-types.cjs +3 -3
  169. package/dist/obj-loader-types.cjs.map +2 -2
  170. package/dist/obj-loader.cjs +5 -5
  171. package/dist/obj-loader.cjs.map +2 -2
  172. package/dist/obj-worker.js +985 -368
  173. package/dist/obj-writer.cjs +1 -1
  174. package/dist/stl/parse-stl.cjs +100 -0
  175. package/dist/stl/parse-stl.cjs.map +7 -0
  176. package/dist/stl/parse-stl.d.ts +4 -0
  177. package/dist/stl/parse-stl.d.ts.map +1 -0
  178. package/dist/stl/parse-stl.js +84 -0
  179. package/dist/stl/parse-stl.js.map +1 -0
  180. package/dist/stl-loader-types.cjs +58 -0
  181. package/dist/stl-loader-types.cjs.map +7 -0
  182. package/dist/stl-loader-types.d.ts +32 -0
  183. package/dist/stl-loader-types.d.ts.map +1 -0
  184. package/dist/stl-loader-types.js +25 -0
  185. package/dist/stl-loader-types.js.map +1 -0
  186. package/dist/stl-loader.cjs +38 -0
  187. package/dist/stl-loader.cjs.map +7 -0
  188. package/dist/stl-loader.d.ts +17 -0
  189. package/dist/stl-loader.d.ts.map +1 -0
  190. package/dist/stl-loader.js +13 -0
  191. package/dist/stl-loader.js.map +1 -0
  192. package/dist/usd/index.cjs.map +1 -1
  193. package/dist/usd/index.d.ts +1 -1
  194. package/dist/usd/index.d.ts.map +1 -1
  195. package/dist/usd/lib/parse-usd.cjs +42 -5
  196. package/dist/usd/lib/parse-usd.cjs.map +2 -2
  197. package/dist/usd/lib/parse-usd.d.ts.map +1 -1
  198. package/dist/usd/lib/parse-usd.js +53 -6
  199. package/dist/usd/lib/parse-usd.js.map +1 -1
  200. package/dist/usd/lib/parse-usdc.cjs +187 -0
  201. package/dist/usd/lib/parse-usdc.cjs.map +7 -0
  202. package/dist/usd/lib/parse-usdc.d.ts +4 -0
  203. package/dist/usd/lib/parse-usdc.d.ts.map +1 -0
  204. package/dist/usd/lib/parse-usdc.js +176 -0
  205. package/dist/usd/lib/parse-usdc.js.map +1 -0
  206. package/dist/usd/lib/parse-usdz.cjs +22 -0
  207. package/dist/usd/lib/parse-usdz.cjs.map +2 -2
  208. package/dist/usd/lib/parse-usdz.d.ts.map +1 -1
  209. package/dist/usd/lib/parse-usdz.js +26 -0
  210. package/dist/usd/lib/parse-usdz.js.map +1 -1
  211. package/dist/usd/lib/usd-types.cjs.map +1 -1
  212. package/dist/usd/lib/usd-types.d.ts +14 -1
  213. package/dist/usd/lib/usd-types.d.ts.map +1 -1
  214. package/dist/usd/lib/usd-types.js +1 -1
  215. package/dist/usd/lib/usd-types.js.map +1 -1
  216. package/dist/usd/libs/README.md +27 -0
  217. package/dist/usd/libs/THREE-LICENSE +21 -0
  218. package/dist/usd/libs/usdc-parser.d.ts +78 -0
  219. package/dist/usd/libs/usdc-parser.d.ts.map +1 -0
  220. package/dist/usd/libs/usdc-parser.js +1669 -0
  221. package/dist/usd/libs/usdc-parser.js.map +1 -0
  222. package/dist/usd/usd-loader-types.cjs +4 -4
  223. package/dist/usd/usd-loader-types.cjs.map +2 -2
  224. package/dist/usd/usd-loader-types.d.ts +7 -7
  225. package/dist/usd/usd-loader-types.d.ts.map +1 -1
  226. package/dist/usd/usd-loader-types.js +6 -6
  227. package/dist/usd/usd-loader-types.js.map +1 -1
  228. package/dist/usd/usd-loader.cjs.map +1 -1
  229. package/dist/usd/usd-loader.d.ts +4 -4
  230. package/dist/usd/usd-loader.d.ts.map +1 -1
  231. package/dist/usd/usd-loader.js +2 -2
  232. package/dist/usd/usd-loader.js.map +1 -1
  233. package/dist/usd-loader-types.cjs +4 -4
  234. package/dist/usd-loader-types.cjs.map +2 -2
  235. package/dist/usd-loader.cjs.map +1 -1
  236. package/package.json +19 -7
  237. package/src/draco/draco-loader-types.ts +1 -1
  238. package/src/gltf/gltf-loader-types.ts +6 -0
  239. package/src/gltf/index.ts +4 -1
  240. package/src/gltf/lib/api/gltf-extensions.ts +7 -2
  241. package/src/gltf/lib/extensions/EXT_texture_webp.ts +3 -0
  242. package/src/gltf/lib/extensions/KHR_accessor_float64.ts +22 -0
  243. package/src/gltf/lib/extensions/KHR_gaussian_splatting.ts +31 -7
  244. package/src/gltf/lib/extensions/MSFT_texture_dds.ts +52 -0
  245. package/src/gltf/lib/extensions/utils/3d-tiles-utils.ts +5 -1
  246. package/src/gltf/lib/parsers/parse-gltf.ts +31 -0
  247. package/src/gltf/lib/types/gltf-additional-extension-schemas.ts +32 -0
  248. package/src/gltf/lib/types/gltf-ext-gaussian-splatting-schema.ts +1 -1
  249. package/src/gltf/lib/types/gltf-extension-schemas.ts +12 -0
  250. package/src/gltf/lib/types/gltf-json-schema.ts +2 -1
  251. package/src/gltf/lib/types/gltf-texture-procedurals.ts +67 -0
  252. package/src/gltf/lib/types/gltf-types.ts +8 -0
  253. package/src/gltf/lib/types/gltf-zod-schema.ts +7 -1
  254. package/src/gltf/schema.ts +1 -0
  255. package/src/index.ts +6 -1
  256. package/src/materialx/README.md +5 -0
  257. package/src/materialx/parse-materialx.ts +70 -0
  258. package/src/materialx/procedural-graph.ts +94 -0
  259. package/src/materialx-loader-types.ts +24 -0
  260. package/src/materialx-loader.ts +15 -0
  261. package/src/obj/obj-loader-types.ts +1 -1
  262. package/src/obj/obj-loader.ts +1 -1
  263. package/src/stl/parse-stl.ts +90 -0
  264. package/src/stl-loader-types.ts +28 -0
  265. package/src/stl-loader.ts +12 -0
  266. package/src/usd/index.ts +1 -0
  267. package/src/usd/lib/parse-usd.ts +68 -7
  268. package/src/usd/lib/parse-usdc.ts +188 -0
  269. package/src/usd/lib/parse-usdz.ts +28 -0
  270. package/src/usd/lib/usd-types.ts +16 -2
  271. package/src/usd/libs/README.md +27 -0
  272. package/src/usd/libs/THREE-LICENSE +21 -0
  273. package/src/usd/libs/usdc-parser.d.ts +18 -0
  274. package/src/usd/libs/usdc-parser.js +1669 -0
  275. package/src/usd/usd-loader-types.ts +5 -5
  276. package/src/usd/usd-loader.ts +2 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/gltf/lib/extensions/KHR_gaussian_splatting.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n/* eslint-disable camelcase */\n\nimport type {GLTF, GLTFMeshPrimitive} from '../types/gltf-json-schema';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {GLTFLoaderOptions} from '../../gltf-loader-types';\nimport {GLTFIterator} from '../api/gltf-iterator';\nimport type {\n GLTFGaussianSplatPrimitive,\n GLTF_KHR_gaussian_splatting\n} from '../types/gltf-ext-gaussian-splatting-schema';\n\n/** Name of the ratified Gaussian splatting glTF extension. */\nexport const name = 'KHR_gaussian_splatting';\n\n/** Name of the draft SPZ2 compression companion extension. */\nexport const SPZ_COMPRESSION_EXTENSION_NAME = 'KHR_gaussian_splatting_compression_spz_2';\n\nconst REQUIRED_ATTRIBUTES = [\n 'POSITION',\n 'KHR_gaussian_splatting:ROTATION',\n 'KHR_gaussian_splatting:SCALE',\n 'KHR_gaussian_splatting:OPACITY',\n 'KHR_gaussian_splatting:SH_DEGREE_0_COEF_0'\n] as const;\n\n/** Validates Gaussian splat primitives while preserving all source JSON. */\nexport async function decode(gltfData: GLTFWithBuffers, options: GLTFLoaderOptions): Promise<void> {\n const descriptors = getGaussianSplatPrimitives(gltfData);\n const iterator = new GLTFIterator(gltfData);\n for (const [meshIndex, mesh] of (gltfData.json.meshes || []).entries()) {\n for (const [primitiveIndex, primitive] of mesh.primitives.entries()) {\n const extension = primitive.extensions?.[name] as GLTF_KHR_gaussian_splatting | undefined;\n if (!extension) continue;\n validateGaussianSplatPrimitive(\n gltfData.json,\n primitive,\n extension,\n meshIndex,\n primitiveIndex,\n iterator\n );\n const compression = extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME];\n if (compression) {\n const descriptor = descriptors.find(\n item => item.meshIndex === meshIndex && item.primitiveIndex === primitiveIndex\n );\n if (descriptor) {\n const decoder = options?.gltf?.splatDecoder;\n const bufferView = gltfData.json.bufferViews?.[compression.bufferView];\n if (bufferView && gltfData.buffers[bufferView.buffer]) {\n descriptor.compressedBytes = getBufferViewBytes(gltfData, compression.bufferView);\n } else if (decoder) {\n throw new Error(\n `KHR_gaussian_splatting: bufferView ${compression.bufferView} is not loaded for SPZ2 decoding.`\n );\n }\n if (decoder && descriptor.compressedBytes) {\n descriptor.decoded = await decoder(descriptor.compressedBytes.buffer as ArrayBuffer, {\n sourceCoordinateSystem: 'LUF'\n });\n }\n }\n }\n }\n }\n if (descriptors.length) {\n gltfData.gaussianSplatPrimitives = descriptors;\n }\n}\n\n/** Returns a copied buffer-view payload so applications can retain compressed bytes safely. */\nfunction getBufferViewBytes(gltfData: GLTFWithBuffers, bufferViewIndex: number): Uint8Array {\n const bufferView = gltfData.json.bufferViews?.[bufferViewIndex];\n if (!bufferView) {\n throw new Error(`KHR_gaussian_splatting: bufferView ${bufferViewIndex} is not defined.`);\n }\n const buffer = gltfData.buffers[bufferView.buffer];\n if (!buffer) {\n throw new Error(\n `KHR_gaussian_splatting: buffer ${bufferView.buffer} is not loaded for SPZ2 payload.`\n );\n }\n const byteOffset = buffer.byteOffset + (bufferView.byteOffset || 0);\n return new Uint8Array(buffer.arrayBuffer, byteOffset, bufferView.byteLength).slice();\n}\n\n/** Returns normalized Gaussian splat primitive descriptors without mutating the glTF. */\nexport function getGaussianSplatPrimitives(\n gltf: GLTF | GLTFWithBuffers\n): GLTFGaussianSplatPrimitive[] {\n const json: GLTF = 'json' in gltf ? (gltf as GLTFWithBuffers).json : (gltf as GLTF);\n const descriptors: GLTFGaussianSplatPrimitive[] = [];\n for (const [meshIndex, mesh] of (json.meshes || []).entries()) {\n for (const [primitiveIndex, primitive] of mesh.primitives.entries()) {\n const extension = primitive.extensions?.[name] as GLTF_KHR_gaussian_splatting | undefined;\n if (!extension) continue;\n const compressedBufferView =\n extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME]?.bufferView;\n descriptors.push({\n meshIndex,\n primitiveIndex,\n attributes: {...primitive.attributes},\n extension,\n compressedBufferView\n });\n }\n }\n return descriptors;\n}\n\n/** Validates one Gaussian splat primitive against the base extension invariants. */\nfunction validateGaussianSplatPrimitive(\n gltf: GLTF,\n primitive: GLTFMeshPrimitive,\n extension: GLTF_KHR_gaussian_splatting,\n meshIndex: number,\n primitiveIndex: number,\n iterator: GLTFIterator\n): void {\n if ((primitive.mode ?? 4) !== 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} must use POINTS mode.`\n );\n }\n if (typeof extension.kernel !== 'string' || extension.kernel.length === 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing kernel.`\n );\n }\n if (typeof extension.colorSpace !== 'string' || extension.colorSpace.length === 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing colorSpace.`\n );\n }\n\n const compressedBufferView = extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME]?.bufferView;\n if (compressedBufferView !== undefined) {\n if (\n !Number.isInteger(compressedBufferView) ||\n compressedBufferView < 0 ||\n compressedBufferView >= (gltf.bufferViews || []).length\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has an invalid SPZ bufferView.`\n );\n }\n } else {\n for (const attributeName of REQUIRED_ATTRIBUTES) {\n if (primitive.attributes[attributeName] === undefined) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing ${attributeName}.`\n );\n }\n }\n }\n\n for (const [attributeName, accessorIndex] of Object.entries(primitive.attributes)) {\n if (\n !Number.isInteger(accessorIndex) ||\n accessorIndex < 0 ||\n accessorIndex >= (gltf.accessors || []).length\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has invalid accessor ${attributeName}.`\n );\n }\n }\n\n validateGaussianValues(gltf, primitive, iterator, meshIndex, primitiveIndex);\n\n for (let degree = 1; degree <= 3; degree++) {\n const coefficientCount = degree * 2 + 1;\n const present = Array.from(\n {length: coefficientCount},\n (_, coefficientIndex) =>\n primitive.attributes[\n `KHR_gaussian_splatting:SH_DEGREE_${degree}_COEF_${coefficientIndex}`\n ] !== undefined\n );\n if (present.some(Boolean) && !present.every(Boolean)) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has incomplete SH degree ${degree}.`\n );\n }\n if (present.some(Boolean) && degree > 1) {\n const lowerDegree = degree - 1;\n const lowerCount = lowerDegree * 2 + 1;\n for (let coefficientIndex = 0; coefficientIndex < lowerCount; coefficientIndex++) {\n if (\n primitive.attributes[\n `KHR_gaussian_splatting:SH_DEGREE_${lowerDegree}_COEF_${coefficientIndex}`\n ] === undefined\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} skips SH degree ${lowerDegree}.`\n );\n }\n }\n }\n }\n}\n\n/** Checks decoded scale and opacity ranges when the referenced buffers are available. */\nfunction validateGaussianValues(\n gltf: GLTF,\n primitive: GLTFMeshPrimitive,\n iterator: GLTFIterator,\n meshIndex: number,\n primitiveIndex: number\n): void {\n const scaleAccessor = primitive.attributes['KHR_gaussian_splatting:SCALE'];\n const opacityAccessor = primitive.attributes['KHR_gaussian_splatting:OPACITY'];\n for (const [attributeName, accessorIndex, predicate] of [\n ['KHR_gaussian_splatting:SCALE', scaleAccessor, (value: number) => value >= 0],\n ['KHR_gaussian_splatting:OPACITY', opacityAccessor, (value: number) => value >= 0 && value <= 1]\n ] as const) {\n if (accessorIndex === undefined || !isAccessorLoaded(gltf, iterator, accessorIndex)) continue;\n const values = iterator.getTypedArrayForAccessor(accessorIndex) as ArrayLike<number>;\n for (let valueIndex = 0; valueIndex < values.length; valueIndex++) {\n if (!predicate(Number(values[valueIndex]))) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has an invalid ${attributeName} value.`\n );\n }\n }\n }\n}\n\n/** Returns whether an accessor's source buffer has been resolved by the loader. */\nfunction isAccessorLoaded(gltf: GLTF, iterator: GLTFIterator, accessorIndex: number): boolean {\n const accessor = gltf.accessors?.[accessorIndex];\n const bufferView =\n accessor?.bufferView === undefined ? undefined : gltf.bufferViews?.[accessor.bufferView];\n return Boolean(bufferView && iterator.gltf.buffers[bufferView.buffer]);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright vis.gl contributors\n\n/* eslint-disable camelcase */\n\nimport {parseFromContext} from '@loaders.gl/core/loader-utils';\nimport type {LoaderContext} from '@loaders.gl/core/loader-utils';\nimport type {GLTF, GLTFMeshPrimitive} from '../types/gltf-json-schema';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {GLTFLoaderOptions} from '../../gltf-loader-types';\nimport {GLTFIterator} from '../api/gltf-iterator';\nimport type {\n GLTFGaussianSplatPrimitive,\n GLTF_KHR_gaussian_splatting\n} from '../types/gltf-ext-gaussian-splatting-schema';\n\n/** Name of the ratified Gaussian splatting glTF extension. */\nexport const name = 'KHR_gaussian_splatting';\n\n/** Name of the draft SPZ2 compression companion extension. */\nexport const SPZ_COMPRESSION_EXTENSION_NAME = 'KHR_gaussian_splatting_compression_spz_2';\n\nconst REQUIRED_ATTRIBUTES = [\n 'POSITION',\n 'KHR_gaussian_splatting:ROTATION',\n 'KHR_gaussian_splatting:SCALE',\n 'KHR_gaussian_splatting:OPACITY',\n 'KHR_gaussian_splatting:SH_DEGREE_0_COEF_0'\n] as const;\n\n/** Validates Gaussian splat primitives while preserving all source JSON. */\nexport async function decode(\n gltfData: GLTFWithBuffers,\n options: GLTFLoaderOptions,\n context?: LoaderContext\n): Promise<void> {\n const loader = context?.loaders?.find(candidate => candidate.extensions?.includes('spz'));\n const descriptors = getGaussianSplatPrimitives(gltfData);\n const iterator = new GLTFIterator(gltfData);\n for (const [meshIndex, mesh] of (gltfData.json.meshes || []).entries()) {\n for (const [primitiveIndex, primitive] of mesh.primitives.entries()) {\n const extension = primitive.extensions?.[name] as GLTF_KHR_gaussian_splatting | undefined;\n if (!extension) continue;\n const descriptor = descriptors.find(\n item => item.meshIndex === meshIndex && item.primitiveIndex === primitiveIndex\n );\n const legacyColorSpace = options?.gltf?.legacyGaussianSplatColorSpace;\n const normalizedExtension =\n legacyColorSpace && extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME]\n ? {\n ...extension,\n kernel: extension.kernel ?? 'ellipse',\n colorSpace: extension.colorSpace ?? legacyColorSpace\n }\n : extension;\n if (descriptor) descriptor.extension = normalizedExtension;\n validateGaussianSplatPrimitive(\n gltfData.json,\n primitive,\n normalizedExtension,\n meshIndex,\n primitiveIndex,\n iterator\n );\n const compression = extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME];\n if (compression) {\n if (descriptor) {\n const decoder = options?.gltf?.splatDecoder;\n const bufferView = gltfData.json.bufferViews?.[compression.bufferView];\n if (bufferView && gltfData.buffers[bufferView.buffer]) {\n descriptor.compressedBytes = getBufferViewBytes(gltfData, compression.bufferView);\n } else if (decoder || loader) {\n throw new Error(\n `KHR_gaussian_splatting: bufferView ${compression.bufferView} is not loaded for SPZ2 decoding.`\n );\n }\n if (loader && context && descriptor.compressedBytes) {\n descriptor.decoded = await parseFromContext(\n descriptor.compressedBytes.buffer as ArrayBuffer,\n loader,\n {...options, splats: {...options.splats, sourceCoordinateSystem: 'LUF'}},\n context\n );\n } else if (decoder && descriptor.compressedBytes) {\n descriptor.decoded = await decoder(descriptor.compressedBytes.buffer as ArrayBuffer, {\n sourceCoordinateSystem: 'LUF'\n });\n }\n }\n }\n }\n }\n if (descriptors.length) {\n gltfData.gaussianSplatPrimitives = descriptors;\n }\n}\n\n/** Returns a copied buffer-view payload so applications can retain compressed bytes safely. */\nfunction getBufferViewBytes(gltfData: GLTFWithBuffers, bufferViewIndex: number): Uint8Array {\n const bufferView = gltfData.json.bufferViews?.[bufferViewIndex];\n if (!bufferView) {\n throw new Error(`KHR_gaussian_splatting: bufferView ${bufferViewIndex} is not defined.`);\n }\n const buffer = gltfData.buffers[bufferView.buffer];\n if (!buffer) {\n throw new Error(\n `KHR_gaussian_splatting: buffer ${bufferView.buffer} is not loaded for SPZ2 payload.`\n );\n }\n const byteOffset = buffer.byteOffset + (bufferView.byteOffset || 0);\n return new Uint8Array(buffer.arrayBuffer, byteOffset, bufferView.byteLength).slice();\n}\n\n/** Returns normalized Gaussian splat primitive descriptors without mutating the glTF. */\nexport function getGaussianSplatPrimitives(\n gltf: GLTF | GLTFWithBuffers\n): GLTFGaussianSplatPrimitive[] {\n const json: GLTF = 'json' in gltf ? (gltf as GLTFWithBuffers).json : (gltf as GLTF);\n const descriptors: GLTFGaussianSplatPrimitive[] = [];\n for (const [meshIndex, mesh] of (json.meshes || []).entries()) {\n for (const [primitiveIndex, primitive] of mesh.primitives.entries()) {\n const extension = primitive.extensions?.[name] as GLTF_KHR_gaussian_splatting | undefined;\n if (!extension) continue;\n const compressedBufferView =\n extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME]?.bufferView;\n descriptors.push({\n meshIndex,\n primitiveIndex,\n attributes: {...primitive.attributes},\n extension,\n compressedBufferView\n });\n }\n }\n return descriptors;\n}\n\n/** Validates one Gaussian splat primitive against the base extension invariants. */\nfunction validateGaussianSplatPrimitive(\n gltf: GLTF,\n primitive: GLTFMeshPrimitive,\n extension: GLTF_KHR_gaussian_splatting,\n meshIndex: number,\n primitiveIndex: number,\n iterator: GLTFIterator\n): void {\n if ((primitive.mode ?? 4) !== 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} must use POINTS mode.`\n );\n }\n if (typeof extension.kernel !== 'string' || extension.kernel.length === 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing kernel.`\n );\n }\n if (typeof extension.colorSpace !== 'string' || extension.colorSpace.length === 0) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing colorSpace.`\n );\n }\n\n const compressedBufferView = extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME]?.bufferView;\n if (compressedBufferView !== undefined) {\n if (\n !Number.isInteger(compressedBufferView) ||\n compressedBufferView < 0 ||\n compressedBufferView >= (gltf.bufferViews || []).length\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has an invalid SPZ bufferView.`\n );\n }\n } else {\n for (const attributeName of REQUIRED_ATTRIBUTES) {\n if (primitive.attributes[attributeName] === undefined) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} is missing ${attributeName}.`\n );\n }\n }\n }\n\n for (const [attributeName, accessorIndex] of Object.entries(primitive.attributes)) {\n if (\n !Number.isInteger(accessorIndex) ||\n accessorIndex < 0 ||\n accessorIndex >= (gltf.accessors || []).length\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has invalid accessor ${attributeName}.`\n );\n }\n }\n\n validateGaussianValues(gltf, primitive, iterator, meshIndex, primitiveIndex);\n\n for (let degree = 1; degree <= 3; degree++) {\n const coefficientCount = degree * 2 + 1;\n const present = Array.from(\n {length: coefficientCount},\n (_, coefficientIndex) =>\n primitive.attributes[\n `KHR_gaussian_splatting:SH_DEGREE_${degree}_COEF_${coefficientIndex}`\n ] !== undefined\n );\n if (present.some(Boolean) && !present.every(Boolean)) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has incomplete SH degree ${degree}.`\n );\n }\n if (present.some(Boolean) && degree > 1) {\n const lowerDegree = degree - 1;\n const lowerCount = lowerDegree * 2 + 1;\n for (let coefficientIndex = 0; coefficientIndex < lowerCount; coefficientIndex++) {\n if (\n primitive.attributes[\n `KHR_gaussian_splatting:SH_DEGREE_${lowerDegree}_COEF_${coefficientIndex}`\n ] === undefined\n ) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} skips SH degree ${lowerDegree}.`\n );\n }\n }\n }\n }\n}\n\n/** Checks decoded scale and opacity ranges when the referenced buffers are available. */\nfunction validateGaussianValues(\n gltf: GLTF,\n primitive: GLTFMeshPrimitive,\n iterator: GLTFIterator,\n meshIndex: number,\n primitiveIndex: number\n): void {\n const scaleAccessor = primitive.attributes['KHR_gaussian_splatting:SCALE'];\n const opacityAccessor = primitive.attributes['KHR_gaussian_splatting:OPACITY'];\n for (const [attributeName, accessorIndex, predicate] of [\n ['KHR_gaussian_splatting:SCALE', scaleAccessor, (value: number) => value >= 0],\n ['KHR_gaussian_splatting:OPACITY', opacityAccessor, (value: number) => value >= 0 && value <= 1]\n ] as const) {\n if (accessorIndex === undefined || !isAccessorLoaded(gltf, iterator, accessorIndex)) continue;\n const values = iterator.getTypedArrayForAccessor(accessorIndex) as ArrayLike<number>;\n for (let valueIndex = 0; valueIndex < values.length; valueIndex++) {\n if (!predicate(Number(values[valueIndex]))) {\n throw new Error(\n `KHR_gaussian_splatting: mesh ${meshIndex} primitive ${primitiveIndex} has an invalid ${attributeName} value.`\n );\n }\n }\n }\n}\n\n/** Returns whether an accessor's source buffer has been resolved by the loader. */\nfunction isAccessorLoaded(gltf: GLTF, iterator: GLTFIterator, accessorIndex: number): boolean {\n const accessor = gltf.accessors?.[accessorIndex];\n const bufferView =\n accessor?.bufferView === undefined ? undefined : gltf.bufferViews?.[accessor.bufferView];\n return Boolean(bufferView && iterator.gltf.buffers[bufferView.buffer]);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
+ import type { LoaderContext } from '@loaders.gl/core/loader-utils';
1
2
  import type { GLTF } from "../types/gltf-json-schema.js";
2
3
  import type { GLTFWithBuffers } from "../types/gltf-types.js";
3
4
  import type { GLTFLoaderOptions } from "../../gltf-loader-types.js";
@@ -7,7 +8,7 @@ export declare const name = "KHR_gaussian_splatting";
7
8
  /** Name of the draft SPZ2 compression companion extension. */
8
9
  export declare const SPZ_COMPRESSION_EXTENSION_NAME = "KHR_gaussian_splatting_compression_spz_2";
9
10
  /** Validates Gaussian splat primitives while preserving all source JSON. */
10
- export declare function decode(gltfData: GLTFWithBuffers, options: GLTFLoaderOptions): Promise<void>;
11
+ export declare function decode(gltfData: GLTFWithBuffers, options: GLTFLoaderOptions, context?: LoaderContext): Promise<void>;
11
12
  /** Returns normalized Gaussian splat primitive descriptors without mutating the glTF. */
12
13
  export declare function getGaussianSplatPrimitives(gltf: GLTF | GLTFWithBuffers): GLTFGaussianSplatPrimitive[];
13
14
  //# sourceMappingURL=KHR_gaussian_splatting.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_gaussian_splatting.d.ts","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_gaussian_splatting.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,IAAI,EAAoB,qCAAkC;AACvE,OAAO,KAAK,EAAC,eAAe,EAAC,+BAA4B;AACzD,OAAO,KAAK,EAAC,iBAAiB,EAAC,mCAAgC;AAE/D,OAAO,KAAK,EACV,0BAA0B,EAE3B,uDAAoD;AAErD,8DAA8D;AAC9D,eAAO,MAAM,IAAI,2BAA2B,CAAC;AAE7C,8DAA8D;AAC9D,eAAO,MAAM,8BAA8B,6CAA6C,CAAC;AAUzF,4EAA4E;AAC5E,wBAAsB,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0CjG;AAkBD,yFAAyF;AACzF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,IAAI,GAAG,eAAe,GAC3B,0BAA0B,EAAE,CAmB9B"}
1
+ {"version":3,"file":"KHR_gaussian_splatting.d.ts","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_gaussian_splatting.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAC,IAAI,EAAoB,qCAAkC;AACvE,OAAO,KAAK,EAAC,eAAe,EAAC,+BAA4B;AACzD,OAAO,KAAK,EAAC,iBAAiB,EAAC,mCAAgC;AAE/D,OAAO,KAAK,EACV,0BAA0B,EAE3B,uDAAoD;AAErD,8DAA8D;AAC9D,eAAO,MAAM,IAAI,2BAA2B,CAAC;AAE7C,8DAA8D;AAC9D,eAAO,MAAM,8BAA8B,6CAA6C,CAAC;AAUzF,4EAA4E;AAC5E,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC,CA4Df;AAkBD,yFAAyF;AACzF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,IAAI,GAAG,eAAe,GAC3B,0BAA0B,EAAE,CAmB9B"}
@@ -1,6 +1,8 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright vis.gl contributors
4
+ /* eslint-disable camelcase */
5
+ import { parseFromContext } from '@loaders.gl/core/loader-utils';
4
6
  import { GLTFIterator } from "../api/gltf-iterator.js";
5
7
  /** Name of the ratified Gaussian splatting glTF extension. */
6
8
  export const name = 'KHR_gaussian_splatting';
@@ -14,7 +16,8 @@ const REQUIRED_ATTRIBUTES = [
14
16
  'KHR_gaussian_splatting:SH_DEGREE_0_COEF_0'
15
17
  ];
16
18
  /** Validates Gaussian splat primitives while preserving all source JSON. */
17
- export async function decode(gltfData, options) {
19
+ export async function decode(gltfData, options, context) {
20
+ const loader = context?.loaders?.find(candidate => candidate.extensions?.includes('spz'));
18
21
  const descriptors = getGaussianSplatPrimitives(gltfData);
19
22
  const iterator = new GLTFIterator(gltfData);
20
23
  for (const [meshIndex, mesh] of (gltfData.json.meshes || []).entries()) {
@@ -22,20 +25,33 @@ export async function decode(gltfData, options) {
22
25
  const extension = primitive.extensions?.[name];
23
26
  if (!extension)
24
27
  continue;
25
- validateGaussianSplatPrimitive(gltfData.json, primitive, extension, meshIndex, primitiveIndex, iterator);
28
+ const descriptor = descriptors.find(item => item.meshIndex === meshIndex && item.primitiveIndex === primitiveIndex);
29
+ const legacyColorSpace = options?.gltf?.legacyGaussianSplatColorSpace;
30
+ const normalizedExtension = legacyColorSpace && extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME]
31
+ ? {
32
+ ...extension,
33
+ kernel: extension.kernel ?? 'ellipse',
34
+ colorSpace: extension.colorSpace ?? legacyColorSpace
35
+ }
36
+ : extension;
37
+ if (descriptor)
38
+ descriptor.extension = normalizedExtension;
39
+ validateGaussianSplatPrimitive(gltfData.json, primitive, normalizedExtension, meshIndex, primitiveIndex, iterator);
26
40
  const compression = extension.extensions?.[SPZ_COMPRESSION_EXTENSION_NAME];
27
41
  if (compression) {
28
- const descriptor = descriptors.find(item => item.meshIndex === meshIndex && item.primitiveIndex === primitiveIndex);
29
42
  if (descriptor) {
30
43
  const decoder = options?.gltf?.splatDecoder;
31
44
  const bufferView = gltfData.json.bufferViews?.[compression.bufferView];
32
45
  if (bufferView && gltfData.buffers[bufferView.buffer]) {
33
46
  descriptor.compressedBytes = getBufferViewBytes(gltfData, compression.bufferView);
34
47
  }
35
- else if (decoder) {
48
+ else if (decoder || loader) {
36
49
  throw new Error(`KHR_gaussian_splatting: bufferView ${compression.bufferView} is not loaded for SPZ2 decoding.`);
37
50
  }
38
- if (decoder && descriptor.compressedBytes) {
51
+ if (loader && context && descriptor.compressedBytes) {
52
+ descriptor.decoded = await parseFromContext(descriptor.compressedBytes.buffer, loader, { ...options, splats: { ...options.splats, sourceCoordinateSystem: 'LUF' } }, context);
53
+ }
54
+ else if (decoder && descriptor.compressedBytes) {
39
55
  descriptor.decoded = await decoder(descriptor.compressedBytes.buffer, {
40
56
  sourceCoordinateSystem: 'LUF'
41
57
  });
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_gaussian_splatting.js","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_gaussian_splatting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KHR_gaussian_splatting.js","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/KHR_gaussian_splatting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name2 in all)
8
+ __defProp(target, name2, { get: all[name2], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/gltf/lib/extensions/MSFT_texture_dds.ts
21
+ var MSFT_texture_dds_exports = {};
22
+ __export(MSFT_texture_dds_exports, {
23
+ decode: () => decode,
24
+ getDDSLoader: () => getDDSLoader,
25
+ name: () => name,
26
+ preprocess: () => preprocess
27
+ });
28
+ module.exports = __toCommonJS(MSFT_texture_dds_exports);
29
+ var import_gltf_iterator = require("../api/gltf-iterator.cjs");
30
+ var name = "MSFT_texture_dds";
31
+ function getDDSLoader(context) {
32
+ return context?.loaders?.find(
33
+ (loader) => loader.extensions?.includes("dds") || loader.mimeTypes?.includes("image/vnd-ms.dds")
34
+ );
35
+ }
36
+ function preprocess(gltf, _options, context) {
37
+ const iterator = new import_gltf_iterator.GLTFIterator(gltf);
38
+ if (!iterator.hasExtension(name)) return;
39
+ if (!getDDSLoader(context)) {
40
+ if (iterator.isExtensionRequired(name)) {
41
+ throw new Error("gltf: Required extension MSFT_texture_dds needs a DDS parser");
42
+ }
43
+ return;
44
+ }
45
+ for (const texture of iterator.textures) {
46
+ const extension = iterator.getExtension(texture, name);
47
+ if (extension) texture.source = extension.source;
48
+ }
49
+ }
50
+ async function decode(gltf, options, context) {
51
+ if (!getDDSLoader(context) || options.gltf?.loadImages === false) return;
52
+ const iterator = new import_gltf_iterator.GLTFIterator(gltf);
53
+ if (!iterator.hasExtension(name)) return;
54
+ for (const texture of iterator.textures) iterator.removeExtension(texture, name);
55
+ iterator.removeExtension(name);
56
+ }
57
+ // Annotate the CommonJS export names for ESM import in node:
58
+ 0 && (module.exports = {
59
+ decode,
60
+ getDDSLoader,
61
+ name,
62
+ preprocess
63
+ });
64
+ //# sourceMappingURL=MSFT_texture_dds.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/gltf/lib/extensions/MSFT_texture_dds.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {GLTFLoaderOptions} from '../../gltf-loader-types';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {GLTF_MSFT_texture_dds} from '../types/gltf-json-schema';\nimport type {Loader, LoaderContext} from '@loaders.gl/core/loader-utils';\nimport {GLTFIterator} from '../api/gltf-iterator';\n\n/** Name of the Microsoft DDS texture extension. */\nexport const name = 'MSFT_texture_dds';\n\n/** Finds a DDS-capable loader supplied through the parent loader context. */\nexport function getDDSLoader(context?: LoaderContext): Loader | undefined {\n return context?.loaders?.find(\n loader => loader.extensions?.includes('dds') || loader.mimeTypes?.includes('image/vnd-ms.dds')\n );\n}\n\n/** Select DDS sources only when an application supplies a compatible loader. */\nexport function preprocess(\n gltf: GLTFWithBuffers,\n _options: GLTFLoaderOptions,\n context?: LoaderContext\n): void {\n const iterator = new GLTFIterator(gltf);\n if (!iterator.hasExtension(name)) return;\n if (!getDDSLoader(context)) {\n if (iterator.isExtensionRequired(name)) {\n throw new Error('gltf: Required extension MSFT_texture_dds needs a DDS parser');\n }\n return;\n }\n for (const texture of iterator.textures) {\n const extension = iterator.getExtension<GLTF_MSFT_texture_dds>(texture, name);\n if (extension) texture.source = extension.source;\n }\n}\n\n/** Remove DDS declarations only after image loading can identify the selected sources. */\nexport async function decode(\n gltf: GLTFWithBuffers,\n options: GLTFLoaderOptions,\n context?: LoaderContext\n): Promise<void> {\n if (!getDDSLoader(context) || options.gltf?.loadImages === false) return;\n const iterator = new GLTFIterator(gltf);\n if (!iterator.hasExtension(name)) return;\n for (const texture of iterator.textures) iterator.removeExtension(texture, name);\n iterator.removeExtension(name);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,2BAA2B;AAGpB,IAAM,OAAO;AAGb,SAAS,aAAa,SAA6C;AACxE,SAAO,SAAS,SAAS;AAAA,IACvB,YAAU,OAAO,YAAY,SAAS,KAAK,KAAK,OAAO,WAAW,SAAS,kBAAkB;AAAA,EAC/F;AACF;AAGO,SAAS,WACd,MACA,UACA,SACM;AACN,QAAM,WAAW,IAAI,kCAAa,IAAI;AACtC,MAAI,CAAC,SAAS,aAAa,IAAI,EAAG;AAClC,MAAI,CAAC,aAAa,OAAO,GAAG;AAC1B,QAAI,SAAS,oBAAoB,IAAI,GAAG;AACtC,YAAM,IAAI,MAAM,8DAA8D;AAAA,IAChF;AACA;AAAA,EACF;AACA,aAAW,WAAW,SAAS,UAAU;AACvC,UAAM,YAAY,SAAS,aAAoC,SAAS,IAAI;AAC5E,QAAI,UAAW,SAAQ,SAAS,UAAU;AAAA,EAC5C;AACF;AAGA,eAAsB,OACpB,MACA,SACA,SACe;AACf,MAAI,CAAC,aAAa,OAAO,KAAK,QAAQ,MAAM,eAAe,MAAO;AAClE,QAAM,WAAW,IAAI,kCAAa,IAAI;AACtC,MAAI,CAAC,SAAS,aAAa,IAAI,EAAG;AAClC,aAAW,WAAW,SAAS,SAAU,UAAS,gBAAgB,SAAS,IAAI;AAC/E,WAAS,gBAAgB,IAAI;AAC/B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,12 @@
1
+ import type { GLTFLoaderOptions } from "../../gltf-loader-types.js";
2
+ import type { GLTFWithBuffers } from "../types/gltf-types.js";
3
+ import type { Loader, LoaderContext } from '@loaders.gl/core/loader-utils';
4
+ /** Name of the Microsoft DDS texture extension. */
5
+ export declare const name = "MSFT_texture_dds";
6
+ /** Finds a DDS-capable loader supplied through the parent loader context. */
7
+ export declare function getDDSLoader(context?: LoaderContext): Loader | undefined;
8
+ /** Select DDS sources only when an application supplies a compatible loader. */
9
+ export declare function preprocess(gltf: GLTFWithBuffers, _options: GLTFLoaderOptions, context?: LoaderContext): void;
10
+ /** Remove DDS declarations only after image loading can identify the selected sources. */
11
+ export declare function decode(gltf: GLTFWithBuffers, options: GLTFLoaderOptions, context?: LoaderContext): Promise<void>;
12
+ //# sourceMappingURL=MSFT_texture_dds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MSFT_texture_dds.d.ts","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/MSFT_texture_dds.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAC,mCAAgC;AAC/D,OAAO,KAAK,EAAC,eAAe,EAAC,+BAA4B;AAEzD,OAAO,KAAK,EAAC,MAAM,EAAE,aAAa,EAAC,MAAM,+BAA+B,CAAC;AAGzE,mDAAmD;AACnD,eAAO,MAAM,IAAI,qBAAqB,CAAC;AAEvC,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAIxE;AAED,gFAAgF;AAChF,wBAAgB,UAAU,CACxB,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,aAAa,GACtB,IAAI,CAaN;AAED,0FAA0F;AAC1F,wBAAsB,MAAM,CAC1B,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf"}
@@ -0,0 +1,39 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { GLTFIterator } from "../api/gltf-iterator.js";
5
+ /** Name of the Microsoft DDS texture extension. */
6
+ export const name = 'MSFT_texture_dds';
7
+ /** Finds a DDS-capable loader supplied through the parent loader context. */
8
+ export function getDDSLoader(context) {
9
+ return context?.loaders?.find(loader => loader.extensions?.includes('dds') || loader.mimeTypes?.includes('image/vnd-ms.dds'));
10
+ }
11
+ /** Select DDS sources only when an application supplies a compatible loader. */
12
+ export function preprocess(gltf, _options, context) {
13
+ const iterator = new GLTFIterator(gltf);
14
+ if (!iterator.hasExtension(name))
15
+ return;
16
+ if (!getDDSLoader(context)) {
17
+ if (iterator.isExtensionRequired(name)) {
18
+ throw new Error('gltf: Required extension MSFT_texture_dds needs a DDS parser');
19
+ }
20
+ return;
21
+ }
22
+ for (const texture of iterator.textures) {
23
+ const extension = iterator.getExtension(texture, name);
24
+ if (extension)
25
+ texture.source = extension.source;
26
+ }
27
+ }
28
+ /** Remove DDS declarations only after image loading can identify the selected sources. */
29
+ export async function decode(gltf, options, context) {
30
+ if (!getDDSLoader(context) || options.gltf?.loadImages === false)
31
+ return;
32
+ const iterator = new GLTFIterator(gltf);
33
+ if (!iterator.hasExtension(name))
34
+ return;
35
+ for (const texture of iterator.textures)
36
+ iterator.removeExtension(texture, name);
37
+ iterator.removeExtension(name);
38
+ }
39
+ //# sourceMappingURL=MSFT_texture_dds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MSFT_texture_dds.js","sourceRoot":"","sources":["../../../../src/gltf/lib/extensions/MSFT_texture_dds.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAMpC,OAAO,EAAC,YAAY,EAAC,gCAA6B;AAElD,mDAAmD;AACnD,MAAM,CAAC,MAAM,IAAI,GAAG,kBAAkB,CAAC;AAEvC,6EAA6E;AAC7E,MAAM,UAAU,YAAY,CAAC,OAAuB;IAClD,OAAO,OAAO,EAAE,OAAO,EAAE,IAAI,CAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAC/F,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,UAAU,CACxB,IAAqB,EACrB,QAA2B,EAC3B,OAAuB;IAEvB,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO;IACzC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO;IACT,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAwB,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9E,IAAI,SAAS;YAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IACnD,CAAC;AACH,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,IAAqB,EACrB,OAA0B,EAC1B,OAAuB;IAEvB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,UAAU,KAAK,KAAK;QAAE,OAAO;IACzE,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC;QAAE,OAAO;IACzC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ;QAAE,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACjF,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC"}
@@ -128,7 +128,7 @@ function getPrimitiveTextureData(scenegraph, textureInfo, primitive) {
128
128
  if (typeof imageIndex !== "undefined") {
129
129
  const mimeType = json.images?.[imageIndex]?.mimeType;
130
130
  const parsedImage = scenegraph.gltf.images?.[imageIndex];
131
- if (parsedImage && typeof parsedImage.width !== "undefined") {
131
+ if (parsedImage && typeof parsedImage.width !== "undefined" && !("compressed" in parsedImage && parsedImage.compressed)) {
132
132
  const textureData = [];
133
133
  for (let index = 0; index < textureCoordinates.length; index += 2) {
134
134
  const value = getImageValueByCoordinates(
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/gltf/lib/extensions/utils/3d-tiles-utils.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/**\n * loaders.gl, MIT license\n *\n * Shared code for 3DTiles extensions:\n * * EXT_feature_metadata\n * * EXT_mesh_features\n * * EXT_structural_metadata\n */\n\nimport type {GLTFTextureInfoMetadata, GLTFMeshPrimitive} from '../../types/gltf-json-schema';\nimport type {BigTypedArray, TypedArray} from '@loaders.gl/core/schema';\nimport type {ImageType} from '@loaders.gl/images';\n\nimport {GLTFScenegraph} from '../../api/gltf-scenegraph';\nimport {GLTFIterator} from '../../api/gltf-iterator';\nimport {getComponentTypeFromArray} from '../../gltf-utils/gltf-utils';\nimport {getImageData} from '@loaders.gl/images';\nimport {ensureArrayBuffer} from '@loaders.gl/core/loader-utils';\n\nfunction emod(n: number): number {\n return ((n % 1) + 1) % 1;\n}\n\nexport type NumericComponentType =\n | 'INT8'\n | 'UINT8'\n | 'INT16'\n | 'UINT16'\n | 'INT32'\n | 'UINT32'\n | 'INT64'\n | 'UINT64'\n | 'FLOAT32'\n | 'FLOAT64';\n\nconst ATTRIBUTE_TYPE_TO_COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16,\n BOOLEAN: 1,\n STRING: 1,\n ENUM: 1\n};\n\nconst ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY = {\n INT8: Int8Array,\n UINT8: Uint8Array,\n INT16: Int16Array,\n UINT16: Uint16Array,\n INT32: Int32Array,\n UINT32: Uint32Array,\n INT64: BigInt64Array,\n UINT64: BigUint64Array,\n FLOAT32: Float32Array,\n FLOAT64: Float64Array\n};\n\nconst ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE = {\n INT8: 1,\n UINT8: 1,\n INT16: 2,\n UINT16: 2,\n INT32: 4,\n UINT32: 4,\n INT64: 8,\n UINT64: 8,\n FLOAT32: 4,\n FLOAT64: 8\n};\n\nexport function getArrayElementByteSize(attributeType, componentType): number {\n return (\n ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE[componentType] *\n ATTRIBUTE_TYPE_TO_COMPONENTS[attributeType]\n );\n}\n\n/**\n * Gets offset array from `arrayOffsets` or `stringOffsets`.\n * @param scenegraph - Instance of the class for structured access to GLTF data.\n * @param bufferViewIndex - Buffer view index\n * @param offsetType - The type of values in `arrayOffsets` or `stringOffsets`.\n * @param numberOfElements - The number of elements in each property array.\n * @returns Array of values offsets. The number of offsets in the array is equal to `numberOfElements` plus one.\n */\nexport function getOffsetsForProperty(\n scenegraph: GLTFScenegraph | GLTFIterator,\n bufferViewIndex: number,\n offsetType: 'UINT8' | 'UINT16' | 'UINT32' | 'UINT64' | string,\n numberOfElements: number\n): TypedArray | null {\n if (\n offsetType !== 'UINT8' &&\n offsetType !== 'UINT16' &&\n offsetType !== 'UINT32' &&\n offsetType !== 'UINT64'\n ) {\n return null;\n }\n const arrayOffsetsBytes = scenegraph.getTypedArrayForBufferView(bufferViewIndex);\n const arrayOffsets = convertRawBufferToMetadataArray(\n arrayOffsetsBytes,\n 'SCALAR', // offsets consist of ONE component\n offsetType,\n numberOfElements + 1 // The number of offsets is equal to the property table `count` plus one.\n );\n\n if (arrayOffsets instanceof BigInt64Array || arrayOffsets instanceof BigUint64Array) {\n const numericOffsets = new Float64Array(arrayOffsets.length);\n const maximumSafeOffset = BigInt(Number.MAX_SAFE_INTEGER);\n for (let index = 0; index < arrayOffsets.length; index++) {\n const offset = arrayOffsets[index];\n if (offset < 0n || offset > maximumSafeOffset) {\n throw new Error('EXT_structural_metadata: UINT64 offset exceeds the safe integer range');\n }\n numericOffsets[index] = Number(offset);\n }\n return numericOffsets;\n }\n return arrayOffsets;\n}\n\n/**\n * Converts raw bytes that are in the buffer to an array of the type defined by the schema.\n * @param data - Raw bytes in the buffer.\n * @param attributeType - SCALAR, VECN, MATN.\n * @param componentType - Type of the component in elements, e.g. 'UINT8' or 'FLOAT32'.\n * @param elementCount - Number of elements in the array. Default value is 1.\n * @returns Data array\n */\nexport function convertRawBufferToMetadataArray(\n data: Uint8Array,\n attributeType: string,\n componentType: NumericComponentType,\n elementCount: number = 1\n): BigTypedArray {\n const numberOfComponents = ATTRIBUTE_TYPE_TO_COMPONENTS[attributeType];\n const ArrayType = ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY[componentType];\n const size = ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE[componentType];\n const length = elementCount * numberOfComponents;\n const byteLength = length * size;\n let buffer = data.buffer;\n let offset = data.byteOffset;\n if (offset % size !== 0) {\n const bufferArray = new Uint8Array(buffer);\n buffer = bufferArray.slice(offset, offset + byteLength).buffer;\n offset = 0;\n }\n return new ArrayType(ensureArrayBuffer(buffer), offset, length);\n}\n\n/**\n * Processes data encoded in the texture associated with the primitive.\n * @param scenegraph - Instance of the class for structured access to GLTF data.\n * @param textureInfo - Reference to the texture where extension data are stored.\n * @param primitive - Primitive object in the mesh.\n * @returns Array of data taken. Null if data can't be taken from the texture.\n */\nexport function getPrimitiveTextureData(\n scenegraph: GLTFScenegraph | GLTFIterator,\n textureInfo: GLTFTextureInfoMetadata,\n primitive: GLTFMeshPrimitive\n): number[] {\n /*\n texture.index is an index for the \"textures\" array.\n The texture object referenced by this index looks like this:\n {\n \"sampler\": 0,\n \"source\": 0\n }\n \"sampler\" is an index for the \"samplers\" array\n \"source\" is an index for the \"images\" array that contains data stored in rgba channels of the image.\n\n texture.texCoord is a number-suffix (like 1) for an attribute like \"TEXCOORD_1\" in meshes.primitives\n The value of \"TEXCOORD_1\" is an accessor that is used to get coordinates.\n These coordinates are being used to get data from the image.\n\n Default for texture.texCoord is 0\n @see https://github.com/CesiumGS/glTF/blob/3d-tiles-next/specification/2.0/schema/textureInfo.schema.json\n */\n const texCoordAccessorKey = `TEXCOORD_${textureInfo.texCoord || 0}`;\n const texCoordAccessorIndex = primitive.attributes[texCoordAccessorKey];\n const textureCoordinates: TypedArray = scenegraph.getTypedArrayForAccessor(texCoordAccessorIndex);\n\n const json = scenegraph.gltf.json;\n const textureIndex: number = textureInfo.index;\n const imageIndex = json.textures?.[textureIndex]?.source;\n if (typeof imageIndex !== 'undefined') {\n const mimeType = json.images?.[imageIndex]?.mimeType;\n const parsedImage = scenegraph.gltf.images?.[imageIndex];\n // Checking for width is to prevent handling Un-processed images (e.g. [analyze] stage, where loadImages option is set to false)\n if (parsedImage && typeof parsedImage.width !== 'undefined') {\n const textureData: number[] = [];\n for (let index = 0; index < textureCoordinates.length; index += 2) {\n const value = getImageValueByCoordinates(\n parsedImage,\n mimeType,\n textureCoordinates,\n index,\n textureInfo.channels\n );\n textureData.push(value);\n }\n return textureData;\n }\n }\n return [];\n}\n\n/**\n * Puts property data to attributes.\n * It creates corresponding buffer, bufferView and accessor\n * so the data can be accessed like regular data stored in buffers.\n * @param scenegraph - Scenegraph object.\n * @param attributeName - Name of the attribute.\n * @param propertyData - Property data to store.\n * @param featureTable - Array where unique data from the property data are being stored.\n * @param primitive - Primitive object.\n */\nexport function primitivePropertyDataToAttributes(\n scenegraph: GLTFScenegraph | GLTFIterator,\n attributeName: string,\n propertyData: number[],\n featureTable: number[],\n primitive: GLTFMeshPrimitive\n): void {\n // No reason to create an empty buffer if there is no property data to store.\n if (!propertyData?.length) {\n return;\n }\n /*\n featureTable will contain unique values, e.g.\n propertyData = [24, 35, 28, 24]\n featureTable = [24, 35, 28]\n featureIndices will contain indices that refer featureTextureTable, e.g.\n featureIndices = [0, 1, 2, 0]\n */\n const featureIndices: number[] = [];\n for (const texelData of propertyData) {\n let index = featureTable.findIndex(item => item === texelData);\n if (index === -1) {\n index = featureTable.push(texelData) - 1;\n }\n featureIndices.push(index);\n }\n const typedArray = new Uint32Array(featureIndices);\n const iterator =\n scenegraph instanceof GLTFIterator ? scenegraph : new GLTFIterator(scenegraph.gltf);\n const bufferIndex = iterator.addBuffer(typedArray);\n const bufferViewIndex = iterator.addBufferView(bufferIndex, typedArray.byteLength);\n const accessorIndex = iterator.addAccessor(bufferViewIndex, {\n size: 1,\n componentType: getComponentTypeFromArray(typedArray),\n count: typedArray.length\n });\n primitive.attributes[attributeName] = accessorIndex;\n}\n\n/**\n * Gets the value from the texture by coordinates provided.\n * @param parsedImage - Image where the data are stored.\n * @param mimeType - MIME type.\n * @param textureCoordinates - uv coordinates to access data in the image.\n * @param index - Index of uv coordinates in the array textureCoordinates.\n * @param channels - Image channels where data are stored.\n * Channels of an RGBA texture are numbered 0..3 respectively.\n * For Ext_mesh_features and EXT_strucural_metadata the channels default is [0]\n * @see https://github.com/CesiumGS/glTF/blob/3d-tiles-next/extensions/2.0/Vendor/EXT_mesh_features/schema/featureIdTexture.schema.json\n * @see https://github.com/CesiumGS/glTF/blob/3d-tiles-next/extensions/2.0/Vendor/EXT_structural_metadata/schema/propertyTexture.property.schema.json\n * @returns Value taken from the image.\n */\nfunction getImageValueByCoordinates(\n parsedImage: ImageType,\n mimeType: string | undefined,\n textureCoordinates: TypedArray,\n index: number,\n channels: number[] | string = [0]\n) {\n const CHANNELS_MAP = {\n r: {offset: 0, shift: 0},\n g: {offset: 1, shift: 8},\n b: {offset: 2, shift: 16},\n a: {offset: 3, shift: 24}\n };\n\n const u = textureCoordinates[index];\n const v = textureCoordinates[index + 1];\n\n let components = 1;\n if (mimeType && (mimeType.indexOf('image/jpeg') !== -1 || mimeType.indexOf('image/png') !== -1))\n components = 4;\n const offset = coordinatesToOffset(u, v, parsedImage, components);\n let value: number = 0;\n for (const c of channels) {\n /*\n According to the EXT_feature_metadata extension specification:\n Channels are labeled by rgba and are swizzled with a string of 1-4 characters.\n According to the EXT_mesh_features extension specification:\n The channels array contains non-negative integer values corresponding to channels of the source texture that the feature ID consists of.\n Channels of an RGBA texture are numbered 0\u20133 respectively.\n Function getImageValueByCoordinates is used to process both extensions.\n So, there should be possible to get the element of CHANNELS_MAP by either index (0, 1, 2, 3) or key (r, g, b, a).\n */\n const map = typeof c === 'number' ? Object.values(CHANNELS_MAP)[c] : CHANNELS_MAP[c];\n const imageOffset = offset + map.offset;\n const imageData = getImageData(parsedImage);\n if (imageData.data.length <= imageOffset) {\n throw new Error(`${imageData.data.length} <= ${imageOffset}`);\n }\n const imageValue = imageData.data[imageOffset];\n value |= imageValue << map.shift;\n }\n return value;\n}\n\n/**\n * Retrieves the offset in the image where the data are stored.\n * @param u - u-coordinate.\n * @param v - v-coordinate.\n * @param parsedImage - Image where the data are stored.\n * @param componentsCount - Number of components the data consists of.\n * @returns Offset in the image where the data are stored.\n */\nfunction coordinatesToOffset(\n u: number,\n v: number,\n parsedImage: any,\n componentsCount: number = 1\n): number {\n const w = parsedImage.width;\n const iX = emod(u) * (w - 1);\n const indX = Math.round(iX);\n\n const h = parsedImage.height;\n const iY = emod(v) * (h - 1);\n const indY = Math.round(iY);\n const components = parsedImage.components ? parsedImage.components : componentsCount;\n // components is a number of channels in the image\n const offset = (indY * w + indX) * components;\n return offset;\n}\n\n/**\n * Parses variable-length array data.\n * In this case every value of the property in the table will be an array\n * of arbitrary length.\n * @param valuesData - Values in a flat typed array.\n * @param numberOfElements - Number of rows in the property table.\n * @param arrayOffsets - Offsets of nested arrays in the flat values array.\n * @param componentCount - Number of scalar components in each value.\n * @returns Array of typed arrays.\n */\nexport function parseVariableLengthArrayNumeric(\n valuesData: BigTypedArray,\n numberOfElements: number,\n arrayOffsets: TypedArray,\n componentCount = 1\n): BigTypedArray[] {\n const attributeValueArray: BigTypedArray[] = [];\n for (let index = 0; index < numberOfElements; index++) {\n const arrayOffset = Number(arrayOffsets[index]);\n const arrayLength = Number(arrayOffsets[index + 1]) - arrayOffset;\n if (\n !Number.isInteger(arrayOffset) ||\n !Number.isInteger(arrayLength) ||\n arrayOffset < 0 ||\n arrayLength < 0 ||\n (arrayOffset + arrayLength) * componentCount > valuesData.length\n ) {\n break;\n }\n const componentOffset = arrayOffset * componentCount;\n const componentLength = arrayLength * componentCount;\n attributeValueArray.push(valuesData.slice(componentOffset, componentOffset + componentLength));\n }\n return attributeValueArray;\n}\n\n/**\n * Parses fixed-length array data.\n * In this case every value of the property in the table will be an array\n * of constant length equal to `arrayCount`.\n * @param valuesData - Values in a flat typed array.\n * @param numberOfElements - Number of rows in the property table.\n * @param arrayCount - Nested arrays length.\n * @param componentCount - Number of scalar components in each array element.\n * @returns Array of typed arrays.\n */\nexport function parseFixedLengthArrayNumeric(\n valuesData: BigTypedArray,\n numberOfElements: number,\n arrayCount: number,\n componentCount = 1\n): BigTypedArray[] {\n const attributeValueArray: BigTypedArray[] = [];\n const rowComponentCount = arrayCount * componentCount;\n for (let index = 0; index < numberOfElements; index++) {\n const elementOffset = index * rowComponentCount;\n attributeValueArray.push(valuesData.slice(elementOffset, elementOffset + rowComponentCount));\n }\n return attributeValueArray;\n}\n\n/**\n * Decodes properties of string type from binary source.\n * @param numberOfElements - The number of elements in each property array that propertyTableProperty contains. It's a number of rows in the table.\n * @param valuesDataBytes - Data taken from values property of the property table property.\n * @param arrayOffsets - Offsets for variable-length arrays. It's null for fixed-length arrays or scalar types.\n * @param stringOffsets - Index of the buffer view containing offsets for strings. It should be available for string type.\n * @param fixedArrayCount - Number of strings in each fixed-length array row.\n * @returns String property values\n */\nexport function getPropertyDataString(\n numberOfElements: number,\n valuesDataBytes: Uint8Array,\n arrayOffsets: TypedArray | null,\n stringOffsets: TypedArray | null,\n fixedArrayCount?: number\n): string[] | string[][] {\n const textDecoder = new TextDecoder('utf8');\n\n // Variable-length string array (arrayOffsets + stringOffsets)\n // See: https://github.com/CesiumGS/3d-tiles/tree/main/specification/Metadata#strings\n if (arrayOffsets) {\n if (!stringOffsets) {\n throw new Error('stringOffsets is required for variable-length string arrays');\n }\n\n const result: string[][] = [];\n for (let featureId = 0; featureId < numberOfElements; featureId++) {\n const startStringIndex = arrayOffsets[featureId];\n const endStringIndex = arrayOffsets[featureId + 1];\n const strings: string[] = [];\n\n for (let stringIndex = startStringIndex; stringIndex < endStringIndex; stringIndex++) {\n const startByte = stringOffsets[stringIndex];\n const endByte = stringOffsets[stringIndex + 1];\n const stringData = valuesDataBytes.subarray(startByte, endByte);\n strings.push(textDecoder.decode(stringData));\n }\n\n result.push(strings);\n }\n return result;\n }\n\n // Simple strings (stringOffsets only)\n if (stringOffsets) {\n const stringsArray: string[] = [];\n const stringCount = numberOfElements * (fixedArrayCount || 1);\n for (let index = 0; index < stringCount; index++) {\n const startByte = Number(stringOffsets[index]);\n const endByte = Number(stringOffsets[index + 1]);\n if (startByte >= 0 && endByte >= startByte && endByte <= valuesDataBytes.length) {\n stringsArray.push(textDecoder.decode(valuesDataBytes.subarray(startByte, endByte)));\n }\n }\n return fixedArrayCount\n ? Array.from({length: numberOfElements}, (_unused, rowIndex) =>\n stringsArray.slice(rowIndex * fixedArrayCount, (rowIndex + 1) * fixedArrayCount)\n )\n : stringsArray;\n }\n return [];\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n/**\n * loaders.gl, MIT license\n *\n * Shared code for 3DTiles extensions:\n * * EXT_feature_metadata\n * * EXT_mesh_features\n * * EXT_structural_metadata\n */\n\nimport type {GLTFTextureInfoMetadata, GLTFMeshPrimitive} from '../../types/gltf-json-schema';\nimport type {BigTypedArray, TypedArray} from '@loaders.gl/core/schema';\nimport type {ImageType} from '@loaders.gl/images';\n\nimport {GLTFScenegraph} from '../../api/gltf-scenegraph';\nimport {GLTFIterator} from '../../api/gltf-iterator';\nimport {getComponentTypeFromArray} from '../../gltf-utils/gltf-utils';\nimport {getImageData} from '@loaders.gl/images';\nimport {ensureArrayBuffer} from '@loaders.gl/core/loader-utils';\n\nfunction emod(n: number): number {\n return ((n % 1) + 1) % 1;\n}\n\nexport type NumericComponentType =\n | 'INT8'\n | 'UINT8'\n | 'INT16'\n | 'UINT16'\n | 'INT32'\n | 'UINT32'\n | 'INT64'\n | 'UINT64'\n | 'FLOAT32'\n | 'FLOAT64';\n\nconst ATTRIBUTE_TYPE_TO_COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16,\n BOOLEAN: 1,\n STRING: 1,\n ENUM: 1\n};\n\nconst ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY = {\n INT8: Int8Array,\n UINT8: Uint8Array,\n INT16: Int16Array,\n UINT16: Uint16Array,\n INT32: Int32Array,\n UINT32: Uint32Array,\n INT64: BigInt64Array,\n UINT64: BigUint64Array,\n FLOAT32: Float32Array,\n FLOAT64: Float64Array\n};\n\nconst ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE = {\n INT8: 1,\n UINT8: 1,\n INT16: 2,\n UINT16: 2,\n INT32: 4,\n UINT32: 4,\n INT64: 8,\n UINT64: 8,\n FLOAT32: 4,\n FLOAT64: 8\n};\n\nexport function getArrayElementByteSize(attributeType, componentType): number {\n return (\n ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE[componentType] *\n ATTRIBUTE_TYPE_TO_COMPONENTS[attributeType]\n );\n}\n\n/**\n * Gets offset array from `arrayOffsets` or `stringOffsets`.\n * @param scenegraph - Instance of the class for structured access to GLTF data.\n * @param bufferViewIndex - Buffer view index\n * @param offsetType - The type of values in `arrayOffsets` or `stringOffsets`.\n * @param numberOfElements - The number of elements in each property array.\n * @returns Array of values offsets. The number of offsets in the array is equal to `numberOfElements` plus one.\n */\nexport function getOffsetsForProperty(\n scenegraph: GLTFScenegraph | GLTFIterator,\n bufferViewIndex: number,\n offsetType: 'UINT8' | 'UINT16' | 'UINT32' | 'UINT64' | string,\n numberOfElements: number\n): TypedArray | null {\n if (\n offsetType !== 'UINT8' &&\n offsetType !== 'UINT16' &&\n offsetType !== 'UINT32' &&\n offsetType !== 'UINT64'\n ) {\n return null;\n }\n const arrayOffsetsBytes = scenegraph.getTypedArrayForBufferView(bufferViewIndex);\n const arrayOffsets = convertRawBufferToMetadataArray(\n arrayOffsetsBytes,\n 'SCALAR', // offsets consist of ONE component\n offsetType,\n numberOfElements + 1 // The number of offsets is equal to the property table `count` plus one.\n );\n\n if (arrayOffsets instanceof BigInt64Array || arrayOffsets instanceof BigUint64Array) {\n const numericOffsets = new Float64Array(arrayOffsets.length);\n const maximumSafeOffset = BigInt(Number.MAX_SAFE_INTEGER);\n for (let index = 0; index < arrayOffsets.length; index++) {\n const offset = arrayOffsets[index];\n if (offset < 0n || offset > maximumSafeOffset) {\n throw new Error('EXT_structural_metadata: UINT64 offset exceeds the safe integer range');\n }\n numericOffsets[index] = Number(offset);\n }\n return numericOffsets;\n }\n return arrayOffsets;\n}\n\n/**\n * Converts raw bytes that are in the buffer to an array of the type defined by the schema.\n * @param data - Raw bytes in the buffer.\n * @param attributeType - SCALAR, VECN, MATN.\n * @param componentType - Type of the component in elements, e.g. 'UINT8' or 'FLOAT32'.\n * @param elementCount - Number of elements in the array. Default value is 1.\n * @returns Data array\n */\nexport function convertRawBufferToMetadataArray(\n data: Uint8Array,\n attributeType: string,\n componentType: NumericComponentType,\n elementCount: number = 1\n): BigTypedArray {\n const numberOfComponents = ATTRIBUTE_TYPE_TO_COMPONENTS[attributeType];\n const ArrayType = ATTRIBUTE_COMPONENT_TYPE_TO_ARRAY[componentType];\n const size = ATTRIBUTE_COMPONENT_TYPE_TO_BYTE_SIZE[componentType];\n const length = elementCount * numberOfComponents;\n const byteLength = length * size;\n let buffer = data.buffer;\n let offset = data.byteOffset;\n if (offset % size !== 0) {\n const bufferArray = new Uint8Array(buffer);\n buffer = bufferArray.slice(offset, offset + byteLength).buffer;\n offset = 0;\n }\n return new ArrayType(ensureArrayBuffer(buffer), offset, length);\n}\n\n/**\n * Processes data encoded in the texture associated with the primitive.\n * @param scenegraph - Instance of the class for structured access to GLTF data.\n * @param textureInfo - Reference to the texture where extension data are stored.\n * @param primitive - Primitive object in the mesh.\n * @returns Array of data taken. Null if data can't be taken from the texture.\n */\nexport function getPrimitiveTextureData(\n scenegraph: GLTFScenegraph | GLTFIterator,\n textureInfo: GLTFTextureInfoMetadata,\n primitive: GLTFMeshPrimitive\n): number[] {\n /*\n texture.index is an index for the \"textures\" array.\n The texture object referenced by this index looks like this:\n {\n \"sampler\": 0,\n \"source\": 0\n }\n \"sampler\" is an index for the \"samplers\" array\n \"source\" is an index for the \"images\" array that contains data stored in rgba channels of the image.\n\n texture.texCoord is a number-suffix (like 1) for an attribute like \"TEXCOORD_1\" in meshes.primitives\n The value of \"TEXCOORD_1\" is an accessor that is used to get coordinates.\n These coordinates are being used to get data from the image.\n\n Default for texture.texCoord is 0\n @see https://github.com/CesiumGS/glTF/blob/3d-tiles-next/specification/2.0/schema/textureInfo.schema.json\n */\n const texCoordAccessorKey = `TEXCOORD_${textureInfo.texCoord || 0}`;\n const texCoordAccessorIndex = primitive.attributes[texCoordAccessorKey];\n const textureCoordinates: TypedArray = scenegraph.getTypedArrayForAccessor(texCoordAccessorIndex);\n\n const json = scenegraph.gltf.json;\n const textureIndex: number = textureInfo.index;\n const imageIndex = json.textures?.[textureIndex]?.source;\n if (typeof imageIndex !== 'undefined') {\n const mimeType = json.images?.[imageIndex]?.mimeType;\n const parsedImage = scenegraph.gltf.images?.[imageIndex];\n // Checking for width is to prevent handling Un-processed images (e.g. [analyze] stage, where loadImages option is set to false)\n if (\n parsedImage &&\n typeof parsedImage.width !== 'undefined' &&\n !('compressed' in parsedImage && parsedImage.compressed)\n ) {\n const textureData: number[] = [];\n for (let index = 0; index < textureCoordinates.length; index += 2) {\n const value = getImageValueByCoordinates(\n parsedImage,\n mimeType,\n textureCoordinates,\n index,\n textureInfo.channels\n );\n textureData.push(value);\n }\n return textureData;\n }\n }\n return [];\n}\n\n/**\n * Puts property data to attributes.\n * It creates corresponding buffer, bufferView and accessor\n * so the data can be accessed like regular data stored in buffers.\n * @param scenegraph - Scenegraph object.\n * @param attributeName - Name of the attribute.\n * @param propertyData - Property data to store.\n * @param featureTable - Array where unique data from the property data are being stored.\n * @param primitive - Primitive object.\n */\nexport function primitivePropertyDataToAttributes(\n scenegraph: GLTFScenegraph | GLTFIterator,\n attributeName: string,\n propertyData: number[],\n featureTable: number[],\n primitive: GLTFMeshPrimitive\n): void {\n // No reason to create an empty buffer if there is no property data to store.\n if (!propertyData?.length) {\n return;\n }\n /*\n featureTable will contain unique values, e.g.\n propertyData = [24, 35, 28, 24]\n featureTable = [24, 35, 28]\n featureIndices will contain indices that refer featureTextureTable, e.g.\n featureIndices = [0, 1, 2, 0]\n */\n const featureIndices: number[] = [];\n for (const texelData of propertyData) {\n let index = featureTable.findIndex(item => item === texelData);\n if (index === -1) {\n index = featureTable.push(texelData) - 1;\n }\n featureIndices.push(index);\n }\n const typedArray = new Uint32Array(featureIndices);\n const iterator =\n scenegraph instanceof GLTFIterator ? scenegraph : new GLTFIterator(scenegraph.gltf);\n const bufferIndex = iterator.addBuffer(typedArray);\n const bufferViewIndex = iterator.addBufferView(bufferIndex, typedArray.byteLength);\n const accessorIndex = iterator.addAccessor(bufferViewIndex, {\n size: 1,\n componentType: getComponentTypeFromArray(typedArray),\n count: typedArray.length\n });\n primitive.attributes[attributeName] = accessorIndex;\n}\n\n/**\n * Gets the value from the texture by coordinates provided.\n * @param parsedImage - Image where the data are stored.\n * @param mimeType - MIME type.\n * @param textureCoordinates - uv coordinates to access data in the image.\n * @param index - Index of uv coordinates in the array textureCoordinates.\n * @param channels - Image channels where data are stored.\n * Channels of an RGBA texture are numbered 0..3 respectively.\n * For Ext_mesh_features and EXT_strucural_metadata the channels default is [0]\n * @see https://github.com/CesiumGS/glTF/blob/3d-tiles-next/extensions/2.0/Vendor/EXT_mesh_features/schema/featureIdTexture.schema.json\n * @see https://github.com/CesiumGS/glTF/blob/3d-tiles-next/extensions/2.0/Vendor/EXT_structural_metadata/schema/propertyTexture.property.schema.json\n * @returns Value taken from the image.\n */\nfunction getImageValueByCoordinates(\n parsedImage: ImageType,\n mimeType: string | undefined,\n textureCoordinates: TypedArray,\n index: number,\n channels: number[] | string = [0]\n) {\n const CHANNELS_MAP = {\n r: {offset: 0, shift: 0},\n g: {offset: 1, shift: 8},\n b: {offset: 2, shift: 16},\n a: {offset: 3, shift: 24}\n };\n\n const u = textureCoordinates[index];\n const v = textureCoordinates[index + 1];\n\n let components = 1;\n if (mimeType && (mimeType.indexOf('image/jpeg') !== -1 || mimeType.indexOf('image/png') !== -1))\n components = 4;\n const offset = coordinatesToOffset(u, v, parsedImage, components);\n let value: number = 0;\n for (const c of channels) {\n /*\n According to the EXT_feature_metadata extension specification:\n Channels are labeled by rgba and are swizzled with a string of 1-4 characters.\n According to the EXT_mesh_features extension specification:\n The channels array contains non-negative integer values corresponding to channels of the source texture that the feature ID consists of.\n Channels of an RGBA texture are numbered 0\u20133 respectively.\n Function getImageValueByCoordinates is used to process both extensions.\n So, there should be possible to get the element of CHANNELS_MAP by either index (0, 1, 2, 3) or key (r, g, b, a).\n */\n const map = typeof c === 'number' ? Object.values(CHANNELS_MAP)[c] : CHANNELS_MAP[c];\n const imageOffset = offset + map.offset;\n const imageData = getImageData(parsedImage);\n if (imageData.data.length <= imageOffset) {\n throw new Error(`${imageData.data.length} <= ${imageOffset}`);\n }\n const imageValue = imageData.data[imageOffset];\n value |= imageValue << map.shift;\n }\n return value;\n}\n\n/**\n * Retrieves the offset in the image where the data are stored.\n * @param u - u-coordinate.\n * @param v - v-coordinate.\n * @param parsedImage - Image where the data are stored.\n * @param componentsCount - Number of components the data consists of.\n * @returns Offset in the image where the data are stored.\n */\nfunction coordinatesToOffset(\n u: number,\n v: number,\n parsedImage: any,\n componentsCount: number = 1\n): number {\n const w = parsedImage.width;\n const iX = emod(u) * (w - 1);\n const indX = Math.round(iX);\n\n const h = parsedImage.height;\n const iY = emod(v) * (h - 1);\n const indY = Math.round(iY);\n const components = parsedImage.components ? parsedImage.components : componentsCount;\n // components is a number of channels in the image\n const offset = (indY * w + indX) * components;\n return offset;\n}\n\n/**\n * Parses variable-length array data.\n * In this case every value of the property in the table will be an array\n * of arbitrary length.\n * @param valuesData - Values in a flat typed array.\n * @param numberOfElements - Number of rows in the property table.\n * @param arrayOffsets - Offsets of nested arrays in the flat values array.\n * @param componentCount - Number of scalar components in each value.\n * @returns Array of typed arrays.\n */\nexport function parseVariableLengthArrayNumeric(\n valuesData: BigTypedArray,\n numberOfElements: number,\n arrayOffsets: TypedArray,\n componentCount = 1\n): BigTypedArray[] {\n const attributeValueArray: BigTypedArray[] = [];\n for (let index = 0; index < numberOfElements; index++) {\n const arrayOffset = Number(arrayOffsets[index]);\n const arrayLength = Number(arrayOffsets[index + 1]) - arrayOffset;\n if (\n !Number.isInteger(arrayOffset) ||\n !Number.isInteger(arrayLength) ||\n arrayOffset < 0 ||\n arrayLength < 0 ||\n (arrayOffset + arrayLength) * componentCount > valuesData.length\n ) {\n break;\n }\n const componentOffset = arrayOffset * componentCount;\n const componentLength = arrayLength * componentCount;\n attributeValueArray.push(valuesData.slice(componentOffset, componentOffset + componentLength));\n }\n return attributeValueArray;\n}\n\n/**\n * Parses fixed-length array data.\n * In this case every value of the property in the table will be an array\n * of constant length equal to `arrayCount`.\n * @param valuesData - Values in a flat typed array.\n * @param numberOfElements - Number of rows in the property table.\n * @param arrayCount - Nested arrays length.\n * @param componentCount - Number of scalar components in each array element.\n * @returns Array of typed arrays.\n */\nexport function parseFixedLengthArrayNumeric(\n valuesData: BigTypedArray,\n numberOfElements: number,\n arrayCount: number,\n componentCount = 1\n): BigTypedArray[] {\n const attributeValueArray: BigTypedArray[] = [];\n const rowComponentCount = arrayCount * componentCount;\n for (let index = 0; index < numberOfElements; index++) {\n const elementOffset = index * rowComponentCount;\n attributeValueArray.push(valuesData.slice(elementOffset, elementOffset + rowComponentCount));\n }\n return attributeValueArray;\n}\n\n/**\n * Decodes properties of string type from binary source.\n * @param numberOfElements - The number of elements in each property array that propertyTableProperty contains. It's a number of rows in the table.\n * @param valuesDataBytes - Data taken from values property of the property table property.\n * @param arrayOffsets - Offsets for variable-length arrays. It's null for fixed-length arrays or scalar types.\n * @param stringOffsets - Index of the buffer view containing offsets for strings. It should be available for string type.\n * @param fixedArrayCount - Number of strings in each fixed-length array row.\n * @returns String property values\n */\nexport function getPropertyDataString(\n numberOfElements: number,\n valuesDataBytes: Uint8Array,\n arrayOffsets: TypedArray | null,\n stringOffsets: TypedArray | null,\n fixedArrayCount?: number\n): string[] | string[][] {\n const textDecoder = new TextDecoder('utf8');\n\n // Variable-length string array (arrayOffsets + stringOffsets)\n // See: https://github.com/CesiumGS/3d-tiles/tree/main/specification/Metadata#strings\n if (arrayOffsets) {\n if (!stringOffsets) {\n throw new Error('stringOffsets is required for variable-length string arrays');\n }\n\n const result: string[][] = [];\n for (let featureId = 0; featureId < numberOfElements; featureId++) {\n const startStringIndex = arrayOffsets[featureId];\n const endStringIndex = arrayOffsets[featureId + 1];\n const strings: string[] = [];\n\n for (let stringIndex = startStringIndex; stringIndex < endStringIndex; stringIndex++) {\n const startByte = stringOffsets[stringIndex];\n const endByte = stringOffsets[stringIndex + 1];\n const stringData = valuesDataBytes.subarray(startByte, endByte);\n strings.push(textDecoder.decode(stringData));\n }\n\n result.push(strings);\n }\n return result;\n }\n\n // Simple strings (stringOffsets only)\n if (stringOffsets) {\n const stringsArray: string[] = [];\n const stringCount = numberOfElements * (fixedArrayCount || 1);\n for (let index = 0; index < stringCount; index++) {\n const startByte = Number(stringOffsets[index]);\n const endByte = Number(stringOffsets[index + 1]);\n if (startByte >= 0 && endByte >= startByte && endByte <= valuesDataBytes.length) {\n stringsArray.push(textDecoder.decode(valuesDataBytes.subarray(startByte, endByte)));\n }\n }\n return fixedArrayCount\n ? Array.from({length: numberOfElements}, (_unused, rowIndex) =>\n stringsArray.slice(rowIndex * fixedArrayCount, (rowIndex + 1) * fixedArrayCount)\n )\n : stringsArray;\n }\n return [];\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"3d-tiles-utils.d.ts","sourceRoot":"","sources":["../../../../../src/gltf/lib/extensions/utils/3d-tiles-utils.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAC,uBAAuB,EAAE,iBAAiB,EAAC,wCAAqC;AAC7F,OAAO,KAAK,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,yBAAyB,CAAC;AAGvE,OAAO,EAAC,cAAc,EAAC,qCAAkC;AACzD,OAAO,EAAC,YAAY,EAAC,mCAAgC;AASrD,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAyCd,wBAAgB,uBAAuB,CAAC,aAAa,KAAA,EAAE,aAAa,KAAA,GAAG,MAAM,CAK5E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,GAAG,YAAY,EACzC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAC7D,gBAAgB,EAAE,MAAM,GACvB,UAAU,GAAG,IAAI,CA8BnB;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,oBAAoB,EACnC,YAAY,GAAE,MAAU,GACvB,aAAa,CAcf;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,cAAc,GAAG,YAAY,EACzC,WAAW,EAAE,uBAAuB,EACpC,SAAS,EAAE,iBAAiB,GAC3B,MAAM,EAAE,CA6CV;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,cAAc,GAAG,YAAY,EACzC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,iBAAiB,GAC3B,IAAI,CA+BN;AAsFD;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,aAAa,EACzB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,UAAU,EACxB,cAAc,SAAI,GACjB,aAAa,EAAE,CAmBjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,aAAa,EACzB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,cAAc,SAAI,GACjB,aAAa,EAAE,CAQjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,UAAU,EAC3B,YAAY,EAAE,UAAU,GAAG,IAAI,EAC/B,aAAa,EAAE,UAAU,GAAG,IAAI,EAChC,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CA8CvB"}
1
+ {"version":3,"file":"3d-tiles-utils.d.ts","sourceRoot":"","sources":["../../../../../src/gltf/lib/extensions/utils/3d-tiles-utils.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAC,uBAAuB,EAAE,iBAAiB,EAAC,wCAAqC;AAC7F,OAAO,KAAK,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,yBAAyB,CAAC;AAGvE,OAAO,EAAC,cAAc,EAAC,qCAAkC;AACzD,OAAO,EAAC,YAAY,EAAC,mCAAgC;AASrD,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,OAAO,GACP,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,SAAS,CAAC;AAyCd,wBAAgB,uBAAuB,CAAC,aAAa,KAAA,EAAE,aAAa,KAAA,GAAG,MAAM,CAK5E;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,GAAG,YAAY,EACzC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAC7D,gBAAgB,EAAE,MAAM,GACvB,UAAU,GAAG,IAAI,CA8BnB;AAED;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,UAAU,EAChB,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,oBAAoB,EACnC,YAAY,GAAE,MAAU,GACvB,aAAa,CAcf;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,cAAc,GAAG,YAAY,EACzC,WAAW,EAAE,uBAAuB,EACpC,SAAS,EAAE,iBAAiB,GAC3B,MAAM,EAAE,CAiDV;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,cAAc,GAAG,YAAY,EACzC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,EAAE,EACtB,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,iBAAiB,GAC3B,IAAI,CA+BN;AAsFD;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,aAAa,EACzB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,UAAU,EACxB,cAAc,SAAI,GACjB,aAAa,EAAE,CAmBjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,aAAa,EACzB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,EAClB,cAAc,SAAI,GACjB,aAAa,EAAE,CAQjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,UAAU,EAC3B,YAAY,EAAE,UAAU,GAAG,IAAI,EAC/B,aAAa,EAAE,UAAU,GAAG,IAAI,EAChC,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CA8CvB"}
@@ -139,7 +139,9 @@ export function getPrimitiveTextureData(scenegraph, textureInfo, primitive) {
139
139
  const mimeType = json.images?.[imageIndex]?.mimeType;
140
140
  const parsedImage = scenegraph.gltf.images?.[imageIndex];
141
141
  // Checking for width is to prevent handling Un-processed images (e.g. [analyze] stage, where loadImages option is set to false)
142
- if (parsedImage && typeof parsedImage.width !== 'undefined') {
142
+ if (parsedImage &&
143
+ typeof parsedImage.width !== 'undefined' &&
144
+ !('compressed' in parsedImage && parsedImage.compressed)) {
143
145
  const textureData = [];
144
146
  for (let index = 0; index < textureCoordinates.length; index += 2) {
145
147
  const value = getImageValueByCoordinates(parsedImage, mimeType, textureCoordinates, index, textureInfo.channels);
@@ -1 +1 @@
1
- {"version":3,"file":"3d-tiles-utils.js","sourceRoot":"","sources":["../../../../../src/gltf/lib/extensions/utils/3d-tiles-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"3d-tiles-utils.js","sourceRoot":"","sources":["../../../../../src/gltf/lib/extensions/utils/3d-tiles-utils.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,7 @@ var import_resolve_url = require("../gltf-utils/resolve-url.cjs");
34
34
  var import_resolve_gltf_file = require("../gltf-utils/resolve-gltf-file.cjs");
35
35
  var import_get_typed_array = require("../gltf-utils/get-typed-array.cjs");
36
36
  var import_gltf_extensions = require("../api/gltf-extensions.cjs");
37
+ var import_MSFT_texture_dds = require("../extensions/MSFT_texture_dds.cjs");
37
38
  var import_normalize_gltf_v1 = require("../api/normalize-gltf-v1.cjs");
38
39
  function getGLTFImageOptions(options, mimeType) {
39
40
  const basisOptions = options.basis;
@@ -337,6 +338,30 @@ async function loadImage(gltf, image, index, options, context) {
337
338
  }
338
339
  (0, import_assert.assert)(arrayBuffer, "glTF image has no data");
339
340
  const gltfOptions = getGLTFImageOptions(options, image.mimeType);
341
+ const ddsLoader = (0, import_MSFT_texture_dds.getDDSLoader)(context);
342
+ const ddsSelected = Boolean(
343
+ ddsLoader && !options.gltf?.excludeExtensions?.includes("MSFT_texture_dds") && gltf.json.textures?.some(
344
+ (texture) => texture.source === index && texture.extensions?.MSFT_texture_dds?.source === index
345
+ )
346
+ );
347
+ if (ddsSelected) {
348
+ const levels = await (0, import_loader_utils.parseFromContext)(
349
+ arrayBuffer,
350
+ ddsLoader,
351
+ options,
352
+ context
353
+ );
354
+ (0, import_assert.assert)(levels.length > 0, "MSFT_texture_dds parser returned no texture levels");
355
+ gltf.images = gltf.images || [];
356
+ gltf.images[index] = {
357
+ compressed: true,
358
+ mipmaps: true,
359
+ width: levels[0].width,
360
+ height: levels[0].height,
361
+ data: levels
362
+ };
363
+ return;
364
+ }
340
365
  let parsedImage = await (0, import_loader_utils.parseFromContext)(
341
366
  arrayBuffer,
342
367
  [import_images.ImageLoader, import_images2.BasisLoader],