@loaders.gl/scene 5.0.0-beta.1 → 5.0.0-beta.10
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/DRACO-README.md +15 -0
- package/GLTF-README.md +1 -1
- package/OBJ-README.md +1 -1
- package/README.md +13 -2
- package/THIRD-PARTY-NOTICES.md +10 -1
- package/dist/dist.dev.js +21207 -14204
- package/dist/dist.min.js +32 -24
- package/dist/draco/bundled.cjs +34 -0
- package/dist/draco/bundled.cjs.map +7 -0
- package/dist/draco/bundled.d.ts +5 -0
- package/dist/draco/bundled.d.ts.map +1 -0
- package/dist/draco/bundled.js +6 -0
- package/dist/draco/bundled.js.map +1 -0
- package/dist/draco/draco-format.cjs +41 -0
- package/dist/draco/draco-format.cjs.map +7 -0
- package/dist/draco/draco-format.d.ts +15 -0
- package/dist/draco/draco-format.d.ts.map +1 -0
- package/dist/draco/draco-format.js +18 -0
- package/dist/draco/draco-format.js.map +1 -0
- package/dist/draco/draco-javascript-loader-with-parser.cjs +47 -0
- package/dist/draco/draco-javascript-loader-with-parser.cjs.map +7 -0
- package/dist/draco/draco-javascript-loader-with-parser.d.ts +36 -0
- package/dist/draco/draco-javascript-loader-with-parser.d.ts.map +1 -0
- package/dist/draco/draco-javascript-loader-with-parser.js +14 -0
- package/dist/draco/draco-javascript-loader-with-parser.js.map +1 -0
- package/dist/draco/draco-libraries.cjs +61 -0
- package/dist/draco/draco-libraries.cjs.map +7 -0
- package/dist/draco/draco-libraries.d.ts +28 -0
- package/dist/draco/draco-libraries.d.ts.map +1 -0
- package/dist/draco/draco-libraries.js +33 -0
- package/dist/draco/draco-libraries.js.map +1 -0
- package/dist/draco/draco-library-options.cjs +80 -0
- package/dist/draco/draco-library-options.cjs.map +7 -0
- package/dist/draco/draco-library-options.d.ts +16 -0
- package/dist/draco/draco-library-options.d.ts.map +1 -0
- package/dist/draco/draco-library-options.js +52 -0
- package/dist/draco/draco-library-options.js.map +1 -0
- package/dist/draco/draco-loader-options.cjs +37 -0
- package/dist/draco/draco-loader-options.cjs.map +7 -0
- package/dist/draco/draco-loader-options.d.ts +27 -0
- package/dist/draco/draco-loader-options.d.ts.map +1 -0
- package/dist/draco/draco-loader-options.js +12 -0
- package/dist/draco/draco-loader-options.js.map +1 -0
- package/dist/draco/draco-loader-types.cjs +87 -0
- package/dist/draco/draco-loader-types.cjs.map +7 -0
- package/dist/draco/draco-loader-types.d.ts +41 -0
- package/dist/draco/draco-loader-types.d.ts.map +1 -0
- package/dist/draco/draco-loader-types.js +54 -0
- package/dist/draco/draco-loader-types.js.map +1 -0
- package/dist/draco/draco-loader.cjs +51 -0
- package/dist/draco/draco-loader.cjs.map +7 -0
- package/dist/draco/draco-loader.d.ts +41 -0
- package/dist/draco/draco-loader.d.ts.map +1 -0
- package/dist/draco/draco-loader.js +22 -0
- package/dist/draco/draco-loader.js.map +1 -0
- package/dist/draco/draco-wasm-loader-with-parser.cjs +48 -0
- package/dist/draco/draco-wasm-loader-with-parser.cjs.map +7 -0
- package/dist/draco/draco-wasm-loader-with-parser.d.ts +36 -0
- package/dist/draco/draco-wasm-loader-with-parser.d.ts.map +1 -0
- package/dist/draco/draco-wasm-loader-with-parser.js +14 -0
- package/dist/draco/draco-wasm-loader-with-parser.js.map +1 -0
- package/dist/draco/draco-writer.cjs +183 -0
- package/dist/draco/draco-writer.cjs.map +7 -0
- package/dist/draco/draco-writer.d.ts +98 -0
- package/dist/draco/draco-writer.d.ts.map +1 -0
- package/dist/draco/draco-writer.js +166 -0
- package/dist/draco/draco-writer.js.map +1 -0
- package/dist/draco/draco3d/draco3d-types.cjs +76 -0
- package/dist/draco/draco3d/draco3d-types.cjs.map +7 -0
- package/dist/draco/draco3d/draco3d-types.d.ts +303 -0
- package/dist/draco/draco3d/draco3d-types.d.ts.map +1 -0
- package/dist/draco/draco3d/draco3d-types.js +47 -0
- package/dist/draco/draco3d/draco3d-types.js.map +1 -0
- package/dist/draco/draco3d-loader-with-parser.cjs +50 -0
- package/dist/draco/draco3d-loader-with-parser.cjs.map +7 -0
- package/dist/draco/draco3d-loader-with-parser.d.ts +36 -0
- package/dist/draco/draco3d-loader-with-parser.d.ts.map +1 -0
- package/dist/draco/draco3d-loader-with-parser.js +21 -0
- package/dist/draco/draco3d-loader-with-parser.js.map +1 -0
- package/dist/draco/index.cjs +51 -0
- package/dist/draco/index.cjs.map +7 -0
- package/dist/draco/index.d.ts +11 -0
- package/dist/draco/index.d.ts.map +1 -0
- package/dist/draco/index.js +10 -0
- package/dist/draco/index.js.map +1 -0
- package/dist/draco/lib/draco-builder.cjs +660 -0
- package/dist/draco/lib/draco-builder.cjs.map +7 -0
- package/dist/draco/lib/draco-builder.d.ts +175 -0
- package/dist/draco/lib/draco-builder.d.ts.map +1 -0
- package/dist/draco/lib/draco-builder.js +612 -0
- package/dist/draco/lib/draco-builder.js.map +1 -0
- package/dist/draco/lib/draco-library-loader.cjs +47 -0
- package/dist/draco/lib/draco-library-loader.cjs.map +7 -0
- package/dist/draco/lib/draco-library-loader.d.ts +5 -0
- package/dist/draco/lib/draco-library-loader.d.ts.map +1 -0
- package/dist/draco/lib/draco-library-loader.js +23 -0
- package/dist/draco/lib/draco-library-loader.js.map +1 -0
- package/dist/draco/lib/draco-module-loader.cjs +281 -0
- package/dist/draco/lib/draco-module-loader.cjs.map +7 -0
- package/dist/draco/lib/draco-module-loader.d.ts +25 -0
- package/dist/draco/lib/draco-module-loader.d.ts.map +1 -0
- package/dist/draco/lib/draco-module-loader.js +220 -0
- package/dist/draco/lib/draco-module-loader.js.map +1 -0
- package/dist/draco/lib/draco-parser.cjs +601 -0
- package/dist/draco/lib/draco-parser.cjs.map +7 -0
- package/dist/draco/lib/draco-parser.d.ts +143 -0
- package/dist/draco/lib/draco-parser.d.ts.map +1 -0
- package/dist/draco/lib/draco-parser.js +598 -0
- package/dist/draco/lib/draco-parser.js.map +1 -0
- package/dist/draco/lib/draco-types.cjs +19 -0
- package/dist/draco/lib/draco-types.cjs.map +7 -0
- package/dist/draco/lib/draco-types.d.ts +59 -0
- package/dist/draco/lib/draco-types.d.ts.map +1 -0
- package/dist/draco/lib/draco-types.js +5 -0
- package/dist/draco/lib/draco-types.js.map +1 -0
- package/dist/draco/lib/parse-draco.cjs +60 -0
- package/dist/draco/lib/parse-draco.cjs.map +7 -0
- package/dist/draco/lib/parse-draco.d.ts +22 -0
- package/dist/draco/lib/parse-draco.d.ts.map +1 -0
- package/dist/draco/lib/parse-draco.js +33 -0
- package/dist/draco/lib/parse-draco.js.map +1 -0
- package/dist/draco/lib/utils/get-draco-schema.cjs +74 -0
- package/dist/draco/lib/utils/get-draco-schema.cjs.map +7 -0
- package/dist/draco/lib/utils/get-draco-schema.d.ts +7 -0
- package/dist/draco/lib/utils/get-draco-schema.d.ts.map +1 -0
- package/dist/draco/lib/utils/get-draco-schema.js +45 -0
- package/dist/draco/lib/utils/get-draco-schema.js.map +1 -0
- package/dist/draco/lib/utils/version.cjs +31 -0
- package/dist/draco/lib/utils/version.cjs.map +7 -0
- package/dist/draco/lib/utils/version.d.ts +2 -0
- package/dist/draco/lib/utils/version.d.ts.map +1 -0
- package/dist/draco/lib/utils/version.js +8 -0
- package/dist/draco/lib/utils/version.js.map +1 -0
- package/dist/draco/unbundled.cjs +31 -0
- package/dist/draco/unbundled.cjs.map +7 -0
- package/dist/draco/unbundled.d.ts +3 -0
- package/dist/draco/unbundled.d.ts.map +1 -0
- package/dist/draco/unbundled.js +5 -0
- package/dist/draco/unbundled.js.map +1 -0
- package/dist/draco/workers/draco-worker-node.cjs +8 -0
- package/dist/draco/workers/draco-worker-node.cjs.map +7 -0
- package/dist/draco/workers/draco-worker-node.d.ts +2 -0
- package/dist/draco/workers/draco-worker-node.d.ts.map +1 -0
- package/dist/draco/workers/draco-worker-node.js +9 -0
- package/dist/draco/workers/draco-worker-node.js.map +1 -0
- package/dist/draco/workers/draco-worker.cjs +7 -0
- package/dist/draco/workers/draco-worker.cjs.map +7 -0
- package/dist/draco/workers/draco-worker.d.ts +2 -0
- package/dist/draco/workers/draco-worker.d.ts.map +1 -0
- package/dist/draco/workers/draco-worker.js +7 -0
- package/dist/draco/workers/draco-worker.js.map +1 -0
- package/dist/draco/workers/draco-writer-worker-node.cjs +11 -0
- package/dist/draco/workers/draco-writer-worker-node.cjs.map +7 -0
- package/dist/draco/workers/draco-writer-worker-node.d.cts +2 -0
- package/dist/draco/workers/draco-writer-worker-node.d.cts.map +1 -0
- package/dist/draco/workers/draco-writer-worker-node.d.ts +2 -0
- package/dist/draco/workers/draco-writer-worker-node.d.ts.map +1 -0
- package/dist/draco/workers/draco-writer-worker-node.js +9 -0
- package/dist/draco/workers/draco-writer-worker-node.js.map +1 -0
- package/dist/draco/workers/draco-writer-worker.cjs +10 -0
- package/dist/draco/workers/draco-writer-worker.cjs.map +7 -0
- package/dist/draco/workers/draco-writer-worker.d.ts +2 -0
- package/dist/draco/workers/draco-writer-worker.d.ts.map +1 -0
- package/dist/draco/workers/draco-writer-worker.js +7 -0
- package/dist/draco/workers/draco-writer-worker.js.map +1 -0
- package/dist/draco-javascript-loader.cjs +25 -0
- package/dist/draco-javascript-loader.cjs.map +7 -0
- package/dist/draco-javascript-loader.d.ts +2 -0
- package/dist/draco-javascript-loader.d.ts.map +1 -0
- package/dist/draco-javascript-loader.js +3 -0
- package/dist/draco-javascript-loader.js.map +1 -0
- package/dist/draco-library-options.cjs +36 -0
- package/dist/draco-library-options.cjs.map +7 -0
- package/dist/draco-library-options.d.ts +3 -0
- package/dist/draco-library-options.d.ts.map +1 -0
- package/dist/draco-library-options.js +4 -0
- package/dist/draco-library-options.js.map +1 -0
- package/dist/draco-loader-types.cjs +25 -0
- package/dist/draco-loader-types.cjs.map +7 -0
- package/dist/draco-loader-types.d.ts +2 -0
- package/dist/draco-loader-types.d.ts.map +1 -0
- package/dist/draco-loader-types.js +3 -0
- package/dist/draco-loader-types.js.map +1 -0
- package/dist/draco-loader.cjs +25 -0
- package/dist/draco-loader.cjs.map +7 -0
- package/dist/draco-loader.d.ts +2 -0
- package/dist/draco-loader.d.ts.map +1 -0
- package/dist/draco-loader.js +3 -0
- package/dist/draco-loader.js.map +1 -0
- package/dist/draco-wasm-loader.cjs +25 -0
- package/dist/draco-wasm-loader.cjs.map +7 -0
- package/dist/draco-wasm-loader.d.ts +2 -0
- package/dist/draco-wasm-loader.d.ts.map +1 -0
- package/dist/draco-wasm-loader.js +3 -0
- package/dist/draco-wasm-loader.js.map +1 -0
- package/dist/draco-worker-node.js +29842 -0
- package/dist/draco-worker-node.js.map +7 -0
- package/dist/draco-worker.js +19668 -0
- package/dist/draco-worker.js.map +7 -0
- package/dist/draco-writer-worker-node.cjs +30022 -0
- package/dist/draco-writer-worker-node.cjs.map +7 -0
- package/dist/draco-writer-worker.js +19767 -0
- package/dist/draco-writer-worker.js.map +7 -0
- package/dist/draco-writer.cjs +25 -0
- package/dist/draco-writer.cjs.map +7 -0
- package/dist/draco-writer.d.ts +2 -0
- package/dist/draco-writer.d.ts.map +1 -0
- package/dist/draco-writer.js +3 -0
- package/dist/draco-writer.js.map +1 -0
- package/dist/draco3d-loader.cjs +25 -0
- package/dist/draco3d-loader.cjs.map +7 -0
- package/dist/draco3d-loader.d.ts +2 -0
- package/dist/draco3d-loader.d.ts.map +1 -0
- package/dist/draco3d-loader.js +3 -0
- package/dist/draco3d-loader.js.map +1 -0
- package/dist/glb-loader-types.cjs +61 -0
- package/dist/glb-loader-types.cjs.map +7 -0
- package/dist/glb-loader-types.d.ts +2 -0
- package/dist/glb-loader-types.d.ts.map +1 -0
- package/dist/glb-loader-types.js +2 -0
- package/dist/glb-loader-types.js.map +1 -0
- package/dist/glb-loader.cjs +48 -0
- package/dist/glb-loader.cjs.map +7 -0
- package/dist/glb-loader.d.ts +2 -0
- package/dist/glb-loader.d.ts.map +1 -0
- package/dist/glb-loader.js +2 -0
- package/dist/glb-loader.js.map +1 -0
- package/dist/glb-writer.cjs +53 -0
- package/dist/glb-writer.cjs.map +7 -0
- package/dist/glb-writer.d.ts +2 -0
- package/dist/glb-writer.d.ts.map +1 -0
- package/dist/glb-writer.js +2 -0
- package/dist/glb-writer.js.map +1 -0
- package/dist/gltf/glb-loader-types.cjs +1 -1
- package/dist/gltf/glb-loader-types.cjs.map +2 -2
- package/dist/gltf/glb-loader-types.d.ts +2 -2
- package/dist/gltf/glb-loader-types.js +1 -1
- package/dist/gltf/glb-loader-types.js.map +1 -1
- package/dist/gltf/gltf-loader-types.cjs +1 -1
- package/dist/gltf/gltf-loader-types.cjs.map +2 -2
- package/dist/gltf/gltf-loader-types.d.ts +11 -5
- package/dist/gltf/gltf-loader-types.d.ts.map +1 -1
- package/dist/gltf/gltf-loader-types.js +1 -1
- package/dist/gltf/gltf-loader-types.js.map +1 -1
- package/dist/gltf/gltf-loader.cjs.map +1 -1
- package/dist/gltf/gltf-loader.d.ts +4 -4
- package/dist/gltf/gltf-loader.d.ts.map +1 -1
- package/dist/gltf/index.cjs +2 -0
- package/dist/gltf/index.cjs.map +2 -2
- package/dist/gltf/index.d.ts +2 -2
- package/dist/gltf/index.d.ts.map +1 -1
- package/dist/gltf/index.js +1 -1
- package/dist/gltf/index.js.map +1 -1
- package/dist/gltf/lib/api/gltf-extensions.cjs +7 -2
- package/dist/gltf/lib/api/gltf-extensions.cjs.map +2 -2
- package/dist/gltf/lib/api/gltf-extensions.d.ts.map +1 -1
- package/dist/gltf/lib/api/gltf-extensions.js +7 -5
- package/dist/gltf/lib/api/gltf-extensions.js.map +1 -1
- package/dist/gltf/lib/encoders/encode-gltf-draco.cjs +12 -2
- package/dist/gltf/lib/encoders/encode-gltf-draco.cjs.map +2 -2
- package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts +1 -1
- package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts.map +1 -1
- package/dist/gltf/lib/encoders/encode-gltf-draco.js +1 -1
- package/dist/gltf/lib/encoders/encode-gltf-draco.js.map +1 -1
- package/dist/gltf/lib/extensions/EXT_texture_webp.cjs +1 -0
- package/dist/gltf/lib/extensions/EXT_texture_webp.cjs.map +2 -2
- package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
- package/dist/gltf/lib/extensions/EXT_texture_webp.js +3 -0
- package/dist/gltf/lib/extensions/EXT_texture_webp.js.map +1 -1
- package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs +45 -0
- package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs.map +7 -0
- package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts +6 -0
- package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts.map +1 -0
- package/dist/gltf/lib/extensions/KHR_accessor_float64.js +20 -0
- package/dist/gltf/lib/extensions/KHR_accessor_float64.js.map +1 -0
- package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs +2 -2
- package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs.map +2 -2
- package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
- package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js +1 -1
- package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs +23 -7
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs.map +2 -2
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts +2 -1
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts.map +1 -1
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js +21 -5
- package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js.map +1 -1
- package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs +64 -0
- package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs.map +7 -0
- package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts +12 -0
- package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts.map +1 -0
- package/dist/gltf/lib/extensions/MSFT_texture_dds.js +39 -0
- package/dist/gltf/lib/extensions/MSFT_texture_dds.js.map +1 -0
- package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs +1 -1
- package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs.map +2 -2
- package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -1
- package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js +3 -1
- package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js.map +1 -1
- package/dist/gltf/lib/parsers/parse-gltf.cjs +34 -8
- package/dist/gltf/lib/parsers/parse-gltf.cjs.map +3 -3
- package/dist/gltf/lib/parsers/parse-gltf.d.ts +2 -0
- package/dist/gltf/lib/parsers/parse-gltf.d.ts.map +1 -1
- package/dist/gltf/lib/parsers/parse-gltf.js +26 -6
- package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -1
- package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs +22 -0
- package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs.map +2 -2
- package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts +23 -0
- package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts.map +1 -1
- package/dist/gltf/lib/types/gltf-additional-extension-schemas.js +22 -0
- package/dist/gltf/lib/types/gltf-additional-extension-schemas.js.map +1 -1
- package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs.map +1 -1
- package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts +1 -1
- package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts.map +1 -1
- package/dist/gltf/lib/types/gltf-extension-schemas.cjs +8 -0
- package/dist/gltf/lib/types/gltf-extension-schemas.cjs.map +2 -2
- package/dist/gltf/lib/types/gltf-extension-schemas.d.ts +27 -0
- package/dist/gltf/lib/types/gltf-extension-schemas.d.ts.map +1 -1
- package/dist/gltf/lib/types/gltf-extension-schemas.js +8 -1
- package/dist/gltf/lib/types/gltf-extension-schemas.js.map +1 -1
- package/dist/gltf/lib/types/gltf-json-schema.cjs.map +1 -1
- package/dist/gltf/lib/types/gltf-json-schema.d.ts +2 -2
- package/dist/gltf/lib/types/gltf-json-schema.d.ts.map +1 -1
- package/dist/gltf/lib/types/gltf-texture-procedurals.cjs +19 -0
- package/dist/gltf/lib/types/gltf-texture-procedurals.cjs.map +7 -0
- package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts +45 -0
- package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts.map +1 -0
- package/dist/gltf/lib/types/gltf-texture-procedurals.js +5 -0
- package/dist/gltf/lib/types/gltf-texture-procedurals.js.map +1 -0
- package/dist/gltf/lib/types/gltf-types.cjs.map +1 -1
- package/dist/gltf/lib/types/gltf-types.d.ts +7 -0
- package/dist/gltf/lib/types/gltf-types.d.ts.map +1 -1
- package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts +34 -0
- package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts.map +1 -1
- package/dist/gltf/lib/types/gltf-zod-schema.cjs +4 -1
- package/dist/gltf/lib/types/gltf-zod-schema.cjs.map +2 -2
- package/dist/gltf/lib/types/gltf-zod-schema.d.ts +57 -1
- package/dist/gltf/lib/types/gltf-zod-schema.d.ts.map +1 -1
- package/dist/gltf/lib/types/gltf-zod-schema.js +6 -2
- package/dist/gltf/lib/types/gltf-zod-schema.js.map +1 -1
- package/dist/gltf/lib/utils/version.cjs +1 -1
- package/dist/gltf/lib/utils/version.cjs.map +1 -1
- package/dist/gltf/lib/utils/version.js +1 -1
- package/dist/gltf/lib/utils/version.js.map +1 -1
- package/dist/gltf/schema.cjs +3 -0
- package/dist/gltf/schema.cjs.map +2 -2
- package/dist/gltf/schema.d.ts +1 -0
- package/dist/gltf/schema.d.ts.map +1 -1
- package/dist/gltf/schema.js +1 -0
- package/dist/gltf/schema.js.map +1 -1
- package/dist/gltf-loader-types.cjs +73 -0
- package/dist/gltf-loader-types.cjs.map +7 -0
- package/dist/gltf-loader-types.d.ts +2 -0
- package/dist/gltf-loader-types.d.ts.map +1 -0
- package/dist/gltf-loader-types.js +2 -0
- package/dist/gltf-loader-types.js.map +1 -0
- package/dist/gltf-loader.cjs +48 -0
- package/dist/gltf-loader.cjs.map +7 -0
- package/dist/gltf-loader.d.ts +2 -0
- package/dist/gltf-loader.d.ts.map +1 -0
- package/dist/gltf-loader.js +2 -0
- package/dist/gltf-loader.js.map +1 -0
- package/dist/gltf-source.cjs +238 -0
- package/dist/gltf-source.cjs.map +7 -0
- package/dist/gltf-source.d.ts +2 -0
- package/dist/gltf-source.d.ts.map +1 -0
- package/dist/gltf-source.js +2 -0
- package/dist/gltf-source.js.map +1 -0
- package/dist/gltf-writer.cjs +69 -0
- package/dist/gltf-writer.cjs.map +7 -0
- package/dist/gltf-writer.d.ts +2 -0
- package/dist/gltf-writer.d.ts.map +1 -0
- package/dist/gltf-writer.js +2 -0
- package/dist/gltf-writer.js.map +1 -0
- package/dist/index.cjs +18 -5
- package/dist/index.cjs.map +2 -2
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -3
- package/dist/index.js.map +1 -1
- package/dist/libs/DRACO-LICENSE +252 -0
- package/dist/libs/README.md +20 -0
- package/dist/libs/draco_decoder.js +34 -0
- package/dist/libs/draco_decoder.mjs +37 -0
- package/dist/libs/draco_decoder.wasm +0 -0
- package/dist/libs/draco_decoder_gltf.wasm +0 -0
- package/dist/libs/draco_encoder.js +98 -0
- package/dist/libs/draco_encoder.mjs +101 -0
- package/dist/libs/draco_encoder.wasm +0 -0
- package/dist/libs/draco_wasm_wrapper.js +117 -0
- package/dist/libs/draco_wasm_wrapper.mjs +120 -0
- package/dist/libs/draco_wasm_wrapper_gltf.js +116 -0
- package/dist/libs/draco_wasm_wrapper_gltf.mjs +119 -0
- package/dist/materialx/parse-materialx.cjs +61 -0
- package/dist/materialx/parse-materialx.cjs.map +7 -0
- package/dist/materialx/parse-materialx.d.ts +23 -0
- package/dist/materialx/parse-materialx.d.ts.map +1 -0
- package/dist/materialx/parse-materialx.js +39 -0
- package/dist/materialx/parse-materialx.js.map +1 -0
- package/dist/materialx/procedural-graph.cjs +77 -0
- package/dist/materialx/procedural-graph.cjs.map +7 -0
- package/dist/materialx/procedural-graph.d.ts +40 -0
- package/dist/materialx/procedural-graph.d.ts.map +1 -0
- package/dist/materialx/procedural-graph.js +59 -0
- package/dist/materialx/procedural-graph.js.map +1 -0
- package/dist/materialx-loader-types.cjs +57 -0
- package/dist/materialx-loader-types.cjs.map +7 -0
- package/dist/materialx-loader-types.d.ts +34 -0
- package/dist/materialx-loader-types.d.ts.map +1 -0
- package/dist/materialx-loader-types.js +20 -0
- package/dist/materialx-loader-types.js.map +1 -0
- package/dist/materialx-loader.cjs +40 -0
- package/dist/materialx-loader.cjs.map +7 -0
- package/dist/materialx-loader.d.ts +19 -0
- package/dist/materialx-loader.d.ts.map +1 -0
- package/dist/materialx-loader.js +14 -0
- package/dist/materialx-loader.js.map +1 -0
- package/dist/mtl-loader-types.cjs +61 -0
- package/dist/mtl-loader-types.cjs.map +7 -0
- package/dist/mtl-loader-types.d.ts +2 -0
- package/dist/mtl-loader-types.d.ts.map +1 -0
- package/dist/mtl-loader-types.js +2 -0
- package/dist/mtl-loader-types.js.map +1 -0
- package/dist/mtl-loader.cjs +47 -0
- package/dist/mtl-loader.cjs.map +7 -0
- package/dist/mtl-loader.d.ts +2 -0
- package/dist/mtl-loader.d.ts.map +1 -0
- package/dist/mtl-loader.js +2 -0
- package/dist/mtl-loader.js.map +1 -0
- package/dist/obj/bundled.cjs +2 -4
- package/dist/obj/bundled.cjs.map +2 -2
- package/dist/obj/bundled.d.ts +1 -1
- package/dist/obj/bundled.d.ts.map +1 -1
- package/dist/obj/bundled.js +1 -1
- package/dist/obj/bundled.js.map +1 -1
- package/dist/obj/index.cjs +0 -6
- package/dist/obj/index.cjs.map +3 -3
- package/dist/obj/index.d.ts +0 -4
- package/dist/obj/index.d.ts.map +1 -1
- package/dist/obj/index.js +0 -5
- package/dist/obj/index.js.map +1 -1
- package/dist/obj/mtl-loader-types.cjs +4 -7
- package/dist/obj/mtl-loader-types.cjs.map +2 -2
- package/dist/obj/mtl-loader-types.d.ts +2 -22
- package/dist/obj/mtl-loader-types.d.ts.map +1 -1
- package/dist/obj/mtl-loader-types.js +2 -4
- package/dist/obj/mtl-loader-types.js.map +1 -1
- package/dist/obj/mtl-loader.cjs +1 -1
- package/dist/obj/mtl-loader.cjs.map +2 -2
- package/dist/obj/mtl-loader.js +1 -1
- package/dist/obj/mtl-loader.js.map +1 -1
- package/dist/obj/obj-loader-types.cjs +9 -10
- package/dist/obj/obj-loader-types.cjs.map +2 -2
- package/dist/obj/obj-loader-types.d.ts +19 -39
- package/dist/obj/obj-loader-types.d.ts.map +1 -1
- package/dist/obj/obj-loader-types.js +6 -6
- package/dist/obj/obj-loader-types.js.map +1 -1
- package/dist/obj/obj-loader.cjs +63 -31
- package/dist/obj/obj-loader.cjs.map +3 -3
- package/dist/obj/obj-loader.d.ts +43 -9
- package/dist/obj/obj-loader.d.ts.map +1 -1
- package/dist/obj/obj-loader.js +61 -22
- package/dist/obj/obj-loader.js.map +1 -1
- package/dist/obj/obj-writer.cjs +3 -3
- package/dist/obj/obj-writer.cjs.map +2 -2
- package/dist/obj/obj-writer.d.ts +5 -4
- package/dist/obj/obj-writer.d.ts.map +1 -1
- package/dist/obj/obj-writer.js +4 -4
- package/dist/obj/obj-writer.js.map +1 -1
- package/dist/obj/unbundled.cjs +2 -6
- package/dist/obj/unbundled.cjs.map +2 -2
- package/dist/obj/unbundled.d.ts +2 -2
- package/dist/obj/unbundled.d.ts.map +1 -1
- package/dist/obj/unbundled.js +2 -2
- package/dist/obj/unbundled.js.map +1 -1
- package/dist/obj/workers/obj-worker.cjs +5 -5
- package/dist/obj/workers/obj-worker.cjs.map +2 -2
- package/dist/obj/workers/obj-worker.js +6 -6
- package/dist/obj/workers/obj-worker.js.map +1 -1
- package/dist/obj-loader-types.cjs +70 -0
- package/dist/obj-loader-types.cjs.map +7 -0
- package/dist/obj-loader-types.d.ts +2 -0
- package/dist/obj-loader-types.d.ts.map +1 -0
- package/dist/obj-loader-types.js +2 -0
- package/dist/obj-loader-types.js.map +1 -0
- package/dist/obj-loader.cjs +195 -0
- package/dist/obj-loader.cjs.map +7 -0
- package/dist/obj-loader.d.ts +2 -0
- package/dist/obj-loader.d.ts.map +1 -0
- package/dist/obj-loader.js +2 -0
- package/dist/obj-loader.js.map +1 -0
- package/dist/obj-worker.js +1420 -406
- package/dist/obj-writer.cjs +167 -0
- package/dist/obj-writer.cjs.map +7 -0
- package/dist/obj-writer.d.ts +2 -0
- package/dist/obj-writer.d.ts.map +1 -0
- package/dist/obj-writer.js +2 -0
- package/dist/obj-writer.js.map +1 -0
- package/dist/stl/parse-stl.cjs +100 -0
- package/dist/stl/parse-stl.cjs.map +7 -0
- package/dist/stl/parse-stl.d.ts +4 -0
- package/dist/stl/parse-stl.d.ts.map +1 -0
- package/dist/stl/parse-stl.js +84 -0
- package/dist/stl/parse-stl.js.map +1 -0
- package/dist/stl-loader-types.cjs +58 -0
- package/dist/stl-loader-types.cjs.map +7 -0
- package/dist/stl-loader-types.d.ts +32 -0
- package/dist/stl-loader-types.d.ts.map +1 -0
- package/dist/stl-loader-types.js +25 -0
- package/dist/stl-loader-types.js.map +1 -0
- package/dist/stl-loader.cjs +38 -0
- package/dist/stl-loader.cjs.map +7 -0
- package/dist/stl-loader.d.ts +17 -0
- package/dist/stl-loader.d.ts.map +1 -0
- package/dist/stl-loader.js +13 -0
- package/dist/stl-loader.js.map +1 -0
- package/dist/usd/index.cjs.map +1 -1
- package/dist/usd/index.d.ts +1 -1
- package/dist/usd/index.d.ts.map +1 -1
- package/dist/usd/lib/parse-usd.cjs +42 -5
- package/dist/usd/lib/parse-usd.cjs.map +2 -2
- package/dist/usd/lib/parse-usd.d.ts.map +1 -1
- package/dist/usd/lib/parse-usd.js +53 -6
- package/dist/usd/lib/parse-usd.js.map +1 -1
- package/dist/usd/lib/parse-usdc.cjs +187 -0
- package/dist/usd/lib/parse-usdc.cjs.map +7 -0
- package/dist/usd/lib/parse-usdc.d.ts +4 -0
- package/dist/usd/lib/parse-usdc.d.ts.map +1 -0
- package/dist/usd/lib/parse-usdc.js +176 -0
- package/dist/usd/lib/parse-usdc.js.map +1 -0
- package/dist/usd/lib/parse-usdz.cjs +22 -0
- package/dist/usd/lib/parse-usdz.cjs.map +2 -2
- package/dist/usd/lib/parse-usdz.d.ts.map +1 -1
- package/dist/usd/lib/parse-usdz.js +26 -0
- package/dist/usd/lib/parse-usdz.js.map +1 -1
- package/dist/usd/lib/usd-types.cjs.map +1 -1
- package/dist/usd/lib/usd-types.d.ts +14 -1
- package/dist/usd/lib/usd-types.d.ts.map +1 -1
- package/dist/usd/lib/usd-types.js +1 -1
- package/dist/usd/lib/usd-types.js.map +1 -1
- package/dist/usd/libs/README.md +27 -0
- package/dist/usd/libs/THREE-LICENSE +21 -0
- package/dist/usd/libs/usdc-parser.d.ts +78 -0
- package/dist/usd/libs/usdc-parser.d.ts.map +1 -0
- package/dist/usd/libs/usdc-parser.js +1669 -0
- package/dist/usd/libs/usdc-parser.js.map +1 -0
- package/dist/usd/usd-loader-types.cjs +5 -5
- package/dist/usd/usd-loader-types.cjs.map +2 -2
- package/dist/usd/usd-loader-types.d.ts +7 -7
- package/dist/usd/usd-loader-types.d.ts.map +1 -1
- package/dist/usd/usd-loader-types.js +7 -7
- package/dist/usd/usd-loader-types.js.map +1 -1
- package/dist/usd/usd-loader.cjs.map +1 -1
- package/dist/usd/usd-loader.d.ts +4 -4
- package/dist/usd/usd-loader.d.ts.map +1 -1
- package/dist/usd/usd-loader.js +2 -2
- package/dist/usd/usd-loader.js.map +1 -1
- package/dist/usd-loader-types.cjs +69 -0
- package/dist/usd-loader-types.cjs.map +7 -0
- package/dist/usd-loader-types.d.ts +2 -0
- package/dist/usd-loader-types.d.ts.map +1 -0
- package/dist/usd-loader-types.js +2 -0
- package/dist/usd-loader-types.js.map +1 -0
- package/dist/usd-loader.cjs +43 -0
- package/dist/usd-loader.cjs.map +7 -0
- package/dist/usd-loader.d.ts +2 -0
- package/dist/usd-loader.d.ts.map +1 -0
- package/dist/usd-loader.js +2 -0
- package/dist/usd-loader.js.map +1 -0
- package/package.json +144 -72
- package/src/draco/bundled.ts +9 -0
- package/src/draco/draco-format.ts +20 -0
- package/src/draco/draco-javascript-loader-with-parser.ts +30 -0
- package/src/draco/draco-libraries.ts +35 -0
- package/src/draco/draco-library-options.ts +76 -0
- package/src/draco/draco-loader-options.ts +33 -0
- package/src/draco/draco-loader-types.ts +77 -0
- package/src/draco/draco-loader.ts +45 -0
- package/src/draco/draco-wasm-loader-with-parser.ts +31 -0
- package/src/draco/draco-writer.ts +254 -0
- package/src/draco/draco3d/draco3d-types.ts +498 -0
- package/src/draco/draco3d-loader-with-parser.ts +34 -0
- package/src/draco/index.ts +42 -0
- package/src/draco/lib/draco-builder.ts +935 -0
- package/src/draco/lib/draco-library-loader.ts +38 -0
- package/src/draco/lib/draco-module-loader.ts +370 -0
- package/src/draco/lib/draco-parser.ts +779 -0
- package/src/draco/lib/draco-types.ts +72 -0
- package/src/draco/lib/parse-draco.ts +52 -0
- package/src/draco/lib/utils/get-draco-schema.ts +65 -0
- package/src/draco/lib/utils/version.ts +8 -0
- package/src/draco/libs/DRACO-LICENSE +252 -0
- package/src/draco/libs/README.md +20 -0
- package/src/draco/libs/draco_decoder.js +34 -0
- package/src/draco/libs/draco_decoder.wasm +0 -0
- package/src/draco/libs/draco_decoder_gltf.wasm +0 -0
- package/src/draco/libs/draco_encoder.js +98 -0
- package/src/draco/libs/draco_encoder.wasm +0 -0
- package/src/draco/libs/draco_wasm_wrapper.js +117 -0
- package/src/draco/libs/draco_wasm_wrapper_gltf.js +116 -0
- package/src/draco/unbundled.ts +6 -0
- package/src/draco/workers/draco-worker-node.ts +10 -0
- package/src/draco/workers/draco-worker.ts +8 -0
- package/src/draco/workers/draco-writer-worker-node.cjs +21 -0
- package/src/draco/workers/draco-writer-worker-node.ts +13 -0
- package/src/draco/workers/draco-writer-worker.ts +11 -0
- package/src/draco-javascript-loader.ts +2 -0
- package/src/draco-library-options.ts +6 -0
- package/src/draco-loader-types.ts +2 -0
- package/src/draco-loader.ts +2 -0
- package/src/draco-wasm-loader.ts +2 -0
- package/src/draco-writer.ts +2 -0
- package/src/draco3d-loader.ts +2 -0
- package/src/glb-loader-types.ts +1 -0
- package/src/glb-loader.ts +1 -0
- package/src/glb-writer.ts +1 -0
- package/src/gltf/glb-loader-types.ts +1 -1
- package/src/gltf/gltf-loader-types.ts +11 -5
- package/src/gltf/gltf-loader.ts +4 -4
- package/src/gltf/index.ts +4 -1
- package/src/gltf/lib/api/gltf-extensions.ts +7 -2
- package/src/gltf/lib/encoders/encode-gltf-draco.ts +2 -2
- package/src/gltf/lib/extensions/EXT_texture_webp.ts +3 -0
- package/src/gltf/lib/extensions/KHR_accessor_float64.ts +22 -0
- package/src/gltf/lib/extensions/KHR_draco_mesh_compression.ts +2 -1
- package/src/gltf/lib/extensions/KHR_gaussian_splatting.ts +31 -7
- package/src/gltf/lib/extensions/MSFT_texture_dds.ts +52 -0
- package/src/gltf/lib/extensions/utils/3d-tiles-utils.ts +5 -1
- package/src/gltf/lib/parsers/parse-gltf.ts +38 -6
- package/src/gltf/lib/types/gltf-additional-extension-schemas.ts +32 -0
- package/src/gltf/lib/types/gltf-ext-gaussian-splatting-schema.ts +1 -1
- package/src/gltf/lib/types/gltf-extension-schemas.ts +12 -0
- package/src/gltf/lib/types/gltf-json-schema.ts +2 -1
- package/src/gltf/lib/types/gltf-texture-procedurals.ts +67 -0
- package/src/gltf/lib/types/gltf-types.ts +8 -0
- package/src/gltf/lib/types/gltf-zod-schema.ts +7 -1
- package/src/gltf/schema.ts +1 -0
- package/src/gltf-loader-types.ts +1 -0
- package/src/gltf-loader.ts +1 -0
- package/src/gltf-source.ts +1 -0
- package/src/gltf-writer.ts +1 -0
- package/src/index.ts +13 -3
- package/src/materialx/README.md +5 -0
- package/src/materialx/parse-materialx.ts +70 -0
- package/src/materialx/procedural-graph.ts +94 -0
- package/src/materialx-loader-types.ts +24 -0
- package/src/materialx-loader.ts +15 -0
- package/src/mtl-loader-types.ts +1 -0
- package/src/mtl-loader.ts +1 -0
- package/src/obj/bundled.ts +1 -4
- package/src/obj/index.ts +0 -6
- package/src/obj/mtl-loader-types.ts +1 -4
- package/src/obj/mtl-loader.ts +1 -1
- package/src/obj/obj-loader-types.ts +11 -11
- package/src/obj/obj-loader.ts +87 -37
- package/src/obj/obj-writer.ts +12 -8
- package/src/obj/unbundled.ts +2 -2
- package/src/obj/workers/obj-worker.ts +6 -6
- package/src/obj-loader-types.ts +1 -0
- package/src/obj-loader.ts +1 -0
- package/src/obj-writer.ts +1 -0
- package/src/stl/parse-stl.ts +90 -0
- package/src/stl-loader-types.ts +28 -0
- package/src/stl-loader.ts +12 -0
- package/src/usd/index.ts +1 -0
- package/src/usd/lib/parse-usd.ts +68 -7
- package/src/usd/lib/parse-usdc.ts +188 -0
- package/src/usd/lib/parse-usdz.ts +28 -0
- package/src/usd/lib/usd-types.ts +16 -2
- package/src/usd/libs/README.md +27 -0
- package/src/usd/libs/THREE-LICENSE +21 -0
- package/src/usd/libs/usdc-parser.d.ts +18 -0
- package/src/usd/libs/usdc-parser.js +1669 -0
- package/src/usd/usd-loader-types.ts +6 -6
- package/src/usd/usd-loader.ts +2 -2
- package/src/usd-loader-types.ts +1 -0
- package/src/usd-loader.ts +1 -0
package/dist/obj/obj-loader.cjs
CHANGED
|
@@ -20,47 +20,36 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/obj/obj-loader.ts
|
|
21
21
|
var obj_loader_exports = {};
|
|
22
22
|
__export(obj_loader_exports, {
|
|
23
|
+
OBJColumnLoader: () => OBJColumnLoader,
|
|
23
24
|
OBJLoaderWithParser: () => OBJLoaderWithParser
|
|
24
25
|
});
|
|
25
26
|
module.exports = __toCommonJS(obj_loader_exports);
|
|
26
|
-
var import_loader_utils = require("@loaders.gl/core/loader-utils");
|
|
27
|
-
var import_arrow_transport = require("@loaders.gl/core/schema-utils/arrow-transport");
|
|
28
27
|
var import_schema_utils = require("@loaders.gl/core/schema-utils");
|
|
28
|
+
var import_loader_utils = require("@loaders.gl/core/loader-utils");
|
|
29
|
+
var import_arrow_worker_transport = require("@loaders.gl/core/arrow-worker-transport");
|
|
30
|
+
var import_schema_utils2 = require("@loaders.gl/core/schema-utils");
|
|
29
31
|
var import_get_obj_schema = require("./lib/get-obj-schema.cjs");
|
|
30
32
|
var import_parse_obj = require("./lib/parse-obj.cjs");
|
|
31
33
|
var import_obj_loader_types = require("./obj-loader-types.cjs");
|
|
32
34
|
var { preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload } = import_obj_loader_types.OBJLoader;
|
|
33
35
|
function convertOBJMesh(mesh, options) {
|
|
34
|
-
const table = (0,
|
|
35
|
-
return options?.obj?.shape === "mesh" ? (0,
|
|
36
|
+
const table = (0, import_schema_utils2.convertMeshToArrowTableWrapper)(mesh);
|
|
37
|
+
return options?.obj?.shape === "mesh" ? (0, import_schema_utils2.convertTableToMesh)(table) : table;
|
|
36
38
|
}
|
|
37
|
-
var
|
|
39
|
+
var OBJColumnLoader = {
|
|
38
40
|
...OBJLoaderMetadataWithoutPreload,
|
|
41
|
+
dataType: null,
|
|
42
|
+
batchType: null,
|
|
39
43
|
parse: async (arrayBuffer, options) => convertOBJMesh((0, import_parse_obj.parseOBJ)(new TextDecoder().decode(arrayBuffer), options), options),
|
|
40
44
|
parseTextSync: (text, options) => convertOBJMesh((0, import_parse_obj.parseOBJ)(text, options), options),
|
|
41
|
-
parseInBatches:
|
|
42
|
-
|
|
43
|
-
if (options?.obj?.pointCloud) {
|
|
44
|
-
const textIterator = (0, import_loader_utils.makeTextDecoderIterator)(arrayBuffer);
|
|
45
|
-
const lineIterator = (0, import_loader_utils.makeLineIterator)(textIterator);
|
|
46
|
-
yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const data = await (0, import_loader_utils.concatenateArrayBuffersAsync)(arrayBuffer);
|
|
50
|
-
const text = new TextDecoder().decode(data);
|
|
51
|
-
if (hasOBJGeometryRecords(text)) {
|
|
52
|
-
yield makeOBJBatch((0, import_parse_obj.parseOBJ)(text, options), options);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
yield* parseOBJPointCloudInBatches(text, options, batchSize);
|
|
56
|
-
},
|
|
57
|
-
serializeWorkerResult: import_arrow_transport.serializeArrowWorkerTable,
|
|
45
|
+
parseInBatches: (input, options) => (0, import_schema_utils.refineArrowTableBatches)(parseOBJWithMetadataInBatches(input, options)),
|
|
46
|
+
serializeWorkerResult: import_arrow_worker_transport.serializeArrowWorkerTable,
|
|
58
47
|
deserializeWorkerResult: deserializeOBJWorkerResult,
|
|
59
|
-
serializeWorkerBatch:
|
|
48
|
+
serializeWorkerBatch: import_arrow_worker_transport.serializeArrowWorkerTable,
|
|
60
49
|
deserializeWorkerBatch: deserializeOBJWorkerBatch
|
|
61
50
|
};
|
|
62
51
|
function getNumericBatchSize(options) {
|
|
63
|
-
const batchSize = options?.
|
|
52
|
+
const batchSize = options?.core?.batchSize;
|
|
64
53
|
return typeof batchSize === "number" ? batchSize : void 0;
|
|
65
54
|
}
|
|
66
55
|
function hasOBJGeometryRecords(text) {
|
|
@@ -113,7 +102,7 @@ function parseOBJPointCloudMesh(vertexLines) {
|
|
|
113
102
|
size: 3
|
|
114
103
|
}
|
|
115
104
|
};
|
|
116
|
-
const boundingBox = (0,
|
|
105
|
+
const boundingBox = (0, import_schema_utils2.getMeshBoundingBox)(attributes);
|
|
117
106
|
return {
|
|
118
107
|
loaderData: {
|
|
119
108
|
header: {}
|
|
@@ -132,9 +121,9 @@ function parseOBJPointCloudMesh(vertexLines) {
|
|
|
132
121
|
};
|
|
133
122
|
}
|
|
134
123
|
function makeOBJBatch(mesh, options) {
|
|
135
|
-
const table = (0,
|
|
124
|
+
const table = (0, import_schema_utils2.convertMeshToArrowTableWrapper)(mesh);
|
|
136
125
|
if (options?.obj?.shape === "mesh") {
|
|
137
|
-
const convertedMesh = (0,
|
|
126
|
+
const convertedMesh = (0, import_schema_utils2.convertTableToMesh)(table);
|
|
138
127
|
return {
|
|
139
128
|
shape: "mesh",
|
|
140
129
|
batchType: "data",
|
|
@@ -145,17 +134,60 @@ function makeOBJBatch(mesh, options) {
|
|
|
145
134
|
return (0, import_loader_utils.makeTableScanBatch)(table);
|
|
146
135
|
}
|
|
147
136
|
function deserializeOBJWorkerResult(result, options) {
|
|
148
|
-
const table = (0,
|
|
149
|
-
return options?.obj?.shape === "mesh" ? (0,
|
|
137
|
+
const table = (0, import_arrow_worker_transport.deserializeArrowWorkerTable)(result);
|
|
138
|
+
return options?.obj?.shape === "mesh" ? (0, import_schema_utils2.convertTableToMesh)(table) : table;
|
|
150
139
|
}
|
|
151
140
|
function deserializeOBJWorkerBatch(result, options) {
|
|
152
|
-
const table = (0,
|
|
141
|
+
const table = (0, import_arrow_worker_transport.deserializeArrowWorkerTable)(result);
|
|
153
142
|
if (options?.obj?.shape !== "mesh") return table;
|
|
154
|
-
const mesh = (0,
|
|
143
|
+
const mesh = (0, import_schema_utils2.convertTableToMesh)(table);
|
|
155
144
|
return { shape: "mesh", batchType: "data", data: mesh, length: table.length };
|
|
156
145
|
}
|
|
146
|
+
async function* parseOBJWithMetadataInBatches(arrayBuffer, options) {
|
|
147
|
+
const batchSize = getNumericBatchSize(options);
|
|
148
|
+
if (options?.obj?.pointCloud) {
|
|
149
|
+
const textIterator = (0, import_loader_utils.makeTextDecoderIterator)(arrayBuffer);
|
|
150
|
+
const lineIterator = (0, import_loader_utils.makeLineIterator)(textIterator);
|
|
151
|
+
yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const data = await (0, import_loader_utils.concatenateArrayBuffersAsync)(arrayBuffer);
|
|
155
|
+
const text = new TextDecoder().decode(data);
|
|
156
|
+
if (hasOBJGeometryRecords(text)) {
|
|
157
|
+
yield makeOBJBatch((0, import_parse_obj.parseOBJ)(text, options), options);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
yield* parseOBJPointCloudInBatches(text, options, batchSize);
|
|
161
|
+
}
|
|
162
|
+
var OBJLoaderWithParser = {
|
|
163
|
+
...OBJColumnLoader,
|
|
164
|
+
dataType: import_obj_loader_types.OBJLoader.dataType,
|
|
165
|
+
batchType: import_obj_loader_types.OBJLoader.batchType,
|
|
166
|
+
parse: async (input, options) => unwrapOBJTable(await OBJColumnLoader.parse(input, options)),
|
|
167
|
+
parseTextSync: (input, options) => unwrapOBJTable(OBJColumnLoader.parseTextSync(input, options)),
|
|
168
|
+
async *parseInBatches(input, options) {
|
|
169
|
+
for await (const batch of OBJColumnLoader.parseInBatches(input, options)) {
|
|
170
|
+
if ("shape" in batch && batch.shape === "arrow-table") {
|
|
171
|
+
if (batch.data.batches.length) yield* batch.data.batches;
|
|
172
|
+
else yield (0, import_schema_utils.makeArrowMetadataBatch)(batch.data.schema);
|
|
173
|
+
} else yield batch;
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
deserializeWorkerResult: (result, options) => unwrapOBJTable(OBJColumnLoader.deserializeWorkerResult(result, options)),
|
|
177
|
+
deserializeWorkerBatch(result, options) {
|
|
178
|
+
const batch = OBJColumnLoader.deserializeWorkerBatch(result, options);
|
|
179
|
+
return "shape" in batch && batch.shape === "arrow-table" ? batch.data.batches[0] ?? (0, import_schema_utils.makeArrowMetadataBatch)(batch.data.schema) : batch;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
function unwrapOBJTable(result) {
|
|
183
|
+
if ("shape" in result && result.shape === "arrow-table") {
|
|
184
|
+
return result.data;
|
|
185
|
+
}
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
157
188
|
// Annotate the CommonJS export names for ESM import in node:
|
|
158
189
|
0 && (module.exports = {
|
|
190
|
+
OBJColumnLoader,
|
|
159
191
|
OBJLoaderWithParser
|
|
160
192
|
});
|
|
161
193
|
//# sourceMappingURL=obj-loader.cjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/obj/obj-loader.ts"],
|
|
4
|
-
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {OBJLoaderOptions, OBJParsedBatch} from './obj-loader-types';\n\nimport {\n concatenateArrayBuffersAsync,\n makeLineIterator,\n makeTextDecoderIterator,\n makeTableScanBatch,\n type LoaderWithParser\n} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
6
|
-
"names": ["OBJLoaderMetadata"]
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {refineArrowTableBatches, makeArrowMetadataBatch} from '@loaders.gl/core/schema-utils';\nimport type {Table} from 'apache-arrow';\nimport type {OBJLoaderOptions, OBJMeshBatch, OBJParsedBatch} from './obj-loader-types';\n\nimport {\n concatenateArrayBuffersAsync,\n makeLineIterator,\n makeTextDecoderIterator,\n makeTableScanBatch,\n type LoaderWithParser\n} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, ArrowTableBatch} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/arrow-worker-transport';\nimport {\n convertMeshToArrowTableWrapper,\n convertTableToMesh,\n getMeshBoundingBox\n} from '@loaders.gl/core/schema-utils';\nimport {getOBJSchema} from './lib/get-obj-schema';\nimport {parseOBJ} from './lib/parse-obj';\nimport {OBJLoader as OBJLoaderMetadata} from './obj-loader-types';\n\nconst {preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload} = OBJLoaderMetadata;\n\nfunction convertOBJMesh(mesh: Mesh, options?: OBJLoaderOptions): Mesh | MeshArrowTable {\n const table = convertMeshToArrowTableWrapper(mesh);\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n// OBJLoaderWithParser\n\n/**\n * Loader for the OBJ geometry format\n */\nexport const OBJColumnLoader = {\n ...OBJLoaderMetadataWithoutPreload,\n dataType: null as unknown as Mesh | MeshArrowTable,\n batchType: null as unknown as OBJMeshBatch | ArrowTableBatch,\n parse: async (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(new TextDecoder().decode(arrayBuffer), options), options),\n parseTextSync: (text: string, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(text, options), options),\n parseInBatches: (input, options) =>\n refineArrowTableBatches(parseOBJWithMetadataInBatches(input, options)),\n serializeWorkerResult: serializeArrowWorkerTable,\n deserializeWorkerResult: deserializeOBJWorkerResult,\n serializeWorkerBatch: serializeArrowWorkerTable,\n deserializeWorkerBatch: deserializeOBJWorkerBatch\n} as const satisfies LoaderWithParser<\n Mesh | MeshArrowTable,\n OBJMeshBatch | ArrowTableBatch,\n OBJLoaderOptions\n>;\n\n/** Returns a numeric batch size when batching has an explicit row count. */\nfunction getNumericBatchSize(options?: OBJLoaderOptions): number | undefined {\n const batchSize = options?.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : undefined;\n}\n\nfunction hasOBJGeometryRecords(text: string): boolean {\n return text.split(/\\r?\\n/).some(line => {\n const trimmedLine = line.trimStart();\n return trimmedLine.startsWith('f ') || trimmedLine.startsWith('l ');\n });\n}\n\nfunction* parseOBJPointCloudInBatches(\n text: string,\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJMeshBatch | ArrowTableBatch> {\n const vertexLines = text.split(/\\r?\\n/).filter(line => line.trimStart().startsWith('v '));\n yield* makeOBJPointCloudBatches(vertexLines, options, batchSize);\n}\n\nasync function* parseOBJPointCloudLinesInBatches(\n lines: AsyncIterable<string>,\n options?: OBJLoaderOptions,\n batchSize?: number\n): AsyncIterable<OBJMeshBatch | ArrowTableBatch> {\n const normalizedBatchSize = batchSize || 1000;\n let vertexLines: string[] = [];\n\n for await (const line of lines) {\n if (!line.trimStart().startsWith('v ')) {\n continue;\n }\n vertexLines.push(line);\n if (vertexLines.length >= normalizedBatchSize) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n vertexLines = [];\n }\n }\n\n if (vertexLines.length > 0) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n }\n}\n\nfunction* makeOBJPointCloudBatches(\n vertexLines: string[],\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJMeshBatch | ArrowTableBatch> {\n const normalizedBatchSize = batchSize || vertexLines.length || 1;\n\n for (let rowIndex = 0; rowIndex < vertexLines.length; rowIndex += normalizedBatchSize) {\n const mesh = parseOBJPointCloudMesh(\n vertexLines.slice(rowIndex, rowIndex + normalizedBatchSize)\n );\n yield makeOBJBatch(mesh, options);\n }\n}\n\n/** Builds a point-list mesh directly from OBJ `v` records. */\nfunction parseOBJPointCloudMesh(vertexLines: string[]): Mesh {\n const positions = new Float32Array(vertexLines.length * 3);\n\n for (let vertexIndex = 0; vertexIndex < vertexLines.length; vertexIndex++) {\n const values = vertexLines[vertexIndex].trim().split(/\\s+/);\n positions[vertexIndex * 3 + 0] = Number(values[1]);\n positions[vertexIndex * 3 + 1] = Number(values[2]);\n positions[vertexIndex * 3 + 2] = Number(values[3]);\n }\n\n const attributes = {\n POSITION: {\n value: positions,\n size: 3\n }\n };\n const boundingBox = getMeshBoundingBox(attributes);\n\n return {\n loaderData: {\n header: {}\n },\n schema: getOBJSchema(attributes, {\n mode: 0,\n boundingBox: boundingBox ?? undefined\n }),\n header: {\n vertexCount: vertexLines.length,\n boundingBox: boundingBox ?? undefined\n },\n mode: 0,\n topology: 'point-list',\n attributes\n };\n}\n\nfunction makeOBJBatch(mesh: Mesh, options?: OBJLoaderOptions): OBJMeshBatch | ArrowTableBatch {\n const table = convertMeshToArrowTableWrapper(mesh);\n if (options?.obj?.shape === 'mesh') {\n const convertedMesh = convertTableToMesh(table);\n return {\n shape: 'mesh',\n batchType: 'data',\n data: convertedMesh,\n length: convertedMesh.header?.vertexCount || 0\n };\n }\n\n return makeTableScanBatch(table);\n}\n\n/** Hydrates worker columns before applying the requested legacy mesh shape on the caller. */\nfunction deserializeOBJWorkerResult(\n result: unknown,\n options?: OBJLoaderOptions\n): Mesh | MeshArrowTable {\n const table = deserializeArrowWorkerTable(result);\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n/** Restores the OBJ mesh batch envelope after caller-side conversion. */\nfunction deserializeOBJWorkerBatch(\n result: unknown,\n options?: OBJLoaderOptions\n): OBJMeshBatch | ArrowTableBatch {\n const table = deserializeArrowWorkerTable(result);\n if (options?.obj?.shape !== 'mesh') return table;\n const mesh = convertTableToMesh(table);\n return {shape: 'mesh', batchType: 'data', data: mesh, length: table.length};\n}\n\n/** Parses OBJ batches before shared cumulative metadata refinement. */\nasync function* parseOBJWithMetadataInBatches(\n arrayBuffer:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options?: OBJLoaderOptions\n): AsyncIterable<OBJMeshBatch | ArrowTableBatch> {\n const batchSize = getNumericBatchSize(options);\n if (options?.obj?.pointCloud) {\n const textIterator = makeTextDecoderIterator(arrayBuffer as AsyncIterable<ArrayBuffer>);\n const lineIterator = makeLineIterator(textIterator);\n yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);\n return;\n }\n\n const data = await concatenateArrayBuffersAsync(arrayBuffer);\n const text = new TextDecoder().decode(data);\n if (hasOBJGeometryRecords(text)) {\n yield makeOBJBatch(parseOBJ(text, options), options);\n return;\n }\n\n yield* parseOBJPointCloudInBatches(text, options, batchSize);\n}\n\n/** Exposes native Arrow output while retaining the worker's column protocol. */\nexport const OBJLoaderWithParser = {\n ...OBJColumnLoader,\n dataType: OBJLoaderMetadata.dataType,\n batchType: OBJLoaderMetadata.batchType,\n parse: async (input: ArrayBuffer, options?: OBJLoaderOptions) =>\n unwrapOBJTable(await OBJColumnLoader.parse(input, options)),\n parseTextSync: (input: string, options?: OBJLoaderOptions) =>\n unwrapOBJTable(OBJColumnLoader.parseTextSync(input, options)),\n async *parseInBatches(input, options) {\n for await (const batch of OBJColumnLoader.parseInBatches(input, options)) {\n if ('shape' in batch && batch.shape === 'arrow-table') {\n if (batch.data.batches.length) yield* batch.data.batches;\n else yield makeArrowMetadataBatch(batch.data.schema);\n } else yield batch;\n }\n },\n deserializeWorkerResult: (result: unknown, options?: OBJLoaderOptions) =>\n unwrapOBJTable(OBJColumnLoader.deserializeWorkerResult(result, options)),\n deserializeWorkerBatch(result: unknown, options?: OBJLoaderOptions) {\n const batch = OBJColumnLoader.deserializeWorkerBatch(result, options);\n return 'shape' in batch && batch.shape === 'arrow-table'\n ? (batch.data.batches[0] ?? makeArrowMetadataBatch(batch.data.schema))\n : batch;\n }\n} as const satisfies LoaderWithParser<Mesh | Table, OBJParsedBatch, OBJLoaderOptions>;\n\n/** Returns the Arrow table with its file metadata or the requested mesh. */\nfunction unwrapOBJTable(result: Mesh | MeshArrowTable): Mesh | Table {\n if ('shape' in result && result.shape === 'arrow-table') {\n return result.data;\n }\n return result as Mesh;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_schema_utils", "OBJLoaderMetadata"]
|
|
7
7
|
}
|
package/dist/obj/obj-loader.d.ts
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
1
|
+
import type { Table } from 'apache-arrow';
|
|
2
|
+
import type { OBJLoaderOptions, OBJMeshBatch, OBJParsedBatch } from "./obj-loader-types.js";
|
|
3
|
+
import type { Mesh, MeshArrowTable, ArrowTableBatch } from '@loaders.gl/core/schema';
|
|
4
|
+
import { serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
|
|
4
5
|
/**
|
|
5
6
|
* Loader for the OBJ geometry format
|
|
6
7
|
*/
|
|
7
|
-
export declare const
|
|
8
|
+
export declare const OBJColumnLoader: {
|
|
9
|
+
readonly dataType: Mesh | MeshArrowTable;
|
|
10
|
+
readonly batchType: OBJMeshBatch | ArrowTableBatch;
|
|
8
11
|
readonly parse: (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) => Promise<Mesh | MeshArrowTable>;
|
|
9
12
|
readonly parseTextSync: (text: string, options?: OBJLoaderOptions) => Mesh | MeshArrowTable;
|
|
10
|
-
readonly parseInBatches: (
|
|
13
|
+
readonly parseInBatches: (input: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options: OBJLoaderOptions | undefined) => AsyncIterable<OBJMeshBatch | ArrowTableBatch>;
|
|
11
14
|
readonly serializeWorkerResult: typeof serializeArrowWorkerTable;
|
|
12
15
|
readonly deserializeWorkerResult: typeof deserializeOBJWorkerResult;
|
|
13
16
|
readonly serializeWorkerBatch: typeof serializeArrowWorkerTable;
|
|
14
17
|
readonly deserializeWorkerBatch: typeof deserializeOBJWorkerBatch;
|
|
15
|
-
readonly dataType: Mesh | MeshArrowTable;
|
|
16
|
-
readonly batchType: OBJParsedBatch;
|
|
17
18
|
readonly version: any;
|
|
18
19
|
readonly worker: true;
|
|
19
20
|
readonly workerInBatches: true;
|
|
@@ -21,7 +22,7 @@ export declare const OBJLoaderWithParser: {
|
|
|
21
22
|
readonly testText: (text: string) => boolean;
|
|
22
23
|
readonly options: {
|
|
23
24
|
readonly obj: {
|
|
24
|
-
readonly shape: "arrow
|
|
25
|
+
readonly shape: "arrow";
|
|
25
26
|
};
|
|
26
27
|
};
|
|
27
28
|
readonly name: "OBJ";
|
|
@@ -31,10 +32,43 @@ export declare const OBJLoaderWithParser: {
|
|
|
31
32
|
readonly format: "obj";
|
|
32
33
|
readonly extensions: ["obj"];
|
|
33
34
|
readonly mimeTypes: ["text/plain"];
|
|
35
|
+
readonly defaultShape: "arrow";
|
|
36
|
+
readonly supportsNativeArrow: true;
|
|
34
37
|
};
|
|
35
38
|
/** Hydrates worker columns before applying the requested legacy mesh shape on the caller. */
|
|
36
39
|
declare function deserializeOBJWorkerResult(result: unknown, options?: OBJLoaderOptions): Mesh | MeshArrowTable;
|
|
37
40
|
/** Restores the OBJ mesh batch envelope after caller-side conversion. */
|
|
38
|
-
declare function deserializeOBJWorkerBatch(result: unknown, options?: OBJLoaderOptions):
|
|
41
|
+
declare function deserializeOBJWorkerBatch(result: unknown, options?: OBJLoaderOptions): OBJMeshBatch | ArrowTableBatch;
|
|
42
|
+
/** Exposes native Arrow output while retaining the worker's column protocol. */
|
|
43
|
+
export declare const OBJLoaderWithParser: {
|
|
44
|
+
readonly dataType: Mesh | Table<any>;
|
|
45
|
+
readonly batchType: OBJParsedBatch;
|
|
46
|
+
readonly parse: (input: ArrayBuffer, options?: OBJLoaderOptions) => Promise<Mesh | Table<any>>;
|
|
47
|
+
readonly parseTextSync: (input: string, options?: OBJLoaderOptions) => Mesh | Table<any>;
|
|
48
|
+
readonly parseInBatches: (input: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options: OBJLoaderOptions | undefined) => AsyncGenerator<OBJMeshBatch | import("apache-arrow").RecordBatch<any>, void, unknown>;
|
|
49
|
+
readonly deserializeWorkerResult: (result: unknown, options?: OBJLoaderOptions) => Mesh | Table<any>;
|
|
50
|
+
readonly deserializeWorkerBatch: (result: unknown, options?: OBJLoaderOptions) => OBJMeshBatch | import("apache-arrow").RecordBatch<any>;
|
|
51
|
+
readonly serializeWorkerResult: typeof serializeArrowWorkerTable;
|
|
52
|
+
readonly serializeWorkerBatch: typeof serializeArrowWorkerTable;
|
|
53
|
+
readonly version: any;
|
|
54
|
+
readonly worker: true;
|
|
55
|
+
readonly workerInBatches: true;
|
|
56
|
+
readonly text: true;
|
|
57
|
+
readonly testText: (text: string) => boolean;
|
|
58
|
+
readonly options: {
|
|
59
|
+
readonly obj: {
|
|
60
|
+
readonly shape: "arrow";
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
readonly name: "OBJ";
|
|
64
|
+
readonly id: "obj";
|
|
65
|
+
readonly module: "scene";
|
|
66
|
+
readonly encoding: "text";
|
|
67
|
+
readonly format: "obj";
|
|
68
|
+
readonly extensions: ["obj"];
|
|
69
|
+
readonly mimeTypes: ["text/plain"];
|
|
70
|
+
readonly defaultShape: "arrow";
|
|
71
|
+
readonly supportsNativeArrow: true;
|
|
72
|
+
};
|
|
39
73
|
export {};
|
|
40
74
|
//# sourceMappingURL=obj-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obj-loader.d.ts","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"obj-loader.d.ts","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAC,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAC,8BAA2B;AASvF,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAEL,yBAAyB,EAC1B,MAAM,yCAAyC,CAAC;AAmBjD;;GAEG;AACH,eAAO,MAAM,eAAe;uBAEG,IAAI,GAAG,cAAc;wBACpB,YAAY,GAAG,eAAe;kCACjC,WAAW,YAAY,gBAAgB;mCAE5C,MAAM,YAAY,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;CAYzD,CAAC;AAmHF,6FAA6F;AAC7F,iBAAS,0BAA0B,CACjC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,IAAI,GAAG,cAAc,CAGvB;AAED,yEAAyE;AACzE,iBAAS,yBAAyB,CAChC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,YAAY,GAAG,eAAe,CAKhC;AA2BD,gFAAgF;AAChF,eAAO,MAAM,mBAAmB;;;4BAIT,WAAW,YAAY,gBAAgB;oCAErC,MAAM,YAAY,gBAAgB;;+CAUvB,OAAO,YAAY,gBAAgB;8CAEtC,OAAO,YAAY,gBAAgB;;;;;;;;;;;;;;;;;;;;;;CAMiB,CAAC"}
|
package/dist/obj/obj-loader.js
CHANGED
|
@@ -1,41 +1,29 @@
|
|
|
1
1
|
// loaders.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { refineArrowTableBatches, makeArrowMetadataBatch } from '@loaders.gl/core/schema-utils';
|
|
4
5
|
import { concatenateArrayBuffersAsync, makeLineIterator, makeTextDecoderIterator, makeTableScanBatch } from '@loaders.gl/core/loader-utils';
|
|
5
|
-
import { deserializeArrowWorkerTable, serializeArrowWorkerTable } from '@loaders.gl/core/
|
|
6
|
-
import {
|
|
6
|
+
import { deserializeArrowWorkerTable, serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
|
|
7
|
+
import { convertMeshToArrowTableWrapper, convertTableToMesh, getMeshBoundingBox } from '@loaders.gl/core/schema-utils';
|
|
7
8
|
import { getOBJSchema } from "./lib/get-obj-schema.js";
|
|
8
9
|
import { parseOBJ } from "./lib/parse-obj.js";
|
|
9
10
|
import { OBJLoader as OBJLoaderMetadata } from "./obj-loader-types.js";
|
|
10
11
|
const { preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload } = OBJLoaderMetadata;
|
|
11
12
|
function convertOBJMesh(mesh, options) {
|
|
12
|
-
const table =
|
|
13
|
+
const table = convertMeshToArrowTableWrapper(mesh);
|
|
13
14
|
return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;
|
|
14
15
|
}
|
|
15
16
|
// OBJLoaderWithParser
|
|
16
17
|
/**
|
|
17
18
|
* Loader for the OBJ geometry format
|
|
18
19
|
*/
|
|
19
|
-
export const
|
|
20
|
+
export const OBJColumnLoader = {
|
|
20
21
|
...OBJLoaderMetadataWithoutPreload,
|
|
22
|
+
dataType: null,
|
|
23
|
+
batchType: null,
|
|
21
24
|
parse: async (arrayBuffer, options) => convertOBJMesh(parseOBJ(new TextDecoder().decode(arrayBuffer), options), options),
|
|
22
25
|
parseTextSync: (text, options) => convertOBJMesh(parseOBJ(text, options), options),
|
|
23
|
-
parseInBatches:
|
|
24
|
-
const batchSize = getNumericBatchSize(options);
|
|
25
|
-
if (options?.obj?.pointCloud) {
|
|
26
|
-
const textIterator = makeTextDecoderIterator(arrayBuffer);
|
|
27
|
-
const lineIterator = makeLineIterator(textIterator);
|
|
28
|
-
yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
const data = await concatenateArrayBuffersAsync(arrayBuffer);
|
|
32
|
-
const text = new TextDecoder().decode(data);
|
|
33
|
-
if (hasOBJGeometryRecords(text)) {
|
|
34
|
-
yield makeOBJBatch(parseOBJ(text, options), options);
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
yield* parseOBJPointCloudInBatches(text, options, batchSize);
|
|
38
|
-
},
|
|
26
|
+
parseInBatches: (input, options) => refineArrowTableBatches(parseOBJWithMetadataInBatches(input, options)),
|
|
39
27
|
serializeWorkerResult: serializeArrowWorkerTable,
|
|
40
28
|
deserializeWorkerResult: deserializeOBJWorkerResult,
|
|
41
29
|
serializeWorkerBatch: serializeArrowWorkerTable,
|
|
@@ -43,7 +31,7 @@ export const OBJLoaderWithParser = {
|
|
|
43
31
|
};
|
|
44
32
|
/** Returns a numeric batch size when batching has an explicit row count. */
|
|
45
33
|
function getNumericBatchSize(options) {
|
|
46
|
-
const batchSize = options?.
|
|
34
|
+
const batchSize = options?.core?.batchSize;
|
|
47
35
|
return typeof batchSize === 'number' ? batchSize : undefined;
|
|
48
36
|
}
|
|
49
37
|
function hasOBJGeometryRecords(text) {
|
|
@@ -114,7 +102,7 @@ function parseOBJPointCloudMesh(vertexLines) {
|
|
|
114
102
|
};
|
|
115
103
|
}
|
|
116
104
|
function makeOBJBatch(mesh, options) {
|
|
117
|
-
const table =
|
|
105
|
+
const table = convertMeshToArrowTableWrapper(mesh);
|
|
118
106
|
if (options?.obj?.shape === 'mesh') {
|
|
119
107
|
const convertedMesh = convertTableToMesh(table);
|
|
120
108
|
return {
|
|
@@ -139,4 +127,55 @@ function deserializeOBJWorkerBatch(result, options) {
|
|
|
139
127
|
const mesh = convertTableToMesh(table);
|
|
140
128
|
return { shape: 'mesh', batchType: 'data', data: mesh, length: table.length };
|
|
141
129
|
}
|
|
130
|
+
/** Parses OBJ batches before shared cumulative metadata refinement. */
|
|
131
|
+
async function* parseOBJWithMetadataInBatches(arrayBuffer, options) {
|
|
132
|
+
const batchSize = getNumericBatchSize(options);
|
|
133
|
+
if (options?.obj?.pointCloud) {
|
|
134
|
+
const textIterator = makeTextDecoderIterator(arrayBuffer);
|
|
135
|
+
const lineIterator = makeLineIterator(textIterator);
|
|
136
|
+
yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
const data = await concatenateArrayBuffersAsync(arrayBuffer);
|
|
140
|
+
const text = new TextDecoder().decode(data);
|
|
141
|
+
if (hasOBJGeometryRecords(text)) {
|
|
142
|
+
yield makeOBJBatch(parseOBJ(text, options), options);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
yield* parseOBJPointCloudInBatches(text, options, batchSize);
|
|
146
|
+
}
|
|
147
|
+
/** Exposes native Arrow output while retaining the worker's column protocol. */
|
|
148
|
+
export const OBJLoaderWithParser = {
|
|
149
|
+
...OBJColumnLoader,
|
|
150
|
+
dataType: OBJLoaderMetadata.dataType,
|
|
151
|
+
batchType: OBJLoaderMetadata.batchType,
|
|
152
|
+
parse: async (input, options) => unwrapOBJTable(await OBJColumnLoader.parse(input, options)),
|
|
153
|
+
parseTextSync: (input, options) => unwrapOBJTable(OBJColumnLoader.parseTextSync(input, options)),
|
|
154
|
+
async *parseInBatches(input, options) {
|
|
155
|
+
for await (const batch of OBJColumnLoader.parseInBatches(input, options)) {
|
|
156
|
+
if ('shape' in batch && batch.shape === 'arrow-table') {
|
|
157
|
+
if (batch.data.batches.length)
|
|
158
|
+
yield* batch.data.batches;
|
|
159
|
+
else
|
|
160
|
+
yield makeArrowMetadataBatch(batch.data.schema);
|
|
161
|
+
}
|
|
162
|
+
else
|
|
163
|
+
yield batch;
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
deserializeWorkerResult: (result, options) => unwrapOBJTable(OBJColumnLoader.deserializeWorkerResult(result, options)),
|
|
167
|
+
deserializeWorkerBatch(result, options) {
|
|
168
|
+
const batch = OBJColumnLoader.deserializeWorkerBatch(result, options);
|
|
169
|
+
return 'shape' in batch && batch.shape === 'arrow-table'
|
|
170
|
+
? (batch.data.batches[0] ?? makeArrowMetadataBatch(batch.data.schema))
|
|
171
|
+
: batch;
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
/** Returns the Arrow table with its file metadata or the requested mesh. */
|
|
175
|
+
function unwrapOBJTable(result) {
|
|
176
|
+
if ('shape' in result && result.shape === 'arrow-table') {
|
|
177
|
+
return result.data;
|
|
178
|
+
}
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
142
181
|
//# sourceMappingURL=obj-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obj-loader.js","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;
|
|
1
|
+
{"version":3,"file":"obj-loader.js","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/obj/obj-writer.cjs
CHANGED
|
@@ -25,7 +25,7 @@ __export(obj_writer_exports, {
|
|
|
25
25
|
module.exports = __toCommonJS(obj_writer_exports);
|
|
26
26
|
var import_schema_utils = require("@loaders.gl/core/schema-utils");
|
|
27
27
|
var import_obj_format = require("./obj-format.cjs");
|
|
28
|
-
var VERSION = true ? "5.0.0-beta.
|
|
28
|
+
var VERSION = true ? "5.0.0-beta.10" : "latest";
|
|
29
29
|
var OBJWriter = {
|
|
30
30
|
...import_obj_format.OBJFormat,
|
|
31
31
|
dataType: null,
|
|
@@ -113,10 +113,10 @@ function encodeOBJ(data, options) {
|
|
|
113
113
|
`;
|
|
114
114
|
}
|
|
115
115
|
function normalizeMeshArrowTable(data) {
|
|
116
|
-
if ("
|
|
116
|
+
if (!("attributes" in data)) {
|
|
117
117
|
return data;
|
|
118
118
|
}
|
|
119
|
-
return (0, import_schema_utils.
|
|
119
|
+
return (0, import_schema_utils.convertMeshToArrowTableWrapper)(data);
|
|
120
120
|
}
|
|
121
121
|
function getRequiredAttribute(mesh, attributeName) {
|
|
122
122
|
const attribute = mesh.attributes[attributeName];
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/obj/obj-writer.ts"],
|
|
4
|
-
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {WriterOptions, WriterWithEncoder} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, MeshAttribute} from '@loaders.gl/core/schema';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Table} from 'apache-arrow';\nimport type {WriterOptions, WriterWithEncoder} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, MeshAttribute} from '@loaders.gl/core/schema';\nimport {convertMeshToArrowTableWrapper, convertTableToMesh} from '@loaders.gl/core/schema-utils';\nimport {OBJFormat} from './obj-format';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for `OBJWriter`. */\nexport type OBJWriterOptions = WriterOptions & {\n /** Reserved for future OBJ writer options. */\n obj?: Record<string, never>;\n};\n\n/**\n * Writer for the OBJ geometry format.\n */\nexport const OBJWriter = {\n ...OBJFormat,\n dataType: null as unknown as Mesh | MeshArrowTable | Table,\n batchType: null as never,\n version: VERSION,\n options: {\n obj: {}\n },\n text: true,\n encode: async (data, options) => encodeOBJSync(data, options),\n encodeSync: encodeOBJSync,\n encodeTextSync: encodeOBJ\n} as const satisfies WriterWithEncoder<Mesh | MeshArrowTable | Table, never, OBJWriterOptions>;\n\n/** Encode mesh category data as OBJ bytes. */\nfunction encodeOBJSync(\n data: Mesh | MeshArrowTable | Table,\n options?: OBJWriterOptions\n): ArrayBuffer {\n const text = encodeOBJ(data, options);\n return new TextEncoder().encode(text).buffer;\n}\n\n/** Encode mesh category data as OBJ text. */\nfunction encodeOBJ(data: Mesh | MeshArrowTable | Table, options?: OBJWriterOptions): string {\n const mesh = convertTableToMesh(normalizeMeshArrowTable(data));\n const positionAttribute = getRequiredAttribute(mesh, 'POSITION');\n const normalAttribute = mesh.attributes.NORMAL;\n const textureCoordinateAttribute = mesh.attributes.TEXCOORD_0;\n const colorAttribute = mesh.attributes.COLOR_0;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const lines: string[] = ['# loaders.gl OBJ'];\n\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n const vertex = [\n getComponent(positionAttribute, vertexIndex, 0),\n getComponent(positionAttribute, vertexIndex, 1),\n getComponent(positionAttribute, vertexIndex, 2)\n ];\n\n if (colorAttribute) {\n vertex.push(\n getColorComponent(colorAttribute, vertexIndex, 0),\n getColorComponent(colorAttribute, vertexIndex, 1),\n getColorComponent(colorAttribute, vertexIndex, 2)\n );\n }\n\n lines.push(`v ${vertex.join(' ')}`);\n }\n\n if (textureCoordinateAttribute) {\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n lines.push(\n `vt ${getComponent(textureCoordinateAttribute, vertexIndex, 0)} ${getComponent(\n textureCoordinateAttribute,\n vertexIndex,\n 1\n )}`\n );\n }\n }\n\n if (normalAttribute) {\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n lines.push(\n `vn ${getComponent(normalAttribute, vertexIndex, 0)} ${getComponent(\n normalAttribute,\n vertexIndex,\n 1\n )} ${getComponent(normalAttribute, vertexIndex, 2)}`\n );\n }\n }\n\n const triangleIndices = getTriangleIndices(mesh, vertexCount);\n for (let triangleIndex = 0; triangleIndex < triangleIndices.length; triangleIndex += 3) {\n const face = [\n getFaceVertex(\n triangleIndices[triangleIndex],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n ),\n getFaceVertex(\n triangleIndices[triangleIndex + 1],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n ),\n getFaceVertex(\n triangleIndices[triangleIndex + 2],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n )\n ];\n lines.push(`f ${face.join(' ')}`);\n }\n\n return `${lines.join('\\n')}\\n`;\n}\n\n/** Return mesh data as a MeshArrowTable, converting plain Mesh data first. */\nfunction normalizeMeshArrowTable(data: Mesh | MeshArrowTable | Table): MeshArrowTable | Table {\n if (!('attributes' in data)) {\n return data;\n }\n return convertMeshToArrowTableWrapper(data as Mesh);\n}\n\n/** Return a required mesh attribute or throw a format-specific error. */\nfunction getRequiredAttribute(mesh: Mesh, attributeName: string): MeshAttribute {\n const attribute = mesh.attributes[attributeName];\n if (!attribute) {\n throw new Error(`OBJWriter: ${attributeName} attribute is required`);\n }\n return attribute;\n}\n\n/** Return a single attribute component with 0 as the missing component fallback. */\nfunction getComponent(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n return attribute.value[vertexIndex * attribute.size + componentIndex] || 0;\n}\n\n/** Return a color component normalized for OBJ vertex colors. */\nfunction getColorComponent(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n const value = getComponent(attribute, vertexIndex, componentIndex);\n return attribute.normalized || value > 1 ? value / 255 : value;\n}\n\n/** Return triangle indices for indexed or sequential triangle-list meshes. */\nfunction getTriangleIndices(mesh: Mesh, vertexCount: number): number[] {\n if (mesh.indices?.value?.length) {\n return Array.from(mesh.indices.value);\n }\n\n if (mesh.mode !== 4 && mesh.topology !== 'triangle-list') {\n return [];\n }\n\n const triangleIndices: number[] = [];\n for (let vertexIndex = 0; vertexIndex + 2 < vertexCount; vertexIndex += 3) {\n triangleIndices.push(vertexIndex, vertexIndex + 1, vertexIndex + 2);\n }\n return triangleIndices;\n}\n\n/** Return an OBJ face vertex reference. */\nfunction getFaceVertex(\n vertexIndex: number,\n hasTextureCoordinates: boolean,\n hasNormals: boolean\n): string {\n const faceIndex = vertexIndex + 1;\n if (hasTextureCoordinates && hasNormals) {\n return `${faceIndex}/${faceIndex}/${faceIndex}`;\n }\n if (hasTextureCoordinates) {\n return `${faceIndex}/${faceIndex}`;\n }\n if (hasNormals) {\n return `${faceIndex}//${faceIndex}`;\n }\n return String(faceIndex);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
package/dist/obj/obj-writer.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Table } from 'apache-arrow';
|
|
1
2
|
import type { WriterOptions } from '@loaders.gl/core/loader-utils';
|
|
2
3
|
import type { Mesh, MeshArrowTable } from '@loaders.gl/core/schema';
|
|
3
4
|
/** Options for `OBJWriter`. */
|
|
@@ -9,14 +10,14 @@ export type OBJWriterOptions = WriterOptions & {
|
|
|
9
10
|
* Writer for the OBJ geometry format.
|
|
10
11
|
*/
|
|
11
12
|
export declare const OBJWriter: {
|
|
12
|
-
readonly dataType: Mesh | MeshArrowTable;
|
|
13
|
+
readonly dataType: Mesh | MeshArrowTable | Table;
|
|
13
14
|
readonly batchType: never;
|
|
14
15
|
readonly version: any;
|
|
15
16
|
readonly options: {
|
|
16
17
|
readonly obj: {};
|
|
17
18
|
};
|
|
18
19
|
readonly text: true;
|
|
19
|
-
readonly encode: (data: Mesh | MeshArrowTable, options: OBJWriterOptions | undefined) => Promise<ArrayBuffer>;
|
|
20
|
+
readonly encode: (data: Mesh | Table<any> | MeshArrowTable, options: OBJWriterOptions | undefined) => Promise<ArrayBuffer>;
|
|
20
21
|
readonly encodeSync: typeof encodeOBJSync;
|
|
21
22
|
readonly encodeTextSync: typeof encodeOBJ;
|
|
22
23
|
readonly name: "OBJ";
|
|
@@ -28,8 +29,8 @@ export declare const OBJWriter: {
|
|
|
28
29
|
readonly mimeTypes: ["text/plain"];
|
|
29
30
|
};
|
|
30
31
|
/** Encode mesh category data as OBJ bytes. */
|
|
31
|
-
declare function encodeOBJSync(data: Mesh | MeshArrowTable, options?: OBJWriterOptions): ArrayBuffer;
|
|
32
|
+
declare function encodeOBJSync(data: Mesh | MeshArrowTable | Table, options?: OBJWriterOptions): ArrayBuffer;
|
|
32
33
|
/** Encode mesh category data as OBJ text. */
|
|
33
|
-
declare function encodeOBJ(data: Mesh | MeshArrowTable, options?: OBJWriterOptions): string;
|
|
34
|
+
declare function encodeOBJ(data: Mesh | MeshArrowTable | Table, options?: OBJWriterOptions): string;
|
|
34
35
|
export {};
|
|
35
36
|
//# sourceMappingURL=obj-writer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"obj-writer.d.ts","sourceRoot":"","sources":["../../src/obj/obj-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,aAAa,EAAoB,MAAM,+BAA+B,CAAC;AACpF,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAgB,MAAM,yBAAyB,CAAC;AAQjF,+BAA+B;AAC/B,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;uBAES,IAAI,GAAG,cAAc;
|
|
1
|
+
{"version":3,"file":"obj-writer.d.ts","sourceRoot":"","sources":["../../src/obj/obj-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAC,aAAa,EAAoB,MAAM,+BAA+B,CAAC;AACpF,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAgB,MAAM,yBAAyB,CAAC;AAQjF,+BAA+B;AAC/B,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;uBAES,IAAI,GAAG,cAAc,GAAG,KAAK;wBACvC,KAAK;;;;;;;;;;;;;;;;CASoE,CAAC;AAE/F,8CAA8C;AAC9C,iBAAS,aAAa,CACpB,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,KAAK,EACnC,OAAO,CAAC,EAAE,gBAAgB,GACzB,WAAW,CAGb;AAED,6CAA6C;AAC7C,iBAAS,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CA0E1F"}
|
package/dist/obj/obj-writer.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// loaders.gl
|
|
2
2
|
// SPDX-License-Identifier: MIT
|
|
3
3
|
// Copyright (c) vis.gl contributors
|
|
4
|
-
import {
|
|
4
|
+
import { convertMeshToArrowTableWrapper, convertTableToMesh } from '@loaders.gl/core/schema-utils';
|
|
5
5
|
import { OBJFormat } from "./obj-format.js";
|
|
6
6
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
7
7
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
8
|
-
const VERSION = typeof "5.0.0-beta.
|
|
8
|
+
const VERSION = typeof "5.0.0-beta.10" !== 'undefined' ? "5.0.0-beta.10" : 'latest';
|
|
9
9
|
/**
|
|
10
10
|
* Writer for the OBJ geometry format.
|
|
11
11
|
*/
|
|
@@ -70,10 +70,10 @@ function encodeOBJ(data, options) {
|
|
|
70
70
|
}
|
|
71
71
|
/** Return mesh data as a MeshArrowTable, converting plain Mesh data first. */
|
|
72
72
|
function normalizeMeshArrowTable(data) {
|
|
73
|
-
if ('
|
|
73
|
+
if (!('attributes' in data)) {
|
|
74
74
|
return data;
|
|
75
75
|
}
|
|
76
|
-
return
|
|
76
|
+
return convertMeshToArrowTableWrapper(data);
|
|
77
77
|
}
|
|
78
78
|
/** Return a required mesh attribute or throw a format-specific error. */
|
|
79
79
|
function getRequiredAttribute(mesh, attributeName) {
|