@loaders.gl/pointclouds 0.0.0-stage → 5.0.0-beta.1

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.
Files changed (405) hide show
  1. package/LAS-README.md +12 -0
  2. package/LICENSE +24 -0
  3. package/PCD-README.md +12 -0
  4. package/PLY-README.md +38 -0
  5. package/README.md +7 -2
  6. package/THIRD-PARTY-NOTICES.md +27 -0
  7. package/dist/dist.dev.js +30141 -0
  8. package/dist/dist.min.js +54 -0
  9. package/dist/index.cjs +61 -0
  10. package/dist/index.cjs.map +7 -0
  11. package/dist/index.d.ts +16 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +13 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/las/bundled.cjs +72 -0
  16. package/dist/las/bundled.cjs.map +7 -0
  17. package/dist/las/bundled.d.ts +12 -0
  18. package/dist/las/bundled.d.ts.map +1 -0
  19. package/dist/las/bundled.js +12 -0
  20. package/dist/las/bundled.js.map +1 -0
  21. package/dist/las/index.cjs +78 -0
  22. package/dist/las/index.cjs.map +7 -0
  23. package/dist/las/index.d.ts +17 -0
  24. package/dist/las/index.d.ts.map +1 -0
  25. package/dist/las/index.js +15 -0
  26. package/dist/las/index.js.map +1 -0
  27. package/dist/las/las-copc-loader-types.cjs +49 -0
  28. package/dist/las/las-copc-loader-types.cjs.map +7 -0
  29. package/dist/las/las-copc-loader-types.d.ts +63 -0
  30. package/dist/las/las-copc-loader-types.d.ts.map +1 -0
  31. package/dist/las/las-copc-loader-types.js +14 -0
  32. package/dist/las/las-copc-loader-types.js.map +1 -0
  33. package/dist/las/las-copc-loader.cjs +57 -0
  34. package/dist/las/las-copc-loader.cjs.map +7 -0
  35. package/dist/las/las-copc-loader.d.ts +37 -0
  36. package/dist/las/las-copc-loader.d.ts.map +1 -0
  37. package/dist/las/las-copc-loader.js +40 -0
  38. package/dist/las/las-copc-loader.js.map +1 -0
  39. package/dist/las/las-format.cjs +44 -0
  40. package/dist/las/las-format.cjs.map +7 -0
  41. package/dist/las/las-format.d.ts +16 -0
  42. package/dist/las/las-format.d.ts.map +1 -0
  43. package/dist/las/las-format.js +19 -0
  44. package/dist/las/las-format.js.map +1 -0
  45. package/dist/las/las-loader-shared.cjs +82 -0
  46. package/dist/las/las-loader-shared.cjs.map +7 -0
  47. package/dist/las/las-loader-shared.d.ts +66 -0
  48. package/dist/las/las-loader-shared.d.ts.map +1 -0
  49. package/dist/las/las-loader-shared.js +58 -0
  50. package/dist/las/las-loader-shared.js.map +1 -0
  51. package/dist/las/las-loader-types.cjs +54 -0
  52. package/dist/las/las-loader-types.cjs.map +7 -0
  53. package/dist/las/las-loader-types.d.ts +104 -0
  54. package/dist/las/las-loader-types.d.ts.map +1 -0
  55. package/dist/las/las-loader-types.js +19 -0
  56. package/dist/las/las-loader-types.js.map +1 -0
  57. package/dist/las/las-loader.cjs +80 -0
  58. package/dist/las/las-loader.cjs.map +7 -0
  59. package/dist/las/las-loader.d.ts +45 -0
  60. package/dist/las/las-loader.d.ts.map +1 -0
  61. package/dist/las/las-loader.js +58 -0
  62. package/dist/las/las-loader.js.map +1 -0
  63. package/dist/las/las-writer.cjs +1054 -0
  64. package/dist/las/las-writer.cjs.map +7 -0
  65. package/dist/las/las-writer.d.ts +69 -0
  66. package/dist/las/las-writer.d.ts.map +1 -0
  67. package/dist/las/las-writer.js +994 -0
  68. package/dist/las/las-writer.js.map +1 -0
  69. package/dist/las/laz-rs-loader-types.cjs +49 -0
  70. package/dist/las/laz-rs-loader-types.cjs.map +7 -0
  71. package/dist/las/laz-rs-loader-types.d.ts +65 -0
  72. package/dist/las/laz-rs-loader-types.d.ts.map +1 -0
  73. package/dist/las/laz-rs-loader-types.js +16 -0
  74. package/dist/las/laz-rs-loader-types.js.map +1 -0
  75. package/dist/las/laz-rs-loader.cjs +272 -0
  76. package/dist/las/laz-rs-loader.cjs.map +7 -0
  77. package/dist/las/laz-rs-loader.d.ts +37 -0
  78. package/dist/las/laz-rs-loader.d.ts.map +1 -0
  79. package/dist/las/laz-rs-loader.js +38 -0
  80. package/dist/las/laz-rs-loader.js.map +1 -0
  81. package/dist/las/lazperf-loader-types.cjs +49 -0
  82. package/dist/las/lazperf-loader-types.cjs.map +7 -0
  83. package/dist/las/lazperf-loader-types.d.ts +67 -0
  84. package/dist/las/lazperf-loader-types.d.ts.map +1 -0
  85. package/dist/las/lazperf-loader-types.js +17 -0
  86. package/dist/las/lazperf-loader-types.js.map +1 -0
  87. package/dist/las/lazperf-loader.cjs +60 -0
  88. package/dist/las/lazperf-loader.cjs.map +7 -0
  89. package/dist/las/lazperf-loader.d.ts +39 -0
  90. package/dist/las/lazperf-loader.d.ts.map +1 -0
  91. package/dist/las/lazperf-loader.js +44 -0
  92. package/dist/las/lazperf-loader.js.map +1 -0
  93. package/dist/las/lib/copc/parse-las.cjs +177 -0
  94. package/dist/las/lib/copc/parse-las.cjs.map +7 -0
  95. package/dist/las/lib/copc/parse-las.d.ts +17 -0
  96. package/dist/las/lib/copc/parse-las.d.ts.map +1 -0
  97. package/dist/las/lib/copc/parse-las.js +215 -0
  98. package/dist/las/lib/copc/parse-las.js.map +1 -0
  99. package/dist/las/lib/get-las-schema.cjs +62 -0
  100. package/dist/las/lib/get-las-schema.cjs.map +7 -0
  101. package/dist/las/lib/get-las-schema.d.ts +16 -0
  102. package/dist/las/lib/get-las-schema.d.ts.map +1 -0
  103. package/dist/las/lib/get-las-schema.js +46 -0
  104. package/dist/las/lib/get-las-schema.js.map +1 -0
  105. package/dist/las/lib/las-compatibility.cjs +110 -0
  106. package/dist/las/lib/las-compatibility.cjs.map +7 -0
  107. package/dist/las/lib/las-compatibility.d.ts +40 -0
  108. package/dist/las/lib/las-compatibility.d.ts.map +1 -0
  109. package/dist/las/lib/las-compatibility.js +115 -0
  110. package/dist/las/lib/las-compatibility.js.map +1 -0
  111. package/dist/las/lib/las-extra-bytes.cjs +223 -0
  112. package/dist/las/lib/las-extra-bytes.cjs.map +7 -0
  113. package/dist/las/lib/las-extra-bytes.d.ts +35 -0
  114. package/dist/las/lib/las-extra-bytes.d.ts.map +1 -0
  115. package/dist/las/lib/las-extra-bytes.js +195 -0
  116. package/dist/las/lib/las-extra-bytes.js.map +1 -0
  117. package/dist/las/lib/las-types.cjs +19 -0
  118. package/dist/las/lib/las-types.cjs.map +7 -0
  119. package/dist/las/lib/las-types.d.ts +194 -0
  120. package/dist/las/lib/las-types.d.ts.map +1 -0
  121. package/dist/las/lib/las-types.js +5 -0
  122. package/dist/las/lib/las-types.js.map +1 -0
  123. package/dist/las/lib/las-waveform.cjs +196 -0
  124. package/dist/las/lib/las-waveform.cjs.map +7 -0
  125. package/dist/las/lib/las-waveform.d.ts +89 -0
  126. package/dist/las/lib/las-waveform.d.ts.map +1 -0
  127. package/dist/las/lib/las-waveform.js +193 -0
  128. package/dist/las/lib/las-waveform.js.map +1 -0
  129. package/dist/las/lib/laz-perf/laslaz-decoder.cjs +382 -0
  130. package/dist/las/lib/laz-perf/laslaz-decoder.cjs.map +7 -0
  131. package/dist/las/lib/laz-perf/laslaz-decoder.d.ts +129 -0
  132. package/dist/las/lib/laz-perf/laslaz-decoder.d.ts.map +1 -0
  133. package/dist/las/lib/laz-perf/laslaz-decoder.js +377 -0
  134. package/dist/las/lib/laz-perf/laslaz-decoder.js.map +1 -0
  135. package/dist/las/lib/laz-perf/parse-las.cjs +270 -0
  136. package/dist/las/lib/laz-perf/parse-las.cjs.map +7 -0
  137. package/dist/las/lib/laz-perf/parse-las.d.ts +24 -0
  138. package/dist/las/lib/laz-perf/parse-las.d.ts.map +1 -0
  139. package/dist/las/lib/laz-perf/parse-las.js +307 -0
  140. package/dist/las/lib/laz-perf/parse-las.js.map +1 -0
  141. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs +631 -0
  142. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.cjs.map +7 -0
  143. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts +129 -0
  144. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.d.ts.map +1 -0
  145. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js +414 -0
  146. package/dist/las/lib/laz-rs-wasm/laslaz-decoder.js.map +1 -0
  147. package/dist/las/lib/laz-rs-wasm/parse-las.cjs +270 -0
  148. package/dist/las/lib/laz-rs-wasm/parse-las.cjs.map +7 -0
  149. package/dist/las/lib/laz-rs-wasm/parse-las.d.ts +24 -0
  150. package/dist/las/lib/laz-rs-wasm/parse-las.d.ts.map +1 -0
  151. package/dist/las/lib/laz-rs-wasm/parse-las.js +307 -0
  152. package/dist/las/lib/laz-rs-wasm/parse-las.js.map +1 -0
  153. package/dist/las/lib/typescript/parse-las.cjs +2767 -0
  154. package/dist/las/lib/typescript/parse-las.cjs.map +7 -0
  155. package/dist/las/lib/typescript/parse-las.d.ts +39 -0
  156. package/dist/las/lib/typescript/parse-las.d.ts.map +1 -0
  157. package/dist/las/lib/typescript/parse-las.js +2607 -0
  158. package/dist/las/lib/typescript/parse-las.js.map +1 -0
  159. package/dist/las/libs/laz-perf/laz-perf.cjs +18093 -0
  160. package/dist/las/libs/laz-perf/laz-perf.cjs.map +7 -0
  161. package/dist/las/libs/laz-perf/laz-perf.d.ts +2 -0
  162. package/dist/las/libs/laz-perf/laz-perf.d.ts.map +1 -0
  163. package/dist/las/libs/laz-perf/laz-perf.js +19003 -0
  164. package/dist/las/libs/laz-perf/laz-perf.js.map +1 -0
  165. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +95 -0
  166. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts.map +1 -0
  167. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js +442 -0
  168. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm.js.map +1 -0
  169. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
  170. package/dist/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
  171. package/dist/las/unbundled.cjs +71 -0
  172. package/dist/las/unbundled.cjs.map +7 -0
  173. package/dist/las/unbundled.d.ts +11 -0
  174. package/dist/las/unbundled.d.ts.map +1 -0
  175. package/dist/las/unbundled.js +11 -0
  176. package/dist/las/unbundled.js.map +1 -0
  177. package/dist/las/workers/las-worker.cjs +23 -0
  178. package/dist/las/workers/las-worker.cjs.map +7 -0
  179. package/dist/las/workers/las-worker.d.ts +2 -0
  180. package/dist/las/workers/las-worker.d.ts.map +1 -0
  181. package/dist/las/workers/las-worker.js +23 -0
  182. package/dist/las/workers/las-worker.js.map +1 -0
  183. package/dist/las-worker.js +23058 -0
  184. package/dist/pcd/bundled.cjs +33 -0
  185. package/dist/pcd/bundled.cjs.map +7 -0
  186. package/dist/pcd/bundled.d.ts +3 -0
  187. package/dist/pcd/bundled.d.ts.map +1 -0
  188. package/dist/pcd/bundled.js +5 -0
  189. package/dist/pcd/bundled.js.map +1 -0
  190. package/dist/pcd/index.cjs +40 -0
  191. package/dist/pcd/index.cjs.map +7 -0
  192. package/dist/pcd/index.d.ts +8 -0
  193. package/dist/pcd/index.d.ts.map +1 -0
  194. package/dist/pcd/index.js +10 -0
  195. package/dist/pcd/index.js.map +1 -0
  196. package/dist/pcd/lib/decompress-lzf.cjs +80 -0
  197. package/dist/pcd/lib/decompress-lzf.cjs.map +7 -0
  198. package/dist/pcd/lib/decompress-lzf.d.ts +7 -0
  199. package/dist/pcd/lib/decompress-lzf.d.ts.map +1 -0
  200. package/dist/pcd/lib/decompress-lzf.js +62 -0
  201. package/dist/pcd/lib/decompress-lzf.js.map +1 -0
  202. package/dist/pcd/lib/get-pcd-schema.cjs +70 -0
  203. package/dist/pcd/lib/get-pcd-schema.cjs.map +7 -0
  204. package/dist/pcd/lib/get-pcd-schema.d.ts +10 -0
  205. package/dist/pcd/lib/get-pcd-schema.d.ts.map +1 -0
  206. package/dist/pcd/lib/get-pcd-schema.js +53 -0
  207. package/dist/pcd/lib/get-pcd-schema.js.map +1 -0
  208. package/dist/pcd/lib/parse-pcd.cjs +354 -0
  209. package/dist/pcd/lib/parse-pcd.cjs.map +7 -0
  210. package/dist/pcd/lib/parse-pcd.d.ts +20 -0
  211. package/dist/pcd/lib/parse-pcd.d.ts.map +1 -0
  212. package/dist/pcd/lib/parse-pcd.js +341 -0
  213. package/dist/pcd/lib/parse-pcd.js.map +1 -0
  214. package/dist/pcd/lib/pcd-types.cjs +19 -0
  215. package/dist/pcd/lib/pcd-types.cjs.map +7 -0
  216. package/dist/pcd/lib/pcd-types.d.ts +31 -0
  217. package/dist/pcd/lib/pcd-types.d.ts.map +1 -0
  218. package/dist/pcd/lib/pcd-types.js +5 -0
  219. package/dist/pcd/lib/pcd-types.js.map +1 -0
  220. package/dist/pcd/pcd-format.cjs +42 -0
  221. package/dist/pcd/pcd-format.cjs.map +7 -0
  222. package/dist/pcd/pcd-format.d.ts +16 -0
  223. package/dist/pcd/pcd-format.d.ts.map +1 -0
  224. package/dist/pcd/pcd-format.js +19 -0
  225. package/dist/pcd/pcd-format.js.map +1 -0
  226. package/dist/pcd/pcd-loader-types.cjs +64 -0
  227. package/dist/pcd/pcd-loader-types.cjs.map +7 -0
  228. package/dist/pcd/pcd-loader-types.d.ts +105 -0
  229. package/dist/pcd/pcd-loader-types.d.ts.map +1 -0
  230. package/dist/pcd/pcd-loader-types.js +35 -0
  231. package/dist/pcd/pcd-loader-types.js.map +1 -0
  232. package/dist/pcd/pcd-loader.cjs +144 -0
  233. package/dist/pcd/pcd-loader.cjs.map +7 -0
  234. package/dist/pcd/pcd-loader.d.ts +44 -0
  235. package/dist/pcd/pcd-loader.d.ts.map +1 -0
  236. package/dist/pcd/pcd-loader.js +128 -0
  237. package/dist/pcd/pcd-loader.js.map +1 -0
  238. package/dist/pcd/pcd-writer.cjs +134 -0
  239. package/dist/pcd/pcd-writer.cjs.map +7 -0
  240. package/dist/pcd/pcd-writer.d.ts +37 -0
  241. package/dist/pcd/pcd-writer.d.ts.map +1 -0
  242. package/dist/pcd/pcd-writer.js +115 -0
  243. package/dist/pcd/pcd-writer.js.map +1 -0
  244. package/dist/pcd/unbundled.cjs +33 -0
  245. package/dist/pcd/unbundled.cjs.map +7 -0
  246. package/dist/pcd/unbundled.d.ts +3 -0
  247. package/dist/pcd/unbundled.d.ts.map +1 -0
  248. package/dist/pcd/unbundled.js +5 -0
  249. package/dist/pcd/unbundled.js.map +1 -0
  250. package/dist/pcd/workers/pcd-worker.cjs +23 -0
  251. package/dist/pcd/workers/pcd-worker.cjs.map +7 -0
  252. package/dist/pcd/workers/pcd-worker.d.ts +2 -0
  253. package/dist/pcd/workers/pcd-worker.d.ts.map +1 -0
  254. package/dist/pcd/workers/pcd-worker.js +23 -0
  255. package/dist/pcd/workers/pcd-worker.js.map +1 -0
  256. package/dist/pcd-worker.js +17522 -0
  257. package/dist/ply/bundled.cjs +33 -0
  258. package/dist/ply/bundled.cjs.map +7 -0
  259. package/dist/ply/bundled.d.ts +3 -0
  260. package/dist/ply/bundled.d.ts.map +1 -0
  261. package/dist/ply/bundled.js +5 -0
  262. package/dist/ply/bundled.js.map +1 -0
  263. package/dist/ply/index.cjs +40 -0
  264. package/dist/ply/index.cjs.map +7 -0
  265. package/dist/ply/index.d.ts +8 -0
  266. package/dist/ply/index.d.ts.map +1 -0
  267. package/dist/ply/index.js +11 -0
  268. package/dist/ply/index.js.map +1 -0
  269. package/dist/ply/lib/get-ply-schema.cjs +126 -0
  270. package/dist/ply/lib/get-ply-schema.cjs.map +7 -0
  271. package/dist/ply/lib/get-ply-schema.d.ts +10 -0
  272. package/dist/ply/lib/get-ply-schema.d.ts.map +1 -0
  273. package/dist/ply/lib/get-ply-schema.js +117 -0
  274. package/dist/ply/lib/get-ply-schema.js.map +1 -0
  275. package/dist/ply/lib/normalize-ply.cjs +96 -0
  276. package/dist/ply/lib/normalize-ply.cjs.map +7 -0
  277. package/dist/ply/lib/normalize-ply.d.ts +8 -0
  278. package/dist/ply/lib/normalize-ply.d.ts.map +1 -0
  279. package/dist/ply/lib/normalize-ply.js +89 -0
  280. package/dist/ply/lib/normalize-ply.js.map +1 -0
  281. package/dist/ply/lib/parse-ply-arrow.cjs +552 -0
  282. package/dist/ply/lib/parse-ply-arrow.cjs.map +7 -0
  283. package/dist/ply/lib/parse-ply-arrow.d.ts +25 -0
  284. package/dist/ply/lib/parse-ply-arrow.d.ts.map +1 -0
  285. package/dist/ply/lib/parse-ply-arrow.js +493 -0
  286. package/dist/ply/lib/parse-ply-arrow.js.map +1 -0
  287. package/dist/ply/lib/parse-ply-in-batches.cjs +607 -0
  288. package/dist/ply/lib/parse-ply-in-batches.cjs.map +7 -0
  289. package/dist/ply/lib/parse-ply-in-batches.d.ts +9 -0
  290. package/dist/ply/lib/parse-ply-in-batches.d.ts.map +1 -0
  291. package/dist/ply/lib/parse-ply-in-batches.js +625 -0
  292. package/dist/ply/lib/parse-ply-in-batches.js.map +1 -0
  293. package/dist/ply/lib/parse-ply.cjs +755 -0
  294. package/dist/ply/lib/parse-ply.cjs.map +7 -0
  295. package/dist/ply/lib/parse-ply.d.ts +69 -0
  296. package/dist/ply/lib/parse-ply.d.ts.map +1 -0
  297. package/dist/ply/lib/parse-ply.js +851 -0
  298. package/dist/ply/lib/parse-ply.js.map +1 -0
  299. package/dist/ply/lib/ply-types.cjs +19 -0
  300. package/dist/ply/lib/ply-types.cjs.map +7 -0
  301. package/dist/ply/lib/ply-types.d.ts +37 -0
  302. package/dist/ply/lib/ply-types.d.ts.map +1 -0
  303. package/dist/ply/lib/ply-types.js +2 -0
  304. package/dist/ply/lib/ply-types.js.map +1 -0
  305. package/dist/ply/ply-format.cjs +43 -0
  306. package/dist/ply/ply-format.cjs.map +7 -0
  307. package/dist/ply/ply-format.d.ts +18 -0
  308. package/dist/ply/ply-format.d.ts.map +1 -0
  309. package/dist/ply/ply-format.js +22 -0
  310. package/dist/ply/ply-format.js.map +1 -0
  311. package/dist/ply/ply-loader-types.cjs +65 -0
  312. package/dist/ply/ply-loader-types.cjs.map +7 -0
  313. package/dist/ply/ply-loader-types.d.ts +111 -0
  314. package/dist/ply/ply-loader-types.d.ts.map +1 -0
  315. package/dist/ply/ply-loader-types.js +38 -0
  316. package/dist/ply/ply-loader-types.js.map +1 -0
  317. package/dist/ply/ply-loader.cjs +134 -0
  318. package/dist/ply/ply-loader.cjs.map +7 -0
  319. package/dist/ply/ply-loader.d.ts +44 -0
  320. package/dist/ply/ply-loader.d.ts.map +1 -0
  321. package/dist/ply/ply-loader.js +121 -0
  322. package/dist/ply/ply-loader.js.map +1 -0
  323. package/dist/ply/ply-writer.cjs +175 -0
  324. package/dist/ply/ply-writer.cjs.map +7 -0
  325. package/dist/ply/ply-writer.d.ts +37 -0
  326. package/dist/ply/ply-writer.d.ts.map +1 -0
  327. package/dist/ply/ply-writer.js +140 -0
  328. package/dist/ply/ply-writer.js.map +1 -0
  329. package/dist/ply/unbundled.cjs +33 -0
  330. package/dist/ply/unbundled.cjs.map +7 -0
  331. package/dist/ply/unbundled.d.ts +3 -0
  332. package/dist/ply/unbundled.d.ts.map +1 -0
  333. package/dist/ply/unbundled.js +5 -0
  334. package/dist/ply/unbundled.js.map +1 -0
  335. package/dist/ply/workers/ply-worker.cjs +34 -0
  336. package/dist/ply/workers/ply-worker.cjs.map +7 -0
  337. package/dist/ply/workers/ply-worker.d.ts +2 -0
  338. package/dist/ply/workers/ply-worker.d.ts.map +1 -0
  339. package/dist/ply/workers/ply-worker.js +37 -0
  340. package/dist/ply/workers/ply-worker.js.map +1 -0
  341. package/dist/ply-worker.js +19175 -0
  342. package/package.json +234 -4
  343. package/src/index.ts +19 -0
  344. package/src/las/bundled.ts +39 -0
  345. package/src/las/index.ts +70 -0
  346. package/src/las/las-copc-loader-types.ts +18 -0
  347. package/src/las/las-copc-loader.ts +61 -0
  348. package/src/las/las-format.ts +21 -0
  349. package/src/las/las-loader-shared.ts +124 -0
  350. package/src/las/las-loader-types.ts +27 -0
  351. package/src/las/las-loader.ts +109 -0
  352. package/src/las/las-writer.ts +1473 -0
  353. package/src/las/laz-rs-loader-types.ts +21 -0
  354. package/src/las/laz-rs-loader.ts +53 -0
  355. package/src/las/lazperf-loader-types.ts +22 -0
  356. package/src/las/lazperf-loader.ts +65 -0
  357. package/src/las/lib/LASZIP-LICENSE +202 -0
  358. package/src/las/lib/LASZIP-NOTICE +4 -0
  359. package/src/las/lib/copc/parse-las.ts +265 -0
  360. package/src/las/lib/get-las-schema.ts +50 -0
  361. package/src/las/lib/las-compatibility.ts +178 -0
  362. package/src/las/lib/las-extra-bytes.ts +274 -0
  363. package/src/las/lib/las-types.ts +206 -0
  364. package/src/las/lib/las-waveform.ts +292 -0
  365. package/src/las/lib/laz-perf/laslaz-decoder.ts +443 -0
  366. package/src/las/lib/laz-perf/parse-las.ts +412 -0
  367. package/src/las/lib/laz-rs-wasm/laslaz-decoder.ts +488 -0
  368. package/src/las/lib/laz-rs-wasm/parse-las.ts +412 -0
  369. package/src/las/lib/typescript/parse-las.ts +3730 -0
  370. package/src/las/libs/laz-perf/laz-perf.ts +20615 -0
  371. package/src/las/libs/laz-rs-wasm/laz_rs_wasm.d.ts +89 -0
  372. package/src/las/libs/laz-rs-wasm/laz_rs_wasm.js +497 -0
  373. package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm +0 -0
  374. package/src/las/libs/laz-rs-wasm/laz_rs_wasm_bg.wasm.d.ts +38 -0
  375. package/src/las/libs/laz-rs-wasm/package.json +19 -0
  376. package/src/las/unbundled.ts +38 -0
  377. package/src/las/workers/las-worker.ts +24 -0
  378. package/src/pcd/bundled.ts +9 -0
  379. package/src/pcd/index.ts +13 -0
  380. package/src/pcd/lib/decompress-lzf.ts +68 -0
  381. package/src/pcd/lib/get-pcd-schema.ts +66 -0
  382. package/src/pcd/lib/parse-pcd.ts +474 -0
  383. package/src/pcd/lib/pcd-types.ts +34 -0
  384. package/src/pcd/pcd-format.ts +21 -0
  385. package/src/pcd/pcd-loader-types.ts +53 -0
  386. package/src/pcd/pcd-loader.ts +179 -0
  387. package/src/pcd/pcd-writer.ts +152 -0
  388. package/src/pcd/unbundled.ts +6 -0
  389. package/src/pcd/workers/pcd-worker.ts +24 -0
  390. package/src/ply/bundled.ts +9 -0
  391. package/src/ply/index.ts +15 -0
  392. package/src/ply/lib/get-ply-schema.ts +133 -0
  393. package/src/ply/lib/normalize-ply.ts +110 -0
  394. package/src/ply/lib/parse-ply-arrow.ts +676 -0
  395. package/src/ply/lib/parse-ply-in-batches.ts +827 -0
  396. package/src/ply/lib/parse-ply.ts +1081 -0
  397. package/src/ply/lib/ply-types.ts +47 -0
  398. package/src/ply/ply-format.ts +24 -0
  399. package/src/ply/ply-loader-types.ts +61 -0
  400. package/src/ply/ply-loader.ts +185 -0
  401. package/src/ply/ply-writer.ts +215 -0
  402. package/src/ply/unbundled.ts +6 -0
  403. package/src/ply/workers/ply-worker.ts +40 -0
  404. package/third-party-licenses/plasio-LICENSE +21 -0
  405. package/third-party-licenses/three-LICENSE +21 -0
