@loaders.gl/gltf 4.0.0-alpha.5 → 4.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundle.js +2 -2
- package/dist/dist.min.js +3545 -2445
- package/dist/es5/bundle.js +6 -0
- package/dist/es5/bundle.js.map +1 -0
- package/dist/es5/glb-loader.js +56 -0
- package/dist/es5/glb-loader.js.map +1 -0
- package/dist/es5/glb-writer.js +34 -0
- package/dist/es5/glb-writer.js.map +1 -0
- package/dist/es5/gltf-loader.js +81 -0
- package/dist/es5/gltf-loader.js.map +1 -0
- package/dist/es5/gltf-writer.js +35 -0
- package/dist/es5/gltf-writer.js.map +1 -0
- package/dist/es5/index.js +55 -0
- package/dist/es5/index.js.map +1 -0
- package/dist/es5/lib/api/gltf-extensions.js +109 -0
- package/dist/es5/lib/api/gltf-extensions.js.map +1 -0
- package/dist/es5/lib/api/gltf-scenegraph.js +595 -0
- package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -0
- package/dist/es5/lib/api/normalize-gltf-v1.js +331 -0
- package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -0
- package/dist/es5/lib/api/post-process-gltf.js +470 -0
- package/dist/es5/lib/api/post-process-gltf.js.map +1 -0
- package/dist/es5/lib/encoders/encode-glb.js +61 -0
- package/dist/es5/lib/encoders/encode-glb.js.map +1 -0
- package/dist/es5/lib/encoders/encode-gltf.js +20 -0
- package/dist/es5/lib/encoders/encode-gltf.js.map +1 -0
- package/dist/es5/lib/extensions/EXT_meshopt_compression.js +94 -0
- package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -0
- package/dist/es5/lib/extensions/EXT_texture_webp.js +43 -0
- package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -0
- package/dist/es5/lib/extensions/KHR_binary_gltf.js +39 -0
- package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -0
- package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js +247 -0
- package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
- package/dist/es5/lib/extensions/KHR_texture_basisu.js +36 -0
- package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -0
- package/dist/es5/lib/extensions/KHR_texture_transform.js +230 -0
- package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -0
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js +103 -0
- package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
- package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js +99 -0
- package/dist/es5/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
- package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js +76 -0
- package/dist/es5/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
- package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js +113 -0
- package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
- package/dist/es5/lib/gltf-utils/get-typed-array.js +23 -0
- package/dist/es5/lib/gltf-utils/get-typed-array.js.map +1 -0
- package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js +68 -0
- package/dist/es5/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
- package/dist/es5/lib/gltf-utils/gltf-constants.js +48 -0
- package/dist/es5/lib/gltf-utils/gltf-constants.js.map +1 -0
- package/dist/es5/lib/gltf-utils/gltf-utils.js +86 -0
- package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -0
- package/dist/es5/lib/gltf-utils/resolve-url.js +18 -0
- package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -0
- package/dist/es5/lib/parsers/parse-glb.js +120 -0
- package/dist/es5/lib/parsers/parse-glb.js.map +1 -0
- package/dist/es5/lib/parsers/parse-gltf.js +283 -0
- package/dist/es5/lib/parsers/parse-gltf.js.map +1 -0
- package/dist/es5/lib/types/glb-types.js +2 -0
- package/dist/es5/lib/types/glb-types.js.map +1 -0
- package/dist/es5/lib/types/gltf-json-schema.js +2 -0
- package/dist/es5/lib/types/gltf-json-schema.js.map +1 -0
- package/dist/es5/lib/types/gltf-postprocessed-schema.js +2 -0
- package/dist/es5/lib/types/gltf-postprocessed-schema.js.map +1 -0
- package/dist/es5/lib/types/gltf-types.js +2 -0
- package/dist/es5/lib/types/gltf-types.js.map +1 -0
- package/dist/es5/lib/utils/assert.js +12 -0
- package/dist/es5/lib/utils/assert.js.map +1 -0
- package/dist/es5/lib/utils/version.js +9 -0
- package/dist/es5/lib/utils/version.js.map +1 -0
- package/dist/es5/meshopt/meshopt-decoder.js +215 -0
- package/dist/es5/meshopt/meshopt-decoder.js.map +1 -0
- package/dist/es5/webp/webp.js +83 -0
- package/dist/es5/webp/webp.js.map +1 -0
- package/dist/esm/bundle.js +4 -0
- package/dist/esm/bundle.js.map +1 -0
- package/dist/esm/glb-loader.js +31 -0
- package/dist/esm/glb-loader.js.map +1 -0
- package/dist/esm/glb-writer.js +27 -0
- package/dist/esm/glb-writer.js.map +1 -0
- package/dist/esm/gltf-loader.js +51 -0
- package/dist/esm/gltf-loader.js.map +1 -0
- package/dist/esm/gltf-writer.js +28 -0
- package/dist/esm/gltf-writer.js.map +1 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/api/gltf-extensions.js +35 -0
- package/dist/esm/lib/api/gltf-extensions.js.map +1 -0
- package/dist/esm/lib/api/gltf-scenegraph.js +452 -0
- package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -0
- package/dist/esm/lib/api/normalize-gltf-v1.js +204 -0
- package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -0
- package/dist/esm/lib/api/post-process-gltf.js +396 -0
- package/dist/esm/lib/api/post-process-gltf.js.map +1 -0
- package/dist/esm/lib/encoders/encode-glb.js +54 -0
- package/dist/esm/lib/encoders/encode-glb.js.map +1 -0
- package/dist/esm/lib/encoders/encode-gltf.js +14 -0
- package/dist/esm/lib/encoders/encode-gltf.js.map +1 -0
- package/dist/esm/lib/extensions/EXT_meshopt_compression.js +41 -0
- package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -0
- package/dist/esm/lib/extensions/EXT_texture_webp.js +25 -0
- package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -0
- package/dist/esm/lib/extensions/KHR_binary_gltf.js +21 -0
- package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -0
- package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js +111 -0
- package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -0
- package/dist/esm/lib/extensions/KHR_texture_basisu.js +18 -0
- package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -0
- package/dist/esm/lib/extensions/KHR_texture_transform.js +182 -0
- package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -0
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js +77 -0
- package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -0
- package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js +42 -0
- package/dist/esm/lib/extensions/deprecated/KHR_lights_punctual.js.map +1 -0
- package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js +33 -0
- package/dist/esm/lib/extensions/deprecated/KHR_materials_unlit.js.map +1 -0
- package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js +61 -0
- package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -0
- package/dist/esm/lib/gltf-utils/get-typed-array.js +16 -0
- package/dist/esm/lib/gltf-utils/get-typed-array.js.map +1 -0
- package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js +62 -0
- package/dist/esm/lib/gltf-utils/gltf-attribute-utils.js.map +1 -0
- package/dist/esm/lib/gltf-utils/gltf-constants.js +37 -0
- package/dist/esm/lib/gltf-utils/gltf-constants.js.map +1 -0
- package/dist/esm/lib/gltf-utils/gltf-utils.js +74 -0
- package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -0
- package/dist/esm/lib/gltf-utils/resolve-url.js +12 -0
- package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -0
- package/dist/esm/lib/parsers/parse-glb.js +114 -0
- package/dist/esm/lib/parsers/parse-glb.js.map +1 -0
- package/dist/esm/lib/parsers/parse-gltf.js +155 -0
- package/dist/esm/lib/parsers/parse-gltf.js.map +1 -0
- package/dist/esm/lib/types/glb-types.js +2 -0
- package/dist/esm/lib/types/glb-types.js.map +1 -0
- package/dist/esm/lib/types/gltf-json-schema.js +2 -0
- package/dist/esm/lib/types/gltf-json-schema.js.map +1 -0
- package/dist/esm/lib/types/gltf-postprocessed-schema.js +2 -0
- package/dist/esm/lib/types/gltf-postprocessed-schema.js.map +1 -0
- package/dist/esm/lib/types/gltf-types.js +2 -0
- package/dist/esm/lib/types/gltf-types.js.map +1 -0
- package/dist/esm/lib/utils/assert.js +6 -0
- package/dist/esm/lib/utils/assert.js.map +1 -0
- package/dist/esm/lib/utils/version.js +2 -0
- package/dist/esm/lib/utils/version.js.map +1 -0
- package/dist/esm/meshopt/meshopt-decoder.js +91 -0
- package/dist/esm/meshopt/meshopt-decoder.js.map +1 -0
- package/dist/esm/meshopt/meshopt-encoder.ts.disabled +409 -0
- package/dist/esm/webp/webp.js +25 -0
- package/dist/esm/webp/webp.js.map +1 -0
- package/dist/glb-loader.d.ts +5 -4
- package/dist/glb-loader.d.ts.map +1 -1
- package/dist/glb-loader.js +30 -28
- package/dist/glb-writer.d.ts +7 -16
- package/dist/glb-writer.d.ts.map +1 -1
- package/dist/glb-writer.js +32 -26
- package/dist/gltf-loader.d.ts +7 -6
- package/dist/gltf-loader.d.ts.map +1 -1
- package/dist/gltf-loader.js +46 -43
- package/dist/gltf-writer.d.ts +2 -2
- package/dist/gltf-writer.d.ts.map +1 -1
- package/dist/gltf-writer.js +29 -26
- package/dist/index.d.ts +8 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -7
- package/dist/lib/api/gltf-extensions.d.ts +7 -2
- package/dist/lib/api/gltf-extensions.d.ts.map +1 -1
- package/dist/lib/api/gltf-extensions.js +79 -31
- package/dist/lib/api/gltf-scenegraph.d.ts +10 -14
- package/dist/lib/api/gltf-scenegraph.d.ts.map +1 -1
- package/dist/lib/api/gltf-scenegraph.js +577 -513
- package/dist/lib/api/normalize-gltf-v1.d.ts.map +1 -1
- package/dist/lib/api/normalize-gltf-v1.js +278 -229
- 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 +385 -374
- package/dist/lib/encoders/encode-glb.d.ts +14 -1
- package/dist/lib/encoders/encode-glb.d.ts.map +1 -1
- package/dist/lib/encoders/encode-glb.js +67 -58
- package/dist/lib/encoders/encode-gltf.d.ts +18 -0
- package/dist/lib/encoders/encode-gltf.d.ts.map +1 -1
- package/dist/lib/encoders/encode-gltf.js +30 -12
- package/dist/lib/extensions/EXT_meshopt_compression.d.ts +1 -4
- package/dist/lib/extensions/EXT_meshopt_compression.d.ts.map +1 -1
- package/dist/lib/extensions/EXT_meshopt_compression.js +35 -50
- 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 +32 -28
- 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 +36 -23
- 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 +123 -111
- 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 +26 -19
- package/dist/lib/extensions/KHR_texture_transform.d.ts +13 -0
- package/dist/lib/extensions/KHR_texture_transform.d.ts.map +1 -0
- package/dist/lib/extensions/KHR_texture_transform.js +227 -0
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts +6 -0
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.d.ts.map +1 -0
- package/dist/lib/extensions/deprecated/EXT_feature_metadata.js +115 -0
- 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 +54 -44
- 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 +39 -32
- 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 +73 -62
- package/dist/lib/gltf-utils/get-typed-array.js +39 -14
- 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-attribute-utils.js +65 -65
- package/dist/lib/gltf-utils/gltf-constants.d.ts +17 -0
- package/dist/lib/gltf-utils/gltf-constants.d.ts.map +1 -1
- package/dist/lib/gltf-utils/gltf-constants.js +38 -32
- 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 +79 -45
- package/dist/lib/gltf-utils/resolve-url.js +17 -15
- 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 +143 -105
- 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 +166 -154
- package/dist/lib/types/glb-types.d.ts +3 -3
- package/dist/lib/types/glb-types.d.ts.map +1 -1
- package/dist/lib/types/glb-types.js +2 -2
- package/dist/lib/types/gltf-json-schema.d.ts +530 -132
- package/dist/lib/types/gltf-json-schema.d.ts.map +1 -1
- package/dist/lib/types/gltf-json-schema.js +4 -2
- package/dist/lib/types/gltf-postprocessed-schema.d.ts +175 -210
- package/dist/lib/types/gltf-postprocessed-schema.d.ts.map +1 -1
- package/dist/lib/types/gltf-postprocessed-schema.js +4 -2
- package/dist/lib/types/gltf-types.d.ts +22 -7
- package/dist/lib/types/gltf-types.d.ts.map +1 -1
- package/dist/lib/types/gltf-types.js +3 -2
- package/dist/lib/utils/assert.js +11 -5
- package/dist/lib/utils/version.js +7 -2
- package/dist/meshopt/meshopt-decoder.js +97 -82
- package/dist/webp/webp.d.ts +1 -1
- package/dist/webp/webp.d.ts.map +1 -1
- package/dist/webp/webp.js +32 -23
- package/package.json +9 -8
- package/src/glb-loader.ts +4 -4
- package/src/glb-writer.ts +11 -3
- package/src/gltf-loader.ts +12 -8
- package/src/gltf-writer.ts +2 -2
- package/src/index.ts +34 -6
- package/src/lib/api/gltf-extensions.ts +14 -3
- package/src/lib/api/gltf-scenegraph.ts +61 -34
- package/src/lib/api/normalize-gltf-v1.ts +2 -1
- package/src/lib/api/post-process-gltf.ts +275 -150
- package/src/lib/encoders/encode-glb.ts +21 -4
- package/src/lib/encoders/encode-gltf.ts +19 -10
- package/src/lib/extensions/EXT_meshopt_compression.ts +16 -25
- package/src/lib/extensions/EXT_texture_webp.ts +5 -4
- package/src/lib/extensions/KHR_binary_gltf.ts +3 -3
- package/src/lib/extensions/KHR_draco_mesh_compression.ts +8 -8
- package/src/lib/extensions/KHR_texture_basisu.ts +4 -3
- package/src/lib/extensions/KHR_texture_transform.ts +308 -0
- package/src/lib/extensions/deprecated/EXT_feature_metadata.ts +163 -0
- package/src/lib/extensions/deprecated/KHR_lights_punctual.ts +2 -2
- package/src/lib/extensions/deprecated/KHR_materials_unlit.ts +5 -5
- package/src/lib/extensions/deprecated/KHR_techniques_webgl.ts +3 -2
- package/src/lib/gltf-utils/gltf-attribute-utils.ts +1 -1
- package/src/lib/gltf-utils/gltf-constants.ts +2 -2
- 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 +32 -17
- package/src/lib/types/glb-types.ts +1 -1
- package/src/lib/types/gltf-json-schema.ts +582 -126
- package/src/lib/types/gltf-postprocessed-schema.ts +289 -212
- package/src/lib/types/gltf-types.ts +41 -44
- package/dist/bundle.js.map +0 -1
- package/dist/glb-loader.js.map +0 -1
- package/dist/glb-writer.js.map +0 -1
- package/dist/gltf-loader.js.map +0 -1
- package/dist/gltf-writer.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/api/gltf-extensions.js.map +0 -1
- package/dist/lib/api/gltf-scenegraph.js.map +0 -1
- package/dist/lib/api/normalize-gltf-v1.js.map +0 -1
- package/dist/lib/api/post-process-gltf.js.map +0 -1
- package/dist/lib/encoders/encode-glb.js.map +0 -1
- package/dist/lib/encoders/encode-gltf.js.map +0 -1
- package/dist/lib/extensions/EXT_meshopt_compression.js.map +0 -1
- package/dist/lib/extensions/EXT_texture_webp.js.map +0 -1
- package/dist/lib/extensions/KHR_binary_gltf.js.map +0 -1
- package/dist/lib/extensions/KHR_draco_mesh_compression.js.map +0 -1
- package/dist/lib/extensions/KHR_texture_basisu.js.map +0 -1
- package/dist/lib/extensions/deprecated/KHR_lights_punctual.js.map +0 -1
- package/dist/lib/extensions/deprecated/KHR_materials_unlit.js.map +0 -1
- package/dist/lib/extensions/deprecated/KHR_techniques_webgl.js.map +0 -1
- package/dist/lib/gltf-utils/get-typed-array.js.map +0 -1
- package/dist/lib/gltf-utils/gltf-attribute-utils.js.map +0 -1
- package/dist/lib/gltf-utils/gltf-constants.js.map +0 -1
- package/dist/lib/gltf-utils/gltf-utils.js.map +0 -1
- package/dist/lib/gltf-utils/resolve-url.js.map +0 -1
- package/dist/lib/parsers/parse-glb.js.map +0 -1
- package/dist/lib/parsers/parse-gltf.js.map +0 -1
- package/dist/lib/types/glb-types.js.map +0 -1
- package/dist/lib/types/gltf-json-schema.js.map +0 -1
- package/dist/lib/types/gltf-postprocessed-schema.js.map +0 -1
- package/dist/lib/types/gltf-types.js.map +0 -1
- package/dist/lib/utils/assert.js.map +0 -1
- package/dist/lib/utils/version.js.map +0 -1
- package/dist/meshopt/meshopt-decoder.js.map +0 -1
- package/dist/webp/webp.js.map +0 -1
- /package/dist/{meshopt → es5/meshopt}/meshopt-encoder.ts.disabled +0 -0
|
@@ -1,170 +1,182 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseGLTF = exports.isGLTF = void 0;
|
|
4
|
+
const loader_utils_1 = require("@loaders.gl/loader-utils");
|
|
5
|
+
const images_1 = require("@loaders.gl/images");
|
|
6
|
+
const textures_1 = require("@loaders.gl/textures");
|
|
7
|
+
const assert_1 = require("../utils/assert");
|
|
8
|
+
const parse_glb_1 = require("./parse-glb");
|
|
9
|
+
const resolve_url_1 = require("../gltf-utils/resolve-url");
|
|
10
|
+
const get_typed_array_1 = require("../gltf-utils/get-typed-array");
|
|
11
|
+
const gltf_extensions_1 = require("../api/gltf-extensions");
|
|
12
|
+
const normalize_gltf_v1_1 = require("../api/normalize-gltf-v1");
|
|
13
|
+
/** Check if an array buffer appears to contain GLTF data */
|
|
14
|
+
function isGLTF(arrayBuffer, options) {
|
|
15
|
+
const byteOffset = 0;
|
|
16
|
+
return (0, parse_glb_1.isGLB)(arrayBuffer, byteOffset, options);
|
|
14
17
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const promise = loadImages(gltf, options, context);
|
|
18
|
+
exports.isGLTF = isGLTF;
|
|
19
|
+
async function parseGLTF(gltf, arrayBufferOrString, byteOffset = 0, options, context) {
|
|
20
|
+
parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);
|
|
21
|
+
(0, normalize_gltf_v1_1.normalizeGLTFV1)(gltf, { normalize: options?.gltf?.normalize });
|
|
22
|
+
(0, gltf_extensions_1.preprocessExtensions)(gltf, options, context);
|
|
23
|
+
const promises = [];
|
|
24
|
+
// Load linked buffers asynchronously and decodes base64 buffers in parallel
|
|
25
|
+
if (options?.gltf?.loadBuffers && gltf.json.buffers) {
|
|
26
|
+
await loadBuffers(gltf, options, context);
|
|
27
|
+
}
|
|
28
|
+
if (options?.gltf?.loadImages) {
|
|
29
|
+
const promise = loadImages(gltf, options, context);
|
|
30
|
+
promises.push(promise);
|
|
31
|
+
}
|
|
32
|
+
const promise = (0, gltf_extensions_1.decodeExtensions)(gltf, options, context);
|
|
31
33
|
promises.push(promise);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
promises.push(promise);
|
|
36
|
-
await Promise.all(promises);
|
|
37
|
-
return options !== null && options !== void 0 && (_options$gltf4 = options.gltf) !== null && _options$gltf4 !== void 0 && _options$gltf4.postProcess ? postProcessGLTF(gltf, options) : gltf;
|
|
34
|
+
// Parallelize image loading and buffer loading/extension decoding
|
|
35
|
+
await Promise.all(promises);
|
|
36
|
+
return gltf;
|
|
38
37
|
}
|
|
39
|
-
|
|
38
|
+
exports.parseGLTF = parseGLTF;
|
|
39
|
+
/**
|
|
40
|
+
*
|
|
41
|
+
* @param gltf
|
|
42
|
+
* @param data - can be ArrayBuffer (GLB), ArrayBuffer (Binary JSON), String (JSON), or Object (parsed JSON)
|
|
43
|
+
* @param byteOffset
|
|
44
|
+
* @param options
|
|
45
|
+
*/
|
|
40
46
|
function parseGLTFContainerSync(gltf, data, byteOffset, options) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
47
|
+
// Initialize gltf container
|
|
48
|
+
if (options.uri) {
|
|
49
|
+
gltf.baseUri = options.uri;
|
|
50
|
+
}
|
|
51
|
+
// If data is binary and starting with magic bytes, assume binary JSON text, convert to string
|
|
52
|
+
if (data instanceof ArrayBuffer && !(0, parse_glb_1.isGLB)(data, byteOffset, options)) {
|
|
53
|
+
const textDecoder = new TextDecoder();
|
|
54
|
+
data = textDecoder.decode(data);
|
|
55
|
+
}
|
|
56
|
+
if (typeof data === 'string') {
|
|
57
|
+
// If string, try to parse as JSON
|
|
58
|
+
gltf.json = (0, loader_utils_1.parseJSON)(data);
|
|
59
|
+
}
|
|
60
|
+
else if (data instanceof ArrayBuffer) {
|
|
61
|
+
// If still ArrayBuffer, parse as GLB container
|
|
62
|
+
const glb = {};
|
|
63
|
+
byteOffset = (0, parse_glb_1.parseGLBSync)(glb, data, byteOffset, options.glb);
|
|
64
|
+
(0, assert_1.assert)(glb.type === 'glTF', `Invalid GLB magic string ${glb.type}`);
|
|
65
|
+
gltf._glb = glb;
|
|
66
|
+
gltf.json = glb.json;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
(0, assert_1.assert)(false, 'GLTF: must be ArrayBuffer or string');
|
|
70
|
+
}
|
|
71
|
+
// Populate buffers
|
|
72
|
+
// Create an external buffers array to hold binary data
|
|
73
|
+
const buffers = gltf.json.buffers || [];
|
|
74
|
+
gltf.buffers = new Array(buffers.length).fill(null);
|
|
75
|
+
// Populates JSON and some bin chunk info
|
|
76
|
+
if (gltf._glb && gltf._glb.header.hasBinChunk) {
|
|
77
|
+
const { binChunks } = gltf._glb;
|
|
78
|
+
gltf.buffers[0] = {
|
|
79
|
+
arrayBuffer: binChunks[0].arrayBuffer,
|
|
80
|
+
byteOffset: binChunks[0].byteOffset,
|
|
81
|
+
byteLength: binChunks[0].byteLength
|
|
82
|
+
};
|
|
83
|
+
// TODO - this modifies JSON and is a post processing thing
|
|
84
|
+
// gltf.json.buffers[0].data = gltf.buffers[0].arrayBuffer;
|
|
85
|
+
// gltf.json.buffers[0].byteOffset = gltf.buffers[0].byteOffset;
|
|
86
|
+
}
|
|
87
|
+
// Populate images
|
|
88
|
+
const images = gltf.json.images || [];
|
|
89
|
+
gltf.images = new Array(images.length).fill({});
|
|
78
90
|
}
|
|
79
|
-
|
|
91
|
+
/** Asynchronously fetch and parse buffers, store in buffers array outside of json
|
|
92
|
+
* TODO - traverse gltf and determine which buffers are actually needed
|
|
93
|
+
*/
|
|
80
94
|
async function loadBuffers(gltf, options, context) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
95
|
+
// TODO
|
|
96
|
+
const buffers = gltf.json.buffers || [];
|
|
97
|
+
for (let i = 0; i < buffers.length; ++i) {
|
|
98
|
+
const buffer = buffers[i];
|
|
99
|
+
if (buffer.uri) {
|
|
100
|
+
const { fetch } = context;
|
|
101
|
+
(0, assert_1.assert)(fetch);
|
|
102
|
+
const uri = (0, resolve_url_1.resolveUrl)(buffer.uri, options);
|
|
103
|
+
const response = await context?.fetch?.(uri);
|
|
104
|
+
const arrayBuffer = await response?.arrayBuffer?.();
|
|
105
|
+
gltf.buffers[i] = {
|
|
106
|
+
arrayBuffer,
|
|
107
|
+
byteOffset: 0,
|
|
108
|
+
byteLength: arrayBuffer.byteLength
|
|
109
|
+
};
|
|
110
|
+
delete buffer.uri;
|
|
111
|
+
}
|
|
112
|
+
else if (gltf.buffers[i] === null) {
|
|
113
|
+
gltf.buffers[i] = {
|
|
114
|
+
arrayBuffer: new ArrayBuffer(buffer.byteLength),
|
|
115
|
+
byteOffset: 0,
|
|
116
|
+
byteLength: buffer.byteLength
|
|
117
|
+
};
|
|
118
|
+
}
|
|
102
119
|
}
|
|
103
|
-
}
|
|
104
120
|
}
|
|
105
|
-
|
|
121
|
+
/**
|
|
122
|
+
* Loads all images
|
|
123
|
+
* TODO - traverse gltf and determine which images are actually needed
|
|
124
|
+
* @param gltf
|
|
125
|
+
* @param options
|
|
126
|
+
* @param context
|
|
127
|
+
* @returns
|
|
128
|
+
*/
|
|
106
129
|
async function loadImages(gltf, options, context) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
return await Promise.all(promises);
|
|
130
|
+
const imageIndices = getReferencesImageIndices(gltf);
|
|
131
|
+
const images = gltf.json.images || [];
|
|
132
|
+
const promises = [];
|
|
133
|
+
for (const imageIndex of imageIndices) {
|
|
134
|
+
promises.push(loadImage(gltf, images[imageIndex], imageIndex, options, context));
|
|
135
|
+
}
|
|
136
|
+
return await Promise.all(promises);
|
|
116
137
|
}
|
|
117
|
-
|
|
138
|
+
/** Make sure we only load images that are actually referenced by textures */
|
|
118
139
|
function getReferencesImageIndices(gltf) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
140
|
+
const imageIndices = new Set();
|
|
141
|
+
const textures = gltf.json.textures || [];
|
|
142
|
+
for (const texture of textures) {
|
|
143
|
+
if (texture.source !== undefined) {
|
|
144
|
+
imageIndices.add(texture.source);
|
|
145
|
+
}
|
|
125
146
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
return Array.from(imageIndices).sort();
|
|
147
|
+
return Array.from(imageIndices).sort();
|
|
129
148
|
}
|
|
130
|
-
|
|
149
|
+
/** Asynchronously fetches and parses one image, store in images array outside of json */
|
|
131
150
|
async function loadImage(gltf, image, index, options, context) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
151
|
+
const { fetch, parse } = context;
|
|
152
|
+
let arrayBuffer;
|
|
153
|
+
if (image.uri && !image.hasOwnProperty('bufferView')) {
|
|
154
|
+
const uri = (0, resolve_url_1.resolveUrl)(image.uri, options);
|
|
155
|
+
const response = await fetch(uri);
|
|
156
|
+
arrayBuffer = await response.arrayBuffer();
|
|
157
|
+
image.bufferView = {
|
|
158
|
+
data: arrayBuffer
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
if (Number.isFinite(image.bufferView)) {
|
|
162
|
+
const array = (0, get_typed_array_1.getTypedArrayForBufferView)(gltf.json, gltf.buffers, image.bufferView);
|
|
163
|
+
arrayBuffer = (0, loader_utils_1.sliceArrayBuffer)(array.buffer, array.byteOffset, array.byteLength);
|
|
164
|
+
}
|
|
165
|
+
(0, assert_1.assert)(arrayBuffer, 'glTF image has no data');
|
|
166
|
+
// Call `parse`
|
|
167
|
+
let parsedImage = await parse(arrayBuffer, [images_1.ImageLoader, textures_1.BasisLoader], { mimeType: image.mimeType, basis: options.basis || { format: (0, textures_1.selectSupportedBasisFormat)() } }, context);
|
|
168
|
+
if (parsedImage && parsedImage[0]) {
|
|
169
|
+
parsedImage = {
|
|
170
|
+
compressed: true,
|
|
171
|
+
mipmaps: false,
|
|
172
|
+
width: parsedImage[0].width,
|
|
173
|
+
height: parsedImage[0].height,
|
|
174
|
+
data: parsedImage[0]
|
|
175
|
+
};
|
|
154
176
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
mipmaps: false,
|
|
161
|
-
width: parsedImage[0].width,
|
|
162
|
-
height: parsedImage[0].height,
|
|
163
|
-
data: parsedImage[0]
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
gltf.images = gltf.images || [];
|
|
168
|
-
gltf.images[index] = parsedImage;
|
|
177
|
+
// TODO making sure ImageLoader is overridable by using array of loaders
|
|
178
|
+
// const parsedImage = await parse(arrayBuffer, [ImageLoader]);
|
|
179
|
+
// Store the loaded image
|
|
180
|
+
gltf.images = gltf.images || [];
|
|
181
|
+
gltf.images[index] = parsedImage;
|
|
169
182
|
}
|
|
170
|
-
//# sourceMappingURL=parse-gltf.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type GLBBinChunk = {
|
|
2
2
|
byteOffset: number;
|
|
3
3
|
byteLength: number;
|
|
4
4
|
arrayBuffer: ArrayBuffer;
|
|
5
5
|
};
|
|
6
|
-
export
|
|
6
|
+
export type GLB = {
|
|
7
7
|
type: string;
|
|
8
8
|
version: number;
|
|
9
9
|
header: {
|
|
@@ -11,7 +11,7 @@ export declare type GLB = {
|
|
|
11
11
|
byteLength: number;
|
|
12
12
|
hasBinChunk: boolean;
|
|
13
13
|
};
|
|
14
|
-
json:
|
|
14
|
+
json: Record<string, any>;
|
|
15
15
|
binChunks: GLBBinChunk[];
|
|
16
16
|
};
|
|
17
17
|
//# sourceMappingURL=glb-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glb-types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/glb-types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"glb-types.d.ts","sourceRoot":"","sources":["../../../src/lib/types/glb-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAGhB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IAGF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|