@loaders.gl/gltf 4.0.0-alpha.6 → 4.0.0-alpha.8
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.
- package/dist/dist.min.js +1661 -1459
- package/dist/es5/glb-loader.js +2 -2
- package/dist/es5/glb-loader.js.map +1 -1
- package/dist/es5/glb-writer.js +3 -4
- package/dist/es5/glb-writer.js.map +1 -1
- package/dist/es5/gltf-loader.js +3 -3
- package/dist/es5/gltf-loader.js.map +1 -1
- package/dist/es5/index.js +9 -3
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/api/gltf-extensions.js.map +1 -1
- package/dist/es5/lib/api/gltf-scenegraph.js +52 -32
- package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
- package/dist/es5/lib/api/post-process-gltf.js +164 -116
- package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
- package/dist/es5/lib/encoders/encode-glb.js +1 -1
- package/dist/es5/lib/encoders/encode-glb.js.map +1 -1
- package/dist/es5/lib/encoders/encode-gltf.js +2 -3
- package/dist/es5/lib/encoders/encode-gltf.js.map +1 -1
- package/dist/es5/lib/extensions/EXT_meshopt_compression.js +3 -5
- package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
- package/dist/es5/lib/extensions/EXT_texture_webp.js +2 -3
- package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_binary_gltf.js +2 -3
- package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +6 -5
- package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_texture_basisu.js +3 -4
- package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -1
- package/dist/es5/lib/extensions/KHR_texture_transform.js +9 -8
- package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +195 -17
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +3 -3
- package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +3 -3
- package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
- package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +2 -2
- package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
- package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
- package/dist/es5/lib/gltf-utils/gltf-utils.js +24 -0
- package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
- package/dist/es5/lib/parsers/parse-glb.js +10 -10
- package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
- package/dist/es5/lib/parsers/parse-gltf.js +18 -25
- package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/es5/lib/types/gltf-json-schema.js.map +1 -1
- package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +1 -1
- package/dist/es5/lib/types/gltf-types.js.map +1 -1
- package/dist/es5/lib/utils/version.js +1 -1
- package/dist/esm/glb-loader.js +1 -1
- package/dist/esm/glb-loader.js.map +1 -1
- package/dist/esm/glb-writer.js +1 -1
- package/dist/esm/glb-writer.js.map +1 -1
- package/dist/esm/gltf-loader.js +3 -3
- package/dist/esm/gltf-loader.js.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/api/gltf-extensions.js.map +1 -1
- package/dist/esm/lib/api/gltf-scenegraph.js +45 -31
- package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -1
- package/dist/esm/lib/api/post-process-gltf.js +167 -112
- package/dist/esm/lib/api/post-process-gltf.js.map +1 -1
- package/dist/esm/lib/encoders/encode-glb.js +1 -1
- package/dist/esm/lib/encoders/encode-glb.js.map +1 -1
- package/dist/esm/lib/encoders/encode-gltf.js +1 -1
- package/dist/esm/lib/encoders/encode-gltf.js.map +1 -1
- package/dist/esm/lib/extensions/EXT_meshopt_compression.js +2 -3
- package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -1
- package/dist/esm/lib/extensions/EXT_texture_webp.js +1 -1
- package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_binary_gltf.js +1 -1
- package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +5 -4
- package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_texture_basisu.js +2 -2
- package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -1
- package/dist/esm/lib/extensions/KHR_texture_transform.js +7 -6
- package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +161 -15
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +1 -1
- package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
- package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -1
- package/dist/esm/lib/gltf-utils/gltf-utils.js +20 -0
- package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
- package/dist/esm/lib/parsers/parse-glb.js +10 -10
- package/dist/esm/lib/parsers/parse-glb.js.map +1 -1
- package/dist/esm/lib/parsers/parse-gltf.js +7 -12
- package/dist/esm/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/esm/lib/types/gltf-json-schema.js.map +1 -1
- package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -1
- package/dist/esm/lib/types/gltf-types.js.map +1 -1
- package/dist/esm/lib/utils/version.js +1 -1
- package/dist/glb-loader.d.ts +2 -2
- package/dist/glb-loader.js +2 -5
- package/dist/glb-writer.d.ts.map +1 -1
- package/dist/glb-writer.js +4 -6
- package/dist/gltf-loader.d.ts +5 -5
- package/dist/gltf-loader.d.ts.map +1 -1
- package/dist/gltf-loader.js +3 -3
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -5
- package/dist/lib/api/gltf-extensions.d.ts +1 -1
- package/dist/lib/api/gltf-extensions.d.ts.map +1 -1
- package/dist/lib/api/gltf-extensions.js +1 -1
- package/dist/lib/api/gltf-scenegraph.d.ts +8 -5
- package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
- package/dist/lib/api/gltf-scenegraph.js +47 -33
- package/dist/lib/api/post-process-gltf.d.ts +4 -1
- package/dist/lib/api/post-process-gltf.d.ts.map +1 -1
- package/dist/lib/api/post-process-gltf.js +186 -123
- package/dist/lib/encoders/encode-glb.d.ts +13 -1
- package/dist/lib/encoders/encode-glb.d.ts.map +1 -1
- package/dist/lib/encoders/encode-glb.js +15 -4
- package/dist/lib/encoders/encode-gltf.js +2 -5
- package/dist/lib/extensions/EXT_meshopt_compression.d.ts +1 -1
- package/dist/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -1
- package/dist/lib/extensions/EXT_meshopt_compression.js +3 -7
- package/dist/lib/extensions/EXT_texture_webp.d.ts +1 -1
- package/dist/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
- package/dist/lib/extensions/EXT_texture_webp.js +2 -5
- package/dist/lib/extensions/KHR_binary_gltf.d.ts +1 -1
- package/dist/lib/extensions/KHR_binary_gltf.d.ts.map +1 -1
- package/dist/lib/extensions/KHR_binary_gltf.js +2 -5
- package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts +1 -1
- package/dist/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
- package/dist/lib/extensions/KHR_draco_mesh_compression.js +5 -8
- package/dist/lib/extensions/KHR_texture_basisu.d.ts +1 -1
- package/dist/lib/extensions/KHR_texture_basisu.d.ts.map +1 -1
- package/dist/lib/extensions/KHR_texture_basisu.js +3 -6
- package/dist/lib/extensions/KHR_texture_transform.d.ts.map +1 -1
- package/dist/lib/extensions/KHR_texture_transform.js +7 -10
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +3 -2
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -1
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +195 -23
- package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts +1 -1
- package/dist/lib/extensions/deprecated/KHR_lights_punctual.d.ts.map +1 -1
- package/dist/lib/extensions/deprecated/KHR_lights_punctual.js +3 -6
- package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts +1 -1
- package/dist/lib/extensions/deprecated/KHR_materials_unlit.d.ts.map +1 -1
- package/dist/lib/extensions/deprecated/KHR_materials_unlit.js +3 -6
- package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts +1 -1
- package/dist/lib/extensions/deprecated/KHR_techniques_webgl.d.ts.map +1 -1
- package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js +2 -5
- package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts +1 -1
- package/dist/lib/gltf-utils/gltf-attribute-utils.d.ts.map +1 -1
- package/dist/lib/gltf-utils/gltf-utils.d.ts +7 -0
- package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -1
- package/dist/lib/gltf-utils/gltf-utils.js +28 -1
- package/dist/lib/parsers/parse-glb.d.ts +15 -3
- package/dist/lib/parsers/parse-glb.d.ts.map +1 -1
- package/dist/lib/parsers/parse-glb.js +43 -18
- package/dist/lib/parsers/parse-gltf.d.ts +8 -4
- package/dist/lib/parsers/parse-gltf.d.ts.map +1 -1
- package/dist/lib/parsers/parse-gltf.js +17 -41
- package/dist/lib/types/gltf-json-schema.d.ts +153 -139
- package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
- package/dist/lib/types/gltf-postprocessed-schema.d.ts +174 -209
- package/dist/lib/types/gltf-postprocessed-schema.d.ts.map +1 -1
- package/dist/lib/types/gltf-postprocessed-schema.js +1 -1
- package/dist/lib/types/gltf-types.d.ts +18 -6
- package/dist/lib/types/gltf-types.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/glb-loader.ts +3 -3
- package/src/glb-writer.ts +3 -1
- package/src/gltf-loader.ts +12 -8
- package/src/index.ts +32 -13
- package/src/lib/api/gltf-extensions.ts +1 -1
- package/src/lib/api/gltf-scenegraph.ts +60 -41
- package/src/lib/api/post-process-gltf.ts +275 -150
- package/src/lib/encoders/encode-glb.ts +15 -5
- package/src/lib/encoders/encode-gltf.ts +1 -1
- package/src/lib/extensions/EXT_meshopt_compression.ts +4 -6
- package/src/lib/extensions/EXT_texture_webp.ts +2 -2
- package/src/lib/extensions/KHR_binary_gltf.ts +2 -2
- package/src/lib/extensions/KHR_draco_mesh_compression.ts +7 -7
- package/src/lib/extensions/KHR_texture_basisu.ts +3 -3
- package/src/lib/extensions/KHR_texture_transform.ts +22 -19
- package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +264 -23
- package/src/lib/extensions/deprecated/KHR_lights_punctual.ts +2 -2
- package/src/lib/extensions/deprecated/KHR_materials_unlit.ts +2 -2
- package/src/lib/extensions/deprecated/KHR_techniques_webgl.ts +2 -2
- package/src/lib/gltf-utils/gltf-attribute-utils.ts +1 -1
- package/src/lib/gltf-utils/gltf-utils.ts +31 -0
- package/src/lib/parsers/parse-glb.ts +50 -24
- package/src/lib/parsers/parse-gltf.ts +26 -25
- package/src/lib/types/gltf-json-schema.ts +168 -138
- package/src/lib/types/gltf-postprocessed-schema.ts +289 -212
- package/src/lib/types/gltf-types.ts +35 -59
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf-scenegraph.js","names":["_images","require","_loaderUtils","_assert","_gltfUtils","_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","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","arguments","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","DEFAULT_GLTF_JSON","asset","version","generator","buffers","GLTFScenegraph","gltf","_classCallCheck2","json","sourceBuffers","byteLength","_createClass2","get","getApplicationData","data","getExtraData","extras","getExtension","extensionName","isExtension","getUsedExtensions","find","extensions","getRequiredExtension","isRequired","getRequiredExtensions","extensionsRequired","extensionsUsed","getRemovedExtensions","extensionsRemoved","getObjectExtension","getScene","index","getObject","getNode","getSkin","getMesh","getMaterial","getAccessor","getTexture","getSampler","getImage","getBufferView","getBuffer","array","_typeof2","Error","concat","getTypedArrayForBufferView","bufferView","bufferIndex","buffer","binChunk","assert","byteOffset","Uint8Array","arrayBuffer","getTypedArrayForAccessor","accessor","_getAccessorArrayType","getAccessorArrayTypeAndLength","ArrayType","getTypedArrayForImageData","image","addApplicationData","addExtraData","addObjectExtension","registerUsedExtension","setObjectExtension","removeObjectExtension","extension","addExtension","extensionData","undefined","addRequiredExtension","registerRequiredExtension","ext","removeExtension","_removeStringFromArray","includes","setDefaultScene","sceneIndex","scene","addScene","nodeIndices","scenes","nodes","addNode","node","meshIndex","matrix","nodeData","mesh","addMesh","attributes","indices","material","_mesh$mode","mode","accessors","_addAttributes","glTFMesh","primitives","indicesAccessor","_addIndices","Number","isFinite","meshes","addPointCloud","accessorIndices","addImage","imageData","mimeTypeOpt","metadata","getBinaryImageMetadata","mimeType","bufferViewIndex","addBufferView","glTFImage","images","glTFBufferView","padToNBytes","bufferViews","addAccessor","glTFAccessor","type","getAccessorTypeFromSize","size","componentType","count","max","min","addBinaryBuffer","sourceBuffer","minMax","_getAccessorMinMax","accessorDefaults","getComponentTypeFromArray","Math","round","assign","addTexture","texture","imageIndex","glTFTexture","textures","addMaterial","pbrMaterialInfo","materials","createBinaryChunk","_this$json","_this$json$buffers","totalByteLength","ArrayBuffer","targetArray","dstByteOffset","_iterator","_step","copyToArray","binary","string","found","indexOf","splice","result","attributeKey","attributeData","attrName","_getGltfAttributeName","attributeName","toLowerCase","initValues","subarray","_iterator2","_step2","componentIndex","exports"],"sources":["../../../../src/lib/api/gltf-scenegraph.ts"],"sourcesContent":["import type {\n GLTF,\n GLTFScene,\n GLTFNode,\n GLTFMesh,\n GLTFSkin,\n GLTFMaterial,\n GLTFAccessor,\n GLTFSampler,\n GLTFTexture,\n GLTFImage,\n GLTFBuffer,\n GLTFBufferView,\n GLTFWithBuffers\n} from '../types/gltf-types';\n\nimport {getBinaryImageMetadata} from '@loaders.gl/images';\nimport {padToNBytes, copyToArray} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {\n getAccessorArrayTypeAndLength,\n getAccessorTypeFromSize,\n getComponentTypeFromArray\n} from '../gltf-utils/gltf-utils';\n\nconst DEFAULT_GLTF_JSON: GLTF = {\n asset: {\n version: '2.0',\n generator: 'loaders.gl'\n },\n buffers: []\n};\n\ntype Extension = {[key: string]: any};\n/**\n * Class for structured access to GLTF data\n */\nexport default class GLTFScenegraph {\n // internal\n gltf: GLTFWithBuffers;\n sourceBuffers: any[];\n byteLength: number;\n\n constructor(gltf?: {json: GLTF; buffers?: any[]}) {\n // @ts-ignore\n this.gltf = gltf || {\n json: {...DEFAULT_GLTF_JSON},\n buffers: []\n };\n this.sourceBuffers = [];\n this.byteLength = 0;\n\n // Initialize buffers\n if (this.gltf.buffers && this.gltf.buffers[0]) {\n this.byteLength = this.gltf.buffers[0].byteLength;\n this.sourceBuffers = [this.gltf.buffers[0]];\n }\n }\n\n // Accessors\n\n get json(): GLTF {\n return this.gltf.json;\n }\n\n getApplicationData(key: string): unknown {\n // TODO - Data is already unpacked by GLBParser\n const data = this.json[key];\n return data;\n }\n\n getExtraData(key: string): {[key: string]: unknown} {\n // TODO - Data is already unpacked by GLBParser\n const extras = this.json.extras || {};\n return extras[key];\n }\n\n getExtension<T = Extension>(extensionName: string): T | null {\n const isExtension = this.getUsedExtensions().find((name) => name === extensionName);\n const extensions = this.json.extensions || {};\n return isExtension ? extensions[extensionName] || true : null;\n }\n\n getRequiredExtension<T = Extension>(extensionName: string): T | null {\n const isRequired = this.getRequiredExtensions().find((name) => name === extensionName);\n return isRequired ? this.getExtension(extensionName) : null;\n }\n\n getRequiredExtensions(): string[] {\n return this.json.extensionsRequired || [];\n }\n\n getUsedExtensions(): string[] {\n return this.json.extensionsUsed || [];\n }\n\n getRemovedExtensions(): string[] {\n return (this.json.extensionsRemoved || []) as string[];\n }\n\n getObjectExtension<T = Extension>(object: {[key: string]: any}, extensionName: string): T | null {\n const extensions = object.extensions || {};\n return extensions[extensionName];\n }\n\n getScene(index: number): GLTFScene {\n return this.getObject('scenes', index) as GLTFScene;\n }\n\n getNode(index: number): GLTFNode {\n return this.getObject('nodes', index) as GLTFNode;\n }\n\n getSkin(index: number): GLTFSkin {\n return this.getObject('skins', index) as GLTFSkin;\n }\n\n getMesh(index: number): GLTFMesh {\n return this.getObject('meshes', index) as GLTFMesh;\n }\n\n getMaterial(index: number): GLTFMaterial {\n return this.getObject('materials', index) as GLTFMaterial;\n }\n\n getAccessor(index: number): GLTFAccessor {\n return this.getObject('accessors', index) as GLTFAccessor;\n }\n\n // getCamera(index: number): object | null {\n // return null; // TODO: fix thi: object as null;\n // }\n\n getTexture(index: number): GLTFTexture {\n return this.getObject('textures', index) as GLTFTexture;\n }\n\n getSampler(index: number): GLTFSampler {\n return this.getObject('samplers', index) as GLTFSampler;\n }\n\n getImage(index: number): GLTFImage {\n return this.getObject('images', index) as GLTFImage;\n }\n\n getBufferView(index: number | object): GLTFBufferView {\n return this.getObject('bufferViews', index) as GLTFBufferView;\n }\n\n getBuffer(index: number): GLTFBuffer {\n return this.getObject('buffers', index) as GLTFBuffer;\n }\n\n getObject(array: string, index: number | object): object {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && (this.json[array] as {}[])[index];\n if (!object) {\n throw new Error(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n /**\n * Accepts buffer view index or buffer view object\n * @returns a `Uint8Array`\n */\n getTypedArrayForBufferView(bufferView: number | object): Uint8Array {\n bufferView = this.getBufferView(bufferView);\n // @ts-ignore\n const bufferIndex = bufferView.buffer;\n\n // Get hold of the arrayBuffer\n // const buffer = this.getBuffer(bufferIndex);\n const binChunk = this.gltf.buffers[bufferIndex];\n assert(binChunk);\n\n // @ts-ignore\n const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n // @ts-ignore\n return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n /** Accepts accessor index or accessor object\n * @returns a typed array with type that matches the types\n */\n getTypedArrayForAccessor(accessor: number | object): any {\n // @ts-ignore\n accessor = this.getAccessor(accessor);\n // @ts-ignore\n const bufferView = this.getBufferView(accessor.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n // Create a new typed array as a view into the combined buffer\n const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);\n // @ts-ignore\n const byteOffset = bufferView.byteOffset + accessor.byteOffset;\n return new ArrayType(arrayBuffer, byteOffset, length);\n }\n\n /** accepts accessor index or accessor object\n * returns a `Uint8Array`\n */\n getTypedArrayForImageData(image: number | object): Uint8Array {\n // @ts-ignore\n image = this.getAccessor(image);\n // @ts-ignore\n const bufferView = this.getBufferView(image.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n const byteOffset = bufferView.byteOffset || 0;\n return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n // MODIFERS\n\n /**\n * Add an extra application-defined key to the top-level data structure\n */\n addApplicationData(key: string, data: object): GLTFScenegraph {\n this.json[key] = data;\n return this;\n }\n\n /**\n * `extras` - Standard GLTF field for storing application specific data\n */\n addExtraData(key: string, data: object): GLTFScenegraph {\n this.json.extras = this.json.extras || {};\n (this.json.extras as Record<string, unknown>)[key] = data;\n return this;\n }\n\n addObjectExtension(object: object, extensionName: string, data: object): GLTFScenegraph {\n // @ts-ignore\n object.extensions = object.extensions || {};\n // TODO - clobber or merge?\n // @ts-ignore\n object.extensions[extensionName] = data;\n this.registerUsedExtension(extensionName);\n return this;\n }\n\n setObjectExtension(object: object, extensionName: string, data: object): void {\n // @ts-ignore\n const extensions = object.extensions || {};\n extensions[extensionName] = data;\n // TODO - add to usedExtensions...\n }\n\n removeObjectExtension(object: object, extensionName: string): object {\n // @ts-ignore\n const extensions = object.extensions || {};\n const extension = extensions[extensionName];\n delete extensions[extensionName];\n return extension;\n }\n\n /**\n * Add to standard GLTF top level extension object, mark as used\n */\n addExtension(extensionName: string, extensionData: object = {}): object {\n assert(extensionData);\n this.json.extensions = this.json.extensions || {};\n (this.json.extensions as Record<string, unknown>)[extensionName] = extensionData;\n this.registerUsedExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Standard GLTF top level extension object, mark as used and required\n */\n addRequiredExtension(extensionName, extensionData: object = {}): object {\n assert(extensionData);\n this.addExtension(extensionName, extensionData);\n this.registerRequiredExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Add extensionName to list of used extensions\n */\n registerUsedExtension(extensionName: string): void {\n this.json.extensionsUsed = this.json.extensionsUsed || [];\n if (!this.json.extensionsUsed.find((ext) => ext === extensionName)) {\n this.json.extensionsUsed.push(extensionName);\n }\n }\n\n /**\n * Add extensionName to list of required extensions\n */\n registerRequiredExtension(extensionName: string): void {\n this.registerUsedExtension(extensionName);\n this.json.extensionsRequired = this.json.extensionsRequired || [];\n if (!this.json.extensionsRequired.find((ext) => ext === extensionName)) {\n this.json.extensionsRequired.push(extensionName);\n }\n }\n\n /**\n * Removes an extension from the top-level list\n */\n removeExtension(extensionName: string): void {\n if (!this.getExtension(extensionName)) {\n return;\n }\n if (this.json.extensionsRequired) {\n this._removeStringFromArray(this.json.extensionsRequired, extensionName);\n }\n if (this.json.extensionsUsed) {\n this._removeStringFromArray(this.json.extensionsUsed, extensionName);\n }\n if (this.json.extensions) {\n delete this.json.extensions[extensionName];\n }\n if (!Array.isArray(this.json.extensionsRemoved)) {\n this.json.extensionsRemoved = [];\n }\n const extensionsRemoved = this.json.extensionsRemoved as string[];\n if (!extensionsRemoved.includes(extensionName)) {\n extensionsRemoved.push(extensionName);\n }\n }\n\n /**\n * Set default scene which is to be displayed at load time\n */\n setDefaultScene(sceneIndex: number): void {\n this.json.scene = sceneIndex;\n }\n\n /**\n * @todo: add more properties for scene initialization:\n * name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-scene\n */\n addScene(scene: {nodeIndices: number[]}): number {\n const {nodeIndices} = scene;\n this.json.scenes = this.json.scenes || [];\n this.json.scenes.push({nodes: nodeIndices});\n return this.json.scenes.length - 1;\n }\n\n /**\n * @todo: add more properties for node initialization:\n * `name`, `extensions`, `extras`, `camera`, `children`, `skin`, `rotation`, `scale`, `translation`, `weights`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#node\n */\n addNode(node: {meshIndex: number; matrix?: number[]}): number {\n const {meshIndex, matrix} = node;\n this.json.nodes = this.json.nodes || [];\n const nodeData = {mesh: meshIndex};\n if (matrix) {\n // @ts-ignore\n nodeData.matrix = matrix;\n }\n this.json.nodes.push(nodeData);\n return this.json.nodes.length - 1;\n }\n\n /** Adds a mesh to the json part */\n addMesh(mesh: {attributes: object; indices?: object; material?: number; mode?: number}): number {\n const {attributes, indices, material, mode = 4} = mesh;\n const accessors = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessors,\n mode\n }\n ]\n };\n\n if (indices) {\n const indicesAccessor = this._addIndices(indices);\n // @ts-ignore\n glTFMesh.primitives[0].indices = indicesAccessor;\n }\n\n if (Number.isFinite(material)) {\n // @ts-ignore\n glTFMesh.primitives[0].material = material;\n }\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n addPointCloud(attributes: object): number {\n // @ts-ignore\n const accessorIndices = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessorIndices,\n mode: 0 // GL.POINTS\n }\n ]\n };\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n /**\n * Adds a binary image. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes as glTF image\n * @param imageData\n * @param mimeType\n */\n addImage(imageData: any, mimeTypeOpt?: string): number {\n // If image is referencing a bufferView instead of URI, mimeType must be defined:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#images\n // \"a reference to a bufferView; in that case mimeType must be defined.\"\n const metadata = getBinaryImageMetadata(imageData);\n const mimeType = mimeTypeOpt || metadata?.mimeType;\n\n const bufferViewIndex = this.addBufferView(imageData);\n\n const glTFImage = {\n bufferView: bufferViewIndex,\n mimeType\n };\n\n this.json.images = this.json.images || [];\n this.json.images.push(glTFImage);\n return this.json.images.length - 1;\n }\n\n /**\n * Add one untyped source buffer, create a matching glTF `bufferView`, and return its index\n * @param buffer\n */\n addBufferView(buffer: any): number {\n const byteLength = buffer.byteLength;\n assert(Number.isFinite(byteLength));\n\n // Add this buffer to the list of buffers to be written to the body.\n this.sourceBuffers = this.sourceBuffers || [];\n this.sourceBuffers.push(buffer);\n\n const glTFBufferView = {\n buffer: 0,\n // Write offset from the start of the binary body\n byteOffset: this.byteLength,\n byteLength\n };\n\n // We've now added the contents to the body, so update the total length\n // Every sub-chunk needs to be 4-byte align ed\n this.byteLength += padToNBytes(byteLength, 4);\n\n // Add a bufferView indicating start and length of this binary sub-chunk\n this.json.bufferViews = this.json.bufferViews || [];\n this.json.bufferViews.push(glTFBufferView);\n return this.json.bufferViews.length - 1;\n }\n\n /**\n * Adds an accessor to a bufferView\n * @param bufferViewIndex\n * @param accessor\n */\n addAccessor(bufferViewIndex: number, accessor: object): number {\n const glTFAccessor = {\n bufferView: bufferViewIndex,\n // @ts-ignore\n type: getAccessorTypeFromSize(accessor.size),\n // @ts-ignore\n componentType: accessor.componentType,\n // @ts-ignore\n count: accessor.count,\n // @ts-ignore\n max: accessor.max,\n // @ts-ignore\n min: accessor.min\n };\n\n this.json.accessors = this.json.accessors || [];\n this.json.accessors.push(glTFAccessor);\n return this.json.accessors.length - 1;\n }\n\n /**\n * Add a binary buffer. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes buffers as glTF accessors, but this could be optimized\n * @param sourceBuffer\n * @param accessor\n */\n addBinaryBuffer(sourceBuffer: any, accessor: object = {size: 3}): number {\n const bufferViewIndex = this.addBufferView(sourceBuffer);\n // @ts-ignore\n let minMax = {min: accessor.min, max: accessor.max};\n if (!minMax.min || !minMax.max) {\n // @ts-ignore\n minMax = this._getAccessorMinMax(sourceBuffer, accessor.size);\n }\n\n const accessorDefaults = {\n // @ts-ignore\n size: accessor.size,\n componentType: getComponentTypeFromArray(sourceBuffer),\n // @ts-ignore\n count: Math.round(sourceBuffer.length / accessor.size),\n min: minMax.min,\n max: minMax.max\n };\n\n return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));\n }\n\n /**\n * Adds a texture to the json part\n * @todo: add more properties for texture initialization\n * `sampler`, `name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\n */\n addTexture(texture: {imageIndex: number}): number {\n const {imageIndex} = texture;\n const glTFTexture = {\n source: imageIndex\n };\n\n this.json.textures = this.json.textures || [];\n this.json.textures.push(glTFTexture);\n return this.json.textures.length - 1;\n }\n\n /** Adds a material to the json part */\n addMaterial(pbrMaterialInfo: Object): number {\n this.json.materials = this.json.materials || [];\n this.json.materials.push(pbrMaterialInfo);\n return this.json.materials.length - 1;\n }\n\n /** Pack the binary chunk */\n createBinaryChunk(): void {\n // Encoder expects this array undefined or empty\n this.gltf.buffers = [];\n\n // Allocate total array\n const totalByteLength = this.byteLength;\n const arrayBuffer = new ArrayBuffer(totalByteLength);\n const targetArray = new Uint8Array(arrayBuffer);\n\n // Copy each array into\n let dstByteOffset = 0;\n for (const sourceBuffer of this.sourceBuffers || []) {\n dstByteOffset = copyToArray(sourceBuffer, targetArray, dstByteOffset);\n }\n\n // Update the glTF BIN CHUNK byte length\n if (this.json?.buffers?.[0]) {\n this.json.buffers[0].byteLength = totalByteLength;\n } else {\n this.json.buffers = [{byteLength: totalByteLength}];\n }\n\n // Save generated arrayBuffer\n this.gltf.binary = arrayBuffer;\n\n // Put arrayBuffer to sourceBuffers for possible additional writing data in the chunk\n this.sourceBuffers = [arrayBuffer];\n }\n\n // PRIVATE\n\n _removeStringFromArray(array, string) {\n let found = true;\n while (found) {\n const index = array.indexOf(string);\n if (index > -1) {\n array.splice(index, 1);\n } else {\n found = false;\n }\n }\n }\n\n /**\n * Add attributes to buffers and create `attributes` object which is part of `mesh`\n */\n _addAttributes(attributes = {}) {\n const result = {};\n for (const attributeKey in attributes) {\n const attributeData = attributes[attributeKey];\n const attrName = this._getGltfAttributeName(attributeKey);\n const accessor = this.addBinaryBuffer(attributeData.value, attributeData);\n result[attrName] = accessor;\n }\n return result;\n }\n\n /**\n * Add indices to buffers\n */\n _addIndices(indices) {\n return this.addBinaryBuffer(indices, {size: 1});\n }\n\n /**\n * Deduce gltf specific attribue name from input attribute name\n */\n _getGltfAttributeName(attributeName) {\n switch (attributeName.toLowerCase()) {\n case 'position':\n case 'positions':\n case 'vertices':\n return 'POSITION';\n case 'normal':\n case 'normals':\n return 'NORMAL';\n case 'color':\n case 'colors':\n return 'COLOR_0';\n case 'texcoord':\n case 'texcoords':\n return 'TEXCOORD_0';\n default:\n return attributeName;\n }\n }\n\n /**\n * Calculate `min` and `max` arrays of accessor according to spec:\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-accessor\n */\n _getAccessorMinMax(buffer, size) {\n const result = {min: null, max: null};\n if (buffer.length < size) {\n return result;\n }\n // @ts-ignore\n result.min = [];\n // @ts-ignore\n result.max = [];\n const initValues = buffer.subarray(0, size);\n for (const value of initValues) {\n // @ts-ignore\n result.min.push(value);\n // @ts-ignore\n result.max.push(value);\n }\n\n for (let index = size; index < buffer.length; index += size) {\n for (let componentIndex = 0; componentIndex < size; componentIndex++) {\n // @ts-ignore\n result.min[0 + componentIndex] = Math.min(\n // @ts-ignore\n result.min[0 + componentIndex],\n buffer[index + componentIndex]\n );\n // @ts-ignore\n result.max[0 + componentIndex] = Math.max(\n // @ts-ignore\n result.max[0 + componentIndex],\n buffer[index + componentIndex]\n );\n }\n }\n return result;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gltf-scenegraph.js","names":["_images","require","_loaderUtils","_assert","_gltfUtils","_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","makeDefaultGLTFJson","asset","version","generator","buffers","extensions","extensionsRequired","extensionsUsed","GLTFScenegraph","gltf","_classCallCheck2","default","_defineProperty2","json","images","sourceBuffers","byteLength","_createClass2","key","get","getApplicationData","data","getExtraData","extras","hasExtension","extensionName","isUsedExtension","getUsedExtensions","find","isRequiredExtension","getRequiredExtensions","getExtension","isExtension","getRequiredExtension","isRequired","getRemovedExtensions","extensionsRemoved","getObjectExtension","object","getScene","index","getObject","getNode","getSkin","getMesh","getMaterial","getAccessor","getTexture","getSampler","getImage","getBufferView","getBuffer","array","_typeof2","Error","concat","getTypedArrayForBufferView","bufferView","bufferIndex","buffer","binChunk","assert","byteOffset","Uint8Array","arrayBuffer","getTypedArrayForAccessor","accessor","_getAccessorArrayType","getAccessorArrayTypeAndLength","ArrayType","getTypedArrayForImageData","image","addApplicationData","addExtraData","addObjectExtension","registerUsedExtension","setObjectExtension","removeObjectExtension","includes","push","addExtension","extensionData","arguments","undefined","addRequiredExtension","registerRequiredExtension","ext","removeExtension","_this$json$extensions","_removeStringFromArray","setDefaultScene","sceneIndex","scene","addScene","nodeIndices","scenes","nodes","addNode","node","meshIndex","matrix","nodeData","mesh","addMesh","attributes","indices","material","_mesh$mode","mode","accessors","_addAttributes","glTFMesh","primitives","indicesAccessor","_addIndices","Number","isFinite","meshes","addPointCloud","accessorIndices","addImage","imageData","mimeTypeOpt","metadata","getBinaryImageMetadata","mimeType","bufferViewIndex","addBufferView","glTFImage","glTFBufferView","padToNBytes","bufferViews","addAccessor","glTFAccessor","type","getAccessorTypeFromSize","size","componentType","count","max","min","addBinaryBuffer","sourceBuffer","minMax","_getAccessorMinMax","accessorDefaults","getComponentTypeFromArray","Math","round","assign","addTexture","texture","imageIndex","glTFTexture","source","textures","addMaterial","pbrMaterialInfo","materials","createBinaryChunk","_this$json","_this$json$buffers","totalByteLength","ArrayBuffer","targetArray","dstByteOffset","_iterator","_step","copyToArray","binary","string","found","indexOf","splice","result","attributeKey","attributeData","attrName","_getGltfAttributeName","attributeName","toLowerCase","initValues","subarray","_iterator2","_step2","componentIndex","exports"],"sources":["../../../../src/lib/api/gltf-scenegraph.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {\n GLTF,\n GLTFScene,\n GLTFNode,\n GLTFMesh,\n GLTFSkin,\n GLTFMaterial,\n GLTFAccessor,\n GLTFSampler,\n GLTFTexture,\n GLTFImage,\n GLTFBuffer,\n GLTFBufferView\n} from '../types/gltf-json-schema';\n\nimport {getBinaryImageMetadata} from '@loaders.gl/images';\nimport {padToNBytes, copyToArray} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {\n getAccessorArrayTypeAndLength,\n getAccessorTypeFromSize,\n getComponentTypeFromArray\n} from '../gltf-utils/gltf-utils';\n\ntype Extension = {[key: string]: any};\n\nfunction makeDefaultGLTFJson(): GLTF {\n return {\n asset: {\n version: '2.0',\n generator: 'loaders.gl'\n },\n buffers: [],\n extensions: {},\n extensionsRequired: [],\n extensionsUsed: []\n };\n}\n\n/**\n * Class for structured access to GLTF data\n */\nexport class GLTFScenegraph {\n // internal\n gltf: GLTFWithBuffers;\n sourceBuffers: any[];\n byteLength: number;\n\n // TODO - why is this not GLTFWithBuffers - what happens to images?\n constructor(gltf?: {json: GLTF; buffers?: any[]; images?: any[]}) {\n // Declare locally so\n\n this.gltf = {\n json: gltf?.json || makeDefaultGLTFJson(),\n buffers: gltf?.buffers || [],\n images: gltf?.images || []\n };\n this.sourceBuffers = [];\n this.byteLength = 0;\n\n // Initialize buffers\n if (this.gltf.buffers && this.gltf.buffers[0]) {\n this.byteLength = this.gltf.buffers[0].byteLength;\n this.sourceBuffers = [this.gltf.buffers[0]];\n }\n }\n\n // Accessors\n\n get json(): GLTF {\n return this.gltf.json;\n }\n\n getApplicationData(key: string): unknown {\n // TODO - Data is already unpacked by GLBParser\n const data = this.json[key];\n return data;\n }\n\n getExtraData(key: string): {[key: string]: unknown} {\n // TODO - Data is already unpacked by GLBParser\n const extras = this.json.extras || {};\n return extras[key];\n }\n\n hasExtension(extensionName: string): boolean {\n const isUsedExtension = this.getUsedExtensions().find((name) => name === extensionName);\n const isRequiredExtension = this.getRequiredExtensions().find((name) => name === extensionName);\n return typeof isUsedExtension === 'string' || typeof isRequiredExtension === 'string';\n }\n\n getExtension<T = Extension>(extensionName: string): T | null {\n const isExtension = this.getUsedExtensions().find((name) => name === extensionName);\n const extensions = this.json.extensions || {};\n return isExtension ? (extensions[extensionName] as T) : null;\n }\n\n getRequiredExtension<T = Extension>(extensionName: string): T | null {\n const isRequired = this.getRequiredExtensions().find((name) => name === extensionName);\n return isRequired ? this.getExtension(extensionName) : null;\n }\n\n getRequiredExtensions(): string[] {\n return this.json.extensionsRequired || [];\n }\n\n getUsedExtensions(): string[] {\n return this.json.extensionsUsed || [];\n }\n\n getRemovedExtensions(): string[] {\n return (this.json.extensionsRemoved || []) as string[];\n }\n\n getObjectExtension<T = Extension>(object: {[key: string]: any}, extensionName: string): T | null {\n const extensions = object.extensions || {};\n return extensions[extensionName];\n }\n\n getScene(index: number): GLTFScene {\n return this.getObject('scenes', index) as GLTFScene;\n }\n\n getNode(index: number): GLTFNode {\n return this.getObject('nodes', index) as GLTFNode;\n }\n\n getSkin(index: number): GLTFSkin {\n return this.getObject('skins', index) as GLTFSkin;\n }\n\n getMesh(index: number): GLTFMesh {\n return this.getObject('meshes', index) as GLTFMesh;\n }\n\n getMaterial(index: number): GLTFMaterial {\n return this.getObject('materials', index) as GLTFMaterial;\n }\n\n getAccessor(index: number): GLTFAccessor {\n return this.getObject('accessors', index) as GLTFAccessor;\n }\n\n // getCamera(index: number): object | null {\n // return null; // TODO: fix thi: object as null;\n // }\n\n getTexture(index: number): GLTFTexture {\n return this.getObject('textures', index) as GLTFTexture;\n }\n\n getSampler(index: number): GLTFSampler {\n return this.getObject('samplers', index) as GLTFSampler;\n }\n\n getImage(index: number): GLTFImage {\n return this.getObject('images', index) as GLTFImage;\n }\n\n getBufferView(index: number | object): GLTFBufferView {\n return this.getObject('bufferViews', index) as GLTFBufferView;\n }\n\n getBuffer(index: number): GLTFBuffer {\n return this.getObject('buffers', index) as GLTFBuffer;\n }\n\n getObject(array: string, index: number | object): object {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = this.json[array] && (this.json[array] as {}[])[index];\n if (!object) {\n throw new Error(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object;\n }\n\n /**\n * Accepts buffer view index or buffer view object\n * @returns a `Uint8Array`\n */\n getTypedArrayForBufferView(bufferView: number | object): Uint8Array {\n bufferView = this.getBufferView(bufferView);\n // @ts-ignore\n const bufferIndex = bufferView.buffer;\n\n // Get hold of the arrayBuffer\n // const buffer = this.getBuffer(bufferIndex);\n const binChunk = this.gltf.buffers[bufferIndex];\n assert(binChunk);\n\n // @ts-ignore\n const byteOffset = (bufferView.byteOffset || 0) + binChunk.byteOffset;\n // @ts-ignore\n return new Uint8Array(binChunk.arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n /** Accepts accessor index or accessor object\n * @returns a typed array with type that matches the types\n */\n getTypedArrayForAccessor(accessor: number | object): any {\n // @ts-ignore\n accessor = this.getAccessor(accessor);\n // @ts-ignore\n const bufferView = this.getBufferView(accessor.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n // Create a new typed array as a view into the combined buffer\n const {ArrayType, length} = getAccessorArrayTypeAndLength(accessor, bufferView);\n // @ts-ignore\n const byteOffset = bufferView.byteOffset + accessor.byteOffset;\n return new ArrayType(arrayBuffer, byteOffset, length);\n }\n\n /** accepts accessor index or accessor object\n * returns a `Uint8Array`\n */\n getTypedArrayForImageData(image: number | object): Uint8Array {\n // @ts-ignore\n image = this.getAccessor(image);\n // @ts-ignore\n const bufferView = this.getBufferView(image.bufferView);\n const buffer = this.getBuffer(bufferView.buffer);\n // @ts-ignore\n const arrayBuffer = buffer.data;\n\n const byteOffset = bufferView.byteOffset || 0;\n return new Uint8Array(arrayBuffer, byteOffset, bufferView.byteLength);\n }\n\n // MODIFERS\n\n /**\n * Add an extra application-defined key to the top-level data structure\n */\n addApplicationData(key: string, data: object): GLTFScenegraph {\n this.json[key] = data;\n return this;\n }\n\n /**\n * `extras` - Standard GLTF field for storing application specific data\n */\n addExtraData(key: string, data: object): GLTFScenegraph {\n this.json.extras = this.json.extras || {};\n (this.json.extras as Record<string, unknown>)[key] = data;\n return this;\n }\n\n addObjectExtension(object: object, extensionName: string, data: object): GLTFScenegraph {\n // @ts-ignore\n object.extensions = object.extensions || {};\n // TODO - clobber or merge?\n // @ts-ignore\n object.extensions[extensionName] = data;\n this.registerUsedExtension(extensionName);\n return this;\n }\n\n setObjectExtension(object: any, extensionName: string, data: object): void {\n const extensions = object.extensions || {};\n extensions[extensionName] = data;\n // TODO - add to usedExtensions...\n }\n\n removeObjectExtension(object: any, extensionName: string): void {\n const extensions = object?.extensions || {};\n\n if (extensions[extensionName]) {\n this.json.extensionsRemoved = this.json.extensionsRemoved || [];\n const extensionsRemoved = this.json.extensionsRemoved as string[];\n if (!extensionsRemoved.includes(extensionName)) {\n extensionsRemoved.push(extensionName);\n }\n }\n\n delete extensions[extensionName];\n }\n\n /**\n * Add to standard GLTF top level extension object, mark as used\n */\n addExtension(extensionName: string, extensionData: object = {}): object {\n assert(extensionData);\n this.json.extensions = this.json.extensions || {};\n this.json.extensions[extensionName] = extensionData;\n this.registerUsedExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Standard GLTF top level extension object, mark as used and required\n */\n addRequiredExtension(extensionName, extensionData: object = {}): object {\n assert(extensionData);\n this.addExtension(extensionName, extensionData);\n this.registerRequiredExtension(extensionName);\n return extensionData;\n }\n\n /**\n * Add extensionName to list of used extensions\n */\n registerUsedExtension(extensionName: string): void {\n this.json.extensionsUsed = this.json.extensionsUsed || [];\n if (!this.json.extensionsUsed.find((ext) => ext === extensionName)) {\n this.json.extensionsUsed.push(extensionName);\n }\n }\n\n /**\n * Add extensionName to list of required extensions\n */\n registerRequiredExtension(extensionName: string): void {\n this.registerUsedExtension(extensionName);\n this.json.extensionsRequired = this.json.extensionsRequired || [];\n if (!this.json.extensionsRequired.find((ext) => ext === extensionName)) {\n this.json.extensionsRequired.push(extensionName);\n }\n }\n\n /**\n * Removes an extension from the top-level list\n */\n removeExtension(extensionName: string): void {\n if (this.json.extensions?.[extensionName]) {\n this.json.extensionsRemoved = this.json.extensionsRemoved || [];\n const extensionsRemoved = this.json.extensionsRemoved as string[];\n if (!extensionsRemoved.includes(extensionName)) {\n extensionsRemoved.push(extensionName);\n }\n }\n if (this.json.extensions) {\n delete this.json.extensions[extensionName];\n }\n if (this.json.extensionsRequired) {\n this._removeStringFromArray(this.json.extensionsRequired, extensionName);\n }\n if (this.json.extensionsUsed) {\n this._removeStringFromArray(this.json.extensionsUsed, extensionName);\n }\n }\n\n /**\n * Set default scene which is to be displayed at load time\n */\n setDefaultScene(sceneIndex: number): void {\n this.json.scene = sceneIndex;\n }\n\n /**\n * @todo: add more properties for scene initialization:\n * name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-scene\n */\n addScene(scene: {nodeIndices: number[]}): number {\n const {nodeIndices} = scene;\n this.json.scenes = this.json.scenes || [];\n this.json.scenes.push({nodes: nodeIndices});\n return this.json.scenes.length - 1;\n }\n\n /**\n * @todo: add more properties for node initialization:\n * `name`, `extensions`, `extras`, `camera`, `children`, `skin`, `rotation`, `scale`, `translation`, `weights`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#node\n */\n addNode(node: {meshIndex: number; matrix?: number[]}): number {\n const {meshIndex, matrix} = node;\n this.json.nodes = this.json.nodes || [];\n const nodeData = {mesh: meshIndex};\n if (matrix) {\n // @ts-ignore\n nodeData.matrix = matrix;\n }\n this.json.nodes.push(nodeData);\n return this.json.nodes.length - 1;\n }\n\n /** Adds a mesh to the json part */\n addMesh(mesh: {attributes: object; indices?: object; material?: number; mode?: number}): number {\n const {attributes, indices, material, mode = 4} = mesh;\n const accessors = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessors,\n mode\n }\n ]\n };\n\n if (indices) {\n const indicesAccessor = this._addIndices(indices);\n // @ts-ignore\n glTFMesh.primitives[0].indices = indicesAccessor;\n }\n\n if (Number.isFinite(material)) {\n // @ts-ignore\n glTFMesh.primitives[0].material = material;\n }\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n addPointCloud(attributes: object): number {\n // @ts-ignore\n const accessorIndices = this._addAttributes(attributes);\n\n const glTFMesh = {\n primitives: [\n {\n attributes: accessorIndices,\n mode: 0 // GL.POINTS\n }\n ]\n };\n\n this.json.meshes = this.json.meshes || [];\n this.json.meshes.push(glTFMesh);\n return this.json.meshes.length - 1;\n }\n\n /**\n * Adds a binary image. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes as glTF image\n * @param imageData\n * @param mimeType\n */\n addImage(imageData: any, mimeTypeOpt?: string): number {\n // If image is referencing a bufferView instead of URI, mimeType must be defined:\n // https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#images\n // \"a reference to a bufferView; in that case mimeType must be defined.\"\n const metadata = getBinaryImageMetadata(imageData);\n const mimeType = mimeTypeOpt || metadata?.mimeType;\n\n const bufferViewIndex = this.addBufferView(imageData);\n\n const glTFImage = {\n bufferView: bufferViewIndex,\n mimeType\n };\n\n this.json.images = this.json.images || [];\n this.json.images.push(glTFImage);\n return this.json.images.length - 1;\n }\n\n /**\n * Add one untyped source buffer, create a matching glTF `bufferView`, and return its index\n * @param buffer\n */\n addBufferView(buffer: any, bufferIndex = 0, byteOffset = this.byteLength): number {\n const byteLength = buffer.byteLength;\n assert(Number.isFinite(byteLength));\n\n // Add this buffer to the list of buffers to be written to the body.\n this.sourceBuffers = this.sourceBuffers || [];\n this.sourceBuffers.push(buffer);\n\n const glTFBufferView = {\n buffer: bufferIndex,\n // Write offset from the start of the binary body\n byteOffset,\n byteLength\n };\n\n // We've now added the contents to the body, so update the total length\n // Every sub-chunk needs to be 4-byte align ed\n this.byteLength += padToNBytes(byteLength, 4);\n\n // Add a bufferView indicating start and length of this binary sub-chunk\n this.json.bufferViews = this.json.bufferViews || [];\n this.json.bufferViews.push(glTFBufferView);\n return this.json.bufferViews.length - 1;\n }\n\n /**\n * Adds an accessor to a bufferView\n * @param bufferViewIndex\n * @param accessor\n */\n addAccessor(bufferViewIndex: number, accessor: object): number {\n const glTFAccessor = {\n bufferView: bufferViewIndex,\n // @ts-ignore\n type: getAccessorTypeFromSize(accessor.size),\n // @ts-ignore\n componentType: accessor.componentType,\n // @ts-ignore\n count: accessor.count,\n // @ts-ignore\n max: accessor.max,\n // @ts-ignore\n min: accessor.min\n };\n\n this.json.accessors = this.json.accessors || [];\n this.json.accessors.push(glTFAccessor);\n return this.json.accessors.length - 1;\n }\n\n /**\n * Add a binary buffer. Builds glTF \"JSON metadata\" and saves buffer reference\n * Buffer will be copied into BIN chunk during \"pack\"\n * Currently encodes buffers as glTF accessors, but this could be optimized\n * @param sourceBuffer\n * @param accessor\n */\n addBinaryBuffer(sourceBuffer: any, accessor: object = {size: 3}): number {\n const bufferViewIndex = this.addBufferView(sourceBuffer);\n // @ts-ignore\n let minMax = {min: accessor.min, max: accessor.max};\n if (!minMax.min || !minMax.max) {\n // @ts-ignore\n minMax = this._getAccessorMinMax(sourceBuffer, accessor.size);\n }\n\n const accessorDefaults = {\n // @ts-ignore\n size: accessor.size,\n componentType: getComponentTypeFromArray(sourceBuffer),\n // @ts-ignore\n count: Math.round(sourceBuffer.length / accessor.size),\n min: minMax.min,\n max: minMax.max\n };\n\n return this.addAccessor(bufferViewIndex, Object.assign(accessorDefaults, accessor));\n }\n\n /**\n * Adds a texture to the json part\n * @todo: add more properties for texture initialization\n * `sampler`, `name`, `extensions`, `extras`\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\n */\n addTexture(texture: {imageIndex: number}): number {\n const {imageIndex} = texture;\n const glTFTexture = {\n source: imageIndex\n };\n\n this.json.textures = this.json.textures || [];\n this.json.textures.push(glTFTexture);\n return this.json.textures.length - 1;\n }\n\n /** Adds a material to the json part */\n addMaterial(pbrMaterialInfo: Object): number {\n this.json.materials = this.json.materials || [];\n this.json.materials.push(pbrMaterialInfo);\n return this.json.materials.length - 1;\n }\n\n /** Pack the binary chunk */\n createBinaryChunk(): void {\n // Encoder expects this array undefined or empty\n this.gltf.buffers = [];\n\n // Allocate total array\n const totalByteLength = this.byteLength;\n const arrayBuffer = new ArrayBuffer(totalByteLength);\n const targetArray = new Uint8Array(arrayBuffer);\n\n // Copy each array into\n let dstByteOffset = 0;\n for (const sourceBuffer of this.sourceBuffers || []) {\n dstByteOffset = copyToArray(sourceBuffer, targetArray, dstByteOffset);\n }\n\n // Update the glTF BIN CHUNK byte length\n if (this.json?.buffers?.[0]) {\n this.json.buffers[0].byteLength = totalByteLength;\n } else {\n this.json.buffers = [{byteLength: totalByteLength}];\n }\n\n // Save generated arrayBuffer\n this.gltf.binary = arrayBuffer;\n\n // Put arrayBuffer to sourceBuffers for possible additional writing data in the chunk\n this.sourceBuffers = [arrayBuffer];\n }\n\n // PRIVATE\n\n _removeStringFromArray(array, string) {\n let found = true;\n while (found) {\n const index = array.indexOf(string);\n if (index > -1) {\n array.splice(index, 1);\n } else {\n found = false;\n }\n }\n }\n\n /**\n * Add attributes to buffers and create `attributes` object which is part of `mesh`\n */\n _addAttributes(attributes = {}) {\n const result = {};\n for (const attributeKey in attributes) {\n const attributeData = attributes[attributeKey];\n const attrName = this._getGltfAttributeName(attributeKey);\n const accessor = this.addBinaryBuffer(attributeData.value, attributeData);\n result[attrName] = accessor;\n }\n return result;\n }\n\n /**\n * Add indices to buffers\n */\n _addIndices(indices) {\n return this.addBinaryBuffer(indices, {size: 1});\n }\n\n /**\n * Deduce gltf specific attribue name from input attribute name\n */\n _getGltfAttributeName(attributeName) {\n switch (attributeName.toLowerCase()) {\n case 'position':\n case 'positions':\n case 'vertices':\n return 'POSITION';\n case 'normal':\n case 'normals':\n return 'NORMAL';\n case 'color':\n case 'colors':\n return 'COLOR_0';\n case 'texcoord':\n case 'texcoords':\n return 'TEXCOORD_0';\n default:\n return attributeName;\n }\n }\n\n /**\n * Calculate `min` and `max` arrays of accessor according to spec:\n * https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-accessor\n */\n _getAccessorMinMax(buffer, size) {\n const result = {min: null, max: null};\n if (buffer.length < size) {\n return result;\n }\n // @ts-ignore\n result.min = [];\n // @ts-ignore\n result.max = [];\n const initValues = buffer.subarray(0, size);\n for (const value of initValues) {\n // @ts-ignore\n result.min.push(value);\n // @ts-ignore\n result.max.push(value);\n }\n\n for (let index = size; index < buffer.length; index += size) {\n for (let componentIndex = 0; componentIndex < size; componentIndex++) {\n // @ts-ignore\n result.min[0 + componentIndex] = Math.min(\n // @ts-ignore\n result.min[0 + componentIndex],\n buffer[index + componentIndex]\n );\n // @ts-ignore\n result.max[0 + componentIndex] = Math.max(\n // @ts-ignore\n result.max[0 + componentIndex],\n buffer[index + componentIndex]\n );\n }\n }\n return result;\n }\n}\n"],"mappings":"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"}
|