@@ -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,3 @@
1
+ export type { PLYLoaderOptions } from "./ply-loader-types.js";
2
+ export { PLYLoaderWithParser as PLYWorkerLoader, PLYLoaderWithParser as PLYLoader } from "./ply-loader.js";
3
+ //# sourceMappingURL=bundled.d.ts.map
@@ -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,5 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ export { PLYLoaderWithParser as PLYWorkerLoader, PLYLoaderWithParser as PLYLoader } from "./ply-loader.js";
5
+ //# sourceMappingURL=bundled.js.map
@@ -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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"}
@@ -0,0 +1,96 @@
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/normalize-ply.ts
21
+ var normalize_ply_exports = {};
22
+ __export(normalize_ply_exports, {
23
+ default: () => normalizePLY
24
+ });
25
+ module.exports = __toCommonJS(normalize_ply_exports);
26
+ var import_schema_utils = require("@loaders.gl/core/schema-utils");
27
+ var import_get_ply_schema = require("./get-ply-schema.cjs");
28
+ function normalizePLY(plyHeader, plyAttributes, options) {
29
+ const attributes = getMeshAttributes(plyAttributes);
30
+ const boundingBox = (0, import_schema_utils.getMeshBoundingBox)(attributes);
31
+ const vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;
32
+ const isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;
33
+ const mode = isTriangles ? 4 : 0;
34
+ const topology = isTriangles ? "triangle-list" : "point-list";
35
+ const schema = (0, import_get_ply_schema.getPLYSchema)(plyHeader, attributes);
36
+ const plyMesh = {
37
+ loader: "ply",
38
+ loaderData: plyHeader,
39
+ header: {
40
+ vertexCount,
41
+ boundingBox: boundingBox ?? void 0
42
+ },
43
+ schema,
44
+ attributes,
45
+ indices: { value: new Uint32Array(0), size: 0 },
46
+ mode,
47
+ topology
48
+ };
49
+ if (plyAttributes.indices.length > 0) {
50
+ plyMesh.indices = { value: new Uint32Array(plyAttributes.indices), size: 1 };
51
+ }
52
+ return plyMesh;
53
+ }
54
+ function getMeshAttributes(attributes) {
55
+ const accessors = {};
56
+ for (const attributeName of Object.keys(attributes)) {
57
+ switch (attributeName) {
58
+ case "vertices":
59
+ if (attributes.vertices.length > 0) {
60
+ accessors.POSITION = { value: getFloat32Array(attributes.vertices), size: 3 };
61
+ }
62
+ break;
63
+ // optional attributes data
64
+ case "normals":
65
+ if (attributes.normals.length > 0) {
66
+ accessors.NORMAL = { value: getFloat32Array(attributes.normals), size: 3 };
67
+ }
68
+ break;
69
+ case "uvs":
70
+ if (attributes.uvs.length > 0) {
71
+ accessors.TEXCOORD_0 = { value: getFloat32Array(attributes.uvs), size: 2 };
72
+ }
73
+ break;
74
+ case "colors":
75
+ if (attributes.colors.length > 0) {
76
+ accessors.COLOR_0 = { value: getUint8Array(attributes.colors), size: 3, normalized: true };
77
+ }
78
+ break;
79
+ case "indices":
80
+ break;
81
+ default:
82
+ if (attributes[attributeName].length > 0) {
83
+ accessors[attributeName] = { value: getFloat32Array(attributes[attributeName]), size: 1 };
84
+ }
85
+ break;
86
+ }
87
+ }
88
+ return accessors;
89
+ }
90
+ function getFloat32Array(attribute) {
91
+ return attribute instanceof Float32Array ? attribute : new Float32Array(attribute);
92
+ }
93
+ function getUint8Array(attribute) {
94
+ return attribute instanceof Uint8Array ? attribute : new Uint8Array(attribute);
95
+ }
96
+ //# sourceMappingURL=normalize-ply.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/ply/lib/normalize-ply.ts"],
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {MeshAttributes} from '@loaders.gl/core/schema';\nimport {getMeshBoundingBox} from '@loaders.gl/core/schema-utils';\nimport type {PLYMesh, PLYHeader, PLYAttributes, MeshHeader} from './ply-types';\nimport {getPLYSchema} from './get-ply-schema';\n\n/**\n * @param header\n * @param attributes\n * @returns data and header\n */\nexport default function normalizePLY(\n plyHeader: MeshHeader & PLYHeader,\n plyAttributes: PLYAttributes,\n options?: {}\n): PLYMesh {\n const attributes = getMeshAttributes(plyAttributes);\n const boundingBox = getMeshBoundingBox(attributes);\n const vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;\n\n // TODO - how to detect POINT CLOUDS vs MESHES?\n // TODO - For Meshes, PLY quadrangles must be split?\n const isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;\n const mode = isTriangles ? 4 : 0; // TRIANGLES vs POINTS\n const topology = isTriangles ? 'triangle-list' : 'point-list';\n\n const schema = getPLYSchema(plyHeader, attributes);\n\n const plyMesh: PLYMesh = {\n loader: 'ply',\n loaderData: plyHeader,\n header: {\n vertexCount,\n boundingBox: boundingBox ?? undefined\n },\n schema,\n attributes,\n indices: {value: new Uint32Array(0), size: 0},\n mode,\n topology\n };\n\n if (plyAttributes.indices.length > 0) {\n plyMesh.indices = {value: new Uint32Array(plyAttributes.indices), size: 1};\n }\n\n return plyMesh;\n}\n\n/**\n * @param attributes\n * @returns accessors []\n */\n// eslint-disable-next-line complexity\nfunction getMeshAttributes(attributes: PLYAttributes): MeshAttributes {\n const accessors: MeshAttributes = {};\n\n for (const attributeName of Object.keys(attributes)) {\n switch (attributeName) {\n case 'vertices':\n if (attributes.vertices.length > 0) {\n accessors.POSITION = {value: getFloat32Array(attributes.vertices), size: 3};\n }\n break;\n\n // optional attributes data\n case 'normals':\n if (attributes.normals.length > 0) {\n accessors.NORMAL = {value: getFloat32Array(attributes.normals), size: 3};\n }\n break;\n\n case 'uvs':\n if (attributes.uvs.length > 0) {\n accessors.TEXCOORD_0 = {value: getFloat32Array(attributes.uvs), size: 2};\n }\n break;\n\n case 'colors':\n if (attributes.colors.length > 0) {\n // TODO - normalized shoud be based on `uchar` flag in source data?\n accessors.COLOR_0 = {value: getUint8Array(attributes.colors), size: 3, normalized: true};\n }\n break;\n\n case 'indices':\n break;\n\n default:\n if (attributes[attributeName].length > 0) {\n accessors[attributeName] = {value: getFloat32Array(attributes[attributeName]), size: 1};\n }\n break;\n }\n }\n return accessors;\n}\n\n/** Return a Float32Array without copying when the parser already produced one. */\nfunction getFloat32Array(attribute: PLYAttributes[string]): Float32Array {\n return attribute instanceof Float32Array ? attribute : new Float32Array(attribute);\n}\n\n/** Return a Uint8Array without copying when the parser already produced one. */\nfunction getUint8Array(attribute: PLYAttributes[string]): Uint8Array {\n return attribute instanceof Uint8Array ? attribute : new Uint8Array(attribute);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,0BAAiC;AAEjC,4BAA2B;AAOZ,SAAR,aACL,WACA,eACA,SACS;AACT,QAAM,aAAa,kBAAkB,aAAa;AAClD,QAAM,kBAAc,wCAAmB,UAAU;AACjD,QAAM,cAAc,cAAc,QAAQ,UAAU,cAAc,SAAS,SAAS;AAIpF,QAAM,cAAc,cAAc,WAAW,cAAc,QAAQ,SAAS;AAC5E,QAAM,OAAO,cAAc,IAAI;AAC/B,QAAM,WAAW,cAAc,kBAAkB;AAEjD,QAAM,aAAS,oCAAa,WAAW,UAAU;AAEjD,QAAM,UAAmB;AAAA,IACvB,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,QAAQ;AAAA,MACN;AAAA,MACA,aAAa,eAAe;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,EAAC,OAAO,IAAI,YAAY,CAAC,GAAG,MAAM,EAAC;AAAA,IAC5C;AAAA,IACA;AAAA,EACF;AAEA,MAAI,cAAc,QAAQ,SAAS,GAAG;AACpC,YAAQ,UAAU,EAAC,OAAO,IAAI,YAAY,cAAc,OAAO,GAAG,MAAM,EAAC;AAAA,EAC3E;AAEA,SAAO;AACT;AAOA,SAAS,kBAAkB,YAA2C;AACpE,QAAM,YAA4B,CAAC;AAEnC,aAAW,iBAAiB,OAAO,KAAK,UAAU,GAAG;AACnD,YAAQ,eAAe;AAAA,MACrB,KAAK;AACH,YAAI,WAAW,SAAS,SAAS,GAAG;AAClC,oBAAU,WAAW,EAAC,OAAO,gBAAgB,WAAW,QAAQ,GAAG,MAAM,EAAC;AAAA,QAC5E;AACA;AAAA;AAAA,MAGF,KAAK;AACH,YAAI,WAAW,QAAQ,SAAS,GAAG;AACjC,oBAAU,SAAS,EAAC,OAAO,gBAAgB,WAAW,OAAO,GAAG,MAAM,EAAC;AAAA,QACzE;AACA;AAAA,MAEF,KAAK;AACH,YAAI,WAAW,IAAI,SAAS,GAAG;AAC7B,oBAAU,aAAa,EAAC,OAAO,gBAAgB,WAAW,GAAG,GAAG,MAAM,EAAC;AAAA,QACzE;AACA;AAAA,MAEF,KAAK;AACH,YAAI,WAAW,OAAO,SAAS,GAAG;AAEhC,oBAAU,UAAU,EAAC,OAAO,cAAc,WAAW,MAAM,GAAG,MAAM,GAAG,YAAY,KAAI;AAAA,QACzF;AACA;AAAA,MAEF,KAAK;AACH;AAAA,MAEF;AACE,YAAI,WAAW,aAAa,EAAE,SAAS,GAAG;AACxC,oBAAU,aAAa,IAAI,EAAC,OAAO,gBAAgB,WAAW,aAAa,CAAC,GAAG,MAAM,EAAC;AAAA,QACxF;AACA;AAAA,IACJ;AAAA,EACF;AACA,SAAO;AACT;AAGA,SAAS,gBAAgB,WAAgD;AACvE,SAAO,qBAAqB,eAAe,YAAY,IAAI,aAAa,SAAS;AACnF;AAGA,SAAS,cAAc,WAA8C;AACnE,SAAO,qBAAqB,aAAa,YAAY,IAAI,WAAW,SAAS;AAC/E;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ import type { PLYMesh, PLYHeader, PLYAttributes, MeshHeader } from "./ply-types.js";
2
+ /**
3
+ * @param header
4
+ * @param attributes
5
+ * @returns data and header
6
+ */
7
+ export default function normalizePLY(plyHeader: MeshHeader & PLYHeader, plyAttributes: PLYAttributes, options?: {}): PLYMesh;
8
+ //# sourceMappingURL=normalize-ply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-ply.d.ts","sourceRoot":"","sources":["../../../src/ply/lib/normalize-ply.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAC,uBAAoB;AAG/E;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,aAAa,EAAE,aAAa,EAC5B,OAAO,CAAC,EAAE,EAAE,GACX,OAAO,CAgCT"}
@@ -0,0 +1,89 @@
1
+ // loaders.gl
2
+ // SPDX-License-Identifier: MIT
3
+ // Copyright (c) vis.gl contributors
4
+ import { getMeshBoundingBox } from '@loaders.gl/core/schema-utils';
5
+ import { getPLYSchema } from "./get-ply-schema.js";
6
+ /**
7
+ * @param header
8
+ * @param attributes
9
+ * @returns data and header
10
+ */
11
+ export default function normalizePLY(plyHeader, plyAttributes, options) {
12
+ const attributes = getMeshAttributes(plyAttributes);
13
+ const boundingBox = getMeshBoundingBox(attributes);
14
+ const vertexCount = plyAttributes.indices.length || plyAttributes.vertices.length / 3;
15
+ // TODO - how to detect POINT CLOUDS vs MESHES?
16
+ // TODO - For Meshes, PLY quadrangles must be split?
17
+ const isTriangles = plyAttributes.indices && plyAttributes.indices.length > 0;
18
+ const mode = isTriangles ? 4 : 0; // TRIANGLES vs POINTS
19
+ const topology = isTriangles ? 'triangle-list' : 'point-list';
20
+ const schema = getPLYSchema(plyHeader, attributes);
21
+ const plyMesh = {
22
+ loader: 'ply',
23
+ loaderData: plyHeader,
24
+ header: {
25
+ vertexCount,
26
+ boundingBox: boundingBox ?? undefined
27
+ },
28
+ schema,
29
+ attributes,
30
+ indices: { value: new Uint32Array(0), size: 0 },
31
+ mode,
32
+ topology
33
+ };
34
+ if (plyAttributes.indices.length > 0) {
35
+ plyMesh.indices = { value: new Uint32Array(plyAttributes.indices), size: 1 };
36
+ }
37
+ return plyMesh;
38
+ }
39
+ /**
40
+ * @param attributes
41
+ * @returns accessors []
42
+ */
43
+ // eslint-disable-next-line complexity
44
+ function getMeshAttributes(attributes) {
45
+ const accessors = {};
46
+ for (const attributeName of Object.keys(attributes)) {
47
+ switch (attributeName) {
48
+ case 'vertices':
49
+ if (attributes.vertices.length > 0) {
50
+ accessors.POSITION = { value: getFloat32Array(attributes.vertices), size: 3 };
51
+ }
52
+ break;
53
+ // optional attributes data
54
+ case 'normals':
55
+ if (attributes.normals.length > 0) {
56
+ accessors.NORMAL = { value: getFloat32Array(attributes.normals), size: 3 };
57
+ }
58
+ break;
59
+ case 'uvs':
60
+ if (attributes.uvs.length > 0) {
61
+ accessors.TEXCOORD_0 = { value: getFloat32Array(attributes.uvs), size: 2 };
62
+ }
63
+ break;
64
+ case 'colors':
65
+ if (attributes.colors.length > 0) {
66
+ // TODO - normalized shoud be based on `uchar` flag in source data?
67
+ accessors.COLOR_0 = { value: getUint8Array(attributes.colors), size: 3, normalized: true };
68
+ }
69
+ break;
70
+ case 'indices':
71
+ break;
72
+ default:
73
+ if (attributes[attributeName].length > 0) {
74
+ accessors[attributeName] = { value: getFloat32Array(attributes[attributeName]), size: 1 };
75
+ }
76
+ break;
77
+ }
78
+ }
79
+ return accessors;
80
+ }
81
+ /** Return a Float32Array without copying when the parser already produced one. */
82
+ function getFloat32Array(attribute) {
83
+ return attribute instanceof Float32Array ? attribute : new Float32Array(attribute);
84
+ }
85
+ /** Return a Uint8Array without copying when the parser already produced one. */
86
+ function getUint8Array(attribute) {
87
+ return attribute instanceof Uint8Array ? attribute : new Uint8Array(attribute);
88
+ }
89
+ //# sourceMappingURL=normalize-ply.js.map