@loaders.gl/pointclouds 0.0.0-stage → 5.0.0-beta.2
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/LAS-README.md +12 -0
- package/LICENSE +24 -0
- package/PCD-README.md +12 -0
- package/PLY-README.md +38 -0
- package/README.md +11 -2
- package/THIRD-PARTY-NOTICES.md +27 -0
- package/dist/dist.dev.js +30165 -0
- package/dist/dist.min.js +54 -0
- package/dist/index.cjs +61 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/las/bundled.cjs +72 -0
- package/dist/las/bundled.cjs.map +7 -0
- package/dist/las/bundled.d.ts +12 -0
- package/dist/las/bundled.d.ts.map +1 -0
- package/dist/las/bundled.js +12 -0
- package/dist/las/bundled.js.map +1 -0
- package/dist/las/index.cjs +78 -0
- package/dist/las/index.cjs.map +7 -0
- package/dist/las/index.d.ts +17 -0
- package/dist/las/index.d.ts.map +1 -0
- package/dist/las/index.js +15 -0
- package/dist/las/index.js.map +1 -0
- package/dist/las/las-copc-loader-types.cjs +49 -0
- package/dist/las/las-copc-loader-types.cjs.map +7 -0
- package/dist/las/las-copc-loader-types.d.ts +63 -0
- package/dist/las/las-copc-loader-types.d.ts.map +1 -0
- package/dist/las/las-copc-loader-types.js +14 -0
- package/dist/las/las-copc-loader-types.js.map +1 -0
- package/dist/las/las-copc-loader.cjs +57 -0
- package/dist/las/las-copc-loader.cjs.map +7 -0
- package/dist/las/las-copc-loader.d.ts +37 -0
- package/dist/las/las-copc-loader.d.ts.map +1 -0
- package/dist/las/las-copc-loader.js +40 -0
- package/dist/las/las-copc-loader.js.map +1 -0
- package/dist/las/las-format.cjs +44 -0
- package/dist/las/las-format.cjs.map +7 -0
- package/dist/las/las-format.d.ts +16 -0
- package/dist/las/las-format.d.ts.map +1 -0
- package/dist/las/las-format.js +19 -0
- package/dist/las/las-format.js.map +1 -0
- package/dist/las/las-loader-shared.cjs +82 -0
- package/dist/las/las-loader-shared.cjs.map +7 -0
- package/dist/las/las-loader-shared.d.ts +66 -0
- package/dist/las/las-loader-shared.d.ts.map +1 -0
- package/dist/las/las-loader-shared.js +58 -0
- package/dist/las/las-loader-shared.js.map +1 -0
- package/dist/las/las-loader-types.cjs +54 -0
- package/dist/las/las-loader-types.cjs.map +7 -0
- package/dist/las/las-loader-types.d.ts +104 -0
- package/dist/las/las-loader-types.d.ts.map +1 -0
- package/dist/las/las-loader-types.js +19 -0
- package/dist/las/las-loader-types.js.map +1 -0
- package/dist/las/las-loader.cjs +80 -0
- package/dist/las/las-loader.cjs.map +7 -0
- package/dist/las/las-loader.d.ts +45 -0
- package/dist/las/las-loader.d.ts.map +1 -0
- package/dist/las/las-loader.js +58 -0
- package/dist/las/las-loader.js.map +1 -0
- package/dist/las/las-writer.cjs +1054 -0
- package/dist/las/las-writer.cjs.map +7 -0
- package/dist/las/las-writer.d.ts +69 -0
- package/dist/las/las-writer.d.ts.map +1 -0
- package/dist/las/las-writer.js +994 -0
- package/dist/las/las-writer.js.map +1 -0
- package/dist/las/laz-rs-loader-types.cjs +49 -0
- package/dist/las/laz-rs-loader-types.cjs.map +7 -0
- package/dist/las/laz-rs-loader-types.d.ts +65 -0
- package/dist/las/laz-rs-loader-types.d.ts.map +1 -0
- package/dist/las/laz-rs-loader-types.js +16 -0
- package/dist/las/laz-rs-loader-types.js.map +1 -0
- package/dist/las/laz-rs-loader.cjs +272 -0
- package/dist/las/laz-rs-loader.cjs.map +7 -0
- package/dist/las/laz-rs-loader.d.ts +37 -0
- package/dist/las/laz-rs-loader.d.ts.map +1 -0
- package/dist/las/laz-rs-loader.js +38 -0
- package/dist/las/laz-rs-loader.js.map +1 -0
- package/dist/las/lazperf-loader-types.cjs +49 -0
- package/dist/las/lazperf-loader-types.cjs.map +7 -0
- package/dist/las/lazperf-loader-types.d.ts +67 -0
- package/dist/las/lazperf-loader-types.d.ts.map +1 -0
- package/dist/las/lazperf-loader-types.js +17 -0
- package/dist/las/lazperf-loader-types.js.map +1 -0
- package/dist/las/lazperf-loader.cjs +60 -0
- package/dist/las/lazperf-loader.cjs.map +7 -0
- package/dist/las/lazperf-loader.d.ts +39 -0
- package/dist/las/lazperf-loader.d.ts.map +1 -0
- package/dist/las/lazperf-loader.js +44 -0
- package/dist/las/lazperf-loader.js.map +1 -0
- package/dist/las/lib/copc/parse-las.cjs +177 -0
- package/dist/las/lib/copc/parse-las.cjs.map +7 -0
- package/dist/las/lib/copc/parse-las.d.ts +17 -0
- package/dist/las/lib/copc/parse-las.d.ts.map +1 -0
- package/dist/las/lib/copc/parse-las.js +215 -0
- package/dist/las/lib/copc/parse-las.js.map +1 -0
- package/dist/las/lib/get-las-schema.cjs +62 -0
- package/dist/las/lib/get-las-schema.cjs.map +7 -0
- package/dist/las/lib/get-las-schema.d.ts +16 -0
- package/dist/las/lib/get-las-schema.d.ts.map +1 -0
- package/dist/las/lib/get-las-schema.js +46 -0
- package/dist/las/lib/get-las-schema.js.map +1 -0
- package/dist/las/lib/las-compatibility.cjs +110 -0
- package/dist/las/lib/las-compatibility.cjs.map +7 -0
- package/dist/las/lib/las-compatibility.d.ts +40 -0
- package/dist/las/lib/las-compatibility.d.ts.map +1 -0
- package/dist/las/lib/las-compatibility.js +115 -0
- package/dist/las/lib/las-compatibility.js.map +1 -0
- package/dist/las/lib/las-extra-bytes.cjs +223 -0
- package/dist/las/lib/las-extra-bytes.cjs.map +7 -0
- package/dist/las/lib/las-extra-bytes.d.ts +35 -0
- package/dist/las/lib/las-extra-bytes.d.ts.map +1 -0
- package/dist/las/lib/las-extra-bytes.js +195 -0
- package/dist/las/lib/las-extra-bytes.js.map +1 -0
- package/dist/las/lib/las-types.cjs +19 -0
- package/dist/las/lib/las-types.cjs.map +7 -0
- package/dist/las/lib/las-types.d.ts +194 -0
- package/dist/las/lib/las-types.d.ts.map +1 -0
- package/dist/las/lib/las-types.js +5 -0
- package/dist/las/lib/las-types.js.map +1 -0
- package/dist/las/lib/las-waveform.cjs +196 -0
- package/dist/las/lib/las-waveform.cjs.map +7 -0
- package/dist/las/lib/las-waveform.d.ts +89 -0
- package/dist/las/lib/las-waveform.d.ts.map +1 -0
- package/dist/las/lib/las-waveform.js +193 -0
- package/dist/las/lib/las-waveform.js.map +1 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.cjs +382 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.cjs.map +7 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.d.ts +129 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.d.ts.map +1 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.js +377 -0
- package/dist/las/lib/laz-perf/laslaz-decoder.js.map +1 -0
- package/dist/las/lib/laz-perf/parse-las.cjs +270 -0
- package/dist/las/lib/laz-perf/parse-las.cjs.map +7 -0
- package/dist/las/lib/laz-perf/parse-las.d.ts +24 -0
- package/dist/las/lib/laz-perf/parse-las.d.ts.map +1 -0
- package/dist/las/lib/laz-perf/parse-las.js +307 -0
- package/dist/las/lib/laz-perf/parse-las.js.map +1 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs +631 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs.map +7 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts +129 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts.map +1 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js +414 -0
- package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js.map +1 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.cjs +270 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.cjs.map +7 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.d.ts +24 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.d.ts.map +1 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.js +307 -0
- package/dist/las/lib/laz-rs-wasm/parse-las.js.map +1 -0
- package/dist/las/lib/typescript/parse-las.cjs +2767 -0
- package/dist/las/lib/typescript/parse-las.cjs.map +7 -0
- package/dist/las/lib/typescript/parse-las.d.ts +39 -0
- package/dist/las/lib/typescript/parse-las.d.ts.map +1 -0
- package/dist/las/lib/typescript/parse-las.js +2607 -0
- package/dist/las/lib/typescript/parse-las.js.map +1 -0
- package/dist/las/libs/laz-perf/laz-perf.cjs +18093 -0
- package/dist/las/libs/laz-perf/laz-perf.cjs.map +7 -0
- package/dist/las/libs/laz-perf/laz-perf.d.ts +2 -0
- package/dist/las/libs/laz-perf/laz-perf.d.ts.map +1 -0
- package/dist/las/libs/laz-perf/laz-perf.js +19003 -0
- package/dist/las/libs/laz-perf/laz-perf.js.map +1 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +95 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts.map +1 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js +442 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js.map +1 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
- package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
- package/dist/las/unbundled.cjs +71 -0
- package/dist/las/unbundled.cjs.map +7 -0
- package/dist/las/unbundled.d.ts +11 -0
- package/dist/las/unbundled.d.ts.map +1 -0
- package/dist/las/unbundled.js +11 -0
- package/dist/las/unbundled.js.map +1 -0
- package/dist/las/workers/las-worker.cjs +23 -0
- package/dist/las/workers/las-worker.cjs.map +7 -0
- package/dist/las/workers/las-worker.d.ts +2 -0
- package/dist/las/workers/las-worker.d.ts.map +1 -0
- package/dist/las/workers/las-worker.js +23 -0
- package/dist/las/workers/las-worker.js.map +1 -0
- package/dist/las-copc-loader-types.cjs +51 -0
- package/dist/las-copc-loader-types.cjs.map +7 -0
- package/dist/las-copc-loader-types.d.ts +2 -0
- package/dist/las-copc-loader-types.d.ts.map +1 -0
- package/dist/las-copc-loader-types.js +2 -0
- package/dist/las-copc-loader-types.js.map +1 -0
- package/dist/las-copc-loader.cjs +59 -0
- package/dist/las-copc-loader.cjs.map +7 -0
- package/dist/las-copc-loader.d.ts +2 -0
- package/dist/las-copc-loader.d.ts.map +1 -0
- package/dist/las-copc-loader.js +2 -0
- package/dist/las-copc-loader.js.map +1 -0
- package/dist/las-loader-types.cjs +56 -0
- package/dist/las-loader-types.cjs.map +7 -0
- package/dist/las-loader-types.d.ts +2 -0
- package/dist/las-loader-types.d.ts.map +1 -0
- package/dist/las-loader-types.js +2 -0
- package/dist/las-loader-types.js.map +1 -0
- package/dist/las-loader.cjs +82 -0
- package/dist/las-loader.cjs.map +7 -0
- package/dist/las-loader.d.ts +2 -0
- package/dist/las-loader.d.ts.map +1 -0
- package/dist/las-loader.js +2 -0
- package/dist/las-loader.js.map +1 -0
- package/dist/las-worker.js +23169 -0
- package/dist/las-writer.cjs +1056 -0
- package/dist/las-writer.cjs.map +7 -0
- package/dist/las-writer.d.ts +2 -0
- package/dist/las-writer.d.ts.map +1 -0
- package/dist/las-writer.js +2 -0
- package/dist/las-writer.js.map +1 -0
- package/dist/laz-rs-loader-types.cjs +51 -0
- package/dist/laz-rs-loader-types.cjs.map +7 -0
- package/dist/laz-rs-loader-types.d.ts +2 -0
- package/dist/laz-rs-loader-types.d.ts.map +1 -0
- package/dist/laz-rs-loader-types.js +2 -0
- package/dist/laz-rs-loader-types.js.map +1 -0
- package/dist/laz-rs-loader.cjs +274 -0
- package/dist/laz-rs-loader.cjs.map +7 -0
- package/dist/laz-rs-loader.d.ts +2 -0
- package/dist/laz-rs-loader.d.ts.map +1 -0
- package/dist/laz-rs-loader.js +2 -0
- package/dist/laz-rs-loader.js.map +1 -0
- package/dist/lazperf-loader-types.cjs +51 -0
- package/dist/lazperf-loader-types.cjs.map +7 -0
- package/dist/lazperf-loader-types.d.ts +2 -0
- package/dist/lazperf-loader-types.d.ts.map +1 -0
- package/dist/lazperf-loader-types.js +2 -0
- package/dist/lazperf-loader-types.js.map +1 -0
- package/dist/lazperf-loader.cjs +62 -0
- package/dist/lazperf-loader.cjs.map +7 -0
- package/dist/lazperf-loader.d.ts +2 -0
- package/dist/lazperf-loader.d.ts.map +1 -0
- package/dist/lazperf-loader.js +2 -0
- package/dist/lazperf-loader.js.map +1 -0
- package/dist/pcd/bundled.cjs +33 -0
- package/dist/pcd/bundled.cjs.map +7 -0
- package/dist/pcd/bundled.d.ts +3 -0
- package/dist/pcd/bundled.d.ts.map +1 -0
- package/dist/pcd/bundled.js +5 -0
- package/dist/pcd/bundled.js.map +1 -0
- package/dist/pcd/index.cjs +40 -0
- package/dist/pcd/index.cjs.map +7 -0
- package/dist/pcd/index.d.ts +8 -0
- package/dist/pcd/index.d.ts.map +1 -0
- package/dist/pcd/index.js +10 -0
- package/dist/pcd/index.js.map +1 -0
- package/dist/pcd/lib/decompress-lzf.cjs +80 -0
- package/dist/pcd/lib/decompress-lzf.cjs.map +7 -0
- package/dist/pcd/lib/decompress-lzf.d.ts +7 -0
- package/dist/pcd/lib/decompress-lzf.d.ts.map +1 -0
- package/dist/pcd/lib/decompress-lzf.js +62 -0
- package/dist/pcd/lib/decompress-lzf.js.map +1 -0
- package/dist/pcd/lib/get-pcd-schema.cjs +70 -0
- package/dist/pcd/lib/get-pcd-schema.cjs.map +7 -0
- package/dist/pcd/lib/get-pcd-schema.d.ts +10 -0
- package/dist/pcd/lib/get-pcd-schema.d.ts.map +1 -0
- package/dist/pcd/lib/get-pcd-schema.js +53 -0
- package/dist/pcd/lib/get-pcd-schema.js.map +1 -0
- package/dist/pcd/lib/parse-pcd.cjs +354 -0
- package/dist/pcd/lib/parse-pcd.cjs.map +7 -0
- package/dist/pcd/lib/parse-pcd.d.ts +20 -0
- package/dist/pcd/lib/parse-pcd.d.ts.map +1 -0
- package/dist/pcd/lib/parse-pcd.js +341 -0
- package/dist/pcd/lib/parse-pcd.js.map +1 -0
- package/dist/pcd/lib/pcd-types.cjs +19 -0
- package/dist/pcd/lib/pcd-types.cjs.map +7 -0
- package/dist/pcd/lib/pcd-types.d.ts +31 -0
- package/dist/pcd/lib/pcd-types.d.ts.map +1 -0
- package/dist/pcd/lib/pcd-types.js +5 -0
- package/dist/pcd/lib/pcd-types.js.map +1 -0
- package/dist/pcd/pcd-format.cjs +42 -0
- package/dist/pcd/pcd-format.cjs.map +7 -0
- package/dist/pcd/pcd-format.d.ts +16 -0
- package/dist/pcd/pcd-format.d.ts.map +1 -0
- package/dist/pcd/pcd-format.js +19 -0
- package/dist/pcd/pcd-format.js.map +1 -0
- package/dist/pcd/pcd-loader-types.cjs +64 -0
- package/dist/pcd/pcd-loader-types.cjs.map +7 -0
- package/dist/pcd/pcd-loader-types.d.ts +105 -0
- package/dist/pcd/pcd-loader-types.d.ts.map +1 -0
- package/dist/pcd/pcd-loader-types.js +35 -0
- package/dist/pcd/pcd-loader-types.js.map +1 -0
- package/dist/pcd/pcd-loader.cjs +144 -0
- package/dist/pcd/pcd-loader.cjs.map +7 -0
- package/dist/pcd/pcd-loader.d.ts +44 -0
- package/dist/pcd/pcd-loader.d.ts.map +1 -0
- package/dist/pcd/pcd-loader.js +128 -0
- package/dist/pcd/pcd-loader.js.map +1 -0
- package/dist/pcd/pcd-writer.cjs +134 -0
- package/dist/pcd/pcd-writer.cjs.map +7 -0
- package/dist/pcd/pcd-writer.d.ts +37 -0
- package/dist/pcd/pcd-writer.d.ts.map +1 -0
- package/dist/pcd/pcd-writer.js +115 -0
- package/dist/pcd/pcd-writer.js.map +1 -0
- package/dist/pcd/unbundled.cjs +33 -0
- package/dist/pcd/unbundled.cjs.map +7 -0
- package/dist/pcd/unbundled.d.ts +3 -0
- package/dist/pcd/unbundled.d.ts.map +1 -0
- package/dist/pcd/unbundled.js +5 -0
- package/dist/pcd/unbundled.js.map +1 -0
- package/dist/pcd/workers/pcd-worker.cjs +23 -0
- package/dist/pcd/workers/pcd-worker.cjs.map +7 -0
- package/dist/pcd/workers/pcd-worker.d.ts +2 -0
- package/dist/pcd/workers/pcd-worker.d.ts.map +1 -0
- package/dist/pcd/workers/pcd-worker.js +23 -0
- package/dist/pcd/workers/pcd-worker.js.map +1 -0
- package/dist/pcd-loader-types.cjs +66 -0
- package/dist/pcd-loader-types.cjs.map +7 -0
- package/dist/pcd-loader-types.d.ts +2 -0
- package/dist/pcd-loader-types.d.ts.map +1 -0
- package/dist/pcd-loader-types.js +2 -0
- package/dist/pcd-loader-types.js.map +1 -0
- package/dist/pcd-loader.cjs +146 -0
- package/dist/pcd-loader.cjs.map +7 -0
- package/dist/pcd-loader.d.ts +2 -0
- package/dist/pcd-loader.d.ts.map +1 -0
- package/dist/pcd-loader.js +2 -0
- package/dist/pcd-loader.js.map +1 -0
- package/dist/pcd-worker.js +17655 -0
- package/dist/pcd-writer.cjs +136 -0
- package/dist/pcd-writer.cjs.map +7 -0
- package/dist/pcd-writer.d.ts +2 -0
- package/dist/pcd-writer.d.ts.map +1 -0
- package/dist/pcd-writer.js +2 -0
- package/dist/pcd-writer.js.map +1 -0
- package/dist/ply/bundled.cjs +33 -0
- package/dist/ply/bundled.cjs.map +7 -0
- package/dist/ply/bundled.d.ts +3 -0
- package/dist/ply/bundled.d.ts.map +1 -0
- package/dist/ply/bundled.js +5 -0
- package/dist/ply/bundled.js.map +1 -0
- package/dist/ply/index.cjs +40 -0
- package/dist/ply/index.cjs.map +7 -0
- package/dist/ply/index.d.ts +8 -0
- package/dist/ply/index.d.ts.map +1 -0
- package/dist/ply/index.js +11 -0
- package/dist/ply/index.js.map +1 -0
- package/dist/ply/lib/get-ply-schema.cjs +126 -0
- package/dist/ply/lib/get-ply-schema.cjs.map +7 -0
- package/dist/ply/lib/get-ply-schema.d.ts +10 -0
- package/dist/ply/lib/get-ply-schema.d.ts.map +1 -0
- package/dist/ply/lib/get-ply-schema.js +117 -0
- package/dist/ply/lib/get-ply-schema.js.map +1 -0
- package/dist/ply/lib/normalize-ply.cjs +96 -0
- package/dist/ply/lib/normalize-ply.cjs.map +7 -0
- package/dist/ply/lib/normalize-ply.d.ts +8 -0
- package/dist/ply/lib/normalize-ply.d.ts.map +1 -0
- package/dist/ply/lib/normalize-ply.js +89 -0
- package/dist/ply/lib/normalize-ply.js.map +1 -0
- package/dist/ply/lib/parse-ply-arrow.cjs +552 -0
- package/dist/ply/lib/parse-ply-arrow.cjs.map +7 -0
- package/dist/ply/lib/parse-ply-arrow.d.ts +25 -0
- package/dist/ply/lib/parse-ply-arrow.d.ts.map +1 -0
- package/dist/ply/lib/parse-ply-arrow.js +493 -0
- package/dist/ply/lib/parse-ply-arrow.js.map +1 -0
- package/dist/ply/lib/parse-ply-in-batches.cjs +607 -0
- package/dist/ply/lib/parse-ply-in-batches.cjs.map +7 -0
- package/dist/ply/lib/parse-ply-in-batches.d.ts +9 -0
- package/dist/ply/lib/parse-ply-in-batches.d.ts.map +1 -0
- package/dist/ply/lib/parse-ply-in-batches.js +625 -0
- package/dist/ply/lib/parse-ply-in-batches.js.map +1 -0
- package/dist/ply/lib/parse-ply.cjs +755 -0
- package/dist/ply/lib/parse-ply.cjs.map +7 -0
- package/dist/ply/lib/parse-ply.d.ts +69 -0
- package/dist/ply/lib/parse-ply.d.ts.map +1 -0
- package/dist/ply/lib/parse-ply.js +851 -0
- package/dist/ply/lib/parse-ply.js.map +1 -0
- package/dist/ply/lib/ply-types.cjs +19 -0
- package/dist/ply/lib/ply-types.cjs.map +7 -0
- package/dist/ply/lib/ply-types.d.ts +37 -0
- package/dist/ply/lib/ply-types.d.ts.map +1 -0
- package/dist/ply/lib/ply-types.js +2 -0
- package/dist/ply/lib/ply-types.js.map +1 -0
- package/dist/ply/ply-format.cjs +43 -0
- package/dist/ply/ply-format.cjs.map +7 -0
- package/dist/ply/ply-format.d.ts +18 -0
- package/dist/ply/ply-format.d.ts.map +1 -0
- package/dist/ply/ply-format.js +22 -0
- package/dist/ply/ply-format.js.map +1 -0
- package/dist/ply/ply-loader-types.cjs +65 -0
- package/dist/ply/ply-loader-types.cjs.map +7 -0
- package/dist/ply/ply-loader-types.d.ts +111 -0
- package/dist/ply/ply-loader-types.d.ts.map +1 -0
- package/dist/ply/ply-loader-types.js +38 -0
- package/dist/ply/ply-loader-types.js.map +1 -0
- package/dist/ply/ply-loader.cjs +134 -0
- package/dist/ply/ply-loader.cjs.map +7 -0
- package/dist/ply/ply-loader.d.ts +44 -0
- package/dist/ply/ply-loader.d.ts.map +1 -0
- package/dist/ply/ply-loader.js +121 -0
- package/dist/ply/ply-loader.js.map +1 -0
- package/dist/ply/ply-writer.cjs +175 -0
- package/dist/ply/ply-writer.cjs.map +7 -0
- package/dist/ply/ply-writer.d.ts +37 -0
- package/dist/ply/ply-writer.d.ts.map +1 -0
- package/dist/ply/ply-writer.js +140 -0
- package/dist/ply/ply-writer.js.map +1 -0
- package/dist/ply/unbundled.cjs +33 -0
- package/dist/ply/unbundled.cjs.map +7 -0
- package/dist/ply/unbundled.d.ts +3 -0
- package/dist/ply/unbundled.d.ts.map +1 -0
- package/dist/ply/unbundled.js +5 -0
- package/dist/ply/unbundled.js.map +1 -0
- package/dist/ply/workers/ply-worker.cjs +34 -0
- package/dist/ply/workers/ply-worker.cjs.map +7 -0
- package/dist/ply/workers/ply-worker.d.ts +2 -0
- package/dist/ply/workers/ply-worker.d.ts.map +1 -0
- package/dist/ply/workers/ply-worker.js +37 -0
- package/dist/ply/workers/ply-worker.js.map +1 -0
- package/dist/ply-loader-types.cjs +67 -0
- package/dist/ply-loader-types.cjs.map +7 -0
- package/dist/ply-loader-types.d.ts +2 -0
- package/dist/ply-loader-types.d.ts.map +1 -0
- package/dist/ply-loader-types.js +2 -0
- package/dist/ply-loader-types.js.map +1 -0
- package/dist/ply-loader.cjs +136 -0
- package/dist/ply-loader.cjs.map +7 -0
- package/dist/ply-loader.d.ts +2 -0
- package/dist/ply-loader.d.ts.map +1 -0
- package/dist/ply-loader.js +2 -0
- package/dist/ply-loader.js.map +1 -0
- package/dist/ply-worker.js +19308 -0
- package/dist/ply-writer.cjs +177 -0
- package/dist/ply-writer.cjs.map +7 -0
- package/dist/ply-writer.d.ts +2 -0
- package/dist/ply-writer.d.ts.map +1 -0
- package/dist/ply-writer.js +2 -0
- package/dist/ply-writer.js.map +1 -0
- package/package.json +237 -4
- package/src/index.ts +19 -0
- package/src/las/bundled.ts +39 -0
- package/src/las/index.ts +70 -0
- package/src/las/las-copc-loader-types.ts +18 -0
- package/src/las/las-copc-loader.ts +61 -0
- package/src/las/las-format.ts +21 -0
- package/src/las/las-loader-shared.ts +124 -0
- package/src/las/las-loader-types.ts +27 -0
- package/src/las/las-loader.ts +109 -0
- package/src/las/las-writer.ts +1473 -0
- package/src/las/laz-rs-loader-types.ts +21 -0
- package/src/las/laz-rs-loader.ts +53 -0
- package/src/las/lazperf-loader-types.ts +22 -0
- package/src/las/lazperf-loader.ts +65 -0
- package/src/las/lib/LASZIP-LICENSE +202 -0
- package/src/las/lib/LASZIP-NOTICE +4 -0
- package/src/las/lib/copc/parse-las.ts +265 -0
- package/src/las/lib/get-las-schema.ts +50 -0
- package/src/las/lib/las-compatibility.ts +178 -0
- package/src/las/lib/las-extra-bytes.ts +274 -0
- package/src/las/lib/las-types.ts +206 -0
- package/src/las/lib/las-waveform.ts +292 -0
- package/src/las/lib/laz-perf/laslaz-decoder.ts +443 -0
- package/src/las/lib/laz-perf/parse-las.ts +412 -0
- package/src/las/lib/laz-rs-wasm/laslaz-decoder.ts +488 -0
- package/src/las/lib/laz-rs-wasm/parse-las.ts +412 -0
- package/src/las/lib/typescript/parse-las.ts +3730 -0
- package/src/las/libs/laz-perf/laz-perf.ts +20615 -0
- package/src/las/libs/laz-rs-wasm/README.md +5 -0
- package/src/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +89 -0
- package/src/las/libs/laz-rs-wasm/laz_rs_wasm.js +497 -0
- package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
- package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
- package/src/las/libs/laz-rs-wasm/package.json +25 -0
- package/src/las/unbundled.ts +38 -0
- package/src/las/workers/las-worker.ts +24 -0
- package/src/las-copc-loader-types.ts +1 -0
- package/src/las-copc-loader.ts +1 -0
- package/src/las-loader-types.ts +1 -0
- package/src/las-loader.ts +1 -0
- package/src/las-writer.ts +1 -0
- package/src/laz-rs-loader-types.ts +1 -0
- package/src/laz-rs-loader.ts +1 -0
- package/src/lazperf-loader-types.ts +1 -0
- package/src/lazperf-loader.ts +1 -0
- package/src/pcd/bundled.ts +9 -0
- package/src/pcd/index.ts +13 -0
- package/src/pcd/lib/decompress-lzf.ts +68 -0
- package/src/pcd/lib/get-pcd-schema.ts +66 -0
- package/src/pcd/lib/parse-pcd.ts +474 -0
- package/src/pcd/lib/pcd-types.ts +34 -0
- package/src/pcd/pcd-format.ts +21 -0
- package/src/pcd/pcd-loader-types.ts +53 -0
- package/src/pcd/pcd-loader.ts +179 -0
- package/src/pcd/pcd-writer.ts +152 -0
- package/src/pcd/unbundled.ts +6 -0
- package/src/pcd/workers/pcd-worker.ts +24 -0
- package/src/pcd-loader-types.ts +1 -0
- package/src/pcd-loader.ts +1 -0
- package/src/pcd-writer.ts +1 -0
- package/src/ply/bundled.ts +9 -0
- package/src/ply/index.ts +15 -0
- package/src/ply/lib/get-ply-schema.ts +133 -0
- package/src/ply/lib/normalize-ply.ts +110 -0
- package/src/ply/lib/parse-ply-arrow.ts +676 -0
- package/src/ply/lib/parse-ply-in-batches.ts +827 -0
- package/src/ply/lib/parse-ply.ts +1081 -0
- package/src/ply/lib/ply-types.ts +47 -0
- package/src/ply/ply-format.ts +24 -0
- package/src/ply/ply-loader-types.ts +61 -0
- package/src/ply/ply-loader.ts +185 -0
- package/src/ply/ply-writer.ts +215 -0
- package/src/ply/unbundled.ts +6 -0
- package/src/ply/workers/ply-worker.ts +40 -0
- package/src/ply-loader-types.ts +1 -0
- package/src/ply-loader.ts +1 -0
- package/src/ply-writer.ts +1 -0
- package/third-party-licenses/plasio-LICENSE +21 -0
- package/third-party-licenses/three-LICENSE +21 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/pcd-writer.ts
|
|
21
|
+
var pcd_writer_exports = {};
|
|
22
|
+
__export(pcd_writer_exports, {
|
|
23
|
+
PCDWriter: () => PCDWriter
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(pcd_writer_exports);
|
|
26
|
+
|
|
27
|
+
// src/pcd/pcd-writer.ts
|
|
28
|
+
var import_schema_utils = require("@loaders.gl/core/schema-utils");
|
|
29
|
+
var import_pcd_format = require("./pcd-format.cjs");
|
|
30
|
+
var VERSION = true ? "5.0.0-beta.2" : "latest";
|
|
31
|
+
var PCDWriter = {
|
|
32
|
+
...import_pcd_format.PCDFormat,
|
|
33
|
+
dataType: null,
|
|
34
|
+
batchType: null,
|
|
35
|
+
version: VERSION,
|
|
36
|
+
options: {
|
|
37
|
+
pcd: {}
|
|
38
|
+
},
|
|
39
|
+
text: true,
|
|
40
|
+
encode: async (data, options) => encodePCDSync(data, options),
|
|
41
|
+
encodeSync: encodePCDSync,
|
|
42
|
+
encodeTextSync: encodePCD
|
|
43
|
+
};
|
|
44
|
+
function encodePCDSync(data, options) {
|
|
45
|
+
const text = encodePCD(data, options);
|
|
46
|
+
return new TextEncoder().encode(text).buffer;
|
|
47
|
+
}
|
|
48
|
+
function encodePCD(data, options) {
|
|
49
|
+
const mesh = (0, import_schema_utils.convertTableToMesh)(normalizeMeshArrowTable(data));
|
|
50
|
+
const positionAttribute = getRequiredAttribute(mesh, "POSITION");
|
|
51
|
+
const normalAttribute = mesh.attributes.NORMAL;
|
|
52
|
+
const colorAttribute = mesh.attributes.COLOR_0;
|
|
53
|
+
const vertexCount = positionAttribute.value.length / positionAttribute.size;
|
|
54
|
+
const fieldNames = ["x", "y", "z"];
|
|
55
|
+
const fieldSizes = ["4", "4", "4"];
|
|
56
|
+
const fieldTypes = ["F", "F", "F"];
|
|
57
|
+
const fieldCounts = ["1", "1", "1"];
|
|
58
|
+
if (normalAttribute) {
|
|
59
|
+
fieldNames.push("normal_x", "normal_y", "normal_z");
|
|
60
|
+
fieldSizes.push("4", "4", "4");
|
|
61
|
+
fieldTypes.push("F", "F", "F");
|
|
62
|
+
fieldCounts.push("1", "1", "1");
|
|
63
|
+
}
|
|
64
|
+
if (colorAttribute) {
|
|
65
|
+
fieldNames.push("rgb");
|
|
66
|
+
fieldSizes.push("4");
|
|
67
|
+
fieldTypes.push("F");
|
|
68
|
+
fieldCounts.push("1");
|
|
69
|
+
}
|
|
70
|
+
const lines = [
|
|
71
|
+
"# .PCD v0.7 - Point Cloud Data file generated by loaders.gl",
|
|
72
|
+
"VERSION 0.7",
|
|
73
|
+
`FIELDS ${fieldNames.join(" ")}`,
|
|
74
|
+
`SIZE ${fieldSizes.join(" ")}`,
|
|
75
|
+
`TYPE ${fieldTypes.join(" ")}`,
|
|
76
|
+
`COUNT ${fieldCounts.join(" ")}`,
|
|
77
|
+
`WIDTH ${vertexCount}`,
|
|
78
|
+
"HEIGHT 1",
|
|
79
|
+
"VIEWPOINT 0 0 0 1 0 0 0",
|
|
80
|
+
`POINTS ${vertexCount}`,
|
|
81
|
+
"DATA ascii"
|
|
82
|
+
];
|
|
83
|
+
for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {
|
|
84
|
+
const row = [
|
|
85
|
+
getComponent(positionAttribute, vertexIndex, 0),
|
|
86
|
+
getComponent(positionAttribute, vertexIndex, 1),
|
|
87
|
+
getComponent(positionAttribute, vertexIndex, 2)
|
|
88
|
+
];
|
|
89
|
+
if (normalAttribute) {
|
|
90
|
+
row.push(
|
|
91
|
+
getComponent(normalAttribute, vertexIndex, 0),
|
|
92
|
+
getComponent(normalAttribute, vertexIndex, 1),
|
|
93
|
+
getComponent(normalAttribute, vertexIndex, 2)
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
if (colorAttribute) {
|
|
97
|
+
row.push(getPackedRGB(colorAttribute, vertexIndex));
|
|
98
|
+
}
|
|
99
|
+
lines.push(row.join(" "));
|
|
100
|
+
}
|
|
101
|
+
return `${lines.join("\n")}
|
|
102
|
+
`;
|
|
103
|
+
}
|
|
104
|
+
function normalizeMeshArrowTable(data) {
|
|
105
|
+
if ("shape" in data && data.shape === "arrow-table") {
|
|
106
|
+
return data;
|
|
107
|
+
}
|
|
108
|
+
return (0, import_schema_utils.convertMeshToTable)(data, "arrow-table");
|
|
109
|
+
}
|
|
110
|
+
function getRequiredAttribute(mesh, attributeName) {
|
|
111
|
+
const attribute = mesh.attributes[attributeName];
|
|
112
|
+
if (!attribute) {
|
|
113
|
+
throw new Error(`PCDWriter: ${attributeName} attribute is required`);
|
|
114
|
+
}
|
|
115
|
+
return attribute;
|
|
116
|
+
}
|
|
117
|
+
function getComponent(attribute, vertexIndex, componentIndex) {
|
|
118
|
+
return attribute.value[vertexIndex * attribute.size + componentIndex] || 0;
|
|
119
|
+
}
|
|
120
|
+
function getPackedRGB(attribute, vertexIndex) {
|
|
121
|
+
const bytes = new Uint8Array(4);
|
|
122
|
+
bytes[0] = getColorByte(attribute, vertexIndex, 0);
|
|
123
|
+
bytes[1] = getColorByte(attribute, vertexIndex, 1);
|
|
124
|
+
bytes[2] = getColorByte(attribute, vertexIndex, 2);
|
|
125
|
+
return new DataView(bytes.buffer).getFloat32(0, true);
|
|
126
|
+
}
|
|
127
|
+
function getColorByte(attribute, vertexIndex, componentIndex) {
|
|
128
|
+
const value = getComponent(attribute, vertexIndex, componentIndex);
|
|
129
|
+
const byteValue = attribute.normalized || value <= 1 ? value * 255 : value;
|
|
130
|
+
return Math.max(0, Math.min(255, Math.round(byteValue)));
|
|
131
|
+
}
|
|
132
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
133
|
+
0 && (module.exports = {
|
|
134
|
+
PCDWriter
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=pcd-writer.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/pcd-writer.ts", "../src/pcd/pcd-writer.ts"],
|
|
4
|
+
"sourcesContent": ["export * from './pcd/pcd-writer.js';\n", "// 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 {convertMeshToTable, convertTableToMesh} from '@loaders.gl/core/schema-utils';\nimport {PCDFormat} from './pcd-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 `PCDWriter`. */\nexport type PCDWriterOptions = WriterOptions & {\n /** Reserved for future PCD writer options. */\n pcd?: Record<string, never>;\n};\n\n/**\n * Writer for the PCD point cloud format.\n */\nexport const PCDWriter = {\n ...PCDFormat,\n dataType: null as unknown as Mesh | MeshArrowTable,\n batchType: null as never,\n version: VERSION,\n options: {\n pcd: {}\n },\n text: true,\n encode: async (data, options) => encodePCDSync(data, options),\n encodeSync: encodePCDSync,\n encodeTextSync: encodePCD\n} as const satisfies WriterWithEncoder<Mesh | MeshArrowTable, never, PCDWriterOptions>;\n\n/** Encode mesh category data as PCD bytes. */\nfunction encodePCDSync(data: Mesh | MeshArrowTable, options?: PCDWriterOptions): ArrayBuffer {\n const text = encodePCD(data, options);\n return new TextEncoder().encode(text).buffer;\n}\n\n/** Encode mesh category data as ASCII PCD text. */\nfunction encodePCD(data: Mesh | MeshArrowTable, options?: PCDWriterOptions): string {\n const mesh = convertTableToMesh(normalizeMeshArrowTable(data));\n const positionAttribute = getRequiredAttribute(mesh, 'POSITION');\n const normalAttribute = mesh.attributes.NORMAL;\n const colorAttribute = mesh.attributes.COLOR_0;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const fieldNames = ['x', 'y', 'z'];\n const fieldSizes = ['4', '4', '4'];\n const fieldTypes = ['F', 'F', 'F'];\n const fieldCounts = ['1', '1', '1'];\n\n if (normalAttribute) {\n fieldNames.push('normal_x', 'normal_y', 'normal_z');\n fieldSizes.push('4', '4', '4');\n fieldTypes.push('F', 'F', 'F');\n fieldCounts.push('1', '1', '1');\n }\n\n if (colorAttribute) {\n fieldNames.push('rgb');\n fieldSizes.push('4');\n fieldTypes.push('F');\n fieldCounts.push('1');\n }\n\n const lines = [\n '# .PCD v0.7 - Point Cloud Data file generated by loaders.gl',\n 'VERSION 0.7',\n `FIELDS ${fieldNames.join(' ')}`,\n `SIZE ${fieldSizes.join(' ')}`,\n `TYPE ${fieldTypes.join(' ')}`,\n `COUNT ${fieldCounts.join(' ')}`,\n `WIDTH ${vertexCount}`,\n 'HEIGHT 1',\n 'VIEWPOINT 0 0 0 1 0 0 0',\n `POINTS ${vertexCount}`,\n 'DATA ascii'\n ];\n\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n const row = [\n getComponent(positionAttribute, vertexIndex, 0),\n getComponent(positionAttribute, vertexIndex, 1),\n getComponent(positionAttribute, vertexIndex, 2)\n ];\n\n if (normalAttribute) {\n row.push(\n getComponent(normalAttribute, vertexIndex, 0),\n getComponent(normalAttribute, vertexIndex, 1),\n getComponent(normalAttribute, vertexIndex, 2)\n );\n }\n\n if (colorAttribute) {\n row.push(getPackedRGB(colorAttribute, vertexIndex));\n }\n\n lines.push(row.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): MeshArrowTable {\n if ('shape' in data && data.shape === 'arrow-table') {\n return data;\n }\n return convertMeshToTable(data as Mesh, 'arrow-table');\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(`PCDWriter: ${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 an RGB value packed into the PCD float convention. */\nfunction getPackedRGB(attribute: MeshAttribute, vertexIndex: number): number {\n const bytes = new Uint8Array(4);\n bytes[0] = getColorByte(attribute, vertexIndex, 0);\n bytes[1] = getColorByte(attribute, vertexIndex, 1);\n bytes[2] = getColorByte(attribute, vertexIndex, 2);\n return new DataView(bytes.buffer).getFloat32(0, true);\n}\n\n/** Return one color component as an unsigned byte. */\nfunction getColorByte(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n const value = getComponent(attribute, vertexIndex, componentIndex);\n const byteValue = attribute.normalized || value <= 1 ? value * 255 : value;\n return Math.max(0, Math.min(255, Math.round(byteValue)));\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMA,0BAAqD;AACrD,wBAAwB;AAIxB,IAAM,UAAU,OAAqC,iBAAc;AAW5D,IAAM,YAAY;AAAA,EACvB,GAAG;AAAA,EACH,UAAU;AAAA,EACV,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAAS;AAAA,IACP,KAAK,CAAC;AAAA,EACR;AAAA,EACA,MAAM;AAAA,EACN,QAAQ,OAAO,MAAM,YAAY,cAAc,MAAM,OAAO;AAAA,EAC5D,YAAY;AAAA,EACZ,gBAAgB;AAClB;AAGA,SAAS,cAAc,MAA6B,SAAyC;AAC3F,QAAM,OAAO,UAAU,MAAM,OAAO;AACpC,SAAO,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE;AACxC;AAGA,SAAS,UAAU,MAA6B,SAAoC;AAClF,QAAM,WAAO,wCAAmB,wBAAwB,IAAI,CAAC;AAC7D,QAAM,oBAAoB,qBAAqB,MAAM,UAAU;AAC/D,QAAM,kBAAkB,KAAK,WAAW;AACxC,QAAM,iBAAiB,KAAK,WAAW;AACvC,QAAM,cAAc,kBAAkB,MAAM,SAAS,kBAAkB;AACvE,QAAM,aAAa,CAAC,KAAK,KAAK,GAAG;AACjC,QAAM,aAAa,CAAC,KAAK,KAAK,GAAG;AACjC,QAAM,aAAa,CAAC,KAAK,KAAK,GAAG;AACjC,QAAM,cAAc,CAAC,KAAK,KAAK,GAAG;AAElC,MAAI,iBAAiB;AACnB,eAAW,KAAK,YAAY,YAAY,UAAU;AAClD,eAAW,KAAK,KAAK,KAAK,GAAG;AAC7B,eAAW,KAAK,KAAK,KAAK,GAAG;AAC7B,gBAAY,KAAK,KAAK,KAAK,GAAG;AAAA,EAChC;AAEA,MAAI,gBAAgB;AAClB,eAAW,KAAK,KAAK;AACrB,eAAW,KAAK,GAAG;AACnB,eAAW,KAAK,GAAG;AACnB,gBAAY,KAAK,GAAG;AAAA,EACtB;AAEA,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA,UAAU,WAAW,KAAK,GAAG,CAAC;AAAA,IAC9B,QAAQ,WAAW,KAAK,GAAG,CAAC;AAAA,IAC5B,QAAQ,WAAW,KAAK,GAAG,CAAC;AAAA,IAC5B,SAAS,YAAY,KAAK,GAAG,CAAC;AAAA,IAC9B,SAAS,WAAW;AAAA,IACpB;AAAA,IACA;AAAA,IACA,UAAU,WAAW;AAAA,IACrB;AAAA,EACF;AAEA,WAAS,cAAc,GAAG,cAAc,aAAa,eAAe;AAClE,UAAM,MAAM;AAAA,MACV,aAAa,mBAAmB,aAAa,CAAC;AAAA,MAC9C,aAAa,mBAAmB,aAAa,CAAC;AAAA,MAC9C,aAAa,mBAAmB,aAAa,CAAC;AAAA,IAChD;AAEA,QAAI,iBAAiB;AACnB,UAAI;AAAA,QACF,aAAa,iBAAiB,aAAa,CAAC;AAAA,QAC5C,aAAa,iBAAiB,aAAa,CAAC;AAAA,QAC5C,aAAa,iBAAiB,aAAa,CAAC;AAAA,MAC9C;AAAA,IACF;AAEA,QAAI,gBAAgB;AAClB,UAAI,KAAK,aAAa,gBAAgB,WAAW,CAAC;AAAA,IACpD;AAEA,UAAM,KAAK,IAAI,KAAK,GAAG,CAAC;AAAA,EAC1B;AAEA,SAAO,GAAG,MAAM,KAAK,IAAI,CAAC;AAAA;AAC5B;AAGA,SAAS,wBAAwB,MAA6C;AAC5E,MAAI,WAAW,QAAQ,KAAK,UAAU,eAAe;AACnD,WAAO;AAAA,EACT;AACA,aAAO,wCAAmB,MAAc,aAAa;AACvD;AAGA,SAAS,qBAAqB,MAAY,eAAsC;AAC9E,QAAM,YAAY,KAAK,WAAW,aAAa;AAC/C,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,cAAc,aAAa,wBAAwB;AAAA,EACrE;AACA,SAAO;AACT;AAGA,SAAS,aACP,WACA,aACA,gBACQ;AACR,SAAO,UAAU,MAAM,cAAc,UAAU,OAAO,cAAc,KAAK;AAC3E;AAGA,SAAS,aAAa,WAA0B,aAA6B;AAC3E,QAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,QAAM,CAAC,IAAI,aAAa,WAAW,aAAa,CAAC;AACjD,QAAM,CAAC,IAAI,aAAa,WAAW,aAAa,CAAC;AACjD,QAAM,CAAC,IAAI,aAAa,WAAW,aAAa,CAAC;AACjD,SAAO,IAAI,SAAS,MAAM,MAAM,EAAE,WAAW,GAAG,IAAI;AACtD;AAGA,SAAS,aACP,WACA,aACA,gBACQ;AACR,QAAM,QAAQ,aAAa,WAAW,aAAa,cAAc;AACjE,QAAM,YAAY,UAAU,cAAc,SAAS,IAAI,QAAQ,MAAM;AACrE,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM,SAAS,CAAC,CAAC;AACzD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pcd-writer.d.ts","sourceRoot":"","sources":["../src/pcd-writer.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pcd-writer.js","sourceRoot":"","sources":["../src/pcd-writer.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/ply/bundled.ts
|
|
21
|
+
var bundled_exports = {};
|
|
22
|
+
__export(bundled_exports, {
|
|
23
|
+
PLYLoader: () => import_ply_loader.PLYLoaderWithParser,
|
|
24
|
+
PLYWorkerLoader: () => import_ply_loader.PLYLoaderWithParser
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(bundled_exports);
|
|
27
|
+
var import_ply_loader = require("./ply-loader.cjs");
|
|
28
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
29
|
+
0 && (module.exports = {
|
|
30
|
+
PLYLoader,
|
|
31
|
+
PLYWorkerLoader
|
|
32
|
+
});
|
|
33
|
+
//# sourceMappingURL=bundled.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ply/bundled.ts"],
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nexport type {PLYLoaderOptions} from './ply-loader-types';\nexport {\n PLYLoaderWithParser as PLYWorkerLoader,\n PLYLoaderWithParser as PLYLoader\n} from './ply-loader';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,wBAGO;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundled.d.ts","sourceRoot":"","sources":["../../src/ply/bundled.ts"],"names":[],"mappings":"AAIA,YAAY,EAAC,gBAAgB,EAAC,8BAA2B;AACzD,OAAO,EACL,mBAAmB,IAAI,eAAe,EACtC,mBAAmB,IAAI,SAAS,EACjC,wBAAqB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundled.js","sourceRoot":"","sources":["../../src/ply/bundled.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAGpC,OAAO,EACL,mBAAmB,IAAI,eAAe,EACtC,mBAAmB,IAAI,SAAS,EACjC,wBAAqB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/ply/index.ts
|
|
21
|
+
var ply_exports = {};
|
|
22
|
+
__export(ply_exports, {
|
|
23
|
+
PLYFormat: () => import_ply_format.PLYFormat,
|
|
24
|
+
PLYLoader: () => import_ply_loader_types.PLYLoader,
|
|
25
|
+
PLYWorkerLoader: () => import_ply_loader_types2.PLYWorkerLoader,
|
|
26
|
+
PLYWriter: () => import_ply_writer.PLYWriter
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(ply_exports);
|
|
29
|
+
var import_ply_format = require("./ply-format.cjs");
|
|
30
|
+
var import_ply_loader_types = require("./ply-loader-types.cjs");
|
|
31
|
+
var import_ply_writer = require("./ply-writer.cjs");
|
|
32
|
+
var import_ply_loader_types2 = require("./ply-loader-types.cjs");
|
|
33
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
34
|
+
0 && (module.exports = {
|
|
35
|
+
PLYFormat,
|
|
36
|
+
PLYLoader,
|
|
37
|
+
PLYWorkerLoader,
|
|
38
|
+
PLYWriter
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ply/index.ts"],
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// PLYLoader\nexport {PLYFormat} from './ply-format';\n\nexport type {PLYLoaderOptions} from './ply-loader-types';\nexport {PLYLoader} from './ply-loader-types';\nexport type {PLYWriterOptions} from './ply-writer';\nexport {PLYWriter} from './ply-writer';\n\n// DEPRECATED EXPORTS\n/** @deprecated Use PLYLoader. */\nexport {PLYWorkerLoader} from './ply-loader-types';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,wBAAwB;AAGxB,8BAAwB;AAExB,wBAAwB;AAIxB,IAAAA,2BAA8B;",
|
|
6
|
+
"names": ["import_ply_loader_types"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { PLYFormat } from "./ply-format.js";
|
|
2
|
+
export type { PLYLoaderOptions } from "./ply-loader-types.js";
|
|
3
|
+
export { PLYLoader } from "./ply-loader-types.js";
|
|
4
|
+
export type { PLYWriterOptions } from "./ply-writer.js";
|
|
5
|
+
export { PLYWriter } from "./ply-writer.js";
|
|
6
|
+
/** @deprecated Use PLYLoader. */
|
|
7
|
+
export { PLYWorkerLoader } from "./ply-loader-types.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ply/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAEvC,YAAY,EAAC,gBAAgB,EAAC,8BAA2B;AACzD,OAAO,EAAC,SAAS,EAAC,8BAA2B;AAC7C,YAAY,EAAC,gBAAgB,EAAC,wBAAqB;AACnD,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAGvC,iCAAiC;AACjC,OAAO,EAAC,eAAe,EAAC,8BAA2B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
// PLYLoader
|
|
5
|
+
export { PLYFormat } from "./ply-format.js";
|
|
6
|
+
export { PLYLoader } from "./ply-loader-types.js";
|
|
7
|
+
export { PLYWriter } from "./ply-writer.js";
|
|
8
|
+
// DEPRECATED EXPORTS
|
|
9
|
+
/** @deprecated Use PLYLoader. */
|
|
10
|
+
export { PLYWorkerLoader } from "./ply-loader-types.js";
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ply/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,YAAY;AACZ,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAGvC,OAAO,EAAC,SAAS,EAAC,8BAA2B;AAE7C,OAAO,EAAC,SAAS,EAAC,wBAAqB;AAEvC,qBAAqB;AACrB,iCAAiC;AACjC,OAAO,EAAC,eAAe,EAAC,8BAA2B"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/ply/lib/get-ply-schema.ts
|
|
21
|
+
var get_ply_schema_exports = {};
|
|
22
|
+
__export(get_ply_schema_exports, {
|
|
23
|
+
getPLYSchema: () => getPLYSchema
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(get_ply_schema_exports);
|
|
26
|
+
var import_schema_utils = require("@loaders.gl/core/schema-utils");
|
|
27
|
+
function getPLYSchema(plyHeader, attributes) {
|
|
28
|
+
const metadata = makeMetadataFromPlyHeader(plyHeader);
|
|
29
|
+
const schema = (0, import_schema_utils.deduceMeshSchema)(attributes, metadata);
|
|
30
|
+
addGaussianSplatSchemaMetadata(schema, plyHeader);
|
|
31
|
+
return schema;
|
|
32
|
+
}
|
|
33
|
+
function makeMetadataFromPlyHeader(plyHeader) {
|
|
34
|
+
const metadata = {};
|
|
35
|
+
metadata.ply_comments = JSON.stringify(plyHeader.comments);
|
|
36
|
+
metadata.ply_elements = JSON.stringify(plyHeader.elements);
|
|
37
|
+
if (plyHeader.format !== void 0) {
|
|
38
|
+
metadata.ply_format = plyHeader.format;
|
|
39
|
+
}
|
|
40
|
+
if (plyHeader.version !== void 0) {
|
|
41
|
+
metadata.ply_version = plyHeader.version;
|
|
42
|
+
}
|
|
43
|
+
if (plyHeader.headerLength !== void 0) {
|
|
44
|
+
metadata.ply_headerLength = plyHeader.headerLength.toString(10);
|
|
45
|
+
}
|
|
46
|
+
return metadata;
|
|
47
|
+
}
|
|
48
|
+
function addGaussianSplatSchemaMetadata(schema, plyHeader) {
|
|
49
|
+
const vertexPropertyNames = getVertexPropertyNames(plyHeader);
|
|
50
|
+
if (!isGaussianSplatPLY(vertexPropertyNames)) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
schema.metadata["loaders_gl.semantic_type"] = "gaussian-splats";
|
|
54
|
+
schema.metadata["loaders_gl.gaussian_splats.version"] = "1";
|
|
55
|
+
for (const field of schema.fields) {
|
|
56
|
+
addGaussianSplatFieldMetadata(field);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function getVertexPropertyNames(plyHeader) {
|
|
60
|
+
const vertexElement = plyHeader.elements.find((element) => element.name === "vertex");
|
|
61
|
+
return new Set(vertexElement?.properties.map((property) => property.name) || []);
|
|
62
|
+
}
|
|
63
|
+
function isGaussianSplatPLY(propertyNames) {
|
|
64
|
+
const requiredPropertyNames = [
|
|
65
|
+
"x",
|
|
66
|
+
"y",
|
|
67
|
+
"z",
|
|
68
|
+
"f_dc_0",
|
|
69
|
+
"f_dc_1",
|
|
70
|
+
"f_dc_2",
|
|
71
|
+
"opacity",
|
|
72
|
+
"scale_0",
|
|
73
|
+
"scale_1",
|
|
74
|
+
"scale_2",
|
|
75
|
+
"rot_0",
|
|
76
|
+
"rot_1",
|
|
77
|
+
"rot_2",
|
|
78
|
+
"rot_3"
|
|
79
|
+
];
|
|
80
|
+
return requiredPropertyNames.every((propertyName) => propertyNames.has(propertyName));
|
|
81
|
+
}
|
|
82
|
+
function addGaussianSplatFieldMetadata(field) {
|
|
83
|
+
field.metadata ||= {};
|
|
84
|
+
const metadata = field.metadata;
|
|
85
|
+
if (field.name === "opacity") {
|
|
86
|
+
metadata["loaders_gl.gaussian_splats.semantic"] = "opacity";
|
|
87
|
+
metadata["loaders_gl.gaussian_splats.encoding"] = "logit";
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const scaleComponent = getNumberedPropertyComponent(field.name, "scale");
|
|
91
|
+
if (scaleComponent !== void 0) {
|
|
92
|
+
metadata["loaders_gl.gaussian_splats.semantic"] = "scale";
|
|
93
|
+
metadata["loaders_gl.gaussian_splats.component"] = scaleComponent;
|
|
94
|
+
metadata["loaders_gl.gaussian_splats.encoding"] = "log";
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const rotationComponent = getNumberedPropertyComponent(field.name, "rot");
|
|
98
|
+
if (rotationComponent !== void 0) {
|
|
99
|
+
metadata["loaders_gl.gaussian_splats.semantic"] = "rotation";
|
|
100
|
+
metadata["loaders_gl.gaussian_splats.component"] = rotationComponent;
|
|
101
|
+
metadata["loaders_gl.gaussian_splats.encoding"] = "quaternion";
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const sphericalHarmonicDCComponent = getNumberedPropertyComponent(field.name, "f_dc");
|
|
105
|
+
if (sphericalHarmonicDCComponent !== void 0) {
|
|
106
|
+
metadata["loaders_gl.gaussian_splats.semantic"] = "spherical_harmonic_dc";
|
|
107
|
+
metadata["loaders_gl.gaussian_splats.component"] = sphericalHarmonicDCComponent;
|
|
108
|
+
metadata["loaders_gl.gaussian_splats.encoding"] = "coefficient";
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const sphericalHarmonicRestComponent = getNumberedPropertyComponent(field.name, "f_rest");
|
|
112
|
+
if (sphericalHarmonicRestComponent !== void 0) {
|
|
113
|
+
metadata["loaders_gl.gaussian_splats.semantic"] = "spherical_harmonic_rest";
|
|
114
|
+
metadata["loaders_gl.gaussian_splats.component"] = sphericalHarmonicRestComponent;
|
|
115
|
+
metadata["loaders_gl.gaussian_splats.encoding"] = "coefficient";
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function getNumberedPropertyComponent(name, prefix) {
|
|
119
|
+
const match = name.match(new RegExp(`^${prefix}_(\\d+)$`));
|
|
120
|
+
return match?.[1];
|
|
121
|
+
}
|
|
122
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
123
|
+
0 && (module.exports = {
|
|
124
|
+
getPLYSchema
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=get-ply-schema.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ply/lib/get-ply-schema.ts"],
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Schema, Field, MeshAttributes} from '@loaders.gl/core/schema';\nimport {deduceMeshSchema} from '@loaders.gl/core/schema-utils';\nimport type {PLYHeader} from './ply-types';\n\n/**\n * Gets schema from PLY header\n * @param plyHeader\n * @param metadata\n * @returns Schema\n */\nexport function getPLYSchema(plyHeader: PLYHeader, attributes: MeshAttributes): Schema {\n const metadata = makeMetadataFromPlyHeader(plyHeader);\n const schema = deduceMeshSchema(attributes, metadata);\n addGaussianSplatSchemaMetadata(schema, plyHeader);\n return schema;\n}\n\n/**\n * Make arrow like schema metadata by PlyHeader properties\n * @param plyHeader\n * @returns\n */\nfunction makeMetadataFromPlyHeader(plyHeader: PLYHeader): Record<string, string> {\n /* eslint-disable camelcase */\n const metadata: Record<string, string> = {};\n metadata.ply_comments = JSON.stringify(plyHeader.comments);\n metadata.ply_elements = JSON.stringify(plyHeader.elements);\n if (plyHeader.format !== undefined) {\n metadata.ply_format = plyHeader.format;\n }\n if (plyHeader.version !== undefined) {\n metadata.ply_version = plyHeader.version;\n }\n if (plyHeader.headerLength !== undefined) {\n metadata.ply_headerLength = plyHeader.headerLength.toString(10);\n }\n return metadata;\n}\n\n/** Add Gaussian splat metadata conventions for GraphDECO-style PLY columns. */\nfunction addGaussianSplatSchemaMetadata(schema: Schema, plyHeader: PLYHeader): void {\n const vertexPropertyNames = getVertexPropertyNames(plyHeader);\n if (!isGaussianSplatPLY(vertexPropertyNames)) {\n return;\n }\n\n schema.metadata['loaders_gl.semantic_type'] = 'gaussian-splats';\n schema.metadata['loaders_gl.gaussian_splats.version'] = '1';\n\n for (const field of schema.fields) {\n addGaussianSplatFieldMetadata(field);\n }\n}\n\n/** Return the property names for the PLY vertex element. */\nfunction getVertexPropertyNames(plyHeader: PLYHeader): Set<string> {\n const vertexElement = plyHeader.elements.find(element => element.name === 'vertex');\n return new Set(vertexElement?.properties.map(property => property.name) || []);\n}\n\n/** Return true if the PLY vertex properties match the de facto Gaussian splat layout. */\nfunction isGaussianSplatPLY(propertyNames: Set<string>): boolean {\n const requiredPropertyNames = [\n 'x',\n 'y',\n 'z',\n 'f_dc_0',\n 'f_dc_1',\n 'f_dc_2',\n 'opacity',\n 'scale_0',\n 'scale_1',\n 'scale_2',\n 'rot_0',\n 'rot_1',\n 'rot_2',\n 'rot_3'\n ];\n return requiredPropertyNames.every(propertyName => propertyNames.has(propertyName));\n}\n\n/** Add loaders.gl Gaussian splat metadata to one schema field. */\nfunction addGaussianSplatFieldMetadata(field: Field): void {\n field.metadata ||= {};\n const metadata = field.metadata;\n\n if (field.name === 'opacity') {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'opacity';\n metadata['loaders_gl.gaussian_splats.encoding'] = 'logit';\n return;\n }\n\n const scaleComponent = getNumberedPropertyComponent(field.name, 'scale');\n if (scaleComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'scale';\n metadata['loaders_gl.gaussian_splats.component'] = scaleComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'log';\n return;\n }\n\n const rotationComponent = getNumberedPropertyComponent(field.name, 'rot');\n if (rotationComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'rotation';\n metadata['loaders_gl.gaussian_splats.component'] = rotationComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'quaternion';\n return;\n }\n\n const sphericalHarmonicDCComponent = getNumberedPropertyComponent(field.name, 'f_dc');\n if (sphericalHarmonicDCComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'spherical_harmonic_dc';\n metadata['loaders_gl.gaussian_splats.component'] = sphericalHarmonicDCComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'coefficient';\n return;\n }\n\n const sphericalHarmonicRestComponent = getNumberedPropertyComponent(field.name, 'f_rest');\n if (sphericalHarmonicRestComponent !== undefined) {\n metadata['loaders_gl.gaussian_splats.semantic'] = 'spherical_harmonic_rest';\n metadata['loaders_gl.gaussian_splats.component'] = sphericalHarmonicRestComponent;\n metadata['loaders_gl.gaussian_splats.encoding'] = 'coefficient';\n }\n}\n\n/** Return the numeric suffix for a property such as scale_0. */\nfunction getNumberedPropertyComponent(name: string, prefix: string): string | undefined {\n const match = name.match(new RegExp(`^${prefix}_(\\\\d+)$`));\n return match?.[1];\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,0BAA+B;AASxB,SAAS,aAAa,WAAsB,YAAoC;AACrF,QAAM,WAAW,0BAA0B,SAAS;AACpD,QAAM,aAAS,sCAAiB,YAAY,QAAQ;AACpD,iCAA+B,QAAQ,SAAS;AAChD,SAAO;AACT;AAOA,SAAS,0BAA0B,WAA8C;AAE/E,QAAM,WAAmC,CAAC;AAC1C,WAAS,eAAe,KAAK,UAAU,UAAU,QAAQ;AACzD,WAAS,eAAe,KAAK,UAAU,UAAU,QAAQ;AACzD,MAAI,UAAU,WAAW,QAAW;AAClC,aAAS,aAAa,UAAU;AAAA,EAClC;AACA,MAAI,UAAU,YAAY,QAAW;AACnC,aAAS,cAAc,UAAU;AAAA,EACnC;AACA,MAAI,UAAU,iBAAiB,QAAW;AACxC,aAAS,mBAAmB,UAAU,aAAa,SAAS,EAAE;AAAA,EAChE;AACA,SAAO;AACT;AAGA,SAAS,+BAA+B,QAAgB,WAA4B;AAClF,QAAM,sBAAsB,uBAAuB,SAAS;AAC5D,MAAI,CAAC,mBAAmB,mBAAmB,GAAG;AAC5C;AAAA,EACF;AAEA,SAAO,SAAS,0BAA0B,IAAI;AAC9C,SAAO,SAAS,oCAAoC,IAAI;AAExD,aAAW,SAAS,OAAO,QAAQ;AACjC,kCAA8B,KAAK;AAAA,EACrC;AACF;AAGA,SAAS,uBAAuB,WAAmC;AACjE,QAAM,gBAAgB,UAAU,SAAS,KAAK,aAAW,QAAQ,SAAS,QAAQ;AAClF,SAAO,IAAI,IAAI,eAAe,WAAW,IAAI,cAAY,SAAS,IAAI,KAAK,CAAC,CAAC;AAC/E;AAGA,SAAS,mBAAmB,eAAqC;AAC/D,QAAM,wBAAwB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,SAAO,sBAAsB,MAAM,kBAAgB,cAAc,IAAI,YAAY,CAAC;AACpF;AAGA,SAAS,8BAA8B,OAAoB;AACzD,QAAM,aAAa,CAAC;AACpB,QAAM,WAAW,MAAM;AAEvB,MAAI,MAAM,SAAS,WAAW;AAC5B,aAAS,qCAAqC,IAAI;AAClD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,iBAAiB,6BAA6B,MAAM,MAAM,OAAO;AACvE,MAAI,mBAAmB,QAAW;AAChC,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,oBAAoB,6BAA6B,MAAM,MAAM,KAAK;AACxE,MAAI,sBAAsB,QAAW;AACnC,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,+BAA+B,6BAA6B,MAAM,MAAM,MAAM;AACpF,MAAI,iCAAiC,QAAW;AAC9C,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAClD;AAAA,EACF;AAEA,QAAM,iCAAiC,6BAA6B,MAAM,MAAM,QAAQ;AACxF,MAAI,mCAAmC,QAAW;AAChD,aAAS,qCAAqC,IAAI;AAClD,aAAS,sCAAsC,IAAI;AACnD,aAAS,qCAAqC,IAAI;AAAA,EACpD;AACF;AAGA,SAAS,6BAA6B,MAAc,QAAoC;AACtF,QAAM,QAAQ,KAAK,MAAM,IAAI,OAAO,IAAI,MAAM,UAAU,CAAC;AACzD,SAAO,QAAQ,CAAC;AAClB;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Schema, MeshAttributes } from '@loaders.gl/core/schema';
|
|
2
|
+
import type { PLYHeader } from "./ply-types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Gets schema from PLY header
|
|
5
|
+
* @param plyHeader
|
|
6
|
+
* @param metadata
|
|
7
|
+
* @returns Schema
|
|
8
|
+
*/
|
|
9
|
+
export declare function getPLYSchema(plyHeader: PLYHeader, attributes: MeshAttributes): Schema;
|
|
10
|
+
//# sourceMappingURL=get-ply-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-ply-schema.d.ts","sourceRoot":"","sources":["../../../src/ply/lib/get-ply-schema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,MAAM,EAAS,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAE3E,OAAO,KAAK,EAAC,SAAS,EAAC,uBAAoB;AAE3C;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,cAAc,GAAG,MAAM,CAKrF"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// loaders.gl
|
|
2
|
+
// SPDX-License-Identifier: MIT
|
|
3
|
+
// Copyright (c) vis.gl contributors
|
|
4
|
+
import { deduceMeshSchema } from '@loaders.gl/core/schema-utils';
|
|
5
|
+
/**
|
|
6
|
+
* Gets schema from PLY header
|
|
7
|
+
* @param plyHeader
|
|
8
|
+
* @param metadata
|
|
9
|
+
* @returns Schema
|
|
10
|
+
*/
|
|
11
|
+
export function getPLYSchema(plyHeader, attributes) {
|
|
12
|
+
const metadata = makeMetadataFromPlyHeader(plyHeader);
|
|
13
|
+
const schema = deduceMeshSchema(attributes, metadata);
|
|
14
|
+
addGaussianSplatSchemaMetadata(schema, plyHeader);
|
|
15
|
+
return schema;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Make arrow like schema metadata by PlyHeader properties
|
|
19
|
+
* @param plyHeader
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
function makeMetadataFromPlyHeader(plyHeader) {
|
|
23
|
+
/* eslint-disable camelcase */
|
|
24
|
+
const metadata = {};
|
|
25
|
+
metadata.ply_comments = JSON.stringify(plyHeader.comments);
|
|
26
|
+
metadata.ply_elements = JSON.stringify(plyHeader.elements);
|
|
27
|
+
if (plyHeader.format !== undefined) {
|
|
28
|
+
metadata.ply_format = plyHeader.format;
|
|
29
|
+
}
|
|
30
|
+
if (plyHeader.version !== undefined) {
|
|
31
|
+
metadata.ply_version = plyHeader.version;
|
|
32
|
+
}
|
|
33
|
+
if (plyHeader.headerLength !== undefined) {
|
|
34
|
+
metadata.ply_headerLength = plyHeader.headerLength.toString(10);
|
|
35
|
+
}
|
|
36
|
+
return metadata;
|
|
37
|
+
}
|
|
38
|
+
/** Add Gaussian splat metadata conventions for GraphDECO-style PLY columns. */
|
|
39
|
+
function addGaussianSplatSchemaMetadata(schema, plyHeader) {
|
|
40
|
+
const vertexPropertyNames = getVertexPropertyNames(plyHeader);
|
|
41
|
+
if (!isGaussianSplatPLY(vertexPropertyNames)) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
schema.metadata['loaders_gl.semantic_type'] = 'gaussian-splats';
|
|
45
|
+
schema.metadata['loaders_gl.gaussian_splats.version'] = '1';
|
|
46
|
+
for (const field of schema.fields) {
|
|
47
|
+
addGaussianSplatFieldMetadata(field);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** Return the property names for the PLY vertex element. */
|
|
51
|
+
function getVertexPropertyNames(plyHeader) {
|
|
52
|
+
const vertexElement = plyHeader.elements.find(element => element.name === 'vertex');
|
|
53
|
+
return new Set(vertexElement?.properties.map(property => property.name) || []);
|
|
54
|
+
}
|
|
55
|
+
/** Return true if the PLY vertex properties match the de facto Gaussian splat layout. */
|
|
56
|
+
function isGaussianSplatPLY(propertyNames) {
|
|
57
|
+
const requiredPropertyNames = [
|
|
58
|
+
'x',
|
|
59
|
+
'y',
|
|
60
|
+
'z',
|
|
61
|
+
'f_dc_0',
|
|
62
|
+
'f_dc_1',
|
|
63
|
+
'f_dc_2',
|
|
64
|
+
'opacity',
|
|
65
|
+
'scale_0',
|
|
66
|
+
'scale_1',
|
|
67
|
+
'scale_2',
|
|
68
|
+
'rot_0',
|
|
69
|
+
'rot_1',
|
|
70
|
+
'rot_2',
|
|
71
|
+
'rot_3'
|
|
72
|
+
];
|
|
73
|
+
return requiredPropertyNames.every(propertyName => propertyNames.has(propertyName));
|
|
74
|
+
}
|
|
75
|
+
/** Add loaders.gl Gaussian splat metadata to one schema field. */
|
|
76
|
+
function addGaussianSplatFieldMetadata(field) {
|
|
77
|
+
field.metadata ||= {};
|
|
78
|
+
const metadata = field.metadata;
|
|
79
|
+
if (field.name === 'opacity') {
|
|
80
|
+
metadata['loaders_gl.gaussian_splats.semantic'] = 'opacity';
|
|
81
|
+
metadata['loaders_gl.gaussian_splats.encoding'] = 'logit';
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const scaleComponent = getNumberedPropertyComponent(field.name, 'scale');
|
|
85
|
+
if (scaleComponent !== undefined) {
|
|
86
|
+
metadata['loaders_gl.gaussian_splats.semantic'] = 'scale';
|
|
87
|
+
metadata['loaders_gl.gaussian_splats.component'] = scaleComponent;
|
|
88
|
+
metadata['loaders_gl.gaussian_splats.encoding'] = 'log';
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const rotationComponent = getNumberedPropertyComponent(field.name, 'rot');
|
|
92
|
+
if (rotationComponent !== undefined) {
|
|
93
|
+
metadata['loaders_gl.gaussian_splats.semantic'] = 'rotation';
|
|
94
|
+
metadata['loaders_gl.gaussian_splats.component'] = rotationComponent;
|
|
95
|
+
metadata['loaders_gl.gaussian_splats.encoding'] = 'quaternion';
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const sphericalHarmonicDCComponent = getNumberedPropertyComponent(field.name, 'f_dc');
|
|
99
|
+
if (sphericalHarmonicDCComponent !== undefined) {
|
|
100
|
+
metadata['loaders_gl.gaussian_splats.semantic'] = 'spherical_harmonic_dc';
|
|
101
|
+
metadata['loaders_gl.gaussian_splats.component'] = sphericalHarmonicDCComponent;
|
|
102
|
+
metadata['loaders_gl.gaussian_splats.encoding'] = 'coefficient';
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const sphericalHarmonicRestComponent = getNumberedPropertyComponent(field.name, 'f_rest');
|
|
106
|
+
if (sphericalHarmonicRestComponent !== undefined) {
|
|
107
|
+
metadata['loaders_gl.gaussian_splats.semantic'] = 'spherical_harmonic_rest';
|
|
108
|
+
metadata['loaders_gl.gaussian_splats.component'] = sphericalHarmonicRestComponent;
|
|
109
|
+
metadata['loaders_gl.gaussian_splats.encoding'] = 'coefficient';
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/** Return the numeric suffix for a property such as scale_0. */
|
|
113
|
+
function getNumberedPropertyComponent(name, prefix) {
|
|
114
|
+
const match = name.match(new RegExp(`^${prefix}_(\\d+)$`));
|
|
115
|
+
return match?.[1];
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=get-ply-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-ply-schema.js","sourceRoot":"","sources":["../../../src/ply/lib/get-ply-schema.ts"],"names":[],"mappings":"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"}
|