@loaders.gl/gltf 4.1.0-alpha.1 → 4.1.0-alpha.11
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.dev.js +6 -7
- package/dist/glb-writer.d.ts.map +1 -1
- package/dist/glb-writer.js.map +1 -1
- package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
- package/dist/lib/api/gltf-scenegraph.js.map +1 -1
- package/dist/lib/api/post-process-gltf.d.ts.map +1 -1
- package/dist/lib/api/post-process-gltf.js.map +1 -1
- package/dist/lib/utils/version.js +1 -1
- package/dist/lib/utils/version.js.map +1 -1
- package/package.json +8 -8
- package/src/glb-writer.ts +2 -1
- package/src/lib/api/gltf-scenegraph.ts +2 -1
- package/src/lib/api/post-process-gltf.ts +2 -1
package/dist/dist.dev.js
CHANGED
|
@@ -67,7 +67,7 @@ var __exports__ = (() => {
|
|
|
67
67
|
});
|
|
68
68
|
|
|
69
69
|
// ../images/src/lib/utils/version.ts
|
|
70
|
-
var VERSION =
|
|
70
|
+
var VERSION = true ? "4.1.0-alpha.11" : "latest";
|
|
71
71
|
|
|
72
72
|
// ../loader-utils/src/loader-types.ts
|
|
73
73
|
async function parseFromContext(data, loaders, options, context) {
|
|
@@ -97,15 +97,14 @@ var __exports__ = (() => {
|
|
|
97
97
|
var nodeVersion = matches && parseFloat(matches[1]) || 0;
|
|
98
98
|
|
|
99
99
|
// ../worker-utils/src/lib/env-utils/version.ts
|
|
100
|
-
var NPM_TAG = "latest";
|
|
101
100
|
function getVersion() {
|
|
102
101
|
if (!globalThis._loadersgl_?.version) {
|
|
103
102
|
globalThis._loadersgl_ = globalThis._loadersgl_ || {};
|
|
104
|
-
if (
|
|
103
|
+
if (false) {
|
|
105
104
|
console.warn("loaders.gl: The __VERSION__ variable is not injected using babel plugin. Latest unstable workers would be fetched from the CDN.");
|
|
106
105
|
globalThis._loadersgl_.version = NPM_TAG;
|
|
107
106
|
} else {
|
|
108
|
-
globalThis._loadersgl_.version =
|
|
107
|
+
globalThis._loadersgl_.version = "4.1.0-alpha.11";
|
|
109
108
|
}
|
|
110
109
|
}
|
|
111
110
|
return globalThis._loadersgl_.version;
|
|
@@ -2006,10 +2005,10 @@ var __exports__ = (() => {
|
|
|
2006
2005
|
}
|
|
2007
2006
|
|
|
2008
2007
|
// src/lib/utils/version.ts
|
|
2009
|
-
var VERSION3 =
|
|
2008
|
+
var VERSION3 = true ? "4.1.0-alpha.11" : "latest";
|
|
2010
2009
|
|
|
2011
2010
|
// ../textures/src/lib/utils/version.ts
|
|
2012
|
-
var VERSION4 =
|
|
2011
|
+
var VERSION4 = true ? "4.1.0-alpha.11" : "latest";
|
|
2013
2012
|
|
|
2014
2013
|
// ../textures/src/lib/parsers/basis-module-loader.ts
|
|
2015
2014
|
var BASIS_EXTERNAL_LIBRARIES = {
|
|
@@ -2779,7 +2778,7 @@ var __exports__ = (() => {
|
|
|
2779
2778
|
});
|
|
2780
2779
|
|
|
2781
2780
|
// ../draco/src/lib/utils/version.ts
|
|
2782
|
-
var VERSION5 =
|
|
2781
|
+
var VERSION5 = true ? "4.1.0-alpha.11" : "latest";
|
|
2783
2782
|
|
|
2784
2783
|
// ../draco/src/draco-loader.ts
|
|
2785
2784
|
var DracoLoader = {
|
package/dist/glb-writer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glb-writer.d.ts","sourceRoot":"","sources":["../src/glb-writer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"glb-writer.d.ts","sourceRoot":"","sources":["../src/glb-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,iBAAiB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC/E,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,2BAA2B,CAAC;AAIhE,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE,gBAAgB,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAerE,CAAC"}
|
package/dist/glb-writer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glb-writer.js","names":["encodeGLBSync","VERSION","GLBWriter","name","id","module","version","extensions","mimeTypes","binary","options","glb","encode","arguments","length","undefined","encodeSync","byteOffset","byteLength","arrayBuffer","ArrayBuffer","dataView","DataView"],"sources":["../src/glb-writer.ts"],"sourcesContent":["// loaders.gl
|
|
1
|
+
{"version":3,"file":"glb-writer.js","names":["encodeGLBSync","VERSION","GLBWriter","name","id","module","version","extensions","mimeTypes","binary","options","glb","encode","arguments","length","undefined","encodeSync","byteOffset","byteLength","arrayBuffer","ArrayBuffer","dataView","DataView"],"sources":["../src/glb-writer.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {WriterWithEncoder, WriterOptions} from '@loaders.gl/loader-utils';\nimport type {GLB} from './lib/types/glb-types';\nimport type {GLBEncodeOptions} from './lib/encoders/encode-glb';\nimport {encodeGLBSync} from './lib/encoders/encode-glb';\nimport {VERSION} from './lib/utils/version';\n\nexport type GLBWriterOptions = WriterOptions & {\n glb?: GLBEncodeOptions;\n};\n\n/**\n * GLB exporter\n * GLB is the binary container format for GLTF\n */\nexport const GLBWriter: WriterWithEncoder<GLB, never, GLBWriterOptions> = {\n name: 'GLB',\n id: 'glb',\n module: 'gltf',\n version: VERSION,\n\n extensions: ['glb'],\n mimeTypes: ['model/gltf-binary'],\n binary: true,\n options: {\n glb: {}\n },\n\n encode: async (glb, options: GLBWriterOptions = {}) => encodeSync(glb, options),\n encodeSync\n};\n\nfunction encodeSync(glb, options) {\n const {byteOffset = 0} = options;\n\n // Calculate length and allocate buffer\n const byteLength = encodeGLBSync(glb, null, byteOffset, options);\n const arrayBuffer = new ArrayBuffer(byteLength);\n\n // Encode into buffer\n const dataView = new DataView(arrayBuffer);\n encodeGLBSync(glb, dataView, byteOffset, options);\n\n return arrayBuffer;\n}\n"],"mappings":"SAOQA,aAAa;AAAA,SACbC,OAAO;AAUf,OAAO,MAAMC,SAA0D,GAAG;EACxEC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAEL,OAAO;EAEhBM,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,mBAAmB,CAAC;EAChCC,MAAM,EAAE,IAAI;EACZC,OAAO,EAAE;IACPC,GAAG,EAAE,CAAC;EACR,CAAC;EAEDC,MAAM,EAAE,eAAAA,CAAOD,GAAG;IAAA,IAAED,OAAyB,GAAAG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,OAAKG,UAAU,CAACL,GAAG,EAAED,OAAO,CAAC;EAAA;EAC/EM;AACF,CAAC;AAED,SAASA,UAAUA,CAACL,GAAG,EAAED,OAAO,EAAE;EAChC,MAAM;IAACO,UAAU,GAAG;EAAC,CAAC,GAAGP,OAAO;EAGhC,MAAMQ,UAAU,GAAGlB,aAAa,CAACW,GAAG,EAAE,IAAI,EAAEM,UAAU,EAAEP,OAAO,CAAC;EAChE,MAAMS,WAAW,GAAG,IAAIC,WAAW,CAACF,UAAU,CAAC;EAG/C,MAAMG,QAAQ,GAAG,IAAIC,QAAQ,CAACH,WAAW,CAAC;EAC1CnB,aAAa,CAACW,GAAG,EAAEU,QAAQ,EAAEJ,UAAU,EAAEP,OAAO,CAAC;EAEjD,OAAOS,WAAW;AACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf-scenegraph.d.ts","sourceRoot":"","sources":["../../../src/lib/api/gltf-scenegraph.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gltf-scenegraph.d.ts","sourceRoot":"","sources":["../../../src/lib/api/gltf-scenegraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gltf-scenegraph.js","names":["getBinaryImageMetadata","padToNBytes","copyToArray","assert","getAccessorTypeFromSize","getComponentTypeFromArray","getTypedArrayForAccessor","_getTypedArrayForAccessor","makeDefaultGLTFJson","asset","version","generator","buffers","extensions","extensionsRequired","extensionsUsed","GLTFScenegraph","constructor","gltf","sourceBuffers","byteLength","json","images","getApplicationData","key","data","getExtraData","extras","hasExtension","extensionName","isUsedExtension","getUsedExtensions","find","name","isRequiredExtension","getRequiredExtensions","getExtension","isExtension","getRequiredExtension","isRequired","getRemovedExtensions","extensionsRemoved","getObjectExtension","object","getScene","index","getObject","getNode","getSkin","getMesh","getMaterial","getAccessor","getTexture","getSampler","getImage","getBufferView","getBuffer","array","Error","getTypedArrayForBufferView","bufferView","bufferIndex","buffer","binChunk","byteOffset","Uint8Array","arrayBuffer","accessor","gltfAccessor","getTypedArrayForImageData","image","addApplicationData","addExtraData","addObjectExtension","registerUsedExtension","setObjectExtension","removeObjectExtension","includes","push","addExtension","extensionData","arguments","length","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","mode","accessors","_addAttributes","glTFMesh","primitives","indicesAccessor","_addIndices","Number","isFinite","meshes","addPointCloud","accessorIndices","addImage","imageData","mimeTypeOpt","metadata","mimeType","bufferViewIndex","addBufferView","glTFImage","glTFBufferView","bufferViews","addAccessor","glTFAccessor","type","size","componentType","count","max","min","addBinaryBuffer","sourceBuffer","minMax","_getAccessorMinMax","accessorDefaults","Math","round","Object","assign","addTexture","texture","imageIndex","glTFTexture","source","textures","addMaterial","pbrMaterialInfo","materials","createBinaryChunk","_this$json","_this$json$buffers","totalByteLength","ArrayBuffer","targetArray","dstByteOffset","binary","string","found","indexOf","splice","result","attributeKey","attributeData","attrName","_getGltfAttributeName","value","attributeName","toLowerCase","initValues","subarray","componentIndex"],"sources":["../../../src/lib/api/gltf-scenegraph.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\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 {getAccessorTypeFromSize, getComponentTypeFromArray} from '../gltf-utils/gltf-utils';\n\nimport {getTypedArrayForAccessor as _getTypedArrayForAccessor} from '../gltf-utils/get-typed-array';\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): unknown {\n // TODO - Data is already unpacked by GLBParser\n const extras = (this.json.extras || {}) as Record<string, unknown>;\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): Record<string, unknown> {\n // check if already resolved\n if (typeof index === 'object') {\n return index as Record<string, unknown>;\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 as Record<string, unknown>;\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 const gltfAccessor = this.getAccessor(accessor);\n return _getTypedArrayForAccessor(this.gltf.json, this.gltf.buffers, gltfAccessor);\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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"}
|
|
1
|
+
{"version":3,"file":"gltf-scenegraph.js","names":["getBinaryImageMetadata","padToNBytes","copyToArray","assert","getAccessorTypeFromSize","getComponentTypeFromArray","getTypedArrayForAccessor","_getTypedArrayForAccessor","makeDefaultGLTFJson","asset","version","generator","buffers","extensions","extensionsRequired","extensionsUsed","GLTFScenegraph","constructor","gltf","sourceBuffers","byteLength","json","images","getApplicationData","key","data","getExtraData","extras","hasExtension","extensionName","isUsedExtension","getUsedExtensions","find","name","isRequiredExtension","getRequiredExtensions","getExtension","isExtension","getRequiredExtension","isRequired","getRemovedExtensions","extensionsRemoved","getObjectExtension","object","getScene","index","getObject","getNode","getSkin","getMesh","getMaterial","getAccessor","getTexture","getSampler","getImage","getBufferView","getBuffer","array","Error","getTypedArrayForBufferView","bufferView","bufferIndex","buffer","binChunk","byteOffset","Uint8Array","arrayBuffer","accessor","gltfAccessor","getTypedArrayForImageData","image","addApplicationData","addExtraData","addObjectExtension","registerUsedExtension","setObjectExtension","removeObjectExtension","includes","push","addExtension","extensionData","arguments","length","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","mode","accessors","_addAttributes","glTFMesh","primitives","indicesAccessor","_addIndices","Number","isFinite","meshes","addPointCloud","accessorIndices","addImage","imageData","mimeTypeOpt","metadata","mimeType","bufferViewIndex","addBufferView","glTFImage","glTFBufferView","bufferViews","addAccessor","glTFAccessor","type","size","componentType","count","max","min","addBinaryBuffer","sourceBuffer","minMax","_getAccessorMinMax","accessorDefaults","Math","round","Object","assign","addTexture","texture","imageIndex","glTFTexture","source","textures","addMaterial","pbrMaterialInfo","materials","createBinaryChunk","_this$json","_this$json$buffers","totalByteLength","ArrayBuffer","targetArray","dstByteOffset","binary","string","found","indexOf","splice","result","attributeKey","attributeData","attrName","_getGltfAttributeName","value","attributeName","toLowerCase","initValues","subarray","componentIndex"],"sources":["../../../src/lib/api/gltf-scenegraph.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\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 {getAccessorTypeFromSize, getComponentTypeFromArray} from '../gltf-utils/gltf-utils';\n\nimport {getTypedArrayForAccessor as _getTypedArrayForAccessor} from '../gltf-utils/get-typed-array';\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): unknown {\n // TODO - Data is already unpacked by GLBParser\n const extras = (this.json.extras || {}) as Record<string, unknown>;\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): Record<string, unknown> {\n // check if already resolved\n if (typeof index === 'object') {\n return index as Record<string, unknown>;\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 as Record<string, unknown>;\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 const gltfAccessor = this.getAccessor(accessor);\n return _getTypedArrayForAccessor(this.gltf.json, this.gltf.buffers, gltfAccessor);\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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-process-gltf.d.ts","sourceRoot":"","sources":["../../../src/lib/api/post-process-gltf.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"post-process-gltf.d.ts","sourceRoot":"","sources":["../../../src/lib/api/post-process-gltf.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAiB5D,OAAO,KAAK,EACV,iBAAiB,EAclB,MAAM,oCAAoC,CAAC;AAmgB5C,wBAAgB,eAAe,CAC7B,IAAI,EAAE,eAAe,EACrB,OAAO,CAAC,EAAE,gBAAgB,GACzB,iBAAiB,CAEnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-process-gltf.js","names":["assert","getAccessorArrayTypeAndLength","COMPONENTS","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","BYTES","GL_SAMPLER","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","REPEAT","LINEAR","NEAREST_MIPMAP_LINEAR","SAMPLER_PARAMETER_GLTF_TO_GL","magFilter","minFilter","wrapS","wrapT","DEFAULT_SAMPLER_PARAMETERS","makeDefaultSampler","id","parameters","getBytesFromComponentType","componentType","getSizeFromAccessorType","type","GLTFPostProcessor","constructor","baseUri","jsonUnprocessed","json","buffers","images","postProcess","gltf","options","arguments","length","undefined","_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","_resolveNodeChildren","skins","skin","_resolveSkin","scenes","scene","_resolveScene","getScene","index","_get","getNode","getSkin","getMesh","getMaterial","getAccessor","getCamera","cameras","getTexture","getSampler","getImage","getBufferView","getBuffer","array","object","console","warn","gltfNode","camera","reduce","accum","meshIndex","primitives","concat","children","child","gltfSkin","inverseBindMatrices","gltfMesh","gltfPrimitive","primitive","attributes","indices","attribute","gltfMaterial","normalTexture","occlusionTexture","emissiveTexture","emissiveFactor","pbrMetallicRoughness","mr","baseColorTexture","metallicRoughnessTexture","gltfAccessor","bytesPerComponent","components","bytesPerElement","value","bufferView","sparse","buffer","ArrayType","byteLength","byteOffset","cutBuffer","arrayBuffer","slice","byteStride","_getValueFromInterleavedBuffer","count","result","Uint8Array","elementOffset","set","gltfTexture","source","gltfSampler","key","glEnum","_enumSamplerParameter","gltfImage","preloadedImage","gltfBufferView","bufferIndex","data","_resolveCamera","gltfCamera","perspective","orthographic","postProcessGLTF"],"sources":["../../../src/lib/api/post-process-gltf.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Copyright (c) vis.gl contributors\n\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {ParseGLTFOptions} from '../parsers/parse-gltf';\n\nimport type {\n GLTF,\n GLTFAccessor,\n GLTFBufferView,\n GLTFCamera,\n GLTFImage,\n GLTFMaterial,\n GLTFMesh,\n GLTFNode,\n GLTFSampler,\n GLTFScene,\n GLTFSkin,\n GLTFTexture\n} from '../types/gltf-json-schema';\n\nimport type {\n GLTFPostprocessed,\n GLTFAccessorPostprocessed,\n GLTFBufferPostprocessed,\n GLTFBufferViewPostprocessed,\n GLTFCameraPostprocessed,\n GLTFImagePostprocessed,\n GLTFMaterialPostprocessed,\n GLTFMeshPostprocessed,\n GLTFNodePostprocessed,\n GLTFSamplerPostprocessed,\n GLTFScenePostprocessed,\n GLTFSkinPostprocessed,\n GLTFTexturePostprocessed,\n GLTFMeshPrimitivePostprocessed\n} from '../types/gltf-postprocessed-schema';\n\nimport {assert} from '../utils/assert';\nimport {getAccessorArrayTypeAndLength} from '../gltf-utils/gltf-utils';\n\n// This is a post processor for loaded glTF files\n// The goal is to make the loaded data easier to use in WebGL applications\n//\n// Functions:\n// * Resolve indexed arrays structure of glTF into a linked tree.\n// * Translate stringified enum keys and values into WebGL constants.\n// * Load images (optional)\n\n// ENUM LOOKUP\n\nconst COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\nconst BYTES = {\n 5120: 1, // BYTE\n 5121: 1, // UNSIGNED_BYTE\n 5122: 2, // SHORT\n 5123: 2, // UNSIGNED_SHORT\n 5125: 4, // UNSIGNED_INT\n 5126: 4 // FLOAT\n};\n\nconst GL_SAMPLER = {\n // Sampler parameters\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n\n // Sampler default values\n REPEAT: 0x2901,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_LINEAR: 0x2702\n};\n\nconst SAMPLER_PARAMETER_GLTF_TO_GL = {\n magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,\n minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,\n wrapS: GL_SAMPLER.TEXTURE_WRAP_S,\n wrapT: GL_SAMPLER.TEXTURE_WRAP_T\n};\n\n// When undefined, a sampler with repeat wrapping and auto filtering should be used.\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\nconst DEFAULT_SAMPLER_PARAMETERS = {\n [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,\n [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,\n [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,\n [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT\n};\n\nfunction makeDefaultSampler(): GLTFSamplerPostprocessed {\n return {\n id: 'default-sampler',\n parameters: DEFAULT_SAMPLER_PARAMETERS\n };\n}\n\nfunction getBytesFromComponentType(componentType) {\n return BYTES[componentType];\n}\n\nfunction getSizeFromAccessorType(type) {\n return COMPONENTS[type];\n}\n\nclass GLTFPostProcessor {\n baseUri: string = '';\n // @ts-expect-error\n jsonUnprocessed: GLTF;\n // @ts-expect-error\n json: GLTFPostprocessed;\n buffers: {\n arrayBuffer: ArrayBuffer;\n byteOffset: number;\n byteLength: number;\n }[] = [];\n images: any[] = [];\n\n postProcess(gltf: GLTFWithBuffers, options = {}) {\n const {json, buffers = [], images = []} = gltf;\n // @ts-expect-error\n const {baseUri = ''} = gltf;\n assert(json);\n\n this.baseUri = baseUri;\n this.buffers = buffers;\n this.images = images;\n this.jsonUnprocessed = json;\n\n this.json = this._resolveTree(gltf.json, options);\n\n return this.json;\n }\n\n // Convert indexed glTF structure into tree structure\n // cross-link index resolution, enum lookup, convenience calculations\n // eslint-disable-next-line complexity, max-statements\n _resolveTree(gltf: GLTF, options = {}): GLTFPostprocessed {\n // @ts-expect-error\n const json: GLTFPostprocessed = {...gltf};\n this.json = json;\n\n if (gltf.bufferViews) {\n json.bufferViews = gltf.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));\n }\n if (gltf.images) {\n json.images = gltf.images.map((image, i) => this._resolveImage(image, i));\n }\n if (gltf.samplers) {\n json.samplers = gltf.samplers.map((sampler, i) => this._resolveSampler(sampler, i));\n }\n if (gltf.textures) {\n json.textures = gltf.textures.map((texture, i) => this._resolveTexture(texture, i));\n }\n if (gltf.accessors) {\n json.accessors = gltf.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));\n }\n if (gltf.materials) {\n json.materials = gltf.materials.map((material, i) => this._resolveMaterial(material, i));\n }\n if (gltf.meshes) {\n json.meshes = gltf.meshes.map((mesh, i) => this._resolveMesh(mesh, i));\n }\n if (gltf.nodes) {\n json.nodes = gltf.nodes.map((node, i) => this._resolveNode(node, i));\n json.nodes = json.nodes.map((node, i) => this._resolveNodeChildren(node));\n }\n if (gltf.skins) {\n json.skins = gltf.skins.map((skin, i) => this._resolveSkin(skin, i));\n }\n if (gltf.scenes) {\n json.scenes = gltf.scenes.map((scene, i) => this._resolveScene(scene, i));\n }\n if (typeof this.json.scene === 'number' && json.scenes) {\n json.scene = json.scenes[this.json.scene];\n }\n\n return json;\n }\n\n getScene(index: number): GLTFScenePostprocessed {\n return this._get(this.json.scenes, index);\n }\n\n getNode(index: number): GLTFNodePostprocessed {\n return this._get(this.json.nodes, index);\n }\n\n getSkin(index: number): GLTFSkinPostprocessed {\n return this._get(this.json.skins, index);\n }\n\n getMesh(index: number): GLTFMeshPostprocessed {\n return this._get(this.json.meshes, index);\n }\n\n getMaterial(index: number): GLTFMaterialPostprocessed {\n return this._get(this.json.materials, index);\n }\n\n getAccessor(index: number): GLTFAccessorPostprocessed {\n return this._get(this.json.accessors, index);\n }\n\n getCamera(index: number): GLTFCameraPostprocessed {\n return this._get(this.json.cameras, index);\n }\n\n getTexture(index: number): GLTFTexturePostprocessed {\n return this._get(this.json.textures, index);\n }\n\n getSampler(index: number): GLTFSamplerPostprocessed {\n return this._get(this.json.samplers, index);\n }\n\n getImage(index: number): GLTFImagePostprocessed {\n return this._get(this.json.images, index);\n }\n\n getBufferView(index: number): GLTFBufferViewPostprocessed {\n return this._get(this.json.bufferViews, index);\n }\n\n getBuffer(index: number): GLTFBufferPostprocessed {\n return this._get(this.json.buffers, index);\n }\n\n _get<T>(array: T[] | undefined, index: number): T {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = array && array[index];\n if (!object) {\n console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object as T;\n }\n\n // PARSING HELPERS\n\n _resolveScene(scene: GLTFScene, index: number): GLTFScenePostprocessed {\n return {\n ...scene,\n // @ts-ignore\n id: scene.id || `scene-${index}`,\n nodes: (scene.nodes || []).map((node) => this.getNode(node))\n };\n }\n\n _resolveNode(gltfNode: GLTFNode, index: number): GLTFNodePostprocessed {\n // @ts-expect-error\n const node: GLTFNodePostprocessed = {\n ...gltfNode,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfNode?.id || `node-${index}`\n };\n if (gltfNode.mesh !== undefined) {\n node.mesh = this.getMesh(gltfNode.mesh);\n }\n if (gltfNode.camera !== undefined) {\n node.camera = this.getCamera(gltfNode.camera);\n }\n if (gltfNode.skin !== undefined) {\n node.skin = this.getSkin(gltfNode.skin);\n }\n\n // TODO deprecated - Delete in v4.0?\n // @ts-expect-error node.meshes does not seem to be part of the GLTF standard\n if (gltfNode.meshes !== undefined && gltfNode.meshes.length) {\n // @ts-expect-error\n node.mesh = gltfNode.meshes.reduce(\n (accum, meshIndex) => {\n const mesh = this.getMesh(meshIndex);\n accum.id = mesh.id;\n accum.primitives = accum.primitives.concat(mesh.primitives);\n return accum;\n },\n {primitives: []}\n );\n }\n\n return node;\n }\n\n _resolveNodeChildren(node: GLTFNodePostprocessed): GLTFNodePostprocessed {\n if (node.children) {\n // @ts-expect-error node.children are numbers at this stage\n node.children = node.children.map((child) => this.getNode(child));\n }\n return node;\n }\n\n _resolveSkin(gltfSkin: GLTFSkin, index: number): GLTFSkinPostprocessed {\n const inverseBindMatrices =\n typeof gltfSkin.inverseBindMatrices === 'number'\n ? this.getAccessor(gltfSkin.inverseBindMatrices)\n : undefined;\n\n return {\n ...gltfSkin,\n id: gltfSkin.id || `skin-${index}`,\n inverseBindMatrices\n };\n }\n\n _resolveMesh(gltfMesh: GLTFMesh, index: number): GLTFMeshPostprocessed {\n const mesh: GLTFMeshPostprocessed = {\n ...gltfMesh,\n id: gltfMesh.id || `mesh-${index}`,\n primitives: []\n };\n if (gltfMesh.primitives) {\n mesh.primitives = gltfMesh.primitives.map((gltfPrimitive) => {\n const primitive: GLTFMeshPrimitivePostprocessed = {\n ...gltfPrimitive,\n attributes: {},\n indices: undefined,\n material: undefined\n };\n const attributes = gltfPrimitive.attributes;\n for (const attribute in attributes) {\n primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);\n }\n if (gltfPrimitive.indices !== undefined) {\n primitive.indices = this.getAccessor(gltfPrimitive.indices);\n }\n if (gltfPrimitive.material !== undefined) {\n primitive.material = this.getMaterial(gltfPrimitive.material);\n }\n return primitive;\n });\n }\n return mesh;\n }\n\n _resolveMaterial(gltfMaterial: GLTFMaterial, index: number): GLTFMaterialPostprocessed {\n // @ts-expect-error\n const material: GLTFMaterialPostprocessed = {\n ...gltfMaterial,\n // @ts-expect-error\n id: gltfMaterial.id || `material-${index}`\n };\n if (material.normalTexture) {\n material.normalTexture = {...material.normalTexture};\n material.normalTexture.texture = this.getTexture(material.normalTexture.index);\n }\n if (material.occlusionTexture) {\n material.occlusionTexture = {...material.occlusionTexture};\n material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);\n }\n if (material.emissiveTexture) {\n material.emissiveTexture = {...material.emissiveTexture};\n material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);\n }\n if (!material.emissiveFactor) {\n material.emissiveFactor = material.emissiveTexture ? [1, 1, 1] : [0, 0, 0];\n }\n\n if (material.pbrMetallicRoughness) {\n material.pbrMetallicRoughness = {...material.pbrMetallicRoughness};\n const mr = material.pbrMetallicRoughness;\n if (mr.baseColorTexture) {\n mr.baseColorTexture = {...mr.baseColorTexture};\n mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);\n }\n if (mr.metallicRoughnessTexture) {\n mr.metallicRoughnessTexture = {...mr.metallicRoughnessTexture};\n mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);\n }\n }\n return material;\n }\n\n _resolveAccessor(gltfAccessor: GLTFAccessor, index: number): GLTFAccessorPostprocessed {\n // Look up enums\n const bytesPerComponent = getBytesFromComponentType(gltfAccessor.componentType);\n const components = getSizeFromAccessorType(gltfAccessor.type);\n const bytesPerElement = bytesPerComponent * components;\n\n const accessor: GLTFAccessorPostprocessed = {\n ...gltfAccessor,\n // @ts-expect-error\n id: gltfAccessor.id || `accessor-${index}`,\n bytesPerComponent,\n components,\n bytesPerElement,\n value: undefined!,\n bufferView: undefined!,\n sparse: undefined!\n };\n if (gltfAccessor.bufferView !== undefined) {\n // Draco encoded meshes don't have bufferView\n accessor.bufferView = this.getBufferView(gltfAccessor.bufferView);\n }\n\n // Create TypedArray for the accessor\n // Note: The canonical way to instantiate is to ignore this array and create\n // WebGLBuffer's using the bufferViews.\n if (accessor.bufferView) {\n const buffer = accessor.bufferView.buffer;\n const {ArrayType, byteLength} = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);\n const byteOffset =\n (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;\n let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n if (accessor.bufferView.byteStride) {\n cutBuffer = this._getValueFromInterleavedBuffer(\n buffer,\n byteOffset,\n accessor.bufferView.byteStride,\n accessor.bytesPerElement,\n accessor.count\n );\n }\n accessor.value = new ArrayType(cutBuffer);\n }\n\n return accessor;\n }\n\n /**\n * Take values of particular accessor from interleaved buffer\n * various parts of the buffer\n * @param buffer\n * @param byteOffset\n * @param byteStride\n * @param bytesPerElement\n * @param count\n * @returns\n */\n _getValueFromInterleavedBuffer(\n buffer,\n byteOffset: number,\n byteStride: number,\n bytesPerElement: number,\n count: number\n ): ArrayBufferLike {\n const result = new Uint8Array(count * bytesPerElement);\n for (let i = 0; i < count; i++) {\n const elementOffset = byteOffset + i * byteStride;\n result.set(\n new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)),\n i * bytesPerElement\n );\n }\n return result.buffer;\n }\n\n _resolveTexture(gltfTexture: GLTFTexture, index: number): GLTFTexturePostprocessed {\n return {\n ...gltfTexture,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfTexture.id || `texture-${index}`,\n sampler:\n typeof gltfTexture.sampler === 'number'\n ? this.getSampler(gltfTexture.sampler)\n : makeDefaultSampler(),\n source: typeof gltfTexture.source === 'number' ? this.getImage(gltfTexture.source) : undefined\n };\n }\n\n _resolveSampler(gltfSampler: GLTFSampler, index: number): GLTFSamplerPostprocessed {\n const sampler: GLTFSamplerPostprocessed = {\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfSampler.id || `sampler-${index}`,\n ...gltfSampler,\n parameters: {}\n };\n // Map textual parameters to GL parameter values\n for (const key in sampler) {\n const glEnum = this._enumSamplerParameter(key);\n if (glEnum !== undefined) {\n sampler.parameters[glEnum] = sampler[key];\n }\n }\n return sampler;\n }\n\n _enumSamplerParameter(key: string): number {\n return SAMPLER_PARAMETER_GLTF_TO_GL[key];\n }\n\n _resolveImage(gltfImage: GLTFImage, index: number): GLTFImagePostprocessed {\n const image: GLTFImagePostprocessed = {\n ...gltfImage,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfImage.id || `image-${index}`,\n image: null!,\n bufferView:\n gltfImage.bufferView !== undefined ? this.getBufferView(gltfImage.bufferView) : undefined\n };\n\n // Check if image has been preloaded by the GLTFLoader\n // If so, link it into the JSON and drop the URI\n const preloadedImage = this.images[index];\n if (preloadedImage) {\n image.image = preloadedImage;\n }\n\n return image;\n }\n\n _resolveBufferView(gltfBufferView: GLTFBufferView, index: number): GLTFBufferViewPostprocessed {\n const bufferIndex = gltfBufferView.buffer;\n const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n // Add offset of buffer, then offset of buffer view\n let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n if (gltfBufferView.byteOffset) {\n byteOffset += gltfBufferView.byteOffset;\n }\n\n const bufferView: GLTFBufferViewPostprocessed = {\n // // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: `bufferView-${index}`,\n ...gltfBufferView,\n // ...this.buffers[bufferIndex],\n buffer: this.buffers[bufferIndex],\n data: new Uint8Array(arrayBuffer, byteOffset, gltfBufferView.byteLength)\n };\n\n return bufferView;\n }\n\n _resolveCamera(gltfCamera: GLTFCamera, index): GLTFCameraPostprocessed {\n const camera: GLTFCameraPostprocessed = {\n ...gltfCamera,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfCamera.id || `camera-${index}`\n };\n\n // TODO - create 4x4 matrices\n if (camera.perspective) {\n // camera.matrix = createPerspectiveMatrix(camera.perspective);\n }\n if (camera.orthographic) {\n // camera.matrix = createOrthographicMatrix(camera.orthographic);\n }\n return camera;\n }\n}\n\nexport function postProcessGLTF(\n gltf: GLTFWithBuffers,\n options?: ParseGLTFOptions\n): GLTFPostprocessed {\n return new GLTFPostProcessor().postProcess(gltf, options);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"post-process-gltf.js","names":["assert","getAccessorArrayTypeAndLength","COMPONENTS","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","BYTES","GL_SAMPLER","TEXTURE_MAG_FILTER","TEXTURE_MIN_FILTER","TEXTURE_WRAP_S","TEXTURE_WRAP_T","REPEAT","LINEAR","NEAREST_MIPMAP_LINEAR","SAMPLER_PARAMETER_GLTF_TO_GL","magFilter","minFilter","wrapS","wrapT","DEFAULT_SAMPLER_PARAMETERS","makeDefaultSampler","id","parameters","getBytesFromComponentType","componentType","getSizeFromAccessorType","type","GLTFPostProcessor","constructor","baseUri","jsonUnprocessed","json","buffers","images","postProcess","gltf","options","arguments","length","undefined","_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","_resolveNodeChildren","skins","skin","_resolveSkin","scenes","scene","_resolveScene","getScene","index","_get","getNode","getSkin","getMesh","getMaterial","getAccessor","getCamera","cameras","getTexture","getSampler","getImage","getBufferView","getBuffer","array","object","console","warn","gltfNode","camera","reduce","accum","meshIndex","primitives","concat","children","child","gltfSkin","inverseBindMatrices","gltfMesh","gltfPrimitive","primitive","attributes","indices","attribute","gltfMaterial","normalTexture","occlusionTexture","emissiveTexture","emissiveFactor","pbrMetallicRoughness","mr","baseColorTexture","metallicRoughnessTexture","gltfAccessor","bytesPerComponent","components","bytesPerElement","value","bufferView","sparse","buffer","ArrayType","byteLength","byteOffset","cutBuffer","arrayBuffer","slice","byteStride","_getValueFromInterleavedBuffer","count","result","Uint8Array","elementOffset","set","gltfTexture","source","gltfSampler","key","glEnum","_enumSamplerParameter","gltfImage","preloadedImage","gltfBufferView","bufferIndex","data","_resolveCamera","gltfCamera","perspective","orthographic","postProcessGLTF"],"sources":["../../../src/lib/api/post-process-gltf.ts"],"sourcesContent":["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {GLTFWithBuffers} from '../types/gltf-types';\nimport type {ParseGLTFOptions} from '../parsers/parse-gltf';\n\nimport type {\n GLTF,\n GLTFAccessor,\n GLTFBufferView,\n GLTFCamera,\n GLTFImage,\n GLTFMaterial,\n GLTFMesh,\n GLTFNode,\n GLTFSampler,\n GLTFScene,\n GLTFSkin,\n GLTFTexture\n} from '../types/gltf-json-schema';\n\nimport type {\n GLTFPostprocessed,\n GLTFAccessorPostprocessed,\n GLTFBufferPostprocessed,\n GLTFBufferViewPostprocessed,\n GLTFCameraPostprocessed,\n GLTFImagePostprocessed,\n GLTFMaterialPostprocessed,\n GLTFMeshPostprocessed,\n GLTFNodePostprocessed,\n GLTFSamplerPostprocessed,\n GLTFScenePostprocessed,\n GLTFSkinPostprocessed,\n GLTFTexturePostprocessed,\n GLTFMeshPrimitivePostprocessed\n} from '../types/gltf-postprocessed-schema';\n\nimport {assert} from '../utils/assert';\nimport {getAccessorArrayTypeAndLength} from '../gltf-utils/gltf-utils';\n\n// This is a post processor for loaded glTF files\n// The goal is to make the loaded data easier to use in WebGL applications\n//\n// Functions:\n// * Resolve indexed arrays structure of glTF into a linked tree.\n// * Translate stringified enum keys and values into WebGL constants.\n// * Load images (optional)\n\n// ENUM LOOKUP\n\nconst COMPONENTS = {\n SCALAR: 1,\n VEC2: 2,\n VEC3: 3,\n VEC4: 4,\n MAT2: 4,\n MAT3: 9,\n MAT4: 16\n};\n\nconst BYTES = {\n 5120: 1, // BYTE\n 5121: 1, // UNSIGNED_BYTE\n 5122: 2, // SHORT\n 5123: 2, // UNSIGNED_SHORT\n 5125: 4, // UNSIGNED_INT\n 5126: 4 // FLOAT\n};\n\nconst GL_SAMPLER = {\n // Sampler parameters\n TEXTURE_MAG_FILTER: 0x2800,\n TEXTURE_MIN_FILTER: 0x2801,\n TEXTURE_WRAP_S: 0x2802,\n TEXTURE_WRAP_T: 0x2803,\n\n // Sampler default values\n REPEAT: 0x2901,\n LINEAR: 0x2601,\n NEAREST_MIPMAP_LINEAR: 0x2702\n};\n\nconst SAMPLER_PARAMETER_GLTF_TO_GL = {\n magFilter: GL_SAMPLER.TEXTURE_MAG_FILTER,\n minFilter: GL_SAMPLER.TEXTURE_MIN_FILTER,\n wrapS: GL_SAMPLER.TEXTURE_WRAP_S,\n wrapT: GL_SAMPLER.TEXTURE_WRAP_T\n};\n\n// When undefined, a sampler with repeat wrapping and auto filtering should be used.\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#texture\nconst DEFAULT_SAMPLER_PARAMETERS = {\n [GL_SAMPLER.TEXTURE_MAG_FILTER]: GL_SAMPLER.LINEAR,\n [GL_SAMPLER.TEXTURE_MIN_FILTER]: GL_SAMPLER.NEAREST_MIPMAP_LINEAR,\n [GL_SAMPLER.TEXTURE_WRAP_S]: GL_SAMPLER.REPEAT,\n [GL_SAMPLER.TEXTURE_WRAP_T]: GL_SAMPLER.REPEAT\n};\n\nfunction makeDefaultSampler(): GLTFSamplerPostprocessed {\n return {\n id: 'default-sampler',\n parameters: DEFAULT_SAMPLER_PARAMETERS\n };\n}\n\nfunction getBytesFromComponentType(componentType) {\n return BYTES[componentType];\n}\n\nfunction getSizeFromAccessorType(type) {\n return COMPONENTS[type];\n}\n\nclass GLTFPostProcessor {\n baseUri: string = '';\n // @ts-expect-error\n jsonUnprocessed: GLTF;\n // @ts-expect-error\n json: GLTFPostprocessed;\n buffers: {\n arrayBuffer: ArrayBuffer;\n byteOffset: number;\n byteLength: number;\n }[] = [];\n images: any[] = [];\n\n postProcess(gltf: GLTFWithBuffers, options = {}) {\n const {json, buffers = [], images = []} = gltf;\n // @ts-expect-error\n const {baseUri = ''} = gltf;\n assert(json);\n\n this.baseUri = baseUri;\n this.buffers = buffers;\n this.images = images;\n this.jsonUnprocessed = json;\n\n this.json = this._resolveTree(gltf.json, options);\n\n return this.json;\n }\n\n // Convert indexed glTF structure into tree structure\n // cross-link index resolution, enum lookup, convenience calculations\n // eslint-disable-next-line complexity, max-statements\n _resolveTree(gltf: GLTF, options = {}): GLTFPostprocessed {\n // @ts-expect-error\n const json: GLTFPostprocessed = {...gltf};\n this.json = json;\n\n if (gltf.bufferViews) {\n json.bufferViews = gltf.bufferViews.map((bufView, i) => this._resolveBufferView(bufView, i));\n }\n if (gltf.images) {\n json.images = gltf.images.map((image, i) => this._resolveImage(image, i));\n }\n if (gltf.samplers) {\n json.samplers = gltf.samplers.map((sampler, i) => this._resolveSampler(sampler, i));\n }\n if (gltf.textures) {\n json.textures = gltf.textures.map((texture, i) => this._resolveTexture(texture, i));\n }\n if (gltf.accessors) {\n json.accessors = gltf.accessors.map((accessor, i) => this._resolveAccessor(accessor, i));\n }\n if (gltf.materials) {\n json.materials = gltf.materials.map((material, i) => this._resolveMaterial(material, i));\n }\n if (gltf.meshes) {\n json.meshes = gltf.meshes.map((mesh, i) => this._resolveMesh(mesh, i));\n }\n if (gltf.nodes) {\n json.nodes = gltf.nodes.map((node, i) => this._resolveNode(node, i));\n json.nodes = json.nodes.map((node, i) => this._resolveNodeChildren(node));\n }\n if (gltf.skins) {\n json.skins = gltf.skins.map((skin, i) => this._resolveSkin(skin, i));\n }\n if (gltf.scenes) {\n json.scenes = gltf.scenes.map((scene, i) => this._resolveScene(scene, i));\n }\n if (typeof this.json.scene === 'number' && json.scenes) {\n json.scene = json.scenes[this.json.scene];\n }\n\n return json;\n }\n\n getScene(index: number): GLTFScenePostprocessed {\n return this._get(this.json.scenes, index);\n }\n\n getNode(index: number): GLTFNodePostprocessed {\n return this._get(this.json.nodes, index);\n }\n\n getSkin(index: number): GLTFSkinPostprocessed {\n return this._get(this.json.skins, index);\n }\n\n getMesh(index: number): GLTFMeshPostprocessed {\n return this._get(this.json.meshes, index);\n }\n\n getMaterial(index: number): GLTFMaterialPostprocessed {\n return this._get(this.json.materials, index);\n }\n\n getAccessor(index: number): GLTFAccessorPostprocessed {\n return this._get(this.json.accessors, index);\n }\n\n getCamera(index: number): GLTFCameraPostprocessed {\n return this._get(this.json.cameras, index);\n }\n\n getTexture(index: number): GLTFTexturePostprocessed {\n return this._get(this.json.textures, index);\n }\n\n getSampler(index: number): GLTFSamplerPostprocessed {\n return this._get(this.json.samplers, index);\n }\n\n getImage(index: number): GLTFImagePostprocessed {\n return this._get(this.json.images, index);\n }\n\n getBufferView(index: number): GLTFBufferViewPostprocessed {\n return this._get(this.json.bufferViews, index);\n }\n\n getBuffer(index: number): GLTFBufferPostprocessed {\n return this._get(this.json.buffers, index);\n }\n\n _get<T>(array: T[] | undefined, index: number): T {\n // check if already resolved\n if (typeof index === 'object') {\n return index;\n }\n const object = array && array[index];\n if (!object) {\n console.warn(`glTF file error: Could not find ${array}[${index}]`); // eslint-disable-line\n }\n return object as T;\n }\n\n // PARSING HELPERS\n\n _resolveScene(scene: GLTFScene, index: number): GLTFScenePostprocessed {\n return {\n ...scene,\n // @ts-ignore\n id: scene.id || `scene-${index}`,\n nodes: (scene.nodes || []).map((node) => this.getNode(node))\n };\n }\n\n _resolveNode(gltfNode: GLTFNode, index: number): GLTFNodePostprocessed {\n // @ts-expect-error\n const node: GLTFNodePostprocessed = {\n ...gltfNode,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfNode?.id || `node-${index}`\n };\n if (gltfNode.mesh !== undefined) {\n node.mesh = this.getMesh(gltfNode.mesh);\n }\n if (gltfNode.camera !== undefined) {\n node.camera = this.getCamera(gltfNode.camera);\n }\n if (gltfNode.skin !== undefined) {\n node.skin = this.getSkin(gltfNode.skin);\n }\n\n // TODO deprecated - Delete in v4.0?\n // @ts-expect-error node.meshes does not seem to be part of the GLTF standard\n if (gltfNode.meshes !== undefined && gltfNode.meshes.length) {\n // @ts-expect-error\n node.mesh = gltfNode.meshes.reduce(\n (accum, meshIndex) => {\n const mesh = this.getMesh(meshIndex);\n accum.id = mesh.id;\n accum.primitives = accum.primitives.concat(mesh.primitives);\n return accum;\n },\n {primitives: []}\n );\n }\n\n return node;\n }\n\n _resolveNodeChildren(node: GLTFNodePostprocessed): GLTFNodePostprocessed {\n if (node.children) {\n // @ts-expect-error node.children are numbers at this stage\n node.children = node.children.map((child) => this.getNode(child));\n }\n return node;\n }\n\n _resolveSkin(gltfSkin: GLTFSkin, index: number): GLTFSkinPostprocessed {\n const inverseBindMatrices =\n typeof gltfSkin.inverseBindMatrices === 'number'\n ? this.getAccessor(gltfSkin.inverseBindMatrices)\n : undefined;\n\n return {\n ...gltfSkin,\n id: gltfSkin.id || `skin-${index}`,\n inverseBindMatrices\n };\n }\n\n _resolveMesh(gltfMesh: GLTFMesh, index: number): GLTFMeshPostprocessed {\n const mesh: GLTFMeshPostprocessed = {\n ...gltfMesh,\n id: gltfMesh.id || `mesh-${index}`,\n primitives: []\n };\n if (gltfMesh.primitives) {\n mesh.primitives = gltfMesh.primitives.map((gltfPrimitive) => {\n const primitive: GLTFMeshPrimitivePostprocessed = {\n ...gltfPrimitive,\n attributes: {},\n indices: undefined,\n material: undefined\n };\n const attributes = gltfPrimitive.attributes;\n for (const attribute in attributes) {\n primitive.attributes[attribute] = this.getAccessor(attributes[attribute]);\n }\n if (gltfPrimitive.indices !== undefined) {\n primitive.indices = this.getAccessor(gltfPrimitive.indices);\n }\n if (gltfPrimitive.material !== undefined) {\n primitive.material = this.getMaterial(gltfPrimitive.material);\n }\n return primitive;\n });\n }\n return mesh;\n }\n\n _resolveMaterial(gltfMaterial: GLTFMaterial, index: number): GLTFMaterialPostprocessed {\n // @ts-expect-error\n const material: GLTFMaterialPostprocessed = {\n ...gltfMaterial,\n // @ts-expect-error\n id: gltfMaterial.id || `material-${index}`\n };\n if (material.normalTexture) {\n material.normalTexture = {...material.normalTexture};\n material.normalTexture.texture = this.getTexture(material.normalTexture.index);\n }\n if (material.occlusionTexture) {\n material.occlusionTexture = {...material.occlusionTexture};\n material.occlusionTexture.texture = this.getTexture(material.occlusionTexture.index);\n }\n if (material.emissiveTexture) {\n material.emissiveTexture = {...material.emissiveTexture};\n material.emissiveTexture.texture = this.getTexture(material.emissiveTexture.index);\n }\n if (!material.emissiveFactor) {\n material.emissiveFactor = material.emissiveTexture ? [1, 1, 1] : [0, 0, 0];\n }\n\n if (material.pbrMetallicRoughness) {\n material.pbrMetallicRoughness = {...material.pbrMetallicRoughness};\n const mr = material.pbrMetallicRoughness;\n if (mr.baseColorTexture) {\n mr.baseColorTexture = {...mr.baseColorTexture};\n mr.baseColorTexture.texture = this.getTexture(mr.baseColorTexture.index);\n }\n if (mr.metallicRoughnessTexture) {\n mr.metallicRoughnessTexture = {...mr.metallicRoughnessTexture};\n mr.metallicRoughnessTexture.texture = this.getTexture(mr.metallicRoughnessTexture.index);\n }\n }\n return material;\n }\n\n _resolveAccessor(gltfAccessor: GLTFAccessor, index: number): GLTFAccessorPostprocessed {\n // Look up enums\n const bytesPerComponent = getBytesFromComponentType(gltfAccessor.componentType);\n const components = getSizeFromAccessorType(gltfAccessor.type);\n const bytesPerElement = bytesPerComponent * components;\n\n const accessor: GLTFAccessorPostprocessed = {\n ...gltfAccessor,\n // @ts-expect-error\n id: gltfAccessor.id || `accessor-${index}`,\n bytesPerComponent,\n components,\n bytesPerElement,\n value: undefined!,\n bufferView: undefined!,\n sparse: undefined!\n };\n if (gltfAccessor.bufferView !== undefined) {\n // Draco encoded meshes don't have bufferView\n accessor.bufferView = this.getBufferView(gltfAccessor.bufferView);\n }\n\n // Create TypedArray for the accessor\n // Note: The canonical way to instantiate is to ignore this array and create\n // WebGLBuffer's using the bufferViews.\n if (accessor.bufferView) {\n const buffer = accessor.bufferView.buffer;\n const {ArrayType, byteLength} = getAccessorArrayTypeAndLength(accessor, accessor.bufferView);\n const byteOffset =\n (accessor.bufferView.byteOffset || 0) + (accessor.byteOffset || 0) + buffer.byteOffset;\n let cutBuffer = buffer.arrayBuffer.slice(byteOffset, byteOffset + byteLength);\n if (accessor.bufferView.byteStride) {\n cutBuffer = this._getValueFromInterleavedBuffer(\n buffer,\n byteOffset,\n accessor.bufferView.byteStride,\n accessor.bytesPerElement,\n accessor.count\n );\n }\n accessor.value = new ArrayType(cutBuffer);\n }\n\n return accessor;\n }\n\n /**\n * Take values of particular accessor from interleaved buffer\n * various parts of the buffer\n * @param buffer\n * @param byteOffset\n * @param byteStride\n * @param bytesPerElement\n * @param count\n * @returns\n */\n _getValueFromInterleavedBuffer(\n buffer,\n byteOffset: number,\n byteStride: number,\n bytesPerElement: number,\n count: number\n ): ArrayBufferLike {\n const result = new Uint8Array(count * bytesPerElement);\n for (let i = 0; i < count; i++) {\n const elementOffset = byteOffset + i * byteStride;\n result.set(\n new Uint8Array(buffer.arrayBuffer.slice(elementOffset, elementOffset + bytesPerElement)),\n i * bytesPerElement\n );\n }\n return result.buffer;\n }\n\n _resolveTexture(gltfTexture: GLTFTexture, index: number): GLTFTexturePostprocessed {\n return {\n ...gltfTexture,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfTexture.id || `texture-${index}`,\n sampler:\n typeof gltfTexture.sampler === 'number'\n ? this.getSampler(gltfTexture.sampler)\n : makeDefaultSampler(),\n source: typeof gltfTexture.source === 'number' ? this.getImage(gltfTexture.source) : undefined\n };\n }\n\n _resolveSampler(gltfSampler: GLTFSampler, index: number): GLTFSamplerPostprocessed {\n const sampler: GLTFSamplerPostprocessed = {\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfSampler.id || `sampler-${index}`,\n ...gltfSampler,\n parameters: {}\n };\n // Map textual parameters to GL parameter values\n for (const key in sampler) {\n const glEnum = this._enumSamplerParameter(key);\n if (glEnum !== undefined) {\n sampler.parameters[glEnum] = sampler[key];\n }\n }\n return sampler;\n }\n\n _enumSamplerParameter(key: string): number {\n return SAMPLER_PARAMETER_GLTF_TO_GL[key];\n }\n\n _resolveImage(gltfImage: GLTFImage, index: number): GLTFImagePostprocessed {\n const image: GLTFImagePostprocessed = {\n ...gltfImage,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfImage.id || `image-${index}`,\n image: null!,\n bufferView:\n gltfImage.bufferView !== undefined ? this.getBufferView(gltfImage.bufferView) : undefined\n };\n\n // Check if image has been preloaded by the GLTFLoader\n // If so, link it into the JSON and drop the URI\n const preloadedImage = this.images[index];\n if (preloadedImage) {\n image.image = preloadedImage;\n }\n\n return image;\n }\n\n _resolveBufferView(gltfBufferView: GLTFBufferView, index: number): GLTFBufferViewPostprocessed {\n const bufferIndex = gltfBufferView.buffer;\n const arrayBuffer = this.buffers[bufferIndex].arrayBuffer;\n // Add offset of buffer, then offset of buffer view\n let byteOffset = this.buffers[bufferIndex].byteOffset || 0;\n if (gltfBufferView.byteOffset) {\n byteOffset += gltfBufferView.byteOffset;\n }\n\n const bufferView: GLTFBufferViewPostprocessed = {\n // // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: `bufferView-${index}`,\n ...gltfBufferView,\n // ...this.buffers[bufferIndex],\n buffer: this.buffers[bufferIndex],\n data: new Uint8Array(arrayBuffer, byteOffset, gltfBufferView.byteLength)\n };\n\n return bufferView;\n }\n\n _resolveCamera(gltfCamera: GLTFCamera, index): GLTFCameraPostprocessed {\n const camera: GLTFCameraPostprocessed = {\n ...gltfCamera,\n // @ts-expect-error id could already be present, glTF standard does not prevent it\n id: gltfCamera.id || `camera-${index}`\n };\n\n // TODO - create 4x4 matrices\n if (camera.perspective) {\n // camera.matrix = createPerspectiveMatrix(camera.perspective);\n }\n if (camera.orthographic) {\n // camera.matrix = createOrthographicMatrix(camera.orthographic);\n }\n return camera;\n }\n}\n\nexport function postProcessGLTF(\n gltf: GLTFWithBuffers,\n options?: ParseGLTFOptions\n): GLTFPostprocessed {\n return new GLTFPostProcessor().postProcess(gltf, options);\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = typeof
|
|
1
|
+
export const VERSION = typeof "4.1.0-alpha.11" !== 'undefined' ? "4.1.0-alpha.11" : 'latest';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","names":["VERSION"
|
|
1
|
+
{"version":3,"file":"version.js","names":["VERSION"],"sources":["../../../src/lib/utils/version.ts"],"sourcesContent":["// Version constant cannot be imported, it needs to correspond to the build version of **this** module.\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nexport const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n"],"mappings":"AAGA,OAAO,MAAMA,OAAO,GAAG,uBAAkB,KAAK,WAAW,sBAAiB,QAAQ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loaders.gl/gltf",
|
|
3
|
-
"version": "4.1.0-alpha.
|
|
3
|
+
"version": "4.1.0-alpha.11",
|
|
4
4
|
"description": "Framework-independent loader for the glTF format",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"module": "dist/index.js",
|
|
26
26
|
"exports": {
|
|
27
27
|
".": {
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
28
29
|
"import": "./dist/index.js",
|
|
29
|
-
"require": "./dist/index.cjs"
|
|
30
|
-
"types": "./dist/index.d.ts"
|
|
30
|
+
"require": "./dist/index.cjs"
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
"sideEffects": false,
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"build-bundle": "ocular-bundle ./src/index.ts"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@loaders.gl/draco": "4.1.0-alpha.
|
|
46
|
-
"@loaders.gl/images": "4.1.0-alpha.
|
|
47
|
-
"@loaders.gl/loader-utils": "4.1.0-alpha.
|
|
48
|
-
"@loaders.gl/textures": "4.1.0-alpha.
|
|
45
|
+
"@loaders.gl/draco": "4.1.0-alpha.11",
|
|
46
|
+
"@loaders.gl/images": "4.1.0-alpha.11",
|
|
47
|
+
"@loaders.gl/loader-utils": "4.1.0-alpha.11",
|
|
48
|
+
"@loaders.gl/textures": "4.1.0-alpha.11",
|
|
49
49
|
"@math.gl/core": "^4.0.0"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "5d3e23bf93762b48c8c1d6d926ede7a97fe43ab0"
|
|
52
52
|
}
|
package/src/glb-writer.ts
CHANGED