@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,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/ply/lib/parse-ply.ts"],
|
|
4
|
+
"sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\n// PLY Loader, adapted from THREE.js (MIT license)\n//\n// Attributions per original THREE.js source file:\n//\n// @author Wei Meng / http://about.me/menway\n//\n// Description: A loader for PLY ASCII files (known as the Polygon File Format\n// or the Stanford Triangle Format).\n//\n// Limitations: ASCII decoding assumes file is UTF-8.\n//\n// If the PLY file uses non standard property names, they can be mapped while\n// loading. For example, the following maps the properties\n// \u201Cdiffuse_(red|green|blue)\u201D in the file to standard color names.\n//\n// parsePLY(data, {\n// propertyNameMapping: {\n// diffuse_red: 'red',\n// diffuse_green: 'green',\n// diffuse_blue: 'blue'\n// }\n// });\nimport type {MeshAttribute, MeshAttributes, MeshArrowTable} from '@loaders.gl/core/schema';\nimport * as arrow from 'apache-arrow';\nimport type {\n PLYMesh,\n PLYHeader,\n PLYAttributes,\n MeshHeader,\n PLYElement,\n PLYProperty\n} from './ply-types';\nimport normalizePLY from './normalize-ply';\nimport {getPLYSchema} from './get-ply-schema';\n\nconst PLY_END_HEADER = 'end_header';\n\ntype MutablePLYAttributes = {[index: string]: number[]};\n\nexport type ParsePLYOptions = {\n /** Force the legacy mesh parser; intended for parser benchmarks and regression checks. */\n _useLegacyParser?: boolean;\n /** Disable direct binary point-cloud parsing; intended for parser benchmarks and regression checks. */\n _useLegacyBinaryPointCloudParser?: boolean;\n propertyNameMapping?: Record<string, string>;\n /** Treat PLY data as a point cloud by reading only the leading vertex element. */\n pointCloud?: boolean;\n shape?: 'mesh' | 'arrow-table';\n /** Color storage format. Defaults to uint8norm for backwards compatibility. */\n colorFormat?: 'uint8norm' | 'float16' | 'float32';\n};\n\n/**\n * @param data\n * @param options\n * @returns\n */\nexport function parsePLY(data: ArrayBuffer | string, options: ParsePLYOptions = {}): PLYMesh {\n let header: PLYHeader & MeshHeader;\n let attributes: PLYAttributes;\n\n if (data instanceof ArrayBuffer) {\n header = parsePLYHeader(data, options);\n attributes =\n header.format === 'ascii'\n ? parseASCII(new TextDecoder().decode(data), header)\n : parseBinary(data, header, options);\n } else {\n header = parsePLYHeader(data, options);\n attributes = parseASCII(data, header);\n }\n\n return normalizePLY(header, attributes);\n}\n\n/**\n * Parse binary scalar point-cloud PLY directly into an Arrow table.\n * @param data PLY data.\n * @param options Parser options.\n * @returns Arrow table, or null when the file requires the general mesh parser.\n */\nexport function parsePLYToArrowTable(\n data: ArrayBuffer | string,\n options: ParsePLYOptions = {}\n): MeshArrowTable | null {\n if (!(data instanceof ArrayBuffer)) {\n return null;\n }\n\n const header = parsePLYHeader(data, options);\n if (header.format === 'ascii') {\n return null;\n }\n\n const attributes = parseBinaryPointCloud(data, header, options);\n if (!attributes) {\n return null;\n }\n\n return makePLYArrowTable(header, attributes);\n}\n\n/**\n * Parse a fixed-width binary point-cloud PLY byte range into an Arrow table.\n * @param data Binary PLY bytes containing only vertex records.\n * @param header PLY header describing the vertex record layout.\n * @param options Parser options.\n * @returns Arrow table, or null when the header is not supported by the fixed-width path.\n */\nexport function parsePLYBinaryPointCloudToArrowTable(\n data: ArrayBuffer,\n header: PLYHeader,\n options: ParsePLYOptions = {}\n): MeshArrowTable | null {\n const attributes = parseBinaryPointCloud(data, header, options);\n return attributes ? makePLYArrowTable(header, attributes) : null;\n}\n\n/**\n * Parse fixed-width binary vertex records directly from a byte view into an Arrow table.\n * @param records Binary PLY vertex records without a header.\n * @param header PLY header with the batch vertex count already applied.\n * @param options Parser options.\n * @param plan Optional reusable parse plan for the same header layout.\n * @returns Arrow table, or null when the header is not supported by the fixed-width path.\n */\nexport function parsePLYBinaryPointCloudRecordsToArrowTable(\n records: Uint8Array,\n header: PLYHeader,\n options: ParsePLYOptions = {},\n plan?: PLYBinaryPointCloudParsePlan\n): MeshArrowTable | null {\n const attributes = parseBinaryPointCloudRecords(records, header, options, plan);\n return attributes ? makePLYArrowTable(header, attributes) : null;\n}\n\n/**\n * @param data\n * @param options\n * @returns header\n */\nexport function parsePLYHeader(data: any, options?: ParsePLYOptions): PLYHeader {\n const {headerText, headerLength} =\n data instanceof ArrayBuffer ? getBinaryHeader(data) : getTextHeader(data);\n\n const headerStart = headerText.indexOf('ply');\n const headerEndMarker = headerText.lastIndexOf('end_header');\n const headerEnd = headerEndMarker + 'end_header'.length;\n if (\n headerStart >= 0 &&\n headerEndMarker >= headerStart + 3 &&\n headerEnd < headerText.length &&\n /\\s/.test(headerText[headerEnd])\n ) {\n const lines = headerText.slice(headerStart + 3, headerEndMarker).split('\\n');\n const header = parseHeaderLines(lines, headerLength || headerEnd + 1 - headerStart, options);\n return header;\n }\n\n return parseHeaderLines([], headerLength, options);\n}\n\n/** Return PLY header text and its byte length from binary data without decoding the body. */\nfunction getBinaryHeader(data: ArrayBuffer): {headerText: string; headerLength: number} {\n const bytes = new Uint8Array(data);\n const headerEnd = findHeaderEnd(bytes);\n return {\n headerText: new TextDecoder().decode(bytes.subarray(0, headerEnd)),\n headerLength: headerEnd\n };\n}\n\n/** Return PLY header text and its character length from text data. */\nfunction getTextHeader(data: string): {headerText: string; headerLength: number} {\n const headerEnd = data.indexOf(PLY_END_HEADER);\n if (headerEnd === -1) {\n return {headerText: '', headerLength: 0};\n }\n\n let headerLength = headerEnd + PLY_END_HEADER.length;\n if (data[headerLength] === '\\r' && data[headerLength + 1] === '\\n') {\n headerLength += 2;\n } else if (headerLength < data.length && /\\s/.test(data[headerLength])) {\n headerLength += 1;\n }\n return {headerText: data.slice(0, headerLength), headerLength};\n}\n\n/** Find the byte offset immediately after the `end_header` terminator. */\nfunction findHeaderEnd(bytes: Uint8Array): number {\n const pattern = new TextEncoder().encode(PLY_END_HEADER);\n const lastPatternStart = bytes.length - pattern.length;\n\n for (let byteIndex = 0; byteIndex <= lastPatternStart; byteIndex++) {\n let matches = true;\n for (let patternIndex = 0; patternIndex < pattern.length; patternIndex++) {\n if (bytes[byteIndex + patternIndex] !== pattern[patternIndex]) {\n matches = false;\n break;\n }\n }\n\n if (matches) {\n let headerEnd = byteIndex + pattern.length;\n if (bytes[headerEnd] === 0x0d && bytes[headerEnd + 1] === 0x0a) {\n headerEnd += 2;\n } else if (headerEnd < bytes.length && isWhitespaceByte(bytes[headerEnd])) {\n headerEnd += 1;\n }\n return headerEnd;\n }\n }\n\n return bytes.length;\n}\n\n/** Return true for ASCII whitespace bytes that can terminate a PLY header. */\nfunction isWhitespaceByte(byte: number): boolean {\n return byte === 0x0a || byte === 0x0d || byte === 0x09 || byte === 0x20;\n}\n\n/**\n * @param lines\n * @param headerLength\n * @param options\n * @returns header\n */\n// eslint-disable-next-line complexity\nfunction parseHeaderLines(\n lines: string[],\n headerLength: number,\n options?: ParsePLYOptions\n): PLYHeader {\n const header: PLYHeader = {\n comments: [],\n elements: [],\n headerLength\n };\n\n let lineType: string | undefined;\n let lineValues: string[];\n let currentElement: PLYElement | null = null;\n\n for (let i = 0; i < lines.length; i++) {\n let line: string = lines[i];\n line = line.trim();\n\n if (line === '') {\n // eslint-disable-next-line\n continue;\n }\n\n lineValues = line.split(/\\s+/);\n lineType = lineValues.shift();\n line = lineValues.join(' ');\n\n switch (lineType) {\n case 'format':\n header.format = lineValues[0];\n header.version = lineValues[1];\n break;\n\n case 'comment':\n header.comments.push(line);\n break;\n\n case 'element':\n // Start new element, store previous element\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n currentElement = {\n name: lineValues[0],\n count: parseInt(lineValues[1], 10),\n properties: []\n };\n break;\n\n case 'property':\n if (currentElement) {\n const property = makePLYElementProperty(lineValues);\n if (options?.propertyNameMapping && property.name in options?.propertyNameMapping) {\n property.name = options?.propertyNameMapping[property.name];\n }\n currentElement.properties.push(property);\n }\n break;\n\n default:\n }\n }\n\n // Store in-progress element\n if (currentElement) {\n header.elements.push(currentElement);\n }\n\n return header;\n}\n\n/** Generate attributes arrays from the header */\n// eslint-disable-next-line complexity\nfunction getPLYAttributes(header: PLYHeader): MutablePLYAttributes {\n // TODO Generate only the attribute arrays actually in the header\n const attributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n\n for (const element of header.elements) {\n if (element.name === 'vertex') {\n for (const property of element.properties) {\n switch (property.name) {\n case 'x':\n case 'y':\n case 'z':\n case 'nx':\n case 'ny':\n case 'nz':\n case 's':\n case 't':\n case 'red':\n case 'green':\n case 'blue':\n break;\n default:\n // Add any non-geometry attributes\n attributes[property.name] = [];\n break;\n }\n }\n }\n }\n\n return attributes;\n}\n\n/**\n * @param propertyValues\n * @returns property of ply element\n */\nfunction makePLYElementProperty(propertyValues: string[]): PLYProperty {\n const type = propertyValues[0];\n switch (type) {\n case 'list':\n return {\n type,\n name: propertyValues[3],\n countType: propertyValues[1],\n itemType: propertyValues[2]\n };\n default:\n return {\n type,\n name: propertyValues[1]\n };\n }\n}\n\n/**\n * Parses ASCII number\n * @param n\n * @param type\n * @returns\n */\n// eslint-disable-next-line complexity\nfunction parseASCIINumber(n: string, type: string): number {\n switch (type) {\n case 'char':\n case 'uchar':\n case 'short':\n case 'ushort':\n case 'int':\n case 'uint':\n case 'int8':\n case 'uint8':\n case 'int16':\n case 'uint16':\n case 'int32':\n case 'uint32':\n return parseInt(n, 10);\n\n case 'float':\n case 'double':\n case 'float32':\n case 'float64':\n return parseFloat(n);\n\n default:\n throw new Error(type);\n }\n}\n\n/**\n * @param properties\n * @param line\n * @returns ASCII element\n */\nfunction parsePLYElement(properties: any[], line: string) {\n const values: any = line.split(/\\s+/);\n\n const element = {};\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list: any = [];\n const n = parseASCIINumber(values.shift(), properties[i].countType);\n\n for (let j = 0; j < n; j++) {\n list.push(parseASCIINumber(values.shift(), properties[i].itemType));\n }\n\n element[properties[i].name] = list;\n } else {\n element[properties[i].name] = parseASCIINumber(values.shift(), properties[i].type);\n }\n }\n\n return element;\n}\n\n/**\n * @param data\n * @param header\n * @returns [attributes]\n */\nfunction parseASCII(data: any, header: PLYHeader): PLYAttributes {\n // PLY ascii format specification, as per http://en.wikipedia.org/wiki/PLY_(file_format)\n\n const attributes = getPLYAttributes(header);\n\n const patternBody = /end_header\\s([\\s\\S]*)$/;\n let body = '';\n const result = patternBody.exec(data);\n if (result !== null) {\n body = result[1];\n }\n\n const lines = body.split('\\n');\n let currentElement = 0;\n let currentElementCount = 0;\n\n for (let i = 0; i < lines.length; i++) {\n let line = lines[i];\n line = line.trim();\n\n if (line !== '') {\n if (currentElementCount >= header.elements[currentElement].count) {\n currentElement++;\n currentElementCount = 0;\n }\n\n const element = parsePLYElement(header.elements[currentElement].properties, line);\n handleElement(attributes, header.elements[currentElement].name, element);\n currentElementCount++;\n }\n }\n\n return attributes;\n}\n\n/**\n * @param buffer\n * @param elementName\n * @param element\n */\n// eslint-disable-next-line complexity\nfunction handleElement(buffer: MutablePLYAttributes, elementName: string, element: any = {}) {\n if (elementName === 'vertex') {\n for (const propertyName of Object.keys(element)) {\n switch (propertyName) {\n case 'x':\n buffer.vertices.push(element.x, element.y, element.z);\n break;\n case 'y':\n case 'z':\n break;\n\n case 'nx':\n if ('nx' in element && 'ny' in element && 'nz' in element) {\n buffer.normals.push(element.nx, element.ny, element.nz);\n }\n break;\n case 'ny':\n case 'nz':\n break;\n\n case 's':\n if ('s' in element && 't' in element) {\n buffer.uvs.push(element.s, element.t);\n }\n break;\n case 't':\n break;\n\n case 'red':\n if ('red' in element && 'green' in element && 'blue' in element) {\n buffer.colors.push(element.red, element.green, element.blue);\n }\n break;\n case 'green':\n case 'blue':\n break;\n\n default:\n buffer[propertyName].push(element[propertyName]);\n }\n }\n } else if (elementName === 'face') {\n const vertexIndices = element.vertex_indices || element.vertex_index; // issue #9338\n\n if (vertexIndices.length === 3) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[2]);\n } else if (vertexIndices.length === 4) {\n buffer.indices.push(vertexIndices[0], vertexIndices[1], vertexIndices[3]);\n buffer.indices.push(vertexIndices[1], vertexIndices[2], vertexIndices[3]);\n }\n }\n}\n\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param type\n * @param littleEndian\n * @returns [number, number]\n */\n// eslint-disable-next-line complexity\nfunction binaryRead(dataview: DataView, at: number, type: any, littleEndian: boolean): number[] {\n switch (type) {\n // corespondences for non-specific length types here match rply:\n case 'int8':\n case 'char':\n return [dataview.getInt8(at), 1];\n case 'uint8':\n case 'uchar':\n return [dataview.getUint8(at), 1];\n case 'int16':\n case 'short':\n return [dataview.getInt16(at, littleEndian), 2];\n case 'uint16':\n case 'ushort':\n return [dataview.getUint16(at, littleEndian), 2];\n case 'int32':\n case 'int':\n return [dataview.getInt32(at, littleEndian), 4];\n case 'uint32':\n case 'uint':\n return [dataview.getUint32(at, littleEndian), 4];\n case 'float32':\n case 'float':\n return [dataview.getFloat32(at, littleEndian), 4];\n case 'float64':\n case 'double':\n return [dataview.getFloat64(at, littleEndian), 8];\n\n default:\n throw new Error(type);\n }\n}\n\n/**\n * Reads binary data\n * @param dataview\n * @param at\n * @param properties\n * @param littleEndian\n * @returns [object, number]\n */\nfunction binaryReadElement(\n dataview: DataView,\n at: number,\n properties: {[index: string]: any},\n littleEndian: boolean\n): {}[] {\n const element = {};\n let result: number[];\n let read = 0;\n\n for (let i = 0; i < properties.length; i++) {\n if (properties[i].type === 'list') {\n const list = [];\n\n result = binaryRead(dataview, at + read, properties[i].countType, littleEndian);\n const n = result[0];\n read += result[1];\n\n for (let j = 0; j < n; j++) {\n result = binaryRead(dataview, at + read, properties[i].itemType, littleEndian);\n // @ts-ignore\n list.push(result[0]);\n read += result[1];\n }\n\n element[properties[i].name] = list;\n } else {\n result = binaryRead(dataview, at + read, properties[i].type, littleEndian);\n element[properties[i].name] = result[0];\n read += result[1];\n }\n }\n\n return [element, read];\n}\n\ntype BinaryAttributes = PLYAttributes;\n\ntype BinaryPointCloudProperty = {\n name: string;\n offset: number;\n read: (dataView: DataView, at: number, littleEndian: boolean) => number;\n size: number;\n};\n\n/** Reusable binary point-cloud parse plan. */\nexport type PLYBinaryPointCloudParsePlan = {\n /** Precomputed scalar property readers and record offsets. */\n properties: BinaryPointCloudProperty[];\n /** Fixed byte stride for one vertex record. */\n vertexStride: number;\n /** Whether scalar values are little-endian encoded. */\n littleEndian: boolean;\n};\n\n/** Build an Arrow table from normalized PLY attribute arrays. */\nfunction makePLYArrowTable(header: PLYHeader, attributes: PLYAttributes): MeshArrowTable {\n const meshAttributes = getPLYMeshAttributes(attributes);\n const schema = getPLYSchema(header, meshAttributes);\n schema.metadata.topology = 'point-list';\n schema.metadata.mode = '0';\n\n const columns: Record<string, arrow.Vector> = {};\n const fields: arrow.Field[] = [];\n\n for (const field of schema.fields) {\n const attribute = meshAttributes[field.name];\n if (!attribute) {\n continue;\n }\n const column = getPLYArrowVector(attribute);\n columns[field.name] = column;\n fields.push(new arrow.Field(field.name, column.type, false, getArrowMetadata(field.metadata)));\n }\n\n const arrowSchema = new arrow.Schema(fields, getArrowMetadata(schema.metadata));\n return {\n shape: 'arrow-table',\n schema,\n data: new arrow.Table(arrowSchema, columns),\n topology: 'point-list'\n };\n}\n\n/** Convert normalized PLY attributes into mesh-style attribute descriptors. */\nfunction getPLYMeshAttributes(attributes: PLYAttributes): MeshAttributes {\n const meshAttributes: MeshAttributes = {};\n\n for (const attributeName of Object.keys(attributes)) {\n switch (attributeName) {\n case 'vertices':\n if (attributes.vertices.length > 0) {\n meshAttributes.POSITION = {value: getFloat32Array(attributes.vertices), size: 3};\n }\n break;\n case 'normals':\n if (attributes.normals.length > 0) {\n meshAttributes.NORMAL = {value: getFloat32Array(attributes.normals), size: 3};\n }\n break;\n case 'uvs':\n if (attributes.uvs.length > 0) {\n meshAttributes.TEXCOORD_0 = {value: getFloat32Array(attributes.uvs), size: 2};\n }\n break;\n case 'colors':\n if (attributes.colors.length > 0) {\n meshAttributes.COLOR_0 = {\n value: getUint8Array(attributes.colors),\n size: 3,\n normalized: true\n };\n }\n break;\n case 'indices':\n break;\n default:\n if (attributes[attributeName].length > 0) {\n meshAttributes[attributeName] = {\n value: getFloat32Array(attributes[attributeName]),\n size: 1\n };\n }\n break;\n }\n }\n\n return meshAttributes;\n}\n\n/** Return an Arrow vector for one PLY mesh attribute. */\nfunction getPLYArrowVector(attribute: MeshAttribute): arrow.Vector {\n const {value, size} = attribute;\n if (size === 1) {\n return arrow.makeVector(value as any);\n }\n\n const values = arrow.makeVector(value as any);\n const child = values.data[0];\n const type = new arrow.FixedSizeList(size, new arrow.Field('value', child.type, false));\n const data = new arrow.Data(type, 0, value.length / size, 0, {}, [child]);\n return new arrow.Vector([data]);\n}\n\n/** Convert loaders.gl metadata objects to Arrow metadata maps. */\nfunction getArrowMetadata(metadata: Record<string, string> | undefined): Map<string, string> {\n return new Map(Object.entries(metadata || {}));\n}\n\n/** Return a Float32Array without copying when possible. */\nfunction getFloat32Array(attribute: PLYAttributes[string]): Float32Array {\n return attribute instanceof Float32Array ? attribute : new Float32Array(attribute);\n}\n\n/** Return a Uint8Array without copying when possible. */\nfunction getUint8Array(attribute: PLYAttributes[string]): Uint8Array {\n return attribute instanceof Uint8Array ? attribute : new Uint8Array(attribute);\n}\n\n/**\n * Parses binary data\n * @param data\n * @param header\n * @returns [attributes] of data\n */\nfunction parseBinary(\n data: ArrayBuffer,\n header: PLYHeader,\n options?: ParsePLYOptions\n): BinaryAttributes {\n const directAttributes = parseBinaryPointCloud(data, header, options);\n if (directAttributes) {\n return directAttributes;\n }\n\n const attributes = getPLYAttributes(header);\n\n const littleEndian = header.format === 'binary_little_endian';\n const body = new DataView(data, header.headerLength);\n let result: any[];\n let loc = 0;\n\n for (let currentElement = 0; currentElement < header.elements.length; currentElement++) {\n const count = header.elements[currentElement].count;\n for (let currentElementCount = 0; currentElementCount < count; currentElementCount++) {\n result = binaryReadElement(\n body,\n loc,\n header.elements[currentElement].properties,\n littleEndian\n );\n loc += result[1];\n const element = result[0];\n\n handleElement(attributes, header.elements[currentElement].name, element);\n }\n }\n\n return attributes;\n}\n\n/** Parse binary PLY point clouds directly into typed arrays. */\nfunction parseBinaryPointCloud(\n data: ArrayBuffer,\n header: PLYHeader,\n options?: ParsePLYOptions\n): BinaryAttributes | null {\n const records = new Uint8Array(data, header.headerLength || 0);\n return parseBinaryPointCloudRecords(records, header, options);\n}\n\n/** Parse binary PLY point-cloud records directly from a byte view into typed arrays. */\nfunction parseBinaryPointCloudRecords(\n records: Uint8Array,\n header: PLYHeader,\n options?: ParsePLYOptions,\n parsePlan?: PLYBinaryPointCloudParsePlan\n): BinaryAttributes | null {\n const vertexElement = header.elements[0];\n if (\n !parsePlan &&\n (options?._useLegacyBinaryPointCloudParser ||\n (!options?.pointCloud && header.elements.length !== 1) ||\n vertexElement?.name !== 'vertex' ||\n vertexElement.properties.some(property => property.type === 'list'))\n ) {\n return null;\n }\n\n const plan = parsePlan || getPLYBinaryPointCloudParsePlan(header, options);\n if (!plan || !vertexElement) {\n return null;\n }\n\n const attributes = getBinaryPointCloudAttributes(vertexElement);\n const dataView = new DataView(records.buffer, records.byteOffset, records.byteLength);\n let vertexOffset = 0;\n\n for (let vertexIndex = 0; vertexIndex < vertexElement.count; vertexIndex++) {\n for (const property of plan.properties) {\n const value = property.read(dataView, vertexOffset + property.offset, plan.littleEndian);\n writeBinaryPointCloudProperty(attributes, property.name, value, vertexIndex);\n }\n\n vertexOffset += plan.vertexStride;\n }\n\n return attributes;\n}\n\n/** Return a reusable binary point-cloud parse plan, or null when unsupported. */\nexport function getPLYBinaryPointCloudParsePlan(\n header: PLYHeader,\n options?: ParsePLYOptions\n): PLYBinaryPointCloudParsePlan | null {\n const vertexElement = header.elements[0];\n if (\n options?._useLegacyBinaryPointCloudParser ||\n (!options?.pointCloud && header.elements.length !== 1) ||\n vertexElement?.name !== 'vertex' ||\n vertexElement.properties.some(property => property.type === 'list')\n ) {\n return null;\n }\n\n const properties = getBinaryPointCloudProperties(vertexElement);\n return {\n properties,\n vertexStride: getPLYElementSize(properties),\n littleEndian: header.format === 'binary_little_endian'\n };\n}\n\n/** Allocate direct typed arrays for the normalized PLY attributes. */\nfunction getBinaryPointCloudAttributes(vertexElement: PLYElement): BinaryAttributes {\n const attributes: BinaryAttributes = {\n indices: [],\n vertices: [],\n normals: [],\n uvs: [],\n colors: []\n };\n const propertyNames = new Set(vertexElement.properties.map(property => property.name));\n const vertexCount = vertexElement.count;\n\n if (propertyNames.has('x') && propertyNames.has('y') && propertyNames.has('z')) {\n attributes.vertices = new Float32Array(vertexCount * 3) as unknown as number[];\n }\n if (propertyNames.has('nx') && propertyNames.has('ny') && propertyNames.has('nz')) {\n attributes.normals = new Float32Array(vertexCount * 3) as unknown as number[];\n }\n if (propertyNames.has('s') && propertyNames.has('t')) {\n attributes.uvs = new Float32Array(vertexCount * 2) as unknown as number[];\n }\n if (propertyNames.has('red') && propertyNames.has('green') && propertyNames.has('blue')) {\n attributes.colors = new Uint8Array(vertexCount * 3) as unknown as number[];\n }\n\n for (const property of vertexElement.properties) {\n if (!isNormalizedPLYAttributeProperty(property.name)) {\n attributes[property.name] = new Float32Array(vertexCount) as unknown as number[];\n }\n }\n\n return attributes;\n}\n\n/** Return true if a PLY property is packed into a normalized mesh attribute. */\nfunction isNormalizedPLYAttributeProperty(propertyName: string): boolean {\n switch (propertyName) {\n case 'x':\n case 'y':\n case 'z':\n case 'nx':\n case 'ny':\n case 'nz':\n case 's':\n case 't':\n case 'red':\n case 'green':\n case 'blue':\n return true;\n default:\n return false;\n }\n}\n\n/** Write a scalar PLY property into its normalized typed array. */\nfunction writeBinaryPointCloudProperty(\n attributes: BinaryAttributes,\n propertyName: string,\n value: number,\n vertexIndex: number\n): void {\n switch (propertyName) {\n case 'x':\n attributes.vertices[vertexIndex * 3] = value;\n break;\n case 'y':\n attributes.vertices[vertexIndex * 3 + 1] = value;\n break;\n case 'z':\n attributes.vertices[vertexIndex * 3 + 2] = value;\n break;\n case 'nx':\n attributes.normals[vertexIndex * 3] = value;\n break;\n case 'ny':\n attributes.normals[vertexIndex * 3 + 1] = value;\n break;\n case 'nz':\n attributes.normals[vertexIndex * 3 + 2] = value;\n break;\n case 's':\n attributes.uvs[vertexIndex * 2] = value;\n break;\n case 't':\n attributes.uvs[vertexIndex * 2 + 1] = value;\n break;\n case 'red':\n attributes.colors[vertexIndex * 3] = value;\n break;\n case 'green':\n attributes.colors[vertexIndex * 3 + 1] = value;\n break;\n case 'blue':\n attributes.colors[vertexIndex * 3 + 2] = value;\n break;\n default:\n attributes[propertyName][vertexIndex] = value;\n }\n}\n\n/** Return binary property descriptors with precomputed offsets and readers. */\nfunction getBinaryPointCloudProperties(element: PLYElement): BinaryPointCloudProperty[] {\n const properties: BinaryPointCloudProperty[] = [];\n let offset = 0;\n\n for (const property of element.properties) {\n properties.push({\n name: property.name,\n offset,\n read: getBinaryScalarReader(property.type),\n size: getPLYTypeSize(property.type)\n });\n offset += properties[properties.length - 1].size;\n }\n\n return properties;\n}\n\n/** Return the byte size of a scalar PLY element. */\nfunction getPLYElementSize(properties: BinaryPointCloudProperty[]): number {\n if (properties.length === 0) {\n return 0;\n }\n const lastProperty = properties[properties.length - 1];\n return lastProperty.offset + lastProperty.size;\n}\n\n/** Return the byte size of a scalar PLY type. */\n// eslint-disable-next-line complexity\nfunction getPLYTypeSize(type: string): number {\n switch (type) {\n case 'int8':\n case 'uint8':\n case 'char':\n case 'uchar':\n return 1;\n case 'int16':\n case 'uint16':\n case 'short':\n case 'ushort':\n return 2;\n case 'int32':\n case 'uint32':\n case 'int':\n case 'uint':\n case 'float32':\n case 'float':\n return 4;\n case 'float64':\n case 'double':\n return 8;\n default:\n throw new Error(type);\n }\n}\n\n/** Return one scalar PLY value reader. */\n// eslint-disable-next-line complexity\nfunction getBinaryScalarReader(\n type: string\n): (dataView: DataView, at: number, littleEndian: boolean) => number {\n switch (type) {\n case 'int8':\n case 'char':\n return readInt8;\n case 'uint8':\n case 'uchar':\n return readUint8;\n case 'int16':\n case 'short':\n return readInt16;\n case 'uint16':\n case 'ushort':\n return readUint16;\n case 'int32':\n case 'int':\n return readInt32;\n case 'uint32':\n case 'uint':\n return readUint32;\n case 'float32':\n case 'float':\n return readFloat32;\n case 'float64':\n case 'double':\n return readFloat64;\n default:\n throw new Error(type);\n }\n}\n\n/** Read one signed 8-bit integer. */\nfunction readInt8(dataView: DataView, at: number): number {\n return dataView.getInt8(at);\n}\n\n/** Read one unsigned 8-bit integer. */\nfunction readUint8(dataView: DataView, at: number): number {\n return dataView.getUint8(at);\n}\n\n/** Read one signed 16-bit integer. */\nfunction readInt16(dataView: DataView, at: number, littleEndian: boolean): number {\n return dataView.getInt16(at, littleEndian);\n}\n\n/** Read one unsigned 16-bit integer. */\nfunction readUint16(dataView: DataView, at: number, littleEndian: boolean): number {\n return dataView.getUint16(at, littleEndian);\n}\n\n/** Read one signed 32-bit integer. */\nfunction readInt32(dataView: DataView, at: number, littleEndian: boolean): number {\n return dataView.getInt32(at, littleEndian);\n}\n\n/** Read one unsigned 32-bit integer. */\nfunction readUint32(dataView: DataView, at: number, littleEndian: boolean): number {\n return dataView.getUint32(at, littleEndian);\n}\n\n/** Read one 32-bit float. */\nfunction readFloat32(dataView: DataView, at: number, littleEndian: boolean): number {\n return dataView.getFloat32(at, littleEndian);\n}\n\n/** Read one 64-bit float. */\nfunction readFloat64(dataView: DataView, at: number, littleEndian: boolean): number {\n return dataView.getFloat64(at, littleEndian);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["normalizePLY"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { MeshArrowTable } from '@loaders.gl/core/schema';
|
|
2
|
+
import type { PLYMesh, PLYHeader } from "./ply-types.js";
|
|
3
|
+
export type ParsePLYOptions = {
|
|
4
|
+
/** Force the legacy mesh parser; intended for parser benchmarks and regression checks. */
|
|
5
|
+
_useLegacyParser?: boolean;
|
|
6
|
+
/** Disable direct binary point-cloud parsing; intended for parser benchmarks and regression checks. */
|
|
7
|
+
_useLegacyBinaryPointCloudParser?: boolean;
|
|
8
|
+
propertyNameMapping?: Record<string, string>;
|
|
9
|
+
/** Treat PLY data as a point cloud by reading only the leading vertex element. */
|
|
10
|
+
pointCloud?: boolean;
|
|
11
|
+
shape?: 'mesh' | 'arrow-table';
|
|
12
|
+
/** Color storage format. Defaults to uint8norm for backwards compatibility. */
|
|
13
|
+
colorFormat?: 'uint8norm' | 'float16' | 'float32';
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @param data
|
|
17
|
+
* @param options
|
|
18
|
+
* @returns
|
|
19
|
+
*/
|
|
20
|
+
export declare function parsePLY(data: ArrayBuffer | string, options?: ParsePLYOptions): PLYMesh;
|
|
21
|
+
/**
|
|
22
|
+
* Parse binary scalar point-cloud PLY directly into an Arrow table.
|
|
23
|
+
* @param data PLY data.
|
|
24
|
+
* @param options Parser options.
|
|
25
|
+
* @returns Arrow table, or null when the file requires the general mesh parser.
|
|
26
|
+
*/
|
|
27
|
+
export declare function parsePLYToArrowTable(data: ArrayBuffer | string, options?: ParsePLYOptions): MeshArrowTable | null;
|
|
28
|
+
/**
|
|
29
|
+
* Parse a fixed-width binary point-cloud PLY byte range into an Arrow table.
|
|
30
|
+
* @param data Binary PLY bytes containing only vertex records.
|
|
31
|
+
* @param header PLY header describing the vertex record layout.
|
|
32
|
+
* @param options Parser options.
|
|
33
|
+
* @returns Arrow table, or null when the header is not supported by the fixed-width path.
|
|
34
|
+
*/
|
|
35
|
+
export declare function parsePLYBinaryPointCloudToArrowTable(data: ArrayBuffer, header: PLYHeader, options?: ParsePLYOptions): MeshArrowTable | null;
|
|
36
|
+
/**
|
|
37
|
+
* Parse fixed-width binary vertex records directly from a byte view into an Arrow table.
|
|
38
|
+
* @param records Binary PLY vertex records without a header.
|
|
39
|
+
* @param header PLY header with the batch vertex count already applied.
|
|
40
|
+
* @param options Parser options.
|
|
41
|
+
* @param plan Optional reusable parse plan for the same header layout.
|
|
42
|
+
* @returns Arrow table, or null when the header is not supported by the fixed-width path.
|
|
43
|
+
*/
|
|
44
|
+
export declare function parsePLYBinaryPointCloudRecordsToArrowTable(records: Uint8Array, header: PLYHeader, options?: ParsePLYOptions, plan?: PLYBinaryPointCloudParsePlan): MeshArrowTable | null;
|
|
45
|
+
/**
|
|
46
|
+
* @param data
|
|
47
|
+
* @param options
|
|
48
|
+
* @returns header
|
|
49
|
+
*/
|
|
50
|
+
export declare function parsePLYHeader(data: any, options?: ParsePLYOptions): PLYHeader;
|
|
51
|
+
type BinaryPointCloudProperty = {
|
|
52
|
+
name: string;
|
|
53
|
+
offset: number;
|
|
54
|
+
read: (dataView: DataView, at: number, littleEndian: boolean) => number;
|
|
55
|
+
size: number;
|
|
56
|
+
};
|
|
57
|
+
/** Reusable binary point-cloud parse plan. */
|
|
58
|
+
export type PLYBinaryPointCloudParsePlan = {
|
|
59
|
+
/** Precomputed scalar property readers and record offsets. */
|
|
60
|
+
properties: BinaryPointCloudProperty[];
|
|
61
|
+
/** Fixed byte stride for one vertex record. */
|
|
62
|
+
vertexStride: number;
|
|
63
|
+
/** Whether scalar values are little-endian encoded. */
|
|
64
|
+
littleEndian: boolean;
|
|
65
|
+
};
|
|
66
|
+
/** Return a reusable binary point-cloud parse plan, or null when unsupported. */
|
|
67
|
+
export declare function getPLYBinaryPointCloudParsePlan(header: PLYHeader, options?: ParsePLYOptions): PLYBinaryPointCloudParsePlan | null;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=parse-ply.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-ply.d.ts","sourceRoot":"","sources":["../../../src/ply/lib/parse-ply.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAgC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAE3F,OAAO,KAAK,EACV,OAAO,EACP,SAAS,EAKV,uBAAoB;AAQrB,MAAM,MAAM,eAAe,GAAG;IAC5B,0FAA0F;IAC1F,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uGAAuG;IACvG,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,kFAAkF;IAClF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,+EAA+E;IAC/E,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;CACnD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAgB3F;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,WAAW,GAAG,MAAM,EAC1B,OAAO,GAAE,eAAoB,GAC5B,cAAc,GAAG,IAAI,CAgBvB;AAED;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,eAAoB,GAC5B,cAAc,GAAG,IAAI,CAGvB;AAED;;;;;;;GAOG;AACH,wBAAgB,2CAA2C,CACzD,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,eAAoB,EAC7B,IAAI,CAAC,EAAE,4BAA4B,GAClC,cAAc,GAAG,IAAI,CAGvB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,SAAS,CAmB9E;AAocD,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,KAAK,MAAM,CAAC;IACxE,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,4BAA4B,GAAG;IACzC,8DAA8D;IAC9D,UAAU,EAAE,wBAAwB,EAAE,CAAC;IACvC,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAqMF,iFAAiF;AACjF,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,eAAe,GACxB,4BAA4B,GAAG,IAAI,CAiBrC"}
|