@loaders.gl/gltf 4.0.0-alpha.6 → 4.0.0-alpha.7

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 (193) hide show
  1. package/dist/dist.min.js +1415 -1339
  2. package/dist/es5/glb-loader.js +2 -2
  3. package/dist/es5/glb-loader.js.map +1 -1
  4. package/dist/es5/glb-writer.js +3 -4
  5. package/dist/es5/glb-writer.js.map +1 -1
  6. package/dist/es5/gltf-loader.js +3 -3
  7. package/dist/es5/gltf-loader.js.map +1 -1
  8. package/dist/es5/index.js +9 -3
  9. package/dist/es5/index.js.map +1 -1
  10. package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
  11. package/dist/es5/lib/api/gltf-scenegraph.js +47 -30
  12. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
  13. package/dist/es5/lib/api/post-process-gltf.js +164 -116
  14. package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
  15. package/dist/es5/lib/encoders/encode-glb.js +1 -1
  16. package/dist/es5/lib/encoders/encode-glb.js.map +1 -1
  17. package/dist/es5/lib/encoders/encode-gltf.js +2 -3
  18. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -1
  19. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +3 -5
  20. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  21. package/dist/es5/lib/extensions/EXT_texture_webp.js +2 -3
  22. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -1
  23. package/dist/es5/lib/extensions/KHR_binary_gltf.js +2 -3
  24. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
  25. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +6 -5
  26. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  27. package/dist/es5/lib/extensions/KHR_texture_basisu.js +3 -4
  28. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -1
  29. package/dist/es5/lib/extensions/KHR_texture_transform.js +9 -8
  30. package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -1
  31. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +2 -2
  32. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  33. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +3 -3
  34. package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
  35. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +3 -3
  36. package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
  37. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +2 -2
  38. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  39. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
  40. package/dist/es5/lib/gltf-utils/gltf-utils.js +24 -0
  41. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
  42. package/dist/es5/lib/parsers/parse-glb.js +10 -10
  43. package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
  44. package/dist/es5/lib/parsers/parse-gltf.js +6 -10
  45. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
  46. package/dist/es5/lib/types/gltf-json-schema.js.map +1 -1
  47. package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +1 -1
  48. package/dist/es5/lib/types/gltf-types.js.map +1 -1
  49. package/dist/es5/lib/utils/version.js +1 -1
  50. package/dist/esm/glb-loader.js +1 -1
  51. package/dist/esm/glb-loader.js.map +1 -1
  52. package/dist/esm/glb-writer.js +1 -1
  53. package/dist/esm/glb-writer.js.map +1 -1
  54. package/dist/esm/gltf-loader.js +3 -3
  55. package/dist/esm/gltf-loader.js.map +1 -1
  56. package/dist/esm/index.js +2 -1
  57. package/dist/esm/index.js.map +1 -1
  58. package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
  59. package/dist/esm/lib/api/gltf-scenegraph.js +40 -29
  60. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -1
  61. package/dist/esm/lib/api/post-process-gltf.js +167 -112
  62. package/dist/esm/lib/api/post-process-gltf.js.map +1 -1
  63. package/dist/esm/lib/encoders/encode-glb.js +1 -1
  64. package/dist/esm/lib/encoders/encode-glb.js.map +1 -1
  65. package/dist/esm/lib/encoders/encode-gltf.js +1 -1
  66. package/dist/esm/lib/encoders/encode-gltf.js.map +1 -1
  67. package/dist/esm/lib/extensions/EXT_meshopt_compression.js +2 -3
  68. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  69. package/dist/esm/lib/extensions/EXT_texture_webp.js +1 -1
  70. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -1
  71. package/dist/esm/lib/extensions/KHR_binary_gltf.js +1 -1
  72. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -1
  73. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +5 -4
  74. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  75. package/dist/esm/lib/extensions/KHR_texture_basisu.js +2 -2
  76. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -1
  77. package/dist/esm/lib/extensions/KHR_texture_transform.js +7 -6
  78. package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -1
  79. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +1 -1
  80. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  81. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +1 -1
  82. package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
  83. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +1 -1
  84. package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
  85. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +1 -1
  86. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  87. package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
  88. package/dist/esm/lib/gltf-utils/gltf-utils.js +20 -0
  89. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
  90. package/dist/esm/lib/parsers/parse-glb.js +10 -10
  91. package/dist/esm/lib/parsers/parse-glb.js.map +1 -1
  92. package/dist/esm/lib/parsers/parse-gltf.js +5 -6
  93. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -1
  94. package/dist/esm/lib/types/gltf-json-schema.js.map +1 -1
  95. package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -1
  96. package/dist/esm/lib/types/gltf-types.js.map +1 -1
  97. package/dist/esm/lib/utils/version.js +1 -1
  98. package/dist/glb-loader.d.ts +2 -2
  99. package/dist/glb-loader.js +2 -5
  100. package/dist/glb-writer.d.ts.map +1 -1
  101. package/dist/glb-writer.js +4 -6
  102. package/dist/gltf-loader.d.ts +5 -5
  103. package/dist/gltf-loader.d.ts.map +1 -1
  104. package/dist/gltf-loader.js +3 -3
  105. package/dist/index.d.ts +8 -5
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +12 -5
  108. package/dist/lib/api/gltf-extensions.d.ts +1 -1
  109. package/dist/lib/api/gltf-extensions.d.ts.map +1 -1
  110. package/dist/lib/api/gltf-scenegraph.d.ts +6 -4
  111. package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
  112. package/dist/lib/api/gltf-scenegraph.js +43 -30
  113. package/dist/lib/api/post-process-gltf.d.ts +4 -1
  114. package/dist/lib/api/post-process-gltf.d.ts.map +1 -1
  115. package/dist/lib/api/post-process-gltf.js +186 -123
  116. package/dist/lib/encoders/encode-glb.d.ts +13 -1
  117. package/dist/lib/encoders/encode-glb.d.ts.map +1 -1
  118. package/dist/lib/encoders/encode-glb.js +15 -4
  119. package/dist/lib/encoders/encode-gltf.js +2 -5
  120. package/dist/lib/extensions/EXT_meshopt_compression.d.ts +1 -1
  121. package/dist/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -1
  122. package/dist/lib/extensions/EXT_meshopt_compression.js +3 -7
  123. package/dist/lib/extensions/EXT_texture_webp.d.ts +1 -1
  124. package/dist/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  125. package/dist/lib/extensions/EXT_texture_webp.js +2 -5
  126. package/dist/lib/extensions/KHR_binary_gltf.d.ts +1 -1
  127. package/dist/lib/extensions/KHR_binary_gltf.d.ts.map +1 -1
  128. package/dist/lib/extensions/KHR_binary_gltf.js +2 -5
  129. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts +1 -1
  130. package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
  131. package/dist/lib/extensions/KHR_draco_mesh_compression.js +5 -8
  132. package/dist/lib/extensions/KHR_texture_basisu.d.ts +1 -1
  133. package/dist/lib/extensions/KHR_texture_basisu.d.ts.map +1 -1
  134. package/dist/lib/extensions/KHR_texture_basisu.js +3 -6
  135. package/dist/lib/extensions/KHR_texture_transform.d.ts.map +1 -1
  136. package/dist/lib/extensions/KHR_texture_transform.js +7 -10
  137. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +1 -1
  138. package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -1
  139. package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +2 -5
  140. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts +1 -1
  141. package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts.map +1 -1
  142. package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +3 -6
  143. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts +1 -1
  144. package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts.map +1 -1
  145. package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +3 -6
  146. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts +1 -1
  147. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -1
  148. package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +2 -5
  149. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts +1 -1
  150. package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts.map +1 -1
  151. package/dist/lib/gltf-utils/gltf-utils.d.ts +7 -0
  152. package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -1
  153. package/dist/lib/gltf-utils/gltf-utils.js +28 -1
  154. package/dist/lib/parsers/parse-glb.d.ts +15 -3
  155. package/dist/lib/parsers/parse-glb.d.ts.map +1 -1
  156. package/dist/lib/parsers/parse-glb.js +43 -18
  157. package/dist/lib/parsers/parse-gltf.d.ts +8 -4
  158. package/dist/lib/parsers/parse-gltf.d.ts.map +1 -1
  159. package/dist/lib/parsers/parse-gltf.js +13 -34
  160. package/dist/lib/types/gltf-json-schema.d.ts +151 -138
  161. package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
  162. package/dist/lib/types/gltf-postprocessed-schema.d.ts +174 -209
  163. package/dist/lib/types/gltf-postprocessed-schema.d.ts.map +1 -1
  164. package/dist/lib/types/gltf-postprocessed-schema.js +1 -1
  165. package/dist/lib/types/gltf-types.d.ts +18 -6
  166. package/dist/lib/types/gltf-types.d.ts.map +1 -1
  167. package/package.json +6 -6
  168. package/src/glb-loader.ts +3 -3
  169. package/src/glb-writer.ts +3 -1
  170. package/src/gltf-loader.ts +12 -8
  171. package/src/index.ts +32 -13
  172. package/src/lib/api/gltf-extensions.ts +1 -1
  173. package/src/lib/api/gltf-scenegraph.ts +55 -37
  174. package/src/lib/api/post-process-gltf.ts +275 -150
  175. package/src/lib/encoders/encode-glb.ts +15 -5
  176. package/src/lib/encoders/encode-gltf.ts +1 -1
  177. package/src/lib/extensions/EXT_meshopt_compression.ts +4 -6
  178. package/src/lib/extensions/EXT_texture_webp.ts +2 -2
  179. package/src/lib/extensions/KHR_binary_gltf.ts +2 -2
  180. package/src/lib/extensions/KHR_draco_mesh_compression.ts +7 -7
  181. package/src/lib/extensions/KHR_texture_basisu.ts +3 -3
  182. package/src/lib/extensions/KHR_texture_transform.ts +22 -19
  183. package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +2 -2
  184. package/src/lib/extensions/deprecated/KHR_lights_punctual.ts +2 -2
  185. package/src/lib/extensions/deprecated/KHR_materials_unlit.ts +2 -2
  186. package/src/lib/extensions/deprecated/KHR_techniques_webgl.ts +2 -2
  187. package/src/lib/gltf-utils/gltf-attribute-utils.ts +1 -1
  188. package/src/lib/gltf-utils/gltf-utils.ts +31 -0
  189. package/src/lib/parsers/parse-glb.ts +50 -24
  190. package/src/lib/parsers/parse-gltf.ts +22 -16
  191. package/src/lib/types/gltf-json-schema.ts +165 -138
  192. package/src/lib/types/gltf-postprocessed-schema.ts +289 -212
  193. package/src/lib/types/gltf-types.ts +35 -59
