@loaders.gl/gltf 3.0.13 → 3.0.14

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 (59) hide show
  1. package/dist/dist.es5.min.js +1 -1
  2. package/dist/dist.es5.min.js.map +1 -1
  3. package/dist/dist.min.js +1 -1
  4. package/dist/dist.min.js.map +1 -1
  5. package/dist/es5/bundle.js +2 -2
  6. package/dist/es5/bundle.js.map +1 -1
  7. package/dist/es5/glb-loader.js +33 -10
  8. package/dist/es5/glb-loader.js.map +1 -1
  9. package/dist/es5/glb-writer.js +8 -9
  10. package/dist/es5/glb-writer.js.map +1 -1
  11. package/dist/es5/gltf-loader.js +52 -14
  12. package/dist/es5/gltf-loader.js.map +1 -1
  13. package/dist/es5/gltf-writer.js +10 -10
  14. package/dist/es5/gltf-writer.js.map +1 -1
  15. package/dist/es5/index.js +7 -7
  16. package/dist/es5/lib/api/gltf-scenegraph.js +541 -447
  17. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
  18. package/dist/es5/lib/api/normalize-gltf-v1.js +280 -150
  19. package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -1
  20. package/dist/es5/lib/api/post-process-gltf.js +354 -279
  21. package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
  22. package/dist/es5/lib/encoders/encode-glb.js +22 -19
  23. package/dist/es5/lib/encoders/encode-glb.js.map +1 -1
  24. package/dist/es5/lib/encoders/encode-gltf.js +5 -3
  25. package/dist/es5/lib/encoders/encode-gltf.js.map +1 -1
  26. package/dist/es5/lib/extensions/EXT_meshopt_compression.js +99 -34
  27. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  28. package/dist/es5/lib/extensions/KHR_binary_gltf.js +22 -8
  29. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
  30. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +244 -70
  31. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  32. package/dist/es5/lib/extensions/KHR_lights_punctual.js +102 -38
  33. package/dist/es5/lib/extensions/KHR_lights_punctual.js.map +1 -1
  34. package/dist/es5/lib/extensions/KHR_materials_unlit.js +67 -22
  35. package/dist/es5/lib/extensions/KHR_materials_unlit.js.map +1 -1
  36. package/dist/es5/lib/extensions/KHR_techniques_webgl.js +88 -32
  37. package/dist/es5/lib/extensions/KHR_techniques_webgl.js.map +1 -1
  38. package/dist/es5/lib/extensions/gltf-extensions.js +67 -17
  39. package/dist/es5/lib/extensions/gltf-extensions.js.map +1 -1
  40. package/dist/es5/lib/gltf-utils/get-typed-array.js +6 -6
  41. package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -1
  42. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +21 -19
  43. package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
  44. package/dist/es5/lib/gltf-utils/gltf-constants.js +13 -13
  45. package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -1
  46. package/dist/es5/lib/gltf-utils/gltf-utils.js +16 -16
  47. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
  48. package/dist/es5/lib/gltf-utils/resolve-url.js +2 -2
  49. package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -1
  50. package/dist/es5/lib/parsers/parse-glb.js +38 -34
  51. package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
  52. package/dist/es5/lib/parsers/parse-gltf.js +215 -80
  53. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
  54. package/dist/es5/lib/utils/version.js +1 -1
  55. package/dist/es5/lib/utils/version.js.map +1 -1
  56. package/dist/es5/meshopt/meshopt-decoder.js +197 -46
  57. package/dist/es5/meshopt/meshopt-decoder.js.map +1 -1
  58. package/dist/esm/lib/utils/version.js +1 -1
  59. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/api/post-process-gltf.js"],"names":["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","TEXTURE_WRAP_","getBytesFromComponentType","componentType","getSizeFromAccessorType","type","GLTFPostProcessor","postProcess","gltf","options","json","buffers","images","baseUri","_resolveTree","bufferViews","map","bufView","i","_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","undefined","getScene","index","_get","getNode","getSkin","getMesh","getMaterial","getAccessor","getCamera","getTexture","getSampler","getImage","getBufferView","getBuffer","array","object","console","warn","id","children","child","length","reduce","accum","meshIndex","primitives","concat","camera","inverseBindMatrices","primitive","attributes","attribute","indices","normalTexture","occlusionTexture","occlustionTexture","emissiveTexture","emmisiveTexture","emissiveFactor","pbrMetallicRoughness","mr","baseColorTexture","metallicRoughnessTexture","bufferView","bytesPerComponent","components","bytesPerElement","buffer","ArrayType","byteLength","byteOffset","cutBufffer","arrayBuffer","slice","value","source","parameters","key","glEnum","_enumSamplerParameter","preloadedImage","bufferIndex","data","Uint8Array","_resolveCamera","perspective","orthographic","postProcessGLTF"],"mappings":"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","sourcesContent":["import {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 = {\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_]: 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 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 const cutBufffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n accessor.value = new ArrayType(cutBufffer);\n }\n\n return accessor;\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, index) {\n // bufferView = {...bufferView};\n bufferView.id = bufferView.id || `bufferView-${index}`;\n const bufferIndex = bufferView.buffer;\n bufferView.buffer = this.buffers[bufferIndex];\n\n const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n\n if ('byteOffset' in bufferView) {\n byteOffset += bufferView.byteOffset;\n }\n\n bufferView.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n return bufferView;\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"],"file":"post-process-gltf.js"}
1
+ {"version":3,"sources":["../../../../src/lib/api/post-process-gltf.js"],"names":["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","TEXTURE_WRAP_","getBytesFromComponentType","componentType","getSizeFromAccessorType","type","GLTFPostProcessor","gltf","options","json","buffers","images","baseUri","_resolveTree","bufferViews","map","bufView","i","_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","undefined","index","_get","array","object","console","warn","id","getNode","children","child","getMesh","length","reduce","accum","meshIndex","primitives","concat","camera","getCamera","getSkin","inverseBindMatrices","getAccessor","primitive","attributes","attribute","indices","getMaterial","normalTexture","getTexture","occlusionTexture","occlustionTexture","emissiveTexture","emmisiveTexture","emissiveFactor","pbrMetallicRoughness","mr","baseColorTexture","metallicRoughnessTexture","bufferView","getBufferView","bytesPerComponent","components","bytesPerElement","buffer","ArrayType","byteLength","byteOffset","cutBufffer","arrayBuffer","slice","value","getSampler","source","getImage","parameters","key","glEnum","_enumSamplerParameter","preloadedImage","bufferIndex","data","Uint8Array","perspective","orthographic","postProcessGLTF","postProcess"],"mappings":"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","sourcesContent":["import {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 = {\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_]: 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 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 const cutBufffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n accessor.value = new ArrayType(cutBufffer);\n }\n\n return accessor;\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, index) {\n // bufferView = {...bufferView};\n bufferView.id = bufferView.id || `bufferView-${index}`;\n const bufferIndex = bufferView.buffer;\n bufferView.buffer = this.buffers[bufferIndex];\n\n const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n\n if ('byteOffset' in bufferView) {\n byteOffset += bufferView.byteOffset;\n }\n\n bufferView.data = new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n return bufferView;\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"],"file":"post-process-gltf.js"}
@@ -7,19 +7,22 @@ exports.default = encodeGLBSync;
7
7
 
8
8
  var _loaderUtils = require("@loaders.gl/loader-utils");
9
9
 
10
- const MAGIC_glTF = 0x46546c67;
11
- const MAGIC_JSON = 0x4e4f534a;
12
- const MAGIC_BIN = 0x004e4942;
13
- const LE = true;
10
+ var MAGIC_glTF = 0x46546c67;
11
+ var MAGIC_JSON = 0x4e4f534a;
12
+ var MAGIC_BIN = 0x004e4942;
13
+ var LE = true;
14
14
 
15
- function encodeGLBSync(glb, dataView, byteOffset = 0, options = {}) {
16
- const {
17
- magic = MAGIC_glTF,
18
- version = 2,
19
- json = {},
20
- binary
21
- } = glb;
22
- const byteOffsetStart = byteOffset;
15
+ function encodeGLBSync(glb, dataView) {
16
+ var byteOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
17
+ var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
18
+ var _glb$magic = glb.magic,
19
+ magic = _glb$magic === void 0 ? MAGIC_glTF : _glb$magic,
20
+ _glb$version = glb.version,
21
+ version = _glb$version === void 0 ? 2 : _glb$version,
22
+ _glb$json = glb.json,
23
+ json = _glb$json === void 0 ? {} : _glb$json,
24
+ binary = glb.binary;
25
+ var byteOffsetStart = byteOffset;
23
26
 
24
27
  if (dataView) {
25
28
  dataView.setUint32(byteOffset + 0, magic, LE);
@@ -27,9 +30,9 @@ function encodeGLBSync(glb, dataView, byteOffset = 0, options = {}) {
27
30
  dataView.setUint32(byteOffset + 8, 0, LE);
28
31
  }
29
32
 
30
- const byteOffsetFileLength = byteOffset + 8;
33
+ var byteOffsetFileLength = byteOffset + 8;
31
34
  byteOffset += 12;
32
- const byteOffsetJsonHeader = byteOffset;
35
+ var byteOffsetJsonHeader = byteOffset;
33
36
 
34
37
  if (dataView) {
35
38
  dataView.setUint32(byteOffset + 0, 0, LE);
@@ -37,16 +40,16 @@ function encodeGLBSync(glb, dataView, byteOffset = 0, options = {}) {
37
40
  }
38
41
 
39
42
  byteOffset += 8;
40
- const jsonString = JSON.stringify(json);
43
+ var jsonString = JSON.stringify(json);
41
44
  byteOffset = (0, _loaderUtils.copyPaddedStringToDataView)(dataView, byteOffset, jsonString, 4);
42
45
 
43
46
  if (dataView) {
44
- const jsonByteLength = byteOffset - byteOffsetJsonHeader - 8;
47
+ var jsonByteLength = byteOffset - byteOffsetJsonHeader - 8;
45
48
  dataView.setUint32(byteOffsetJsonHeader + 0, jsonByteLength, LE);
46
49
  }
47
50
 
48
51
  if (binary) {
49
- const byteOffsetBinHeader = byteOffset;
52
+ var byteOffsetBinHeader = byteOffset;
50
53
 
51
54
  if (dataView) {
52
55
  dataView.setUint32(byteOffset + 0, 0, LE);
@@ -57,13 +60,13 @@ function encodeGLBSync(glb, dataView, byteOffset = 0, options = {}) {
57
60
  byteOffset = (0, _loaderUtils.copyPaddedArrayBufferToDataView)(dataView, byteOffset, binary, 4);
58
61
 
59
62
  if (dataView) {
60
- const binByteLength = byteOffset - byteOffsetBinHeader - 8;
63
+ var binByteLength = byteOffset - byteOffsetBinHeader - 8;
61
64
  dataView.setUint32(byteOffsetBinHeader + 0, binByteLength, LE);
62
65
  }
63
66
  }
64
67
 
65
68
  if (dataView) {
66
- const fileByteLength = byteOffset - byteOffsetStart;
69
+ var fileByteLength = byteOffset - byteOffsetStart;
67
70
  dataView.setUint32(byteOffsetFileLength, fileByteLength, LE);
68
71
  }
69
72
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/encoders/encode-glb.js"],"names":["MAGIC_glTF","MAGIC_JSON","MAGIC_BIN","LE","encodeGLBSync","glb","dataView","byteOffset","options","magic","version","json","binary","byteOffsetStart","setUint32","byteOffsetFileLength","byteOffsetJsonHeader","jsonString","JSON","stringify","jsonByteLength","byteOffsetBinHeader","binByteLength","fileByteLength"],"mappings":";;;;;;;AACA;;AAKA,MAAMA,UAAU,GAAG,UAAnB;AACA,MAAMC,UAAU,GAAG,UAAnB;AACA,MAAMC,SAAS,GAAG,UAAlB;AAEA,MAAMC,EAAE,GAAG,IAAX;;AAKe,SAASC,aAAT,CAAuBC,GAAvB,EAA4BC,QAA5B,EAAsCC,UAAU,GAAG,CAAnD,EAAsDC,OAAO,GAAG,EAAhE,EAAoE;AACjF,QAAM;AAACC,IAAAA,KAAK,GAAGT,UAAT;AAAqBU,IAAAA,OAAO,GAAG,CAA/B;AAAkCC,IAAAA,IAAI,GAAG,EAAzC;AAA6CC,IAAAA;AAA7C,MAAuDP,GAA7D;AAEA,QAAMQ,eAAe,GAAGN,UAAxB;;AAGA,MAAID,QAAJ,EAAc;AACZA,IAAAA,QAAQ,CAACQ,SAAT,CAAmBP,UAAU,GAAG,CAAhC,EAAmCE,KAAnC,EAA0CN,EAA1C;AACAG,IAAAA,QAAQ,CAACQ,SAAT,CAAmBP,UAAU,GAAG,CAAhC,EAAmCG,OAAnC,EAA4CP,EAA5C;AACAG,IAAAA,QAAQ,CAACQ,SAAT,CAAmBP,UAAU,GAAG,CAAhC,EAAmC,CAAnC,EAAsCJ,EAAtC;AACD;;AACD,QAAMY,oBAAoB,GAAGR,UAAU,GAAG,CAA1C;AACAA,EAAAA,UAAU,IAAI,EAAd;AAGA,QAAMS,oBAAoB,GAAGT,UAA7B;;AACA,MAAID,QAAJ,EAAc;AACZA,IAAAA,QAAQ,CAACQ,SAAT,CAAmBP,UAAU,GAAG,CAAhC,EAAmC,CAAnC,EAAsCJ,EAAtC;AACAG,IAAAA,QAAQ,CAACQ,SAAT,CAAmBP,UAAU,GAAG,CAAhC,EAAmCN,UAAnC,EAA+CE,EAA/C;AACD;;AACDI,EAAAA,UAAU,IAAI,CAAd;AAGA,QAAMU,UAAU,GAAGC,IAAI,CAACC,SAAL,CAAeR,IAAf,CAAnB;AACAJ,EAAAA,UAAU,GAAG,6CAA2BD,QAA3B,EAAqCC,UAArC,EAAiDU,UAAjD,EAA6D,CAA7D,CAAb;;AAGA,MAAIX,QAAJ,EAAc;AACZ,UAAMc,cAAc,GAAGb,UAAU,GAAGS,oBAAb,GAAoC,CAA3D;AACAV,IAAAA,QAAQ,CAACQ,SAAT,CAAmBE,oBAAoB,GAAG,CAA1C,EAA6CI,cAA7C,EAA6DjB,EAA7D;AACD;;AAGD,MAAIS,MAAJ,EAAY;AACV,UAAMS,mBAAmB,GAAGd,UAA5B;;AAGA,QAAID,QAAJ,EAAc;AACZA,MAAAA,QAAQ,CAACQ,SAAT,CAAmBP,UAAU,GAAG,CAAhC,EAAmC,CAAnC,EAAsCJ,EAAtC;AACAG,MAAAA,QAAQ,CAACQ,SAAT,CAAmBP,UAAU,GAAG,CAAhC,EAAmCL,SAAnC,EAA8CC,EAA9C;AACD;;AACDI,IAAAA,UAAU,IAAI,CAAd;AAEAA,IAAAA,UAAU,GAAG,kDAAgCD,QAAhC,EAA0CC,UAA1C,EAAsDK,MAAtD,EAA8D,CAA9D,CAAb;;AAGA,QAAIN,QAAJ,EAAc;AACZ,YAAMgB,aAAa,GAAGf,UAAU,GAAGc,mBAAb,GAAmC,CAAzD;AACAf,MAAAA,QAAQ,CAACQ,SAAT,CAAmBO,mBAAmB,GAAG,CAAzC,EAA4CC,aAA5C,EAA2DnB,EAA3D;AACD;AACF;;AAGD,MAAIG,QAAJ,EAAc;AACZ,UAAMiB,cAAc,GAAGhB,UAAU,GAAGM,eAApC;AACAP,IAAAA,QAAQ,CAACQ,SAAT,CAAmBC,oBAAnB,EAAyCQ,cAAzC,EAAyDpB,EAAzD;AACD;;AAED,SAAOI,UAAP;AACD","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\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(glb, dataView, byteOffset = 0, options = {}) {\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"],"file":"encode-glb.js"}
1
+ {"version":3,"sources":["../../../../src/lib/encoders/encode-glb.js"],"names":["MAGIC_glTF","MAGIC_JSON","MAGIC_BIN","LE","encodeGLBSync","glb","dataView","byteOffset","options","magic","version","json","binary","byteOffsetStart","setUint32","byteOffsetFileLength","byteOffsetJsonHeader","jsonString","JSON","stringify","jsonByteLength","byteOffsetBinHeader","binByteLength","fileByteLength"],"mappings":"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","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\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(glb, dataView, byteOffset = 0, options = {}) {\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"],"file":"encode-glb.js"}
@@ -14,9 +14,11 @@ function encodeGLTFSync(gltf, arrayBuffer, byteOffset, options) {
14
14
  return (0, _encodeGlb.default)(gltf, arrayBuffer, byteOffset, options);
15
15
  }
16
16
 
17
- function convertBuffersToBase64(gltf, {
18
- firstBuffer = 0
19
- } = {}) {
17
+ function convertBuffersToBase64(gltf) {
18
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
19
+ _ref$firstBuffer = _ref.firstBuffer,
20
+ firstBuffer = _ref$firstBuffer === void 0 ? 0 : _ref$firstBuffer;
21
+
20
22
  if (gltf.buffers && gltf.buffers.length > firstBuffer) {
21
23
  throw new Error('encodeGLTF: multiple buffers not yet implemented');
22
24
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/encoders/encode-gltf.js"],"names":["encodeGLTFSync","gltf","arrayBuffer","byteOffset","options","convertBuffersToBase64","firstBuffer","buffers","length","Error"],"mappings":";;;;;;;;;AAAA;;AAYO,SAASA,cAAT,CAAwBC,IAAxB,EAA8BC,WAA9B,EAA2CC,UAA3C,EAAuDC,OAAvD,EAAgE;AACrEC,EAAAA,sBAAsB,CAACJ,IAAD,CAAtB;AAIA,SAAO,wBAAcA,IAAd,EAAoBC,WAApB,EAAiCC,UAAjC,EAA6CC,OAA7C,CAAP;AACD;;AAED,SAASC,sBAAT,CAAgCJ,IAAhC,EAAsC;AAACK,EAAAA,WAAW,GAAG;AAAf,IAAoB,EAA1D,EAA8D;AAC5D,MAAIL,IAAI,CAACM,OAAL,IAAgBN,IAAI,CAACM,OAAL,CAAaC,MAAb,GAAsBF,WAA1C,EAAuD;AACrD,UAAM,IAAIG,KAAJ,CAAU,kDAAV,CAAN;AACD;AACF","sourcesContent":["import encodeGLBSync from './encode-glb';\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\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// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#\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"],"file":"encode-gltf.js"}
1
+ {"version":3,"sources":["../../../../src/lib/encoders/encode-gltf.js"],"names":["encodeGLTFSync","gltf","arrayBuffer","byteOffset","options","convertBuffersToBase64","firstBuffer","buffers","length","Error"],"mappings":";;;;;;;;;AAAA;;AAYO,SAASA,cAAT,CAAwBC,IAAxB,EAA8BC,WAA9B,EAA2CC,UAA3C,EAAuDC,OAAvD,EAAgE;AACrEC,EAAAA,sBAAsB,CAACJ,IAAD,CAAtB;AAIA,SAAO,wBAAcA,IAAd,EAAoBC,WAApB,EAAiCC,UAAjC,EAA6CC,OAA7C,CAAP;AACD;;AAED,SAASC,sBAAT,CAAgCJ,IAAhC,EAA8D;AAAA,iFAAJ,EAAI;AAAA,8BAAvBK,WAAuB;AAAA,MAAvBA,WAAuB,iCAAT,CAAS;;AAC5D,MAAIL,IAAI,CAACM,OAAL,IAAgBN,IAAI,CAACM,OAAL,CAAaC,MAAb,GAAsBF,WAA1C,EAAuD;AACrD,UAAM,IAAIG,KAAJ,CAAU,kDAAV,CAAN;AACD;AACF","sourcesContent":["import encodeGLBSync from './encode-glb';\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\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// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#\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"],"file":"encode-gltf.js"}
@@ -7,55 +7,120 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.decode = decode;
9
9
 
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
10
14
  var _gltfScenegraph = _interopRequireDefault(require("../api/gltf-scenegraph"));
11
15
 
12
16
  var _gltfConstants = require("../gltf-utils/gltf-constants");
13
17
 
14
18
  var _meshoptDecoder = require("../../meshopt/meshopt-decoder");
15
19
 
16
- const DEFAULT_MESHOPT_OPTIONS = {
20
+ 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; } } }; }
21
+
22
+ 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); }
23
+
24
+ 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; }
25
+
26
+ var DEFAULT_MESHOPT_OPTIONS = {
17
27
  byteOffset: 0,
18
28
  filter: 'NONE'
19
29
  };
20
30
 
21
- async function decode(gltfData, options) {
22
- var _options$gltf;
31
+ function decode(_x, _x2) {
32
+ return _decode.apply(this, arguments);
33
+ }
34
+
35
+ function _decode() {
36
+ _decode = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee(gltfData, options) {
37
+ var _options$gltf;
38
+
39
+ var promises, _iterator, _step, bufferViewIndex, scenegraph;
40
+
41
+ return _regenerator.default.wrap(function _callee$(_context) {
42
+ while (1) {
43
+ switch (_context.prev = _context.next) {
44
+ case 0:
45
+ if (!(!(options !== null && options !== void 0 && (_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.decompressMeshes) || !(0, _meshoptDecoder.isMeshoptSupported)())) {
46
+ _context.next = 2;
47
+ break;
48
+ }
49
+
50
+ return _context.abrupt("return");
23
51
 
24
- if (!(options !== null && options !== void 0 && (_options$gltf = options.gltf) !== null && _options$gltf !== void 0 && _options$gltf.decompressMeshes) || !(0, _meshoptDecoder.isMeshoptSupported)()) {
25
- return;
26
- }
52
+ case 2:
53
+ promises = [];
54
+ _iterator = _createForOfIteratorHelper(gltfData.json.bufferViews || []);
27
55
 
28
- const promises = [];
56
+ try {
57
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
58
+ bufferViewIndex = _step.value;
59
+ promises.push(decodeMeshoptBufferView(gltfData.json, bufferViewIndex));
60
+ }
61
+ } catch (err) {
62
+ _iterator.e(err);
63
+ } finally {
64
+ _iterator.f();
65
+ }
29
66
 
30
- for (const bufferViewIndex of gltfData.json.bufferViews || []) {
31
- promises.push(decodeMeshoptBufferView(gltfData.json, bufferViewIndex));
32
- }
67
+ _context.next = 7;
68
+ return Promise.all(promises);
33
69
 
34
- await Promise.all(promises);
35
- const scenegraph = new _gltfScenegraph.default(gltfData);
36
- scenegraph.removeExtension(_gltfConstants.EXT_MESHOPT_COMPRESSION);
70
+ case 7:
71
+ scenegraph = new _gltfScenegraph.default(gltfData);
72
+ scenegraph.removeExtension(_gltfConstants.EXT_MESHOPT_COMPRESSION);
73
+
74
+ case 9:
75
+ case "end":
76
+ return _context.stop();
77
+ }
78
+ }
79
+ }, _callee);
80
+ }));
81
+ return _decode.apply(this, arguments);
82
+ }
83
+
84
+ function decodeMeshoptBufferView(_x3, _x4) {
85
+ return _decodeMeshoptBufferView.apply(this, arguments);
37
86
  }
38
87
 
39
- async function decodeMeshoptBufferView(json, index) {
40
- const bufferView = json.bufferViews[index];
41
- const meshoptExtension = bufferView.extensions && bufferView.extensions[_gltfConstants.EXT_MESHOPT_COMPRESSION];
42
-
43
- if (meshoptExtension) {
44
- const buffer = json.buffers[meshoptExtension.buffer];
45
- const {
46
- byteOffset = 0,
47
- byteLength = 0,
48
- byteStride,
49
- count,
50
- mode,
51
- filter = 'NONE'
52
- } = meshoptExtension;
53
- const source = new Uint8Array(buffer, byteOffset, byteLength);
54
- const result = new ArrayBuffer(count * byteStride);
55
- await (0, _meshoptDecoder.meshoptDecodeGltfBuffer)(new Uint8Array(result), count, byteStride, source, mode, filter);
56
- return result;
57
- }
58
-
59
- return null;
88
+ function _decodeMeshoptBufferView() {
89
+ _decodeMeshoptBufferView = (0, _asyncToGenerator2.default)(_regenerator.default.mark(function _callee2(json, index) {
90
+ var bufferView, meshoptExtension, buffer, _meshoptExtension$byt, byteOffset, _meshoptExtension$byt2, byteLength, byteStride, count, mode, _meshoptExtension$fil, filter, source, result;
91
+
92
+ return _regenerator.default.wrap(function _callee2$(_context2) {
93
+ while (1) {
94
+ switch (_context2.prev = _context2.next) {
95
+ case 0:
96
+ bufferView = json.bufferViews[index];
97
+ meshoptExtension = bufferView.extensions && bufferView.extensions[_gltfConstants.EXT_MESHOPT_COMPRESSION];
98
+
99
+ if (!meshoptExtension) {
100
+ _context2.next = 10;
101
+ break;
102
+ }
103
+
104
+ buffer = json.buffers[meshoptExtension.buffer];
105
+ _meshoptExtension$byt = meshoptExtension.byteOffset, byteOffset = _meshoptExtension$byt === void 0 ? 0 : _meshoptExtension$byt, _meshoptExtension$byt2 = meshoptExtension.byteLength, byteLength = _meshoptExtension$byt2 === void 0 ? 0 : _meshoptExtension$byt2, byteStride = meshoptExtension.byteStride, count = meshoptExtension.count, mode = meshoptExtension.mode, _meshoptExtension$fil = meshoptExtension.filter, filter = _meshoptExtension$fil === void 0 ? 'NONE' : _meshoptExtension$fil;
106
+ source = new Uint8Array(buffer, byteOffset, byteLength);
107
+ result = new ArrayBuffer(count * byteStride);
108
+ _context2.next = 9;
109
+ return (0, _meshoptDecoder.meshoptDecodeGltfBuffer)(new Uint8Array(result), count, byteStride, source, mode, filter);
110
+
111
+ case 9:
112
+ return _context2.abrupt("return", result);
113
+
114
+ case 10:
115
+ return _context2.abrupt("return", null);
116
+
117
+ case 11:
118
+ case "end":
119
+ return _context2.stop();
120
+ }
121
+ }
122
+ }, _callee2);
123
+ }));
124
+ return _decodeMeshoptBufferView.apply(this, arguments);
60
125
  }
61
126
  //# sourceMappingURL=EXT_meshopt_compression.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/extensions/EXT_meshopt_compression.ts"],"names":["DEFAULT_MESHOPT_OPTIONS","byteOffset","filter","decode","gltfData","options","gltf","decompressMeshes","promises","bufferViewIndex","json","bufferViews","push","decodeMeshoptBufferView","Promise","all","scenegraph","GLTFScenegraph","removeExtension","EXT_MESHOPT_COMPRESSION","index","bufferView","meshoptExtension","extensions","buffer","buffers","byteLength","byteStride","count","mode","source","Uint8Array","result","ArrayBuffer"],"mappings":";;;;;;;;;AAEA;;AACA;;AACA;;AAcA,MAAMA,uBAAuB,GAAG;AAC9BC,EAAAA,UAAU,EAAE,CADkB;AAE9BC,EAAAA,MAAM,EAAE;AAFsB,CAAhC;;AAMO,eAAeC,MAAf,CAAsBC,QAAtB,EAAgCC,OAAhC,EAA4D;AAAA;;AACjE,MAAI,EAACA,OAAD,aAACA,OAAD,gCAACA,OAAO,CAAEC,IAAV,0CAAC,cAAeC,gBAAhB,KAAoC,CAAC,yCAAzC,EAA+D;AAC7D;AACD;;AAED,QAAMC,QAAwB,GAAG,EAAjC;;AACA,OAAK,MAAMC,eAAX,IAA8BL,QAAQ,CAACM,IAAT,CAAcC,WAAd,IAA6B,EAA3D,EAA+D;AAC7DH,IAAAA,QAAQ,CAACI,IAAT,CAAcC,uBAAuB,CAACT,QAAQ,CAACM,IAAV,EAAgBD,eAAhB,CAArC;AACD;;AAGD,QAAMK,OAAO,CAACC,GAAR,CAAYP,QAAZ,CAAN;AAGA,QAAMQ,UAAU,GAAG,IAAIC,uBAAJ,CAAmBb,QAAnB,CAAnB;AACAY,EAAAA,UAAU,CAACE,eAAX,CAA2BC,sCAA3B;AACD;;AAGD,eAAeN,uBAAf,CAAuCH,IAAvC,EAA6CU,KAA7C,EAAyF;AACvF,QAAMC,UAAU,GAAGX,IAAI,CAACC,WAAL,CAAiBS,KAAjB,CAAnB;AAEA,QAAME,gBAAgB,GACpBD,UAAU,CAACE,UAAX,IACCF,UAAU,CAACE,UAAX,CAAsBJ,sCAAtB,CAFH;;AAGA,MAAIG,gBAAJ,EAAsB;AACpB,UAAME,MAAM,GAAGd,IAAI,CAACe,OAAL,CAAaH,gBAAgB,CAACE,MAA9B,CAAf;AAEA,UAAM;AACJvB,MAAAA,UAAU,GAAG,CADT;AAEJyB,MAAAA,UAAU,GAAG,CAFT;AAGJC,MAAAA,UAHI;AAIJC,MAAAA,KAJI;AAKJC,MAAAA,IALI;AAMJ3B,MAAAA,MAAM,GAAG;AANL,QAOFoB,gBAPJ;AAQA,UAAMQ,MAAM,GAAG,IAAIC,UAAJ,CAAeP,MAAf,EAAuBvB,UAAvB,EAAmCyB,UAAnC,CAAf;AACA,UAAMM,MAAM,GAAG,IAAIC,WAAJ,CAAgBL,KAAK,GAAGD,UAAxB,CAAf;AACA,UAAM,6CAAwB,IAAII,UAAJ,CAAeC,MAAf,CAAxB,EAAgDJ,KAAhD,EAAuDD,UAAvD,EAAmEG,MAAnE,EAA2ED,IAA3E,EAAiF3B,MAAjF,CAAN;AACA,WAAO8B,MAAP;AACD;;AAED,SAAO,IAAP;AACD","sourcesContent":["/* eslint-disable camelcase */\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\nimport GLTFScenegraph from '../api/gltf-scenegraph';\nimport {EXT_MESHOPT_COMPRESSION} from '../gltf-utils/gltf-constants';\nimport {isMeshoptSupported, meshoptDecodeGltfBuffer} from '../../meshopt/meshopt-decoder';\n\ntype GLTF_EXT_meshopt_compression = {\n buffer: number;\n byteOffset?: number;\n byteLength: number;\n byteStride: number;\n count: number;\n mode: 'ATTRIBUTES' | 'TRIANGLES' | 'INDICES';\n filter?: 'NONE' | 'OCTAHEDRAL' | 'QUATERNION' | 'EXPONENTIAL';\n};\n\n// @ts-ignore\n// eslint-disable-next-line\nconst DEFAULT_MESHOPT_OPTIONS = {\n byteOffset: 0,\n filter: 'NONE'\n};\n\n// Note: We have a \"soft dependency\" on DracoWriter to avoid bundling it when not needed\nexport async function decode(gltfData, options: GLTFLoaderOptions) {\n if (!options?.gltf?.decompressMeshes || !isMeshoptSupported()) {\n return;\n }\n\n const promises: Promise<any>[] = [];\n for (const bufferViewIndex of gltfData.json.bufferViews || []) {\n promises.push(decodeMeshoptBufferView(gltfData.json, 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 extensions\n const scenegraph = new GLTFScenegraph(gltfData);\n scenegraph.removeExtension(EXT_MESHOPT_COMPRESSION);\n}\n\n/** Decode one meshopt buffer view */\nasync function decodeMeshoptBufferView(json, index: number): Promise<ArrayBuffer | null> {\n const bufferView = json.bufferViews[index];\n\n const meshoptExtension =\n bufferView.extensions &&\n (bufferView.extensions[EXT_MESHOPT_COMPRESSION] as GLTF_EXT_meshopt_compression);\n if (meshoptExtension) {\n const buffer = json.buffers[meshoptExtension.buffer];\n\n const {\n byteOffset = 0,\n byteLength = 0,\n byteStride,\n count,\n mode,\n filter = 'NONE'\n } = meshoptExtension;\n const source = new Uint8Array(buffer, byteOffset, byteLength);\n const result = new ArrayBuffer(count * byteStride);\n await meshoptDecodeGltfBuffer(new Uint8Array(result), count, byteStride, source, mode, filter);\n return result;\n }\n\n return null;\n}\n"],"file":"EXT_meshopt_compression.js"}
1
+ {"version":3,"sources":["../../../../src/lib/extensions/EXT_meshopt_compression.ts"],"names":["DEFAULT_MESHOPT_OPTIONS","byteOffset","filter","decode","gltfData","options","gltf","decompressMeshes","promises","json","bufferViews","bufferViewIndex","push","decodeMeshoptBufferView","Promise","all","scenegraph","GLTFScenegraph","removeExtension","EXT_MESHOPT_COMPRESSION","index","bufferView","meshoptExtension","extensions","buffer","buffers","byteLength","byteStride","count","mode","source","Uint8Array","result","ArrayBuffer"],"mappings":";;;;;;;;;;;;;AAEA;;AACA;;AACA;;;;;;;;AAcA,IAAMA,uBAAuB,GAAG;AAC9BC,EAAAA,UAAU,EAAE,CADkB;AAE9BC,EAAAA,MAAM,EAAE;AAFsB,CAAhC;;SAMsBC,M;;;;;sEAAf,iBAAsBC,QAAtB,EAAgCC,OAAhC;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,kBACD,EAACA,OAAD,aAACA,OAAD,gCAACA,OAAO,CAAEC,IAAV,0CAAC,cAAeC,gBAAhB,KAAoC,CAAC,yCADpC;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAKCC,YAAAA,QALD,GAK4B,EAL5B;AAAA,mDAMyBJ,QAAQ,CAACK,IAAT,CAAcC,WAAd,IAA6B,EANtD;;AAAA;AAML,kEAA+D;AAApDC,gBAAAA,eAAoD;AAC7DH,gBAAAA,QAAQ,CAACI,IAAT,CAAcC,uBAAuB,CAACT,QAAQ,CAACK,IAAV,EAAgBE,eAAhB,CAArC;AACD;AARI;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA,mBAWCG,OAAO,CAACC,GAAR,CAAYP,QAAZ,CAXD;;AAAA;AAcCQ,YAAAA,UAdD,GAcc,IAAIC,uBAAJ,CAAmBb,QAAnB,CAdd;AAeLY,YAAAA,UAAU,CAACE,eAAX,CAA2BC,sCAA3B;;AAfK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G;;;;SAmBQN,uB;;;;;uFAAf,kBAAuCJ,IAAvC,EAA6CW,KAA7C;AAAA;;AAAA;AAAA;AAAA;AAAA;AACQC,YAAAA,UADR,GACqBZ,IAAI,CAACC,WAAL,CAAiBU,KAAjB,CADrB;AAGQE,YAAAA,gBAHR,GAIID,UAAU,CAACE,UAAX,IACCF,UAAU,CAACE,UAAX,CAAsBJ,sCAAtB,CALL;;AAAA,iBAMMG,gBANN;AAAA;AAAA;AAAA;;AAOUE,YAAAA,MAPV,GAOmBf,IAAI,CAACgB,OAAL,CAAaH,gBAAgB,CAACE,MAA9B,CAPnB;AAAA,oCAgBQF,gBAhBR,CAUMrB,UAVN,EAUMA,UAVN,sCAUmB,CAVnB,mDAgBQqB,gBAhBR,CAWMI,UAXN,EAWMA,UAXN,uCAWmB,CAXnB,2BAYMC,UAZN,GAgBQL,gBAhBR,CAYMK,UAZN,EAaMC,KAbN,GAgBQN,gBAhBR,CAaMM,KAbN,EAcMC,IAdN,GAgBQP,gBAhBR,CAcMO,IAdN,0BAgBQP,gBAhBR,CAeMpB,MAfN,EAeMA,MAfN,sCAee,MAff;AAiBU4B,YAAAA,MAjBV,GAiBmB,IAAIC,UAAJ,CAAeP,MAAf,EAAuBvB,UAAvB,EAAmCyB,UAAnC,CAjBnB;AAkBUM,YAAAA,MAlBV,GAkBmB,IAAIC,WAAJ,CAAgBL,KAAK,GAAGD,UAAxB,CAlBnB;AAAA;AAAA,mBAmBU,6CAAwB,IAAII,UAAJ,CAAeC,MAAf,CAAxB,EAAgDJ,KAAhD,EAAuDD,UAAvD,EAAmEG,MAAnE,EAA2ED,IAA3E,EAAiF3B,MAAjF,CAnBV;;AAAA;AAAA,8CAoBW8B,MApBX;;AAAA;AAAA,8CAuBS,IAvBT;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,G","sourcesContent":["/* eslint-disable camelcase */\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\nimport GLTFScenegraph from '../api/gltf-scenegraph';\nimport {EXT_MESHOPT_COMPRESSION} from '../gltf-utils/gltf-constants';\nimport {isMeshoptSupported, meshoptDecodeGltfBuffer} from '../../meshopt/meshopt-decoder';\n\ntype GLTF_EXT_meshopt_compression = {\n buffer: number;\n byteOffset?: number;\n byteLength: number;\n byteStride: number;\n count: number;\n mode: 'ATTRIBUTES' | 'TRIANGLES' | 'INDICES';\n filter?: 'NONE' | 'OCTAHEDRAL' | 'QUATERNION' | 'EXPONENTIAL';\n};\n\n// @ts-ignore\n// eslint-disable-next-line\nconst DEFAULT_MESHOPT_OPTIONS = {\n byteOffset: 0,\n filter: 'NONE'\n};\n\n// Note: We have a \"soft dependency\" on DracoWriter to avoid bundling it when not needed\nexport async function decode(gltfData, options: GLTFLoaderOptions) {\n if (!options?.gltf?.decompressMeshes || !isMeshoptSupported()) {\n return;\n }\n\n const promises: Promise<any>[] = [];\n for (const bufferViewIndex of gltfData.json.bufferViews || []) {\n promises.push(decodeMeshoptBufferView(gltfData.json, 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 extensions\n const scenegraph = new GLTFScenegraph(gltfData);\n scenegraph.removeExtension(EXT_MESHOPT_COMPRESSION);\n}\n\n/** Decode one meshopt buffer view */\nasync function decodeMeshoptBufferView(json, index: number): Promise<ArrayBuffer | null> {\n const bufferView = json.bufferViews[index];\n\n const meshoptExtension =\n bufferView.extensions &&\n (bufferView.extensions[EXT_MESHOPT_COMPRESSION] as GLTF_EXT_meshopt_compression);\n if (meshoptExtension) {\n const buffer = json.buffers[meshoptExtension.buffer];\n\n const {\n byteOffset = 0,\n byteLength = 0,\n byteStride,\n count,\n mode,\n filter = 'NONE'\n } = meshoptExtension;\n const source = new Uint8Array(buffer, byteOffset, byteLength);\n const result = new ArrayBuffer(count * byteStride);\n await meshoptDecodeGltfBuffer(new Uint8Array(result), count, byteStride, source, mode, filter);\n return result;\n }\n\n return null;\n}\n"],"file":"EXT_meshopt_compression.js"}
@@ -12,18 +12,32 @@ var _gltfScenegraph = _interopRequireDefault(require("../api/gltf-scenegraph"));
12
12
 
13
13
  var _gltfConstants = require("../gltf-utils/gltf-constants");
14
14
 
15
+ 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; } } }; }
16
+
17
+ 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); }
18
+
19
+ 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; }
20
+
15
21
  function decode(gltfData) {
16
- const gltfScenegraph = new _gltfScenegraph.default(gltfData);
17
- const {
18
- json
19
- } = gltfScenegraph;
22
+ var gltfScenegraph = new _gltfScenegraph.default(gltfData);
23
+ var json = gltfScenegraph.json;
24
+
25
+ var _iterator = _createForOfIteratorHelper(json.images || []),
26
+ _step;
20
27
 
21
- for (const node of json.images || []) {
22
- const extension = gltfScenegraph.removeObjectExtension(node, _gltfConstants.KHR_BINARY_GLTF);
28
+ try {
29
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
30
+ var node = _step.value;
31
+ var extension = gltfScenegraph.removeObjectExtension(node, _gltfConstants.KHR_BINARY_GLTF);
23
32
 
24
- if (extension) {
25
- Object.assign(node, extension);
33
+ if (extension) {
34
+ Object.assign(node, extension);
35
+ }
26
36
  }
37
+ } catch (err) {
38
+ _iterator.e(err);
39
+ } finally {
40
+ _iterator.f();
27
41
  }
28
42
 
29
43
  if (json.buffers && json.buffers[0]) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/extensions/KHR_binary_gltf.ts"],"names":["decode","gltfData","gltfScenegraph","GLTFScenegraph","json","node","images","extension","removeObjectExtension","KHR_BINARY_GLTF","Object","assign","buffers","uri","removeExtension","encode","Error"],"mappings":";;;;;;;;;;AAKA;;AACA;;AAEO,SAASA,MAAT,CAAgBC,QAAhB,EAA8C;AACnD,QAAMC,cAAc,GAAG,IAAIC,uBAAJ,CAAmBF,QAAnB,CAAvB;AACA,QAAM;AAACG,IAAAA;AAAD,MAASF,cAAf;;AAOA,OAAK,MAAMG,IAAX,IAAmBD,IAAI,CAACE,MAAL,IAAe,EAAlC,EAAsC;AACpC,UAAMC,SAAS,GAAGL,cAAc,CAACM,qBAAf,CAAqCH,IAArC,EAA2CI,8BAA3C,CAAlB;;AAEA,QAAIF,SAAJ,EAAe;AACbG,MAAAA,MAAM,CAACC,MAAP,CAAcN,IAAd,EAAoBE,SAApB;AACD;AACF;;AAMD,MAAIH,IAAI,CAACQ,OAAL,IAAgBR,IAAI,CAACQ,OAAL,CAAa,CAAb,CAApB,EAAqC;AACnC,WAAOR,IAAI,CAACQ,OAAL,CAAa,CAAb,EAAgBC,GAAvB;AACD;;AAGDX,EAAAA,cAAc,CAACY,eAAf,CAA+BL,8BAA/B;AACD;;AAGM,SAASM,MAAT,GAAkB;AACvB,QAAM,IAAIC,KAAJ,CAAUP,8BAAV,CAAN;AACD","sourcesContent":["// GLTF 1.0 EXTENSION: KHR_binary_glTF\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Khronos/KHR_binary_glTF\n\nimport type {GLTF} from '../types/gltf-types';\n\nimport GLTFScenegraph from '../api/gltf-scenegraph';\nimport {KHR_BINARY_GLTF} from '../gltf-utils/gltf-constants';\n\nexport function decode(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 node of json.images || []) {\n const extension = gltfScenegraph.removeObjectExtension(node, KHR_BINARY_GLTF);\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(node, extension);\n }\n }\n\n // TODO shaders\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 removed from all nodes\n gltfScenegraph.removeExtension(KHR_BINARY_GLTF);\n}\n\n// KHR_binary_gltf is a 1.0 extension that is supported natively by 2.0\nexport function encode() {\n throw new Error(KHR_BINARY_GLTF);\n}\n"],"file":"KHR_binary_gltf.js"}
1
+ {"version":3,"sources":["../../../../src/lib/extensions/KHR_binary_gltf.ts"],"names":["decode","gltfData","gltfScenegraph","GLTFScenegraph","json","images","node","extension","removeObjectExtension","KHR_BINARY_GLTF","Object","assign","buffers","uri","removeExtension","encode","Error"],"mappings":";;;;;;;;;;AAKA;;AACA;;;;;;;;AAEO,SAASA,MAAT,CAAgBC,QAAhB,EAA8C;AACnD,MAAMC,cAAc,GAAG,IAAIC,uBAAJ,CAAmBF,QAAnB,CAAvB;AACA,MAAOG,IAAP,GAAeF,cAAf,CAAOE,IAAP;;AAFmD,6CAShCA,IAAI,CAACC,MAAL,IAAe,EATiB;AAAA;;AAAA;AASnD,wDAAsC;AAAA,UAA3BC,IAA2B;AACpC,UAAMC,SAAS,GAAGL,cAAc,CAACM,qBAAf,CAAqCF,IAArC,EAA2CG,8BAA3C,CAAlB;;AAEA,UAAIF,SAAJ,EAAe;AACbG,QAAAA,MAAM,CAACC,MAAP,CAAcL,IAAd,EAAoBC,SAApB;AACD;AACF;AAfkD;AAAA;AAAA;AAAA;AAAA;;AAqBnD,MAAIH,IAAI,CAACQ,OAAL,IAAgBR,IAAI,CAACQ,OAAL,CAAa,CAAb,CAApB,EAAqC;AACnC,WAAOR,IAAI,CAACQ,OAAL,CAAa,CAAb,EAAgBC,GAAvB;AACD;;AAGDX,EAAAA,cAAc,CAACY,eAAf,CAA+BL,8BAA/B;AACD;;AAGM,SAASM,MAAT,GAAkB;AACvB,QAAM,IAAIC,KAAJ,CAAUP,8BAAV,CAAN;AACD","sourcesContent":["// GLTF 1.0 EXTENSION: KHR_binary_glTF\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Khronos/KHR_binary_glTF\n\nimport type {GLTF} from '../types/gltf-types';\n\nimport GLTFScenegraph from '../api/gltf-scenegraph';\nimport {KHR_BINARY_GLTF} from '../gltf-utils/gltf-constants';\n\nexport function decode(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 node of json.images || []) {\n const extension = gltfScenegraph.removeObjectExtension(node, KHR_BINARY_GLTF);\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(node, extension);\n }\n }\n\n // TODO shaders\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 removed from all nodes\n gltfScenegraph.removeExtension(KHR_BINARY_GLTF);\n}\n\n// KHR_binary_gltf is a 1.0 extension that is supported natively by 2.0\nexport function encode() {\n throw new Error(KHR_BINARY_GLTF);\n}\n"],"file":"KHR_binary_gltf.js"}