@@ -1 +1 @@
1
- {"version":3,"file":"post-process-gltf.js","names":["_assert","require","_gltfUtils","_DEFAULT_SAMPLER","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","COMPONENTS","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","BYTES","GL_SAMPLER","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","REPEAT","LINEAR","NEAREST_MIPMAP_LINEAR","SAMPLER_PARAMETER_GLTF_TO_GL","magFilter","minFilter","wrapS","wrapT","DEFAULT_SAMPLER","getBytesFromComponentType","componentType","getSizeFromAccessorType","type","GLTFPostProcessor","_classCallCheck2","_createClass2","value","postProcess","gltf","options","undefined","json","_gltf$buffers","buffers","_gltf$images","images","_gltf$baseUri","baseUri","assert","_resolveTree","_this","bufferViews","map","bufView","_resolveBufferView","image","_resolveImage","samplers","sampler","_resolveSampler","textures","texture","_resolveTexture","accessors","accessor","_resolveAccessor","materials","material","_resolveMaterial","meshes","mesh","_resolveMesh","nodes","node","_resolveNode","skins","skin","_resolveSkin","scenes","scene","_resolveScene","getScene","index","_get","getNode","getSkin","getMesh","getMaterial","getAccessor","getCamera","getTexture","getSampler","getImage","getBufferView","getBuffer","array","_typeof2","console","warn","concat","_this2","id","_this3","children","child","reduce","accum","meshIndex","primitives","camera","inverseBindMatrices","_this4","primitive","attributes","attribute","indices","normalTexture","occlusionTexture","occlustionTexture","emissiveTexture","emmisiveTexture","emissiveFactor","pbrMetallicRoughness","mr","baseColorTexture","metallicRoughnessTexture","bufferView","bytesPerComponent","components","bytesPerElement","buffer","_getAccessorArrayType","getAccessorArrayTypeAndLength","ArrayType","byteLength","byteOffset","cutBuffer","arrayBuffer","slice","byteStride","_getValueFromInterleavedBuffer","count","result","Uint8Array","elementOffset","set","parameters","glEnum","_enumSamplerParameter","preloadedImage","bufferIndex","data","_resolveCamera","perspective","orthographic","postProcessGLTF"],"sources":["../../../../src/lib/api/post-process-gltf.ts"],"sourcesContent":["import {assert} from '../utils/assert';\nimport {getAccessorArrayTypeAndLength} from '../gltf-utils/gltf-utils';\nimport {BufferView} from '../types/gltf-json-schema';\nimport {BufferView as BufferViewPostprocessed} from '../types/gltf-postprocessed-schema';\n\n// This is a post processor for loaded glTF files\n// The goal is to make the loaded data easier to use in WebGL applications\n//\n// Functions:\n// * Resolve indexed arrays structure of glTF into a linked tree.\n// * Translate stringified enum keys and values into WebGL constants.\n// * Load images (optional)\n\n// ENUM LOOKUP\n\nconst COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\nconst BYTES = {\n 5120: 1, // BYTE\n 5121: 1, // UNSIGNED_BYTE\n 5122: 2, // SHORT\n 5123: 2, // UNSIGNED_SHORT\n 5125: 4, // UNSIGNED_INT\n 5126: 4 // FLOAT\n};\n\nconst GL_SAMPLER = {\n // Sampler parameters\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n\n // Sampler default values\n REPEAT: 0x2901,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_LINEAR: 0x2702\n};\n\nconst SAMPLER_PARAMETER_GLTF_TO_GL = {\n magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,\n minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,\n wrapS: GL_SAMPLER.TEXTURE_WRAP_S,\n wrapT: GL_SAMPLER.TEXTURE_WRAP_T\n};\n\n// When undefined, a sampler with repeat wrapping and auto filtering should be used.\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\nconst DEFAULT_SAMPLER = {\n [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,\n [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,\n [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,\n [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT\n};\n\nfunction getBytesFromComponentType(componentType) {\n return BYTES[componentType];\n}\n\nfunction getSizeFromAccessorType(type) {\n return COMPONENTS[type];\n}\n\nclass GLTFPostProcessor {\n baseUri: string = '';\n json: Record<string, any> = {};\n buffers: [] = [];\n images: [] = [];\n\n postProcess(gltf, options = {}) {\n const {json, buffers = [], images = [], baseUri = ''} = gltf;\n assert(json);\n\n this.baseUri = baseUri;\n this.json = json;\n this.buffers = buffers;\n this.images = images;\n\n this._resolveTree(this.json, options);\n\n return this.json;\n }\n\n // Convert indexed glTF structure into tree structure\n // cross-link index resolution, enum lookup, convenience calculations\n // eslint-disable-next-line complexity\n _resolveTree(json, options = {}) {\n if (json.bufferViews) {\n json.bufferViews = json.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));\n }\n if (json.images) {\n json.images = json.images.map((image, i) => this._resolveImage(image, i));\n }\n if (json.samplers) {\n json.samplers = json.samplers.map((sampler, i) => this._resolveSampler(sampler, i));\n }\n if (json.textures) {\n json.textures = json.textures.map((texture, i) => this._resolveTexture(texture, i));\n }\n if (json.accessors) {\n json.accessors = json.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));\n }\n if (json.materials) {\n json.materials = json.materials.map((material, i) => this._resolveMaterial(material, i));\n }\n if (json.meshes) {\n json.meshes = json.meshes.map((mesh, i) => this._resolveMesh(mesh, i));\n }\n if (json.nodes) {\n json.nodes = json.nodes.map((node, i) => this._resolveNode(node, i));\n }\n if (json.skins) {\n json.skins = json.skins.map((skin, i) => this._resolveSkin(skin, i));\n }\n if (json.scenes) {\n json.scenes = json.scenes.map((scene, i) => this._resolveScene(scene, i));\n }\n if (json.scene !== undefined) {\n json.scene = json.scenes[this.json.scene];\n }\n }\n\n getScene(index) {\n return this._get('scenes', index);\n }\n\n getNode(index) {\n return this._get('nodes', index);\n }\n\n getSkin(index) {\n return this._get('skins', index);\n }\n\n getMesh(index) {\n return this._get('meshes', index);\n }\n\n getMaterial(index) {\n return this._get('materials', index);\n }\n\n getAccessor(index) {\n return this._get('accessors', index);\n }\n\n getCamera(index) {\n return null; // TODO: fix this\n }\n\n getTexture(index) {\n return this._get('textures', index);\n }\n\n getSampler(index) {\n return this._get('samplers', index);\n }\n\n getImage(index) {\n return this._get('images', index);\n }\n\n getBufferView(index) {\n return this._get('bufferViews', index);\n }\n\n getBuffer(index) {\n return this._get('buffers', index);\n }\n\n _get(array, index) {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && this.json[array][index];\n if (!object) {\n console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n // PARSING HELPERS\n\n _resolveScene(scene, index) {\n // scene = {...scene};\n scene.id = scene.id || `scene-${index}`;\n scene.nodes = (scene.nodes || []).map((node) => this.getNode(node));\n return scene;\n }\n\n _resolveNode(node, index) {\n // node = {...node};\n node.id = node.id || `node-${index}`;\n if (node.children) {\n node.children = node.children.map((child) => this.getNode(child));\n }\n if (node.mesh !== undefined) {\n node.mesh = this.getMesh(node.mesh);\n } else if (node.meshes !== undefined && node.meshes.length) {\n node.mesh = node.meshes.reduce(\n (accum, meshIndex) => {\n const mesh = this.getMesh(meshIndex);\n accum.id = mesh.id;\n accum.primitives = accum.primitives.concat(mesh.primitives);\n return accum;\n },\n {primitives: []}\n );\n }\n if (node.camera !== undefined) {\n node.camera = this.getCamera(node.camera);\n }\n if (node.skin !== undefined) {\n node.skin = this.getSkin(node.skin);\n }\n return node;\n }\n\n _resolveSkin(skin, index) {\n // skin = {...skin};\n skin.id = skin.id || `skin-${index}`;\n skin.inverseBindMatrices = this.getAccessor(skin.inverseBindMatrices);\n return skin;\n }\n\n _resolveMesh(mesh, index) {\n // mesh = {...mesh};\n mesh.id = mesh.id || `mesh-${index}`;\n if (mesh.primitives) {\n mesh.primitives = mesh.primitives.map((primitive) => {\n primitive = {...primitive};\n const attributes = primitive.attributes;\n primitive.attributes = {};\n for (const attribute in attributes) {\n primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);\n }\n if (primitive.indices !== undefined) {\n primitive.indices = this.getAccessor(primitive.indices);\n }\n if (primitive.material !== undefined) {\n primitive.material = this.getMaterial(primitive.material);\n }\n return primitive;\n });\n }\n return mesh;\n }\n\n _resolveMaterial(material, index) {\n // material = {...material};\n material.id = material.id || `material-${index}`;\n if (material.normalTexture) {\n material.normalTexture = {...material.normalTexture};\n material.normalTexture.texture = this.getTexture(material.normalTexture.index);\n }\n if (material.occlusionTexture) {\n material.occlustionTexture = {...material.occlustionTexture};\n material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);\n }\n if (material.emissiveTexture) {\n material.emmisiveTexture = {...material.emmisiveTexture};\n material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);\n }\n if (!material.emissiveFactor) {\n material.emissiveFactor = material.emmisiveTexture ? [1, 1, 1] : [0, 0, 0];\n }\n\n if (material.pbrMetallicRoughness) {\n material.pbrMetallicRoughness = {...material.pbrMetallicRoughness};\n const mr = material.pbrMetallicRoughness;\n if (mr.baseColorTexture) {\n mr.baseColorTexture = {...mr.baseColorTexture};\n mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);\n }\n if (mr.metallicRoughnessTexture) {\n mr.metallicRoughnessTexture = {...mr.metallicRoughnessTexture};\n mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);\n }\n }\n return material;\n }\n\n _resolveAccessor(accessor, index) {\n // accessor = {...accessor};\n accessor.id = accessor.id || `accessor-${index}`;\n if (accessor.bufferView !== undefined) {\n // Draco encoded meshes don't have bufferView\n accessor.bufferView = this.getBufferView(accessor.bufferView);\n }\n\n // Look up enums\n accessor.bytesPerComponent = getBytesFromComponentType(accessor.componentType);\n accessor.components = getSizeFromAccessorType(accessor.type);\n accessor.bytesPerElement = accessor.bytesPerComponent * accessor.components;\n\n // Create TypedArray for the accessor\n // Note: The canonical way to instantiate is to ignore this array and create\n // WebGLBuffer's using the bufferViews.\n if (accessor.bufferView) {\n const buffer = accessor.bufferView.buffer;\n const {ArrayType, byteLength} = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);\n const byteOffset =\n (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;\n let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n if (accessor.bufferView.byteStride) {\n cutBuffer = this._getValueFromInterleavedBuffer(\n buffer,\n byteOffset,\n accessor.bufferView.byteStride,\n accessor.bytesPerElement,\n accessor.count\n );\n }\n accessor.value = new ArrayType(cutBuffer);\n }\n\n return accessor;\n }\n\n /**\n * Take values of particular accessor from interleaved buffer\n * various parts of the buffer\n * @param buffer\n * @param byteOffset\n * @param byteStride\n * @param bytesPerElement\n * @param count\n * @returns\n */\n _getValueFromInterleavedBuffer(buffer, byteOffset, byteStride, bytesPerElement, count) {\n const result = new Uint8Array(count * bytesPerElement);\n for (let i = 0; i < count; i++) {\n const elementOffset = byteOffset + i * byteStride;\n result.set(\n new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)),\n i * bytesPerElement\n );\n }\n return result.buffer;\n }\n\n _resolveTexture(texture, index) {\n // texture = {...texture};\n texture.id = texture.id || `texture-${index}`;\n texture.sampler = 'sampler' in texture ? this.getSampler(texture.sampler) : DEFAULT_SAMPLER;\n texture.source = this.getImage(texture.source);\n return texture;\n }\n\n _resolveSampler(sampler, index) {\n // sampler = {...sampler};\n sampler.id = sampler.id || `sampler-${index}`;\n // Map textual parameters to GL parameter values\n sampler.parameters = {};\n for (const key in sampler) {\n const glEnum = this._enumSamplerParameter(key);\n if (glEnum !== undefined) {\n sampler.parameters[glEnum] = sampler[key];\n }\n }\n return sampler;\n }\n\n _enumSamplerParameter(key) {\n return SAMPLER_PARAMETER_GLTF_TO_GL[key];\n }\n\n _resolveImage(image, index) {\n // image = {...image};\n image.id = image.id || `image-${index}`;\n if (image.bufferView !== undefined) {\n image.bufferView = this.getBufferView(image.bufferView);\n }\n\n // Check if image has been preloaded by the GLTFLoader\n // If so, link it into the JSON and drop the URI\n const preloadedImage = this.images[index];\n if (preloadedImage) {\n image.image = preloadedImage;\n }\n\n return image;\n }\n\n _resolveBufferView(bufferView: BufferView, index: number): BufferViewPostprocessed {\n // bufferView = {...bufferView};\n const bufferIndex = bufferView.buffer;\n const result: BufferViewPostprocessed = {\n id: `bufferView-${index}`,\n ...bufferView,\n buffer: this.buffers[bufferIndex]\n };\n\n // @ts-expect-error\n const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n // @ts-expect-error\n let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n\n if ('byteOffset' in bufferView) {\n byteOffset += bufferView.byteOffset;\n }\n\n result.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n return result;\n }\n\n _resolveCamera(camera, index) {\n camera.id = camera.id || `camera-${index}`;\n // TODO - create 4x4 matrices\n if (camera.perspective) {\n // camera.matrix = createPerspectiveMatrix(camera.perspective);\n }\n if (camera.orthographic) {\n // camera.matrix = createOrthographicMatrix(camera.orthographic);\n }\n return camera;\n }\n}\n\nexport function postProcessGLTF(gltf, options?) {\n return new GLTFPostProcessor().postProcess(gltf, options);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"post-process-gltf.js","names":["_assert","require","_gltfUtils","_DEFAULT_SAMPLER_PARA","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","COMPONENTS","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","BYTES","GL_SAMPLER","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","REPEAT","LINEAR","NEAREST_MIPMAP_LINEAR","SAMPLER_PARAMETER_GLTF_TO_GL","magFilter","minFilter","wrapS","wrapT","DEFAULT_SAMPLER_PARAMETERS","makeDefaultSampler","id","parameters","getBytesFromComponentType","componentType","getSizeFromAccessorType","type","GLTFPostProcessor","_classCallCheck2","_createClass2","value","postProcess","gltf","options","undefined","json","_gltf$buffers","buffers","_gltf$images","images","_gltf$baseUri","baseUri","assert","jsonUnprocessed","_resolveTree","_this","bufferViews","map","bufView","_resolveBufferView","image","_resolveImage","samplers","sampler","_resolveSampler","textures","texture","_resolveTexture","accessors","accessor","_resolveAccessor","materials","material","_resolveMaterial","meshes","mesh","_resolveMesh","nodes","node","_resolveNode","_resolveNodeChildren","skins","skin","_resolveSkin","scenes","scene","_resolveScene","getScene","index","_get","getNode","getSkin","getMesh","getMaterial","getAccessor","getCamera","cameras","getTexture","getSampler","getImage","getBufferView","getBuffer","array","_typeof2","console","warn","concat","_this2","gltfNode","_this3","camera","reduce","accum","meshIndex","primitives","_this4","children","child","gltfSkin","inverseBindMatrices","gltfMesh","_this5","gltfPrimitive","primitive","attributes","indices","attribute","gltfMaterial","normalTexture","occlusionTexture","emissiveTexture","emissiveFactor","pbrMetallicRoughness","mr","baseColorTexture","metallicRoughnessTexture","gltfAccessor","bytesPerComponent","components","bytesPerElement","bufferView","sparse","buffer","_getAccessorArrayType","getAccessorArrayTypeAndLength","ArrayType","byteLength","byteOffset","cutBuffer","arrayBuffer","slice","byteStride","_getValueFromInterleavedBuffer","count","result","Uint8Array","elementOffset","set","gltfTexture","gltfSampler","glEnum","_enumSamplerParameter","gltfImage","preloadedImage","gltfBufferView","bufferIndex","data","_resolveCamera","gltfCamera","perspective","orthographic","postProcessGLTF"],"sources":["../../../../src/lib/api/post-process-gltf.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {ParseGLTFOptions} from '../parsers/parse-gltf';\n\nimport type {\n GLTF,\n GLTFAccessor,\n GLTFBufferView,\n GLTFCamera,\n GLTFImage,\n GLTFMaterial,\n GLTFMesh,\n GLTFNode,\n GLTFSampler,\n GLTFScene,\n GLTFSkin,\n GLTFTexture\n} from '../types/gltf-json-schema';\n\nimport type {\n GLTFPostprocessed,\n GLTFAccessorPostprocessed,\n GLTFBufferPostprocessed,\n GLTFBufferViewPostprocessed,\n GLTFCameraPostprocessed,\n GLTFImagePostprocessed,\n GLTFMaterialPostprocessed,\n GLTFMeshPostprocessed,\n GLTFNodePostprocessed,\n GLTFSamplerPostprocessed,\n GLTFScenePostprocessed,\n GLTFSkinPostprocessed,\n GLTFTexturePostprocessed,\n GLTFMeshPrimitivePostprocessed\n} from '../types/gltf-postprocessed-schema';\n\nimport {assert} from '../utils/assert';\nimport {getAccessorArrayTypeAndLength} from '../gltf-utils/gltf-utils';\n\n// This is a post processor for loaded glTF files\n// The goal is to make the loaded data easier to use in WebGL applications\n//\n// Functions:\n// * Resolve indexed arrays structure of glTF into a linked tree.\n// * Translate stringified enum keys and values into WebGL constants.\n// * Load images (optional)\n\n// ENUM LOOKUP\n\nconst COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\nconst BYTES = {\n 5120: 1, // BYTE\n 5121: 1, // UNSIGNED_BYTE\n 5122: 2, // SHORT\n 5123: 2, // UNSIGNED_SHORT\n 5125: 4, // UNSIGNED_INT\n 5126: 4 // FLOAT\n};\n\nconst GL_SAMPLER = {\n // Sampler parameters\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n\n // Sampler default values\n REPEAT: 0x2901,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_LINEAR: 0x2702\n};\n\nconst SAMPLER_PARAMETER_GLTF_TO_GL = {\n magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,\n minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,\n wrapS: GL_SAMPLER.TEXTURE_WRAP_S,\n wrapT: GL_SAMPLER.TEXTURE_WRAP_T\n};\n\n// When undefined, a sampler with repeat wrapping and auto filtering should be used.\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\nconst DEFAULT_SAMPLER_PARAMETERS = {\n [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,\n [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,\n [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,\n [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT\n};\n\nfunction makeDefaultSampler(): GLTFSamplerPostprocessed {\n return {\n id: 'default-sampler',\n parameters: DEFAULT_SAMPLER_PARAMETERS\n };\n}\n\nfunction getBytesFromComponentType(componentType) {\n return BYTES[componentType];\n}\n\nfunction getSizeFromAccessorType(type) {\n return COMPONENTS[type];\n}\n\nclass GLTFPostProcessor {\n baseUri: string = '';\n // @ts-expect-error\n jsonUnprocessed: GLTF;\n // @ts-expect-error\n json: GLTFPostprocessed;\n buffers: {\n arrayBuffer: ArrayBuffer;\n byteOffset: number;\n byteLength: number;\n }[] = [];\n images: any[] = [];\n\n postProcess(gltf: GLTFWithBuffers, options = {}) {\n const {json, buffers = [], images = []} = gltf;\n // @ts-expect-error\n const {baseUri = ''} = gltf;\n assert(json);\n\n this.baseUri = baseUri;\n this.buffers = buffers;\n this.images = images;\n this.jsonUnprocessed = json;\n\n this.json = this._resolveTree(gltf.json, options);\n\n return this.json;\n }\n\n // Convert indexed glTF structure into tree structure\n // cross-link index resolution, enum lookup, convenience calculations\n // eslint-disable-next-line complexity, max-statements\n _resolveTree(gltf: GLTF, options = {}): GLTFPostprocessed {\n // @ts-expect-error\n const json: GLTFPostprocessed = {...gltf};\n this.json = json;\n\n if (gltf.bufferViews) {\n json.bufferViews = gltf.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));\n }\n if (gltf.images) {\n json.images = gltf.images.map((image, i) => this._resolveImage(image, i));\n }\n if (gltf.samplers) {\n json.samplers = gltf.samplers.map((sampler, i) => this._resolveSampler(sampler, i));\n }\n if (gltf.textures) {\n json.textures = gltf.textures.map((texture, i) => this._resolveTexture(texture, i));\n }\n if (gltf.accessors) {\n json.accessors = gltf.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));\n }\n if (gltf.materials) {\n json.materials = gltf.materials.map((material, i) => this._resolveMaterial(material, i));\n }\n if (gltf.meshes) {\n json.meshes = gltf.meshes.map((mesh, i) => this._resolveMesh(mesh, i));\n }\n if (gltf.nodes) {\n json.nodes = gltf.nodes.map((node, i) => this._resolveNode(node, i));\n json.nodes = json.nodes.map((node, i) => this._resolveNodeChildren(node));\n }\n if (gltf.skins) {\n json.skins = gltf.skins.map((skin, i) => this._resolveSkin(skin, i));\n }\n if (gltf.scenes) {\n json.scenes = gltf.scenes.map((scene, i) => this._resolveScene(scene, i));\n }\n if (typeof this.json.scene === 'number' && json.scenes) {\n json.scene = json.scenes[this.json.scene];\n }\n\n return json;\n }\n\n getScene(index: number): GLTFScenePostprocessed {\n return this._get(this.json.scenes, index);\n }\n\n getNode(index: number): GLTFNodePostprocessed {\n return this._get(this.json.nodes, index);\n }\n\n getSkin(index: number): GLTFSkinPostprocessed {\n return this._get(this.json.skins, index);\n }\n\n getMesh(index: number): GLTFMeshPostprocessed {\n return this._get(this.json.meshes, index);\n }\n\n getMaterial(index: number): GLTFMaterialPostprocessed {\n return this._get(this.json.materials, index);\n }\n\n getAccessor(index: number): GLTFAccessorPostprocessed {\n return this._get(this.json.accessors, index);\n }\n\n getCamera(index: number): GLTFCameraPostprocessed {\n return this._get(this.json.cameras, index);\n }\n\n getTexture(index: number): GLTFTexturePostprocessed {\n return this._get(this.json.textures, index);\n }\n\n getSampler(index: number): GLTFSamplerPostprocessed {\n return this._get(this.json.samplers, index);\n }\n\n getImage(index: number): GLTFImagePostprocessed {\n return this._get(this.json.images, index);\n }\n\n getBufferView(index: number): GLTFBufferViewPostprocessed {\n return this._get(this.json.bufferViews, index);\n }\n\n getBuffer(index: number): GLTFBufferPostprocessed {\n return this._get(this.json.buffers, index);\n }\n\n _get<T>(array: T[] | undefined, index: number): T {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = array && array[index];\n if (!object) {\n console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object as T;\n }\n\n // PARSING HELPERS\n\n _resolveScene(scene: GLTFScene, index: number): GLTFScenePostprocessed {\n return {\n ...scene,\n // @ts-ignore\n id: scene.id || `scene-${index}`,\n nodes: (scene.nodes || []).map((node) => this.getNode(node))\n };\n }\n\n _resolveNode(gltfNode: GLTFNode, index: number): GLTFNodePostprocessed {\n // @ts-expect-error\n const node: GLTFNodePostprocessed = {\n ...gltfNode,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfNode?.id || `node-${index}`\n };\n if (gltfNode.mesh !== undefined) {\n node.mesh = this.getMesh(gltfNode.mesh);\n }\n if (gltfNode.camera !== undefined) {\n node.camera = this.getCamera(gltfNode.camera);\n }\n if (gltfNode.skin !== undefined) {\n node.skin = this.getSkin(gltfNode.skin);\n }\n\n // TODO deprecated - Delete in v4.0?\n // @ts-expect-error node.meshes does not seem to be part of the GLTF standard\n if (gltfNode.meshes !== undefined && gltfNode.meshes.length) {\n // @ts-expect-error\n node.mesh = gltfNode.meshes.reduce(\n (accum, meshIndex) => {\n const mesh = this.getMesh(meshIndex);\n accum.id = mesh.id;\n accum.primitives = accum.primitives.concat(mesh.primitives);\n return accum;\n },\n {primitives: []}\n );\n }\n\n return node;\n }\n\n _resolveNodeChildren(node: GLTFNodePostprocessed): GLTFNodePostprocessed {\n if (node.children) {\n // @ts-expect-error node.children are numbers at this stage\n node.children = node.children.map((child) => this.getNode(child));\n }\n return node;\n }\n\n _resolveSkin(gltfSkin: GLTFSkin, index: number): GLTFSkinPostprocessed {\n const inverseBindMatrices =\n typeof gltfSkin.inverseBindMatrices === 'number'\n ? this.getAccessor(gltfSkin.inverseBindMatrices)\n : undefined;\n\n return {\n ...gltfSkin,\n id: gltfSkin.id || `skin-${index}`,\n inverseBindMatrices\n };\n }\n\n _resolveMesh(gltfMesh: GLTFMesh, index: number): GLTFMeshPostprocessed {\n const mesh: GLTFMeshPostprocessed = {\n ...gltfMesh,\n id: gltfMesh.id || `mesh-${index}`,\n primitives: []\n };\n if (gltfMesh.primitives) {\n mesh.primitives = gltfMesh.primitives.map((gltfPrimitive) => {\n const primitive: GLTFMeshPrimitivePostprocessed = {\n ...gltfPrimitive,\n attributes: {},\n indices: undefined,\n material: undefined\n };\n const attributes = gltfPrimitive.attributes;\n for (const attribute in attributes) {\n primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);\n }\n if (gltfPrimitive.indices !== undefined) {\n primitive.indices = this.getAccessor(gltfPrimitive.indices);\n }\n if (gltfPrimitive.material !== undefined) {\n primitive.material = this.getMaterial(gltfPrimitive.material);\n }\n return primitive;\n });\n }\n return mesh;\n }\n\n _resolveMaterial(gltfMaterial: GLTFMaterial, index: number): GLTFMaterialPostprocessed {\n // @ts-expect-error\n const material: GLTFMaterialPostprocessed = {\n ...gltfMaterial,\n // @ts-expect-error\n id: gltfMaterial.id || `material-${index}`\n };\n if (material.normalTexture) {\n material.normalTexture = {...material.normalTexture};\n material.normalTexture.texture = this.getTexture(material.normalTexture.index);\n }\n if (material.occlusionTexture) {\n material.occlusionTexture = {...material.occlusionTexture};\n material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);\n }\n if (material.emissiveTexture) {\n material.emissiveTexture = {...material.emissiveTexture};\n material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);\n }\n if (!material.emissiveFactor) {\n material.emissiveFactor = material.emissiveTexture ? [1, 1, 1] : [0, 0, 0];\n }\n\n if (material.pbrMetallicRoughness) {\n material.pbrMetallicRoughness = {...material.pbrMetallicRoughness};\n const mr = material.pbrMetallicRoughness;\n if (mr.baseColorTexture) {\n mr.baseColorTexture = {...mr.baseColorTexture};\n mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);\n }\n if (mr.metallicRoughnessTexture) {\n mr.metallicRoughnessTexture = {...mr.metallicRoughnessTexture};\n mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);\n }\n }\n return material;\n }\n\n _resolveAccessor(gltfAccessor: GLTFAccessor, index: number): GLTFAccessorPostprocessed {\n // Look up enums\n const bytesPerComponent = getBytesFromComponentType(gltfAccessor.componentType);\n const components = getSizeFromAccessorType(gltfAccessor.type);\n const bytesPerElement = bytesPerComponent * components;\n\n const accessor: GLTFAccessorPostprocessed = {\n ...gltfAccessor,\n // @ts-expect-error\n id: gltfAccessor.id || `accessor-${index}`,\n bytesPerComponent,\n components,\n bytesPerElement,\n value: undefined!,\n bufferView: undefined!,\n sparse: undefined!\n };\n if (gltfAccessor.bufferView !== undefined) {\n // Draco encoded meshes don't have bufferView\n accessor.bufferView = this.getBufferView(gltfAccessor.bufferView);\n }\n\n // Create TypedArray for the accessor\n // Note: The canonical way to instantiate is to ignore this array and create\n // WebGLBuffer's using the bufferViews.\n if (accessor.bufferView) {\n const buffer = accessor.bufferView.buffer;\n const {ArrayType, byteLength} = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);\n const byteOffset =\n (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;\n let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n if (accessor.bufferView.byteStride) {\n cutBuffer = this._getValueFromInterleavedBuffer(\n buffer,\n byteOffset,\n accessor.bufferView.byteStride,\n accessor.bytesPerElement,\n accessor.count\n );\n }\n accessor.value = new ArrayType(cutBuffer);\n }\n\n return accessor;\n }\n\n /**\n * Take values of particular accessor from interleaved buffer\n * various parts of the buffer\n * @param buffer\n * @param byteOffset\n * @param byteStride\n * @param bytesPerElement\n * @param count\n * @returns\n */\n _getValueFromInterleavedBuffer(\n buffer,\n byteOffset: number,\n byteStride: number,\n bytesPerElement: number,\n count: number\n ): ArrayBufferLike {\n const result = new Uint8Array(count * bytesPerElement);\n for (let i = 0; i < count; i++) {\n const elementOffset = byteOffset + i * byteStride;\n result.set(\n new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)),\n i * bytesPerElement\n );\n }\n return result.buffer;\n }\n\n _resolveTexture(gltfTexture: GLTFTexture, index: number): GLTFTexturePostprocessed {\n return {\n ...gltfTexture,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfTexture.id || `texture-${index}`,\n sampler:\n typeof gltfTexture.sampler === 'number'\n ? this.getSampler(gltfTexture.sampler)\n : makeDefaultSampler(),\n source: typeof gltfTexture.source === 'number' ? this.getImage(gltfTexture.source) : undefined\n };\n }\n\n _resolveSampler(gltfSampler: GLTFSampler, index: number): GLTFSamplerPostprocessed {\n const sampler: GLTFSamplerPostprocessed = {\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfSampler.id || `sampler-${index}`,\n ...gltfSampler,\n parameters: {}\n };\n // Map textual parameters to GL parameter values\n for (const key in sampler) {\n const glEnum = this._enumSamplerParameter(key);\n if (glEnum !== undefined) {\n sampler.parameters[glEnum] = sampler[key];\n }\n }\n return sampler;\n }\n\n _enumSamplerParameter(key: string): number {\n return SAMPLER_PARAMETER_GLTF_TO_GL[key];\n }\n\n _resolveImage(gltfImage: GLTFImage, index: number): GLTFImagePostprocessed {\n const image: GLTFImagePostprocessed = {\n ...gltfImage,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfImage.id || `image-${index}`,\n image: null!,\n bufferView:\n gltfImage.bufferView !== undefined ? this.getBufferView(gltfImage.bufferView) : undefined\n };\n\n // Check if image has been preloaded by the GLTFLoader\n // If so, link it into the JSON and drop the URI\n const preloadedImage = this.images[index];\n if (preloadedImage) {\n image.image = preloadedImage;\n }\n\n return image;\n }\n\n _resolveBufferView(gltfBufferView: GLTFBufferView, index: number): GLTFBufferViewPostprocessed {\n const bufferIndex = gltfBufferView.buffer;\n const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n // Add offset of buffer, then offset of buffer view\n let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n if (gltfBufferView.byteOffset) {\n byteOffset += gltfBufferView.byteOffset;\n }\n\n const bufferView: GLTFBufferViewPostprocessed = {\n // // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: `bufferView-${index}`,\n ...gltfBufferView,\n // ...this.buffers[bufferIndex],\n buffer: this.buffers[bufferIndex],\n data: new Uint8Array(arrayBuffer, byteOffset, gltfBufferView.byteLength)\n };\n\n return bufferView;\n }\n\n _resolveCamera(gltfCamera: GLTFCamera, index): GLTFCameraPostprocessed {\n const camera: GLTFCameraPostprocessed = {\n ...gltfCamera,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfCamera.id || `camera-${index}`\n };\n\n // TODO - create 4x4 matrices\n if (camera.perspective) {\n // camera.matrix = createPerspectiveMatrix(camera.perspective);\n }\n if (camera.orthographic) {\n // camera.matrix = createOrthographicMatrix(camera.orthographic);\n }\n return camera;\n }\n}\n\nexport function postProcessGLTF(\n gltf: GLTFWithBuffers,\n options?: ParseGLTFOptions\n): GLTFPostprocessed {\n return new GLTFPostProcessor().postProcess(gltf, options);\n}\n"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = encodeGLBSync;
6
+ exports.encodeGLBSync = encodeGLBSync;
7
7
  var _loaderUtils = require("@loaders.gl/loader-utils");
8
8
  var MAGIC_glTF = 0x46546c67;
9
9
  var MAGIC_JSON = 0x4e4f534a;
@@ -1 +1 @@
1
- {"version":3,"file":"encode-glb.js","names":["_loaderUtils","require","MAGIC_glTF","MAGIC_JSON","MAGIC_BIN","LE","encodeGLBSync","glb","dataView","byteOffset","arguments","length","undefined","options","_glb$magic","magic","_glb$version","version","_glb$json","json","binary","byteOffsetStart","setUint32","byteOffsetFileLength","byteOffsetJsonHeader","jsonString","JSON","stringify","copyPaddedStringToDataView","jsonByteLength","byteOffsetBinHeader","copyPaddedArrayBufferToDataView","binByteLength","fileByteLength"],"sources":["../../../../src/lib/encoders/encode-glb.ts"],"sourcesContent":["/* eslint-disable camelcase, max-statements */\nimport {\n copyPaddedStringToDataView,\n copyPaddedArrayBufferToDataView\n} from '@loaders.gl/loader-utils';\n\nconst MAGIC_glTF = 0x46546c67; // glTF in ASCII\nconst MAGIC_JSON = 0x4e4f534a; // JSON in ASCII\nconst MAGIC_BIN = 0x004e4942; // BIN\\0 in ASCII\n\nconst LE = true; // Binary GLTF is little endian.\n\nexport type GLBEncodeOptions = {};\n\n// Encode the full GLB buffer with header etc\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#\n// glb-file-format-specification\nexport default function encodeGLBSync(\n glb,\n dataView,\n byteOffset = 0,\n options: GLBEncodeOptions = {}\n) {\n const {magic = MAGIC_glTF, version = 2, json = {}, binary} = glb;\n\n const byteOffsetStart = byteOffset;\n\n // Write GLB Header\n if (dataView) {\n dataView.setUint32(byteOffset + 0, magic, LE); // Magic number (the ASCII string 'glTF').\n dataView.setUint32(byteOffset + 4, version, LE); // Version 2 of binary glTF container format uint32\n dataView.setUint32(byteOffset + 8, 0, LE); // Total byte length of generated file (uint32), will be set last\n }\n const byteOffsetFileLength = byteOffset + 8;\n byteOffset += 12; // GLB_FILE_HEADER_SIZE\n\n // Write the JSON chunk header\n const byteOffsetJsonHeader = byteOffset;\n if (dataView) {\n dataView.setUint32(byteOffset + 0, 0, LE); // Byte length of json chunk (will be written later)\n dataView.setUint32(byteOffset + 4, MAGIC_JSON, LE); // Chunk type\n }\n byteOffset += 8; // GLB_CHUNK_HEADER_SIZE\n\n // Write the JSON chunk\n const jsonString = JSON.stringify(json);\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, jsonString, 4);\n\n // Now we know the JSON chunk length so we can write it.\n if (dataView) {\n const jsonByteLength = byteOffset - byteOffsetJsonHeader - 8; // GLB_CHUNK_HEADER_SIZE\n dataView.setUint32(byteOffsetJsonHeader + 0, jsonByteLength, LE); // Byte length of json chunk (uint32)\n }\n\n // Write the BIN chunk if present. The BIN chunk is optional.\n if (binary) {\n const byteOffsetBinHeader = byteOffset;\n\n // Write the BIN chunk header\n if (dataView) {\n dataView.setUint32(byteOffset + 0, 0, LE); // Byte length BIN (uint32)\n dataView.setUint32(byteOffset + 4, MAGIC_BIN, LE); // Chunk type\n }\n byteOffset += 8; // GLB_CHUNK_HEADER_SIZE\n\n byteOffset = copyPaddedArrayBufferToDataView(dataView, byteOffset, binary, 4);\n\n // Now we know the BIN chunk length so we can write it.\n if (dataView) {\n const binByteLength = byteOffset - byteOffsetBinHeader - 8; // GLB_CHUNK_HEADER_SIZE\n dataView.setUint32(byteOffsetBinHeader + 0, binByteLength, LE); // Byte length BIN (uint32)\n }\n }\n\n // Now we know the glb file length so we can write it.\n if (dataView) {\n const fileByteLength = byteOffset - byteOffsetStart;\n dataView.setUint32(byteOffsetFileLength, fileByteLength, LE); // Total byte length of generated file (uint32)\n }\n\n return byteOffset;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"encode-glb.js","names":["_loaderUtils","require","MAGIC_glTF","MAGIC_JSON","MAGIC_BIN","LE","encodeGLBSync","glb","dataView","byteOffset","arguments","length","undefined","options","_glb$magic","magic","_glb$version","version","_glb$json","json","binary","byteOffsetStart","setUint32","byteOffsetFileLength","byteOffsetJsonHeader","jsonString","JSON","stringify","copyPaddedStringToDataView","jsonByteLength","byteOffsetBinHeader","copyPaddedArrayBufferToDataView","binByteLength","fileByteLength"],"sources":["../../../../src/lib/encoders/encode-glb.ts"],"sourcesContent":["/* eslint-disable camelcase, max-statements */\nimport {\n copyPaddedStringToDataView,\n copyPaddedArrayBufferToDataView\n} from '@loaders.gl/loader-utils';\n// import type {GLB} from '../types/glb-types';\n\nconst MAGIC_glTF = 0x46546c67; // glTF in ASCII\nconst MAGIC_JSON = 0x4e4f534a; // JSON in ASCII\nconst MAGIC_BIN = 0x004e4942; // BIN\\0 in ASCII\n\nconst LE = true; // Binary GLTF is little endian.\n\nexport type GLBEncodeOptions = {};\n\n/**\n * Encode the full GLB buffer with header etc\n *\n * @param glb\n * @param dataView - if `null`, does not encode but just calculates length\n * @param byteOffset\n * @param options\n * @returns\n *\n * @see https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#glb-file-format-specification\n * @todo type GLB argument\n */\nexport function encodeGLBSync(\n glb,\n dataView: DataView | null,\n byteOffset = 0,\n options: GLBEncodeOptions = {}\n) {\n const {magic = MAGIC_glTF, version = 2, json = {}, binary} = glb;\n\n const byteOffsetStart = byteOffset;\n\n // Write GLB Header\n if (dataView) {\n dataView.setUint32(byteOffset + 0, magic, LE); // Magic number (the ASCII string 'glTF').\n dataView.setUint32(byteOffset + 4, version, LE); // Version 2 of binary glTF container format uint32\n dataView.setUint32(byteOffset + 8, 0, LE); // Total byte length of generated file (uint32), will be set last\n }\n const byteOffsetFileLength = byteOffset + 8;\n byteOffset += 12; // GLB_FILE_HEADER_SIZE\n\n // Write the JSON chunk header\n const byteOffsetJsonHeader = byteOffset;\n if (dataView) {\n dataView.setUint32(byteOffset + 0, 0, LE); // Byte length of json chunk (will be written later)\n dataView.setUint32(byteOffset + 4, MAGIC_JSON, LE); // Chunk type\n }\n byteOffset += 8; // GLB_CHUNK_HEADER_SIZE\n\n // Write the JSON chunk\n const jsonString = JSON.stringify(json);\n byteOffset = copyPaddedStringToDataView(dataView, byteOffset, jsonString, 4);\n\n // Now we know the JSON chunk length so we can write it.\n if (dataView) {\n const jsonByteLength = byteOffset - byteOffsetJsonHeader - 8; // GLB_CHUNK_HEADER_SIZE\n dataView.setUint32(byteOffsetJsonHeader + 0, jsonByteLength, LE); // Byte length of json chunk (uint32)\n }\n\n // Write the BIN chunk if present. The BIN chunk is optional.\n if (binary) {\n const byteOffsetBinHeader = byteOffset;\n\n // Write the BIN chunk header\n if (dataView) {\n dataView.setUint32(byteOffset + 0, 0, LE); // Byte length BIN (uint32)\n dataView.setUint32(byteOffset + 4, MAGIC_BIN, LE); // Chunk type\n }\n byteOffset += 8; // GLB_CHUNK_HEADER_SIZE\n\n byteOffset = copyPaddedArrayBufferToDataView(dataView, byteOffset, binary, 4);\n\n // Now we know the BIN chunk length so we can write it.\n if (dataView) {\n const binByteLength = byteOffset - byteOffsetBinHeader - 8; // GLB_CHUNK_HEADER_SIZE\n dataView.setUint32(byteOffsetBinHeader + 0, binByteLength, LE); // Byte length BIN (uint32)\n }\n }\n\n // Now we know the glb file length so we can write it.\n if (dataView) {\n const fileByteLength = byteOffset - byteOffsetStart;\n dataView.setUint32(byteOffsetFileLength, fileByteLength, LE); // Total byte length of generated file (uint32)\n }\n\n return byteOffset;\n}\n"],"mappings":"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"}
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.encodeGLTFSync = encodeGLTFSync;
8
- var _encodeGlb = _interopRequireDefault(require("./encode-glb"));
7
+ var _encodeGlb = require("./encode-glb");
9
8
  function encodeGLTFSync(gltf, arrayBuffer, byteOffset, options) {
10
9
  convertBuffersToBase64(gltf);
11
- return (0, _encodeGlb.default)(gltf, arrayBuffer, byteOffset, options);
10
+ return (0, _encodeGlb.encodeGLBSync)(gltf, arrayBuffer, byteOffset, options);
12
11
  }
13
12
  function convertBuffersToBase64(gltf) {
14
13
  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
@@ -1 +1 @@
1
- {"version":3,"file":"encode-gltf.js","names":["_encodeGlb","_interopRequireDefault","require","encodeGLTFSync","gltf","arrayBuffer","byteOffset","options","convertBuffersToBase64","encodeGLBSync","_ref","arguments","length","undefined","_ref$firstBuffer","firstBuffer","buffers","Error"],"sources":["../../../../src/lib/encoders/encode-gltf.ts"],"sourcesContent":["import encodeGLBSync from './encode-glb';\n\nexport type GLTFEncodeOptions = Record<string, any>;\n\n/**\n * Encode the full glTF file as a binary GLB file\n * Returns an ArrayBuffer that represents the complete GLB image that can be saved to file\n *\n * @todo - Does not support encoding to non-GLB versions of glTF format. Other formats\n * - Encode as a textual JSON file with binary data in base64 data URLs.\n * - Encode as a JSON with all images (and buffers?) in separate binary files\n *\n * glb-file-format-specification\n * @see https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#\n *\n * @param gltf\n * @param arrayBuffer\n * @param byteOffset\n * @param options\n * @returns\n */\nexport function encodeGLTFSync(gltf, arrayBuffer, byteOffset, options) {\n convertBuffersToBase64(gltf);\n\n // TODO: Copy buffers to binary\n\n return encodeGLBSync(gltf, arrayBuffer, byteOffset, options);\n}\n\nfunction convertBuffersToBase64(gltf, {firstBuffer = 0} = {}) {\n if (gltf.buffers && gltf.buffers.length > firstBuffer) {\n throw new Error('encodeGLTF: multiple buffers not yet implemented');\n }\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAqBO,SAASC,cAAcA,CAACC,IAAI,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAE;EACrEC,sBAAsB,CAACJ,IAAI,CAAC;EAI5B,OAAO,IAAAK,kBAAa,EAACL,IAAI,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,CAAC;AAC9D;AAEA,SAASC,sBAAsBA,CAACJ,IAAI,EAA0B;EAAA,IAAAM,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAJ,CAAC,CAAC;IAAAG,gBAAA,GAAAJ,IAAA,CAArBK,WAAW;IAAXA,WAAW,GAAAD,gBAAA,cAAG,CAAC,GAAAA,gBAAA;EACpD,IAAIV,IAAI,CAACY,OAAO,IAAIZ,IAAI,CAACY,OAAO,CAACJ,MAAM,GAAGG,WAAW,EAAE;IACrD,MAAM,IAAIE,KAAK,CAAC,kDAAkD,CAAC;EACrE;AACF"}
1
+ {"version":3,"file":"encode-gltf.js","names":["_encodeGlb","require","encodeGLTFSync","gltf","arrayBuffer","byteOffset","options","convertBuffersToBase64","encodeGLBSync","_ref","arguments","length","undefined","_ref$firstBuffer","firstBuffer","buffers","Error"],"sources":["../../../../src/lib/encoders/encode-gltf.ts"],"sourcesContent":["import {encodeGLBSync} from './encode-glb';\n\nexport type GLTFEncodeOptions = Record<string, any>;\n\n/**\n * Encode the full glTF file as a binary GLB file\n * Returns an ArrayBuffer that represents the complete GLB image that can be saved to file\n *\n * @todo - Does not support encoding to non-GLB versions of glTF format. Other formats\n * - Encode as a textual JSON file with binary data in base64 data URLs.\n * - Encode as a JSON with all images (and buffers?) in separate binary files\n *\n * glb-file-format-specification\n * @see https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#\n *\n * @param gltf\n * @param arrayBuffer\n * @param byteOffset\n * @param options\n * @returns\n */\nexport function encodeGLTFSync(gltf, arrayBuffer, byteOffset, options) {\n convertBuffersToBase64(gltf);\n\n // TODO: Copy buffers to binary\n\n return encodeGLBSync(gltf, arrayBuffer, byteOffset, options);\n}\n\nfunction convertBuffersToBase64(gltf, {firstBuffer = 0} = {}) {\n if (gltf.buffers && gltf.buffers.length > firstBuffer) {\n throw new Error('encodeGLTF: multiple buffers not yet implemented');\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AAqBO,SAASC,cAAcA,CAACC,IAAI,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,EAAE;EACrEC,sBAAsB,CAACJ,IAAI,CAAC;EAI5B,OAAO,IAAAK,wBAAa,EAACL,IAAI,EAAEC,WAAW,EAAEC,UAAU,EAAEC,OAAO,CAAC;AAC9D;AAEA,SAASC,sBAAsBA,CAACJ,IAAI,EAA0B;EAAA,IAAAM,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAJ,CAAC,CAAC;IAAAG,gBAAA,GAAAJ,IAAA,CAArBK,WAAW;IAAXA,WAAW,GAAAD,gBAAA,cAAG,CAAC,GAAAA,gBAAA;EACpD,IAAIV,IAAI,CAACY,OAAO,IAAIZ,IAAI,CAACY,OAAO,CAACJ,MAAM,GAAGG,WAAW,EAAE;IACrD,MAAM,IAAIE,KAAK,CAAC,kDAAkD,CAAC;EACrE;AACF"}
@@ -8,7 +8,7 @@ exports.decode = decode;
8
8
  exports.name = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
- var _gltfScenegraph = _interopRequireDefault(require("../api/gltf-scenegraph"));
11
+ var _gltfScenegraph = require("../api/gltf-scenegraph");
12
12
  var _meshoptDecoder = require("../../meshopt/meshopt-decoder");
13
13
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
14
14
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -30,7 +30,7 @@ function _decode() {
30
30
  return _regenerator.default.wrap(function _callee$(_context) {
31
31
  while (1) switch (_context.prev = _context.next) {
32
32
  case 0:
33
- scenegraph = new _gltfScenegraph.default(gltfData);
33
+ scenegraph = new _gltfScenegraph.GLTFScenegraph(gltfData);
34
34
  if (options !== null && options !== void 0 && (_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.decompressMeshes) {
35
35
  _context.next = 3;
36
36
  break;
@@ -82,10 +82,8 @@ function _decodeMeshoptBufferView() {
82
82
  _context2.next = 8;
83
83
  return (0, _meshoptDecoder.meshoptDecodeGltfBuffer)(result, count, byteStride, source, mode, filter);
84
84
  case 8:
85
- return _context2.abrupt("return", result);
85
+ scenegraph.removeObjectExtension(bufferView, EXT_MESHOPT_COMPRESSION);
86
86
  case 9:
87
- return _context2.abrupt("return", null);
88
- case 10:
89
87
  case "end":
90
88
  return _context2.stop();
91
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EXT_meshopt_compression.js","names":["_gltfScenegraph","_interopRequireDefault","require","_meshoptDecoder","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","DEFAULT_MESHOPT_OPTIONS","byteOffset","filter","EXT_MESHOPT_COMPRESSION","exports","decode","_x","_x2","_decode","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","gltfData","options","_options$gltf","scenegraph","promises","_iterator","_step","bufferViewIndex","wrap","_callee$","_context","prev","GLTFScenegraph","gltf","decompressMeshes","abrupt","json","bufferViews","push","decodeMeshoptBufferView","Promise","all","removeExtension","stop","_x3","_x4","_decodeMeshoptBufferView","_callee2","bufferView","meshoptExtension","_meshoptExtension$byt","_meshoptExtension$byt2","byteLength","byteStride","count","mode","_meshoptExtension$fil","bufferIndex","buffer","source","result","_callee2$","_context2","getObjectExtension","buffers","Uint8Array","arrayBuffer","meshoptDecodeGltfBuffer"],"sources":["../../../../src/lib/extensions/EXT_meshopt_compression.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport type {GLTF, GLTFBufferView, GLTF_EXT_meshopt_compression} from '../types/gltf-types';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\nimport GLTFScenegraph from '../api/gltf-scenegraph';\nimport {meshoptDecodeGltfBuffer} from '../../meshopt/meshopt-decoder';\n\n// @ts-ignore\n// eslint-disable-next-line\nconst DEFAULT_MESHOPT_OPTIONS = {\n byteOffset: 0,\n filter: 'NONE'\n};\n\n/** Extension name */\nconst EXT_MESHOPT_COMPRESSION = 'EXT_meshopt_compression';\n\nexport const name = EXT_MESHOPT_COMPRESSION;\n\nexport async function decode(gltfData: {json: GLTF}, options: GLTFLoaderOptions) {\n const scenegraph = new GLTFScenegraph(gltfData);\n\n if (!options?.gltf?.decompressMeshes) {\n return;\n }\n\n const promises: Promise<any>[] = [];\n for (const bufferViewIndex of gltfData.json.bufferViews || []) {\n promises.push(decodeMeshoptBufferView(scenegraph, bufferViewIndex));\n }\n\n // Decompress meshes in parallel\n await Promise.all(promises);\n\n // We have now decompressed all primitives, so remove the top-level extension\n scenegraph.removeExtension(EXT_MESHOPT_COMPRESSION);\n}\n\n/** Decode one meshopt buffer view */\nasync function decodeMeshoptBufferView(\n scenegraph: GLTFScenegraph,\n bufferView: GLTFBufferView\n): Promise<ArrayBuffer | null> {\n const meshoptExtension = scenegraph.getObjectExtension<GLTF_EXT_meshopt_compression>(\n bufferView,\n EXT_MESHOPT_COMPRESSION\n );\n if (meshoptExtension) {\n const {\n byteOffset = 0,\n byteLength = 0,\n byteStride,\n count,\n mode,\n filter = 'NONE',\n buffer: bufferIndex\n } = meshoptExtension;\n const buffer = scenegraph.gltf.buffers[bufferIndex];\n\n const source = new Uint8Array(buffer.arrayBuffer, buffer.byteOffset + byteOffset, byteLength);\n const result = new Uint8Array(\n scenegraph.gltf.buffers[bufferView.buffer].arrayBuffer,\n bufferView.byteOffset,\n bufferView.byteLength\n );\n await meshoptDecodeGltfBuffer(result, count, byteStride, source, mode, filter);\n return result;\n }\n\n return null;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EXT_meshopt_compression.js","names":["_gltfScenegraph","require","_meshoptDecoder","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","DEFAULT_MESHOPT_OPTIONS","byteOffset","filter","EXT_MESHOPT_COMPRESSION","exports","decode","_x","_x2","_decode","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","gltfData","options","_options$gltf","scenegraph","promises","_iterator","_step","bufferViewIndex","wrap","_callee$","_context","prev","GLTFScenegraph","gltf","decompressMeshes","abrupt","json","bufferViews","push","decodeMeshoptBufferView","Promise","all","removeExtension","stop","_x3","_x4","_decodeMeshoptBufferView","_callee2","bufferView","meshoptExtension","_meshoptExtension$byt","_meshoptExtension$byt2","byteLength","byteStride","count","mode","_meshoptExtension$fil","bufferIndex","buffer","source","result","_callee2$","_context2","getObjectExtension","buffers","Uint8Array","arrayBuffer","meshoptDecodeGltfBuffer","removeObjectExtension"],"sources":["../../../../src/lib/extensions/EXT_meshopt_compression.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport type {GLTF, GLTFBufferView, GLTF_EXT_meshopt_compression} from '../types/gltf-json-schema';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\nimport {GLTFScenegraph} from '../api/gltf-scenegraph';\nimport {meshoptDecodeGltfBuffer} from '../../meshopt/meshopt-decoder';\n\n// @ts-ignore\n// eslint-disable-next-line\nconst DEFAULT_MESHOPT_OPTIONS = {\n byteOffset: 0,\n filter: 'NONE'\n};\n\n/** Extension name */\nconst EXT_MESHOPT_COMPRESSION = 'EXT_meshopt_compression';\n\nexport const name = EXT_MESHOPT_COMPRESSION;\n\nexport async function decode(gltfData: {json: GLTF}, options: GLTFLoaderOptions) {\n const scenegraph = new GLTFScenegraph(gltfData);\n\n if (!options?.gltf?.decompressMeshes) {\n return;\n }\n\n const promises: Promise<any>[] = [];\n for (const bufferViewIndex of gltfData.json.bufferViews || []) {\n promises.push(decodeMeshoptBufferView(scenegraph, bufferViewIndex));\n }\n\n // Decompress meshes in parallel\n await Promise.all(promises);\n\n // We have now decompressed all primitives, so remove the top-level extension\n scenegraph.removeExtension(EXT_MESHOPT_COMPRESSION);\n}\n\n/** Decode one meshopt buffer view */\nasync function decodeMeshoptBufferView(\n scenegraph: GLTFScenegraph,\n bufferView: GLTFBufferView\n): Promise<void> {\n const meshoptExtension = scenegraph.getObjectExtension<GLTF_EXT_meshopt_compression>(\n bufferView,\n EXT_MESHOPT_COMPRESSION\n );\n if (meshoptExtension) {\n const {\n byteOffset = 0,\n byteLength = 0,\n byteStride,\n count,\n mode,\n filter = 'NONE',\n buffer: bufferIndex\n } = meshoptExtension;\n const buffer = scenegraph.gltf.buffers[bufferIndex];\n\n const source = new Uint8Array(buffer.arrayBuffer, buffer.byteOffset + byteOffset, byteLength);\n const result = new Uint8Array(\n scenegraph.gltf.buffers[bufferView.buffer].arrayBuffer,\n bufferView.byteOffset,\n bufferView.byteLength\n );\n await meshoptDecodeGltfBuffer(result, count, byteStride, source, mode, filter);\n scenegraph.removeObjectExtension(bufferView, EXT_MESHOPT_COMPRESSION);\n }\n}\n"],"mappings":"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"}
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.name = void 0;
8
7
  exports.preprocess = preprocess;
9
8
  var _images = require("@loaders.gl/images");
10
- var _gltfScenegraph = _interopRequireDefault(require("../api/gltf-scenegraph"));
9
+ var _gltfScenegraph = require("../api/gltf-scenegraph");
11
10
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
12
11
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
12
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
@@ -15,7 +14,7 @@ var EXT_TEXTURE_WEBP = 'EXT_texture_webp';
15
14
  var name = EXT_TEXTURE_WEBP;
16
15
  exports.name = name;
17
16
  function preprocess(gltfData, options) {
18
- var scenegraph = new _gltfScenegraph.default(gltfData);
17
+ var scenegraph = new _gltfScenegraph.GLTFScenegraph(gltfData);
19
18
  if (!(0, _images.isImageFormatSupported)('image/webp')) {
20
19
  if (scenegraph.getRequiredExtensions().includes(EXT_TEXTURE_WEBP)) {
21
20
  throw new Error("gltf: Required extension ".concat(EXT_TEXTURE_WEBP, " not supported by browser"));
@@ -1 +1 @@
1
- {"version":3,"file":"EXT_texture_webp.js","names":["_images","require","_gltfScenegraph","_interopRequireDefault","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","EXT_TEXTURE_WEBP","exports","preprocess","gltfData","options","scenegraph","GLTFScenegraph","isImageFormatSupported","getRequiredExtensions","includes","Error","concat","json","_iterator","textures","_step","texture","extension","getObjectExtension","source","removeObjectExtension","removeExtension"],"sources":["../../../../src/lib/extensions/EXT_texture_webp.ts"],"sourcesContent":["// GLTF EXTENSION: EXT_TEXTURE_WEBP\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_TEXTURE_WEBP\n/* eslint-disable camelcase */\n\nimport type {GLTF, GLTF_EXT_texture_webp} from '../types/gltf-types';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\n\nimport {isImageFormatSupported} from '@loaders.gl/images';\nimport GLTFScenegraph from '../api/gltf-scenegraph';\n\nconst EXT_TEXTURE_WEBP = 'EXT_texture_webp';\n\n/** Extension name */\nexport const name = EXT_TEXTURE_WEBP;\n\n/**\n * Replaces a texture source reference with the extension texture\n * Done in preprocess() to prevent load of default image\n */\nexport function preprocess(gltfData: {json: GLTF}, options: GLTFLoaderOptions): void {\n const scenegraph = new GLTFScenegraph(gltfData);\n\n if (!isImageFormatSupported('image/webp')) {\n if (scenegraph.getRequiredExtensions().includes(EXT_TEXTURE_WEBP)) {\n throw new Error(`gltf: Required extension ${EXT_TEXTURE_WEBP} not supported by browser`);\n }\n return;\n }\n\n const {json} = scenegraph;\n\n for (const texture of json.textures || []) {\n const extension = scenegraph.getObjectExtension<GLTF_EXT_texture_webp>(\n texture,\n EXT_TEXTURE_WEBP\n );\n if (extension) {\n // TODO - if multiple texture extensions are present which one wins?\n texture.source = extension.source;\n }\n scenegraph.removeObjectExtension(texture, EXT_TEXTURE_WEBP);\n }\n\n // Remove the top-level extension\n scenegraph.removeExtension(EXT_TEXTURE_WEBP);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"EXT_texture_webp.js","names":["_images","require","_gltfScenegraph","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","EXT_TEXTURE_WEBP","exports","preprocess","gltfData","options","scenegraph","GLTFScenegraph","isImageFormatSupported","getRequiredExtensions","includes","Error","concat","json","_iterator","textures","_step","texture","extension","getObjectExtension","source","removeObjectExtension","removeExtension"],"sources":["../../../../src/lib/extensions/EXT_texture_webp.ts"],"sourcesContent":["// GLTF EXTENSION: EXT_TEXTURE_WEBP\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/EXT_TEXTURE_WEBP\n/* eslint-disable camelcase */\n\nimport type {GLTF, GLTF_EXT_texture_webp} from '../types/gltf-json-schema';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\n\nimport {isImageFormatSupported} from '@loaders.gl/images';\nimport {GLTFScenegraph} from '../api/gltf-scenegraph';\n\nconst EXT_TEXTURE_WEBP = 'EXT_texture_webp';\n\n/** Extension name */\nexport const name = EXT_TEXTURE_WEBP;\n\n/**\n * Replaces a texture source reference with the extension texture\n * Done in preprocess() to prevent load of default image\n */\nexport function preprocess(gltfData: {json: GLTF}, options: GLTFLoaderOptions): void {\n const scenegraph = new GLTFScenegraph(gltfData);\n\n if (!isImageFormatSupported('image/webp')) {\n if (scenegraph.getRequiredExtensions().includes(EXT_TEXTURE_WEBP)) {\n throw new Error(`gltf: Required extension ${EXT_TEXTURE_WEBP} not supported by browser`);\n }\n return;\n }\n\n const {json} = scenegraph;\n\n for (const texture of json.textures || []) {\n const extension = scenegraph.getObjectExtension<GLTF_EXT_texture_webp>(\n texture,\n EXT_TEXTURE_WEBP\n );\n if (extension) {\n // TODO - if multiple texture extensions are present which one wins?\n texture.source = extension.source;\n }\n scenegraph.removeObjectExtension(texture, EXT_TEXTURE_WEBP);\n }\n\n // Remove the top-level extension\n scenegraph.removeExtension(EXT_TEXTURE_WEBP);\n}\n"],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.name = void 0;
8
7
  exports.preprocess = preprocess;
9
- var _gltfScenegraph = _interopRequireDefault(require("../api/gltf-scenegraph"));
8
+ var _gltfScenegraph = require("../api/gltf-scenegraph");
10
9
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
11
10
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
11
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
@@ -14,7 +13,7 @@ var KHR_BINARY_GLTF = 'KHR_binary_glTF';
14
13
  var name = KHR_BINARY_GLTF;
15
14
  exports.name = name;
16
15
  function preprocess(gltfData) {
17
- var gltfScenegraph = new _gltfScenegraph.default(gltfData);
16
+ var gltfScenegraph = new _gltfScenegraph.GLTFScenegraph(gltfData);
18
17
  var json = gltfScenegraph.json;
19
18
  var _iterator = _createForOfIteratorHelper(json.images || []),
20
19
  _step;
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_binary_gltf.js","names":["_gltfScenegraph","_interopRequireDefault","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","KHR_BINARY_GLTF","exports","preprocess","gltfData","gltfScenegraph","GLTFScenegraph","json","_iterator","images","_step","image","extension","getObjectExtension","assign","removeObjectExtension","buffers","uri","removeExtension"],"sources":["../../../../src/lib/extensions/KHR_binary_gltf.ts"],"sourcesContent":["// GLTF 1.0 EXTENSION: KHR_binary_glTF\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Khronos/KHR_binary_glTF\n/* eslint-disable camelcase */\n\nimport type {GLTF, GLTF_KHR_binary_glTF} from '../types/gltf-types';\n\nimport GLTFScenegraph from '../api/gltf-scenegraph';\n\nconst KHR_BINARY_GLTF = 'KHR_binary_glTF';\n\n/** Extension name */\nexport const name = KHR_BINARY_GLTF;\n\nexport function preprocess(gltfData: {json: GLTF}): void {\n const gltfScenegraph = new GLTFScenegraph(gltfData);\n const {json} = gltfScenegraph;\n\n // Note: json.buffers.binary_glTF also needs to be replaced\n // This is currently done during gltf normalization\n\n // Image and shader nodes can have the extension\n // https://github.com/KhronosGroup/glTF/blob/master/extensions/1.0/Khronos/KHR_binary_glTF/schema/image.KHR_binary_glTF.schema.json\n for (const image of json.images || []) {\n const extension = gltfScenegraph.getObjectExtension<GLTF_KHR_binary_glTF>(\n image,\n KHR_BINARY_GLTF\n );\n // The data in the extension is valid as glTF 2.0 data inside the object, so just copy it in\n if (extension) {\n Object.assign(image, extension);\n }\n gltfScenegraph.removeObjectExtension(image, KHR_BINARY_GLTF);\n }\n\n // TODO shaders - At least traverse and throw error if used?\n // https://github.com/KhronosGroup/glTF/blob/master/extensions/1.0/Khronos/KHR_binary_glTF/schema/shader.KHR_binary_glTF.schema.json\n\n // glTF v1 one files have a partially formed URI field that is not expected in (and causes problems in) 2.0\n if (json.buffers && json.buffers[0]) {\n delete json.buffers[0].uri;\n }\n\n // Remove the top-level extension as it has now been processed\n gltfScenegraph.removeExtension(KHR_BINARY_GLTF);\n}\n\n// KHR_binary_gltf is a 1.0 extension that is supported natively by 2.0\n// export function encode() {\n// throw new Error(KHR_BINARY_GLTF);\n// }\n"],"mappings":";;;;;;;;AAMA,IAAAA,eAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAoD,SAAAC,2BAAAC,CAAA,EAAAC,cAAA,QAAAC,EAAA,UAAAC,MAAA,oBAAAH,CAAA,CAAAG,MAAA,CAAAC,QAAA,KAAAJ,CAAA,qBAAAE,EAAA,QAAAG,KAAA,CAAAC,OAAA,CAAAN,CAAA,MAAAE,EAAA,GAAAK,2BAAA,CAAAP,CAAA,MAAAC,cAAA,IAAAD,CAAA,WAAAA,CAAA,CAAAQ,MAAA,qBAAAN,EAAA,EAAAF,CAAA,GAAAE,EAAA,MAAAO,CAAA,UAAAC,CAAA,YAAAA,EAAA,eAAAC,CAAA,EAAAD,CAAA,EAAAE,CAAA,WAAAA,EAAA,QAAAH,CAAA,IAAAT,CAAA,CAAAQ,MAAA,WAAAK,IAAA,mBAAAA,IAAA,SAAAC,KAAA,EAAAd,CAAA,CAAAS,CAAA,UAAAM,CAAA,WAAAA,EAAAC,EAAA,UAAAA,EAAA,KAAAC,CAAA,EAAAP,CAAA,gBAAAQ,SAAA,iJAAAC,gBAAA,SAAAC,MAAA,UAAAC,GAAA,WAAAV,CAAA,WAAAA,EAAA,IAAAT,EAAA,GAAAA,EAAA,CAAAoB,IAAA,CAAAtB,CAAA,MAAAY,CAAA,WAAAA,EAAA,QAAAW,IAAA,GAAArB,EAAA,CAAAsB,IAAA,IAAAL,gBAAA,GAAAI,IAAA,CAAAV,IAAA,SAAAU,IAAA,KAAAR,CAAA,WAAAA,EAAAU,GAAA,IAAAL,MAAA,SAAAC,GAAA,GAAAI,GAAA,KAAAR,CAAA,WAAAA,EAAA,eAAAE,gBAAA,IAAAjB,EAAA,CAAAwB,MAAA,UAAAxB,EAAA,CAAAwB,MAAA,oBAAAN,MAAA,QAAAC,GAAA;AAAA,SAAAd,4BAAAP,CAAA,EAAA2B,MAAA,SAAA3B,CAAA,qBAAAA,CAAA,sBAAA4B,iBAAA,CAAA5B,CAAA,EAAA2B,MAAA,OAAAf,CAAA,GAAAiB,MAAA,CAAAC,SAAA,CAAAC,QAAA,CAAAT,IAAA,CAAAtB,CAAA,EAAAgC,KAAA,aAAApB,CAAA,iBAAAZ,CAAA,CAAAiC,WAAA,EAAArB,CAAA,GAAAZ,CAAA,CAAAiC,WAAA,CAAAC,IAAA,MAAAtB,CAAA,cAAAA,CAAA,mBAAAP,KAAA,CAAA8B,IAAA,CAAAnC,CAAA,OAAAY,CAAA,+DAAAwB,IAAA,CAAAxB,CAAA,UAAAgB,iBAAA,CAAA5B,CAAA,EAAA2B,MAAA;AAAA,SAAAC,kBAAAS,GAAA,EAAAC,GAAA,QAAAA,GAAA,YAAAA,GAAA,GAAAD,GAAA,CAAA7B,MAAA,EAAA8B,GAAA,GAAAD,GAAA,CAAA7B,MAAA,WAAAC,CAAA,MAAA8B,IAAA,OAAAlC,KAAA,CAAAiC,GAAA,GAAA7B,CAAA,GAAA6B,GAAA,EAAA7B,CAAA,IAAA8B,IAAA,CAAA9B,CAAA,IAAA4B,GAAA,CAAA5B,CAAA,UAAA8B,IAAA;AAEpD,IAAMC,eAAe,GAAG,iBAAiB;AAGlC,IAAMN,IAAI,GAAGM,eAAe;AAACC,OAAA,CAAAP,IAAA,GAAAA,IAAA;AAE7B,SAASQ,UAAUA,CAACC,QAAsB,EAAQ;EACvD,IAAMC,cAAc,GAAG,IAAIC,uBAAc,CAACF,QAAQ,CAAC;EACnD,IAAOG,IAAI,GAAIF,cAAc,CAAtBE,IAAI;EAAmB,IAAAC,SAAA,GAAAhD,0BAAA,CAOV+C,IAAI,CAACE,MAAM,IAAI,EAAE;IAAAC,KAAA;EAAA;IAArC,KAAAF,SAAA,CAAApC,CAAA,MAAAsC,KAAA,GAAAF,SAAA,CAAAnC,CAAA,IAAAC,IAAA,GAAuC;MAAA,IAA5BqC,KAAK,GAAAD,KAAA,CAAAnC,KAAA;MACd,IAAMqC,SAAS,GAAGP,cAAc,CAACQ,kBAAkB,CACjDF,KAAK,EACLV,eACF,CAAC;MAED,IAAIW,SAAS,EAAE;QACbtB,MAAM,CAACwB,MAAM,CAACH,KAAK,EAAEC,SAAS,CAAC;MACjC;MACAP,cAAc,CAACU,qBAAqB,CAACJ,KAAK,EAAEV,eAAe,CAAC;IAC9D;EAAC,SAAAnB,GAAA;IAAA0B,SAAA,CAAAhC,CAAA,CAAAM,GAAA;EAAA;IAAA0B,SAAA,CAAA9B,CAAA;EAAA;EAMD,IAAI6B,IAAI,CAACS,OAAO,IAAIT,IAAI,CAACS,OAAO,CAAC,CAAC,CAAC,EAAE;IACnC,OAAOT,IAAI,CAACS,OAAO,CAAC,CAAC,CAAC,CAACC,GAAG;EAC5B;EAGAZ,cAAc,CAACa,eAAe,CAACjB,eAAe,CAAC;AACjD"}
1
+ {"version":3,"file":"KHR_binary_gltf.js","names":["_gltfScenegraph","require","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","KHR_BINARY_GLTF","exports","preprocess","gltfData","gltfScenegraph","GLTFScenegraph","json","_iterator","images","_step","image","extension","getObjectExtension","assign","removeObjectExtension","buffers","uri","removeExtension"],"sources":["../../../../src/lib/extensions/KHR_binary_gltf.ts"],"sourcesContent":["// GLTF 1.0 EXTENSION: KHR_binary_glTF\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Khronos/KHR_binary_glTF\n/* eslint-disable camelcase */\n\nimport type {GLTF, GLTF_KHR_binary_glTF} from '../types/gltf-json-schema';\n\nimport {GLTFScenegraph} from '../api/gltf-scenegraph';\n\nconst KHR_BINARY_GLTF = 'KHR_binary_glTF';\n\n/** Extension name */\nexport const name = KHR_BINARY_GLTF;\n\nexport function preprocess(gltfData: {json: GLTF}): void {\n const gltfScenegraph = new GLTFScenegraph(gltfData);\n const {json} = gltfScenegraph;\n\n // Note: json.buffers.binary_glTF also needs to be replaced\n // This is currently done during gltf normalization\n\n // Image and shader nodes can have the extension\n // https://github.com/KhronosGroup/glTF/blob/master/extensions/1.0/Khronos/KHR_binary_glTF/schema/image.KHR_binary_glTF.schema.json\n for (const image of json.images || []) {\n const extension = gltfScenegraph.getObjectExtension<GLTF_KHR_binary_glTF>(\n image,\n KHR_BINARY_GLTF\n );\n // The data in the extension is valid as glTF 2.0 data inside the object, so just copy it in\n if (extension) {\n Object.assign(image, extension);\n }\n gltfScenegraph.removeObjectExtension(image, KHR_BINARY_GLTF);\n }\n\n // TODO shaders - At least traverse and throw error if used?\n // https://github.com/KhronosGroup/glTF/blob/master/extensions/1.0/Khronos/KHR_binary_glTF/schema/shader.KHR_binary_glTF.schema.json\n\n // glTF v1 one files have a partially formed URI field that is not expected in (and causes problems in) 2.0\n if (json.buffers && json.buffers[0]) {\n delete json.buffers[0].uri;\n }\n\n // Remove the top-level extension as it has now been processed\n gltfScenegraph.removeExtension(KHR_BINARY_GLTF);\n}\n\n// KHR_binary_gltf is a 1.0 extension that is supported natively by 2.0\n// export function encode() {\n// throw new Error(KHR_BINARY_GLTF);\n// }\n"],"mappings":"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"}
@@ -15,7 +15,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
15
15
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
16
16
  var _draco = require("@loaders.gl/draco");
17
17
  var _loaderUtils = require("@loaders.gl/loader-utils");
18
- var _gltfScenegraph = _interopRequireDefault(require("../api/gltf-scenegraph"));
18
+ var _gltfScenegraph = require("../api/gltf-scenegraph");
19
19
  var _gltfAttributeUtils = require("../gltf-utils/gltf-attribute-utils");
20
20
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
21
21
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -27,7 +27,7 @@ var KHR_DRACO_MESH_COMPRESSION = 'KHR_draco_mesh_compression';
27
27
  var name = KHR_DRACO_MESH_COMPRESSION;
28
28
  exports.name = name;
29
29
  function preprocess(gltfData, options, context) {
30
- var scenegraph = new _gltfScenegraph.default(gltfData);
30
+ var scenegraph = new _gltfScenegraph.GLTFScenegraph(gltfData);
31
31
  var _iterator = _createForOfIteratorHelper(makeMeshPrimitiveIterator(scenegraph)),
32
32
  _step;
33
33
  try {
@@ -57,7 +57,7 @@ function _decode() {
57
57
  }
58
58
  return _context2.abrupt("return");
59
59
  case 2:
60
- scenegraph = new _gltfScenegraph.default(gltfData);
60
+ scenegraph = new _gltfScenegraph.GLTFScenegraph(gltfData);
61
61
  promises = [];
62
62
  _iterator5 = _createForOfIteratorHelper(makeMeshPrimitiveIterator(scenegraph));
63
63
  try {
@@ -86,7 +86,7 @@ function _decode() {
86
86
  }
87
87
  function encode(gltfData) {
88
88
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
89
- var scenegraph = new _gltfScenegraph.default(gltfData);
89
+ var scenegraph = new _gltfScenegraph.GLTFScenegraph(gltfData);
90
90
  var _iterator2 = _createForOfIteratorHelper(scenegraph.json.meshes || []),
91
91
  _step2;
92
92
  try {
@@ -142,8 +142,9 @@ function _decompressPrimitive() {
142
142
  if (decodedData.indices) {
143
143
  primitive.indices = (0, _gltfAttributeUtils.getGLTFAccessor)(decodedData.indices);
144
144
  }
145
+ scenegraph.removeObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION);
145
146
  checkPrimitive(primitive);
146
- case 16:
147
+ case 17:
147
148
  case "end":
148
149
  return _context3.stop();
149
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"KHR_draco_mesh_compression.js","names":["_draco","require","_loaderUtils","_gltfScenegraph","_interopRequireDefault","_gltfAttributeUtils","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_marked","_regeneratorRuntime2","mark","makeMeshPrimitiveIterator","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","KHR_DRACO_MESH_COMPRESSION","exports","preprocess","gltfData","options","context","scenegraph","Scenegraph","_iterator","_step","primitive","getObjectExtension","decode","_x","_x2","_x3","_decode","_asyncToGenerator2","_regenerator","_callee","_options$gltf","promises","_iterator5","_step5","wrap","_callee$","_context2","prev","gltf","decompressMeshes","abrupt","decompressPrimitive","Promise","all","removeExtension","stop","encode","undefined","_iterator2","json","meshes","_step2","mesh","compressMesh","addRequiredExtension","_x4","_x5","_x6","_x7","_decompressPrimitive","_callee2","dracoExtension","buffer","bufferCopy","parse","dracoOptions","decodedData","decodedAttributes","_i","_Object$entries","_Object$entries$_i","attributeName","decodedAttribute","accessorIndex","accessor","_callee2$","_context3","getTypedArrayForBufferView","bufferView","sliceArrayBuffer","byteOffset","DracoLoader","sent","getGLTFAccessors","attributes","entries","_slicedToArray2","getAccessor","min","max","indices","getGLTFAccessor","checkPrimitive","_context$parseSync","mode","DracoWriter","Error","compressedData","encodeSync","parseSync","fauxAccessors","_addFauxAttributes","bufferViewIndex","addBufferView","glTFMesh","primitives","extensions","_iterator3","_step3","_iterator4","_step4","makeMeshPrimitiveIterator$","_context","t0","finish","t1"],"sources":["../../../../src/lib/extensions/KHR_draco_mesh_compression.ts"],"sourcesContent":["// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n// Only TRIANGLES: 0x0004 and TRIANGLE_STRIP: 0x0005 are supported\n/* eslint-disable camelcase */\n\n/* eslint-disable camelcase */\nimport type {\n GLTF,\n GLTFAccessor,\n GLTFMeshPrimitive,\n GLTF_KHR_draco_mesh_compression\n} from '../types/gltf-types';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\n\nimport type {LoaderContext} from '@loaders.gl/loader-utils';\nimport {DracoLoader} from '@loaders.gl/draco';\nimport {DracoLoaderOptions, DracoMesh} from '@loaders.gl/draco';\nimport {sliceArrayBuffer} from '@loaders.gl/loader-utils';\nimport {default as Scenegraph} from '../api/gltf-scenegraph';\nimport {getGLTFAccessors, getGLTFAccessor} from '../gltf-utils/gltf-attribute-utils';\n\nconst KHR_DRACO_MESH_COMPRESSION = 'KHR_draco_mesh_compression';\n\n/** Extension name */\nexport const name = KHR_DRACO_MESH_COMPRESSION;\n\nexport function preprocess(\n gltfData: {json: GLTF},\n options: GLTFLoaderOptions,\n context: LoaderContext\n): void {\n const scenegraph = new Scenegraph(gltfData);\n for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {\n if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {\n // TODO - Remove fallback accessors to make sure we don't load unnecessary buffers\n }\n }\n}\n\nexport async function decode(\n gltfData: {json: GLTF},\n options: GLTFLoaderOptions,\n context: LoaderContext\n): Promise<void> {\n if (!options?.gltf?.decompressMeshes) {\n return;\n }\n\n const scenegraph = new Scenegraph(gltfData);\n const promises: Promise<void>[] = [];\n for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {\n if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {\n promises.push(decompressPrimitive(scenegraph, primitive, options, context));\n }\n }\n\n // Decompress meshes in parallel\n await Promise.all(promises);\n\n // We have now decompressed all primitives, so remove the top-level extension\n scenegraph.removeExtension(KHR_DRACO_MESH_COMPRESSION);\n}\n\nexport function encode(gltfData, options: GLTFLoaderOptions = {}): void {\n const scenegraph = new Scenegraph(gltfData);\n\n for (const mesh of scenegraph.json.meshes || []) {\n // eslint-disable-next-line camelcase\n // @ts-ignore\n compressMesh(mesh, options);\n // NOTE: Only add the extension if something was actually compressed\n scenegraph.addRequiredExtension(KHR_DRACO_MESH_COMPRESSION);\n }\n}\n\n// DECODE\n\n// Unpacks one mesh primitive and removes the extension from the primitive\n// DracoDecoder needs to be imported and registered by app\n// Returns: Promise that resolves when all pending draco decoder jobs for this mesh complete\n\n// TODO - Implement fallback behavior per KHR_DRACO_MESH_COMPRESSION spec\n\nasync function decompressPrimitive(\n scenegraph: Scenegraph,\n primitive: GLTFMeshPrimitive,\n options: GLTFLoaderOptions,\n context: LoaderContext\n): Promise<void> {\n const dracoExtension = scenegraph.getObjectExtension<GLTF_KHR_draco_mesh_compression>(\n primitive,\n KHR_DRACO_MESH_COMPRESSION\n );\n if (!dracoExtension) {\n return;\n }\n\n const buffer = scenegraph.getTypedArrayForBufferView(dracoExtension.bufferView);\n // TODO - parse does not yet deal well with byte offsets embedded in typed arrays. Copy buffer\n // TODO - remove when `parse` is fixed to handle `byteOffset`s\n const bufferCopy = sliceArrayBuffer(buffer.buffer, buffer.byteOffset); // , buffer.byteLength);\n\n const {parse} = context;\n const dracoOptions: DracoLoaderOptions = {...options};\n\n // TODO - remove hack: The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n const decodedData = (await parse(bufferCopy, DracoLoader, dracoOptions, context)) as DracoMesh;\n\n const decodedAttributes: {[key: string]: GLTFAccessor} = getGLTFAccessors(decodedData.attributes);\n\n // Restore min/max values\n for (const [attributeName, decodedAttribute] of Object.entries(decodedAttributes)) {\n if (attributeName in primitive.attributes) {\n const accessorIndex: number = primitive.attributes[attributeName];\n const accessor = scenegraph.getAccessor(accessorIndex);\n if (accessor?.min && accessor?.max) {\n decodedAttribute.min = accessor.min;\n decodedAttribute.max = accessor.max;\n }\n }\n }\n\n // @ts-ignore\n primitive.attributes = decodedAttributes;\n if (decodedData.indices) {\n // @ts-ignore\n primitive.indices = getGLTFAccessor(decodedData.indices);\n }\n\n // Extension has been processed, delete it\n // delete primitive.extensions[KHR_DRACO_MESH_COMPRESSION];\n\n checkPrimitive(primitive);\n}\n\n// ENCODE\n\n// eslint-disable-next-line max-len\n// Only TRIANGLES: 0x0004 and TRIANGLE_STRIP: 0x0005 are supported\nfunction compressMesh(attributes, indices, mode: number = 4, options, context: LoaderContext) {\n if (!options.DracoWriter) {\n throw new Error('options.gltf.DracoWriter not provided');\n }\n\n // TODO - use DracoWriter using encode w/ registered DracoWriter...\n const compressedData = options.DracoWriter.encodeSync({attributes});\n\n // Draco compression may change the order and number of vertices in a mesh.\n // To satisfy the requirement that accessors properties be correct for both\n // compressed and uncompressed data, generators should create uncompressed\n // attributes and indices using data that has been decompressed from the Draco buffer,\n // rather than the original source data.\n // @ts-ignore TODO this needs to be fixed\n const decodedData = context?.parseSync?.({attributes});\n const fauxAccessors = options._addFauxAttributes(decodedData.attributes);\n\n const bufferViewIndex = options.addBufferView(compressedData);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: fauxAccessors, // TODO - verify with spec\n mode, // GL.POINTS\n extensions: {\n [KHR_DRACO_MESH_COMPRESSION]: {\n bufferView: bufferViewIndex,\n attributes: fauxAccessors // TODO - verify with spec\n }\n }\n }\n ]\n };\n\n return glTFMesh;\n}\n\n// UTILS\n\nfunction checkPrimitive(primitive: GLTFMeshPrimitive) {\n if (!primitive.attributes && Object.keys(primitive.attributes).length > 0) {\n throw new Error('glTF: Empty primitive detected: Draco decompression failure?');\n }\n}\n\nfunction* makeMeshPrimitiveIterator(scenegraph) {\n for (const mesh of scenegraph.json.meshes || []) {\n for (const primitive of mesh.primitives) {\n yield primitive;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"KHR_draco_mesh_compression.js","names":["_draco","require","_loaderUtils","_gltfScenegraph","_gltfAttributeUtils","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","_marked","_regeneratorRuntime2","mark","makeMeshPrimitiveIterator","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","call","step","next","_e2","return","minLen","_arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","KHR_DRACO_MESH_COMPRESSION","exports","preprocess","gltfData","options","context","scenegraph","GLTFScenegraph","_iterator","_step","primitive","getObjectExtension","decode","_x","_x2","_x3","_decode","_asyncToGenerator2","_regenerator","_callee","_options$gltf","promises","_iterator5","_step5","wrap","_callee$","_context2","prev","gltf","decompressMeshes","abrupt","decompressPrimitive","Promise","all","removeExtension","stop","encode","undefined","_iterator2","json","meshes","_step2","mesh","compressMesh","addRequiredExtension","_x4","_x5","_x6","_x7","_decompressPrimitive","_callee2","dracoExtension","buffer","bufferCopy","parse","dracoOptions","decodedData","decodedAttributes","_i","_Object$entries","_Object$entries$_i","attributeName","decodedAttribute","accessorIndex","accessor","_callee2$","_context3","getTypedArrayForBufferView","bufferView","sliceArrayBuffer","byteOffset","DracoLoader","sent","getGLTFAccessors","attributes","entries","_slicedToArray2","getAccessor","min","max","indices","getGLTFAccessor","removeObjectExtension","checkPrimitive","_context$parseSync","mode","DracoWriter","Error","compressedData","encodeSync","parseSync","fauxAccessors","_addFauxAttributes","bufferViewIndex","addBufferView","glTFMesh","primitives","extensions","_iterator3","_step3","_iterator4","_step4","makeMeshPrimitiveIterator$","_context","t0","finish","t1"],"sources":["../../../../src/lib/extensions/KHR_draco_mesh_compression.ts"],"sourcesContent":["// https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\n// Only TRIANGLES: 0x0004 and TRIANGLE_STRIP: 0x0005 are supported\n/* eslint-disable camelcase */\n\n/* eslint-disable camelcase */\nimport type {\n GLTF,\n GLTFAccessor,\n GLTFMeshPrimitive,\n GLTF_KHR_draco_mesh_compression\n} from '../types/gltf-json-schema';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\n\nimport type {LoaderContext} from '@loaders.gl/loader-utils';\nimport {DracoLoader} from '@loaders.gl/draco';\nimport {DracoLoaderOptions, DracoMesh} from '@loaders.gl/draco';\nimport {sliceArrayBuffer} from '@loaders.gl/loader-utils';\nimport {GLTFScenegraph} from '../api/gltf-scenegraph';\nimport {getGLTFAccessors, getGLTFAccessor} from '../gltf-utils/gltf-attribute-utils';\n\nconst KHR_DRACO_MESH_COMPRESSION = 'KHR_draco_mesh_compression';\n\n/** Extension name */\nexport const name = KHR_DRACO_MESH_COMPRESSION;\n\nexport function preprocess(\n gltfData: {json: GLTF},\n options: GLTFLoaderOptions,\n context: LoaderContext\n): void {\n const scenegraph = new GLTFScenegraph(gltfData);\n for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {\n if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {\n // TODO - Remove fallback accessors to make sure we don't load unnecessary buffers\n }\n }\n}\n\nexport async function decode(\n gltfData: {json: GLTF},\n options: GLTFLoaderOptions,\n context: LoaderContext\n): Promise<void> {\n if (!options?.gltf?.decompressMeshes) {\n return;\n }\n\n const scenegraph = new GLTFScenegraph(gltfData);\n const promises: Promise<void>[] = [];\n for (const primitive of makeMeshPrimitiveIterator(scenegraph)) {\n if (scenegraph.getObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION)) {\n promises.push(decompressPrimitive(scenegraph, primitive, options, context));\n }\n }\n\n // Decompress meshes in parallel\n await Promise.all(promises);\n\n // We have now decompressed all primitives, so remove the top-level extension\n scenegraph.removeExtension(KHR_DRACO_MESH_COMPRESSION);\n}\n\nexport function encode(gltfData, options: GLTFLoaderOptions = {}): void {\n const scenegraph = new GLTFScenegraph(gltfData);\n\n for (const mesh of scenegraph.json.meshes || []) {\n // eslint-disable-next-line camelcase\n // @ts-ignore\n compressMesh(mesh, options);\n // NOTE: Only add the extension if something was actually compressed\n scenegraph.addRequiredExtension(KHR_DRACO_MESH_COMPRESSION);\n }\n}\n\n// DECODE\n\n// Unpacks one mesh primitive and removes the extension from the primitive\n// DracoDecoder needs to be imported and registered by app\n// Returns: Promise that resolves when all pending draco decoder jobs for this mesh complete\n\n// TODO - Implement fallback behavior per KHR_DRACO_MESH_COMPRESSION spec\n\nasync function decompressPrimitive(\n scenegraph: GLTFScenegraph,\n primitive: GLTFMeshPrimitive,\n options: GLTFLoaderOptions,\n context: LoaderContext\n): Promise<void> {\n const dracoExtension = scenegraph.getObjectExtension<GLTF_KHR_draco_mesh_compression>(\n primitive,\n KHR_DRACO_MESH_COMPRESSION\n );\n if (!dracoExtension) {\n return;\n }\n\n const buffer = scenegraph.getTypedArrayForBufferView(dracoExtension.bufferView);\n // TODO - parse does not yet deal well with byte offsets embedded in typed arrays. Copy buffer\n // TODO - remove when `parse` is fixed to handle `byteOffset`s\n const bufferCopy = sliceArrayBuffer(buffer.buffer, buffer.byteOffset); // , buffer.byteLength);\n\n const {parse} = context;\n const dracoOptions: DracoLoaderOptions = {...options};\n\n // TODO - remove hack: The entire tileset might be included, too expensive to serialize\n delete dracoOptions['3d-tiles'];\n const decodedData = (await parse(bufferCopy, DracoLoader, dracoOptions, context)) as DracoMesh;\n\n const decodedAttributes: {[key: string]: GLTFAccessor} = getGLTFAccessors(decodedData.attributes);\n\n // Restore min/max values\n for (const [attributeName, decodedAttribute] of Object.entries(decodedAttributes)) {\n if (attributeName in primitive.attributes) {\n const accessorIndex: number = primitive.attributes[attributeName];\n const accessor = scenegraph.getAccessor(accessorIndex);\n if (accessor?.min && accessor?.max) {\n decodedAttribute.min = accessor.min;\n decodedAttribute.max = accessor.max;\n }\n }\n }\n\n // @ts-ignore\n primitive.attributes = decodedAttributes;\n if (decodedData.indices) {\n // @ts-ignore\n primitive.indices = getGLTFAccessor(decodedData.indices);\n }\n\n // Extension has been processed, delete it\n scenegraph.removeObjectExtension(primitive, KHR_DRACO_MESH_COMPRESSION);\n\n checkPrimitive(primitive);\n}\n\n// ENCODE\n\n// eslint-disable-next-line max-len\n// Only TRIANGLES: 0x0004 and TRIANGLE_STRIP: 0x0005 are supported\nfunction compressMesh(attributes, indices, mode: number = 4, options, context: LoaderContext) {\n if (!options.DracoWriter) {\n throw new Error('options.gltf.DracoWriter not provided');\n }\n\n // TODO - use DracoWriter using encode w/ registered DracoWriter...\n const compressedData = options.DracoWriter.encodeSync({attributes});\n\n // Draco compression may change the order and number of vertices in a mesh.\n // To satisfy the requirement that accessors properties be correct for both\n // compressed and uncompressed data, generators should create uncompressed\n // attributes and indices using data that has been decompressed from the Draco buffer,\n // rather than the original source data.\n // @ts-ignore TODO this needs to be fixed\n const decodedData = context?.parseSync?.({attributes});\n const fauxAccessors = options._addFauxAttributes(decodedData.attributes);\n\n const bufferViewIndex = options.addBufferView(compressedData);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: fauxAccessors, // TODO - verify with spec\n mode, // GL.POINTS\n extensions: {\n [KHR_DRACO_MESH_COMPRESSION]: {\n bufferView: bufferViewIndex,\n attributes: fauxAccessors // TODO - verify with spec\n }\n }\n }\n ]\n };\n\n return glTFMesh;\n}\n\n// UTILS\n\nfunction checkPrimitive(primitive: GLTFMeshPrimitive) {\n if (!primitive.attributes && Object.keys(primitive.attributes).length > 0) {\n throw new Error('glTF: Empty primitive detected: Draco decompression failure?');\n }\n}\n\nfunction* makeMeshPrimitiveIterator(scenegraph) {\n for (const mesh of scenegraph.json.meshes || []) {\n for (const primitive of mesh.primitives) {\n yield primitive;\n }\n }\n}\n"],"mappings":"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"}