@loaders.gl/scene 5.0.0-beta.1 → 5.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (675) hide show
  1. package/DRACO-README.md +15 -0
  2. package/GLTF-README.md +1 -1
  3. package/OBJ-README.md +1 -1
  4. package/README.md +13 -2
  5. package/THIRD-PARTY-NOTICES.md +10 -1
  6. package/dist/dist.dev.js +21207 -14204
  7. package/dist/dist.min.js +32 -24
  8. package/dist/draco/bundled.cjs +34 -0
  9. package/dist/draco/bundled.cjs.map +7 -0
  10. package/dist/draco/bundled.d.ts +5 -0
  11. package/dist/draco/bundled.d.ts.map +1 -0
  12. package/dist/draco/bundled.js +6 -0
  13. package/dist/draco/bundled.js.map +1 -0
  14. package/dist/draco/draco-format.cjs +41 -0
  15. package/dist/draco/draco-format.cjs.map +7 -0
  16. package/dist/draco/draco-format.d.ts +15 -0
  17. package/dist/draco/draco-format.d.ts.map +1 -0
  18. package/dist/draco/draco-format.js +18 -0
  19. package/dist/draco/draco-format.js.map +1 -0
  20. package/dist/draco/draco-javascript-loader-with-parser.cjs +47 -0
  21. package/dist/draco/draco-javascript-loader-with-parser.cjs.map +7 -0
  22. package/dist/draco/draco-javascript-loader-with-parser.d.ts +36 -0
  23. package/dist/draco/draco-javascript-loader-with-parser.d.ts.map +1 -0
  24. package/dist/draco/draco-javascript-loader-with-parser.js +14 -0
  25. package/dist/draco/draco-javascript-loader-with-parser.js.map +1 -0
  26. package/dist/draco/draco-libraries.cjs +61 -0
  27. package/dist/draco/draco-libraries.cjs.map +7 -0
  28. package/dist/draco/draco-libraries.d.ts +28 -0
  29. package/dist/draco/draco-libraries.d.ts.map +1 -0
  30. package/dist/draco/draco-libraries.js +33 -0
  31. package/dist/draco/draco-libraries.js.map +1 -0
  32. package/dist/draco/draco-library-options.cjs +80 -0
  33. package/dist/draco/draco-library-options.cjs.map +7 -0
  34. package/dist/draco/draco-library-options.d.ts +16 -0
  35. package/dist/draco/draco-library-options.d.ts.map +1 -0
  36. package/dist/draco/draco-library-options.js +52 -0
  37. package/dist/draco/draco-library-options.js.map +1 -0
  38. package/dist/draco/draco-loader-options.cjs +37 -0
  39. package/dist/draco/draco-loader-options.cjs.map +7 -0
  40. package/dist/draco/draco-loader-options.d.ts +27 -0
  41. package/dist/draco/draco-loader-options.d.ts.map +1 -0
  42. package/dist/draco/draco-loader-options.js +12 -0
  43. package/dist/draco/draco-loader-options.js.map +1 -0
  44. package/dist/draco/draco-loader-types.cjs +87 -0
  45. package/dist/draco/draco-loader-types.cjs.map +7 -0
  46. package/dist/draco/draco-loader-types.d.ts +41 -0
  47. package/dist/draco/draco-loader-types.d.ts.map +1 -0
  48. package/dist/draco/draco-loader-types.js +54 -0
  49. package/dist/draco/draco-loader-types.js.map +1 -0
  50. package/dist/draco/draco-loader.cjs +51 -0
  51. package/dist/draco/draco-loader.cjs.map +7 -0
  52. package/dist/draco/draco-loader.d.ts +41 -0
  53. package/dist/draco/draco-loader.d.ts.map +1 -0
  54. package/dist/draco/draco-loader.js +22 -0
  55. package/dist/draco/draco-loader.js.map +1 -0
  56. package/dist/draco/draco-wasm-loader-with-parser.cjs +48 -0
  57. package/dist/draco/draco-wasm-loader-with-parser.cjs.map +7 -0
  58. package/dist/draco/draco-wasm-loader-with-parser.d.ts +36 -0
  59. package/dist/draco/draco-wasm-loader-with-parser.d.ts.map +1 -0
  60. package/dist/draco/draco-wasm-loader-with-parser.js +14 -0
  61. package/dist/draco/draco-wasm-loader-with-parser.js.map +1 -0
  62. package/dist/draco/draco-writer.cjs +183 -0
  63. package/dist/draco/draco-writer.cjs.map +7 -0
  64. package/dist/draco/draco-writer.d.ts +98 -0
  65. package/dist/draco/draco-writer.d.ts.map +1 -0
  66. package/dist/draco/draco-writer.js +166 -0
  67. package/dist/draco/draco-writer.js.map +1 -0
  68. package/dist/draco/draco3d/draco3d-types.cjs +76 -0
  69. package/dist/draco/draco3d/draco3d-types.cjs.map +7 -0
  70. package/dist/draco/draco3d/draco3d-types.d.ts +303 -0
  71. package/dist/draco/draco3d/draco3d-types.d.ts.map +1 -0
  72. package/dist/draco/draco3d/draco3d-types.js +47 -0
  73. package/dist/draco/draco3d/draco3d-types.js.map +1 -0
  74. package/dist/draco/draco3d-loader-with-parser.cjs +50 -0
  75. package/dist/draco/draco3d-loader-with-parser.cjs.map +7 -0
  76. package/dist/draco/draco3d-loader-with-parser.d.ts +36 -0
  77. package/dist/draco/draco3d-loader-with-parser.d.ts.map +1 -0
  78. package/dist/draco/draco3d-loader-with-parser.js +21 -0
  79. package/dist/draco/draco3d-loader-with-parser.js.map +1 -0
  80. package/dist/draco/index.cjs +51 -0
  81. package/dist/draco/index.cjs.map +7 -0
  82. package/dist/draco/index.d.ts +11 -0
  83. package/dist/draco/index.d.ts.map +1 -0
  84. package/dist/draco/index.js +10 -0
  85. package/dist/draco/index.js.map +1 -0
  86. package/dist/draco/lib/draco-builder.cjs +660 -0
  87. package/dist/draco/lib/draco-builder.cjs.map +7 -0
  88. package/dist/draco/lib/draco-builder.d.ts +175 -0
  89. package/dist/draco/lib/draco-builder.d.ts.map +1 -0
  90. package/dist/draco/lib/draco-builder.js +612 -0
  91. package/dist/draco/lib/draco-builder.js.map +1 -0
  92. package/dist/draco/lib/draco-library-loader.cjs +47 -0
  93. package/dist/draco/lib/draco-library-loader.cjs.map +7 -0
  94. package/dist/draco/lib/draco-library-loader.d.ts +5 -0
  95. package/dist/draco/lib/draco-library-loader.d.ts.map +1 -0
  96. package/dist/draco/lib/draco-library-loader.js +23 -0
  97. package/dist/draco/lib/draco-library-loader.js.map +1 -0
  98. package/dist/draco/lib/draco-module-loader.cjs +281 -0
  99. package/dist/draco/lib/draco-module-loader.cjs.map +7 -0
  100. package/dist/draco/lib/draco-module-loader.d.ts +25 -0
  101. package/dist/draco/lib/draco-module-loader.d.ts.map +1 -0
  102. package/dist/draco/lib/draco-module-loader.js +220 -0
  103. package/dist/draco/lib/draco-module-loader.js.map +1 -0
  104. package/dist/draco/lib/draco-parser.cjs +601 -0
  105. package/dist/draco/lib/draco-parser.cjs.map +7 -0
  106. package/dist/draco/lib/draco-parser.d.ts +143 -0
  107. package/dist/draco/lib/draco-parser.d.ts.map +1 -0
  108. package/dist/draco/lib/draco-parser.js +598 -0
  109. package/dist/draco/lib/draco-parser.js.map +1 -0
  110. package/dist/draco/lib/draco-types.cjs +19 -0
  111. package/dist/draco/lib/draco-types.cjs.map +7 -0
  112. package/dist/draco/lib/draco-types.d.ts +59 -0
  113. package/dist/draco/lib/draco-types.d.ts.map +1 -0
  114. package/dist/draco/lib/draco-types.js +5 -0
  115. package/dist/draco/lib/draco-types.js.map +1 -0
  116. package/dist/draco/lib/parse-draco.cjs +60 -0
  117. package/dist/draco/lib/parse-draco.cjs.map +7 -0
  118. package/dist/draco/lib/parse-draco.d.ts +22 -0
  119. package/dist/draco/lib/parse-draco.d.ts.map +1 -0
  120. package/dist/draco/lib/parse-draco.js +33 -0
  121. package/dist/draco/lib/parse-draco.js.map +1 -0
  122. package/dist/draco/lib/utils/get-draco-schema.cjs +74 -0
  123. package/dist/draco/lib/utils/get-draco-schema.cjs.map +7 -0
  124. package/dist/draco/lib/utils/get-draco-schema.d.ts +7 -0
  125. package/dist/draco/lib/utils/get-draco-schema.d.ts.map +1 -0
  126. package/dist/draco/lib/utils/get-draco-schema.js +45 -0
  127. package/dist/draco/lib/utils/get-draco-schema.js.map +1 -0
  128. package/dist/draco/lib/utils/version.cjs +31 -0
  129. package/dist/draco/lib/utils/version.cjs.map +7 -0
  130. package/dist/draco/lib/utils/version.d.ts +2 -0
  131. package/dist/draco/lib/utils/version.d.ts.map +1 -0
  132. package/dist/draco/lib/utils/version.js +8 -0
  133. package/dist/draco/lib/utils/version.js.map +1 -0
  134. package/dist/draco/unbundled.cjs +31 -0
  135. package/dist/draco/unbundled.cjs.map +7 -0
  136. package/dist/draco/unbundled.d.ts +3 -0
  137. package/dist/draco/unbundled.d.ts.map +1 -0
  138. package/dist/draco/unbundled.js +5 -0
  139. package/dist/draco/unbundled.js.map +1 -0
  140. package/dist/draco/workers/draco-worker-node.cjs +8 -0
  141. package/dist/draco/workers/draco-worker-node.cjs.map +7 -0
  142. package/dist/draco/workers/draco-worker-node.d.ts +2 -0
  143. package/dist/draco/workers/draco-worker-node.d.ts.map +1 -0
  144. package/dist/draco/workers/draco-worker-node.js +9 -0
  145. package/dist/draco/workers/draco-worker-node.js.map +1 -0
  146. package/dist/draco/workers/draco-worker.cjs +7 -0
  147. package/dist/draco/workers/draco-worker.cjs.map +7 -0
  148. package/dist/draco/workers/draco-worker.d.ts +2 -0
  149. package/dist/draco/workers/draco-worker.d.ts.map +1 -0
  150. package/dist/draco/workers/draco-worker.js +7 -0
  151. package/dist/draco/workers/draco-worker.js.map +1 -0
  152. package/dist/draco/workers/draco-writer-worker-node.cjs +11 -0
  153. package/dist/draco/workers/draco-writer-worker-node.cjs.map +7 -0
  154. package/dist/draco/workers/draco-writer-worker-node.d.cts +2 -0
  155. package/dist/draco/workers/draco-writer-worker-node.d.cts.map +1 -0
  156. package/dist/draco/workers/draco-writer-worker-node.d.ts +2 -0
  157. package/dist/draco/workers/draco-writer-worker-node.d.ts.map +1 -0
  158. package/dist/draco/workers/draco-writer-worker-node.js +9 -0
  159. package/dist/draco/workers/draco-writer-worker-node.js.map +1 -0
  160. package/dist/draco/workers/draco-writer-worker.cjs +10 -0
  161. package/dist/draco/workers/draco-writer-worker.cjs.map +7 -0
  162. package/dist/draco/workers/draco-writer-worker.d.ts +2 -0
  163. package/dist/draco/workers/draco-writer-worker.d.ts.map +1 -0
  164. package/dist/draco/workers/draco-writer-worker.js +7 -0
  165. package/dist/draco/workers/draco-writer-worker.js.map +1 -0
  166. package/dist/draco-javascript-loader.cjs +25 -0
  167. package/dist/draco-javascript-loader.cjs.map +7 -0
  168. package/dist/draco-javascript-loader.d.ts +2 -0
  169. package/dist/draco-javascript-loader.d.ts.map +1 -0
  170. package/dist/draco-javascript-loader.js +3 -0
  171. package/dist/draco-javascript-loader.js.map +1 -0
  172. package/dist/draco-library-options.cjs +36 -0
  173. package/dist/draco-library-options.cjs.map +7 -0
  174. package/dist/draco-library-options.d.ts +3 -0
  175. package/dist/draco-library-options.d.ts.map +1 -0
  176. package/dist/draco-library-options.js +4 -0
  177. package/dist/draco-library-options.js.map +1 -0
  178. package/dist/draco-loader-types.cjs +25 -0
  179. package/dist/draco-loader-types.cjs.map +7 -0
  180. package/dist/draco-loader-types.d.ts +2 -0
  181. package/dist/draco-loader-types.d.ts.map +1 -0
  182. package/dist/draco-loader-types.js +3 -0
  183. package/dist/draco-loader-types.js.map +1 -0
  184. package/dist/draco-loader.cjs +25 -0
  185. package/dist/draco-loader.cjs.map +7 -0
  186. package/dist/draco-loader.d.ts +2 -0
  187. package/dist/draco-loader.d.ts.map +1 -0
  188. package/dist/draco-loader.js +3 -0
  189. package/dist/draco-loader.js.map +1 -0
  190. package/dist/draco-wasm-loader.cjs +25 -0
  191. package/dist/draco-wasm-loader.cjs.map +7 -0
  192. package/dist/draco-wasm-loader.d.ts +2 -0
  193. package/dist/draco-wasm-loader.d.ts.map +1 -0
  194. package/dist/draco-wasm-loader.js +3 -0
  195. package/dist/draco-wasm-loader.js.map +1 -0
  196. package/dist/draco-worker-node.js +29842 -0
  197. package/dist/draco-worker-node.js.map +7 -0
  198. package/dist/draco-worker.js +19668 -0
  199. package/dist/draco-worker.js.map +7 -0
  200. package/dist/draco-writer-worker-node.cjs +30022 -0
  201. package/dist/draco-writer-worker-node.cjs.map +7 -0
  202. package/dist/draco-writer-worker.js +19767 -0
  203. package/dist/draco-writer-worker.js.map +7 -0
  204. package/dist/draco-writer.cjs +25 -0
  205. package/dist/draco-writer.cjs.map +7 -0
  206. package/dist/draco-writer.d.ts +2 -0
  207. package/dist/draco-writer.d.ts.map +1 -0
  208. package/dist/draco-writer.js +3 -0
  209. package/dist/draco-writer.js.map +1 -0
  210. package/dist/draco3d-loader.cjs +25 -0
  211. package/dist/draco3d-loader.cjs.map +7 -0
  212. package/dist/draco3d-loader.d.ts +2 -0
  213. package/dist/draco3d-loader.d.ts.map +1 -0
  214. package/dist/draco3d-loader.js +3 -0
  215. package/dist/draco3d-loader.js.map +1 -0
  216. package/dist/glb-loader-types.cjs +61 -0
  217. package/dist/glb-loader-types.cjs.map +7 -0
  218. package/dist/glb-loader-types.d.ts +2 -0
  219. package/dist/glb-loader-types.d.ts.map +1 -0
  220. package/dist/glb-loader-types.js +2 -0
  221. package/dist/glb-loader-types.js.map +1 -0
  222. package/dist/glb-loader.cjs +48 -0
  223. package/dist/glb-loader.cjs.map +7 -0
  224. package/dist/glb-loader.d.ts +2 -0
  225. package/dist/glb-loader.d.ts.map +1 -0
  226. package/dist/glb-loader.js +2 -0
  227. package/dist/glb-loader.js.map +1 -0
  228. package/dist/glb-writer.cjs +53 -0
  229. package/dist/glb-writer.cjs.map +7 -0
  230. package/dist/glb-writer.d.ts +2 -0
  231. package/dist/glb-writer.d.ts.map +1 -0
  232. package/dist/glb-writer.js +2 -0
  233. package/dist/glb-writer.js.map +1 -0
  234. package/dist/gltf/glb-loader-types.cjs +1 -1
  235. package/dist/gltf/glb-loader-types.cjs.map +2 -2
  236. package/dist/gltf/glb-loader-types.d.ts +2 -2
  237. package/dist/gltf/glb-loader-types.js +1 -1
  238. package/dist/gltf/glb-loader-types.js.map +1 -1
  239. package/dist/gltf/gltf-loader-types.cjs +1 -1
  240. package/dist/gltf/gltf-loader-types.cjs.map +2 -2
  241. package/dist/gltf/gltf-loader-types.d.ts +11 -5
  242. package/dist/gltf/gltf-loader-types.d.ts.map +1 -1
  243. package/dist/gltf/gltf-loader-types.js +1 -1
  244. package/dist/gltf/gltf-loader-types.js.map +1 -1
  245. package/dist/gltf/gltf-loader.cjs.map +1 -1
  246. package/dist/gltf/gltf-loader.d.ts +4 -4
  247. package/dist/gltf/gltf-loader.d.ts.map +1 -1
  248. package/dist/gltf/index.cjs +2 -0
  249. package/dist/gltf/index.cjs.map +2 -2
  250. package/dist/gltf/index.d.ts +2 -2
  251. package/dist/gltf/index.d.ts.map +1 -1
  252. package/dist/gltf/index.js +1 -1
  253. package/dist/gltf/index.js.map +1 -1
  254. package/dist/gltf/lib/api/gltf-extensions.cjs +7 -2
  255. package/dist/gltf/lib/api/gltf-extensions.cjs.map +2 -2
  256. package/dist/gltf/lib/api/gltf-extensions.d.ts.map +1 -1
  257. package/dist/gltf/lib/api/gltf-extensions.js +7 -5
  258. package/dist/gltf/lib/api/gltf-extensions.js.map +1 -1
  259. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs +12 -2
  260. package/dist/gltf/lib/encoders/encode-gltf-draco.cjs.map +2 -2
  261. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts +1 -1
  262. package/dist/gltf/lib/encoders/encode-gltf-draco.d.ts.map +1 -1
  263. package/dist/gltf/lib/encoders/encode-gltf-draco.js +1 -1
  264. package/dist/gltf/lib/encoders/encode-gltf-draco.js.map +1 -1
  265. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs +1 -0
  266. package/dist/gltf/lib/extensions/EXT_texture_webp.cjs.map +2 -2
  267. package/dist/gltf/lib/extensions/EXT_texture_webp.d.ts.map +1 -1
  268. package/dist/gltf/lib/extensions/EXT_texture_webp.js +3 -0
  269. package/dist/gltf/lib/extensions/EXT_texture_webp.js.map +1 -1
  270. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs +45 -0
  271. package/dist/gltf/lib/extensions/KHR_accessor_float64.cjs.map +7 -0
  272. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts +6 -0
  273. package/dist/gltf/lib/extensions/KHR_accessor_float64.d.ts.map +1 -0
  274. package/dist/gltf/lib/extensions/KHR_accessor_float64.js +20 -0
  275. package/dist/gltf/lib/extensions/KHR_accessor_float64.js.map +1 -0
  276. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs +2 -2
  277. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.cjs.map +2 -2
  278. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.d.ts.map +1 -1
  279. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js +1 -1
  280. package/dist/gltf/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  281. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs +23 -7
  282. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.cjs.map +2 -2
  283. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts +2 -1
  284. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.d.ts.map +1 -1
  285. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js +21 -5
  286. package/dist/gltf/lib/extensions/KHR_gaussian_splatting.js.map +1 -1
  287. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs +64 -0
  288. package/dist/gltf/lib/extensions/MSFT_texture_dds.cjs.map +7 -0
  289. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts +12 -0
  290. package/dist/gltf/lib/extensions/MSFT_texture_dds.d.ts.map +1 -0
  291. package/dist/gltf/lib/extensions/MSFT_texture_dds.js +39 -0
  292. package/dist/gltf/lib/extensions/MSFT_texture_dds.js.map +1 -0
  293. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs +1 -1
  294. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.cjs.map +2 -2
  295. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.d.ts.map +1 -1
  296. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js +3 -1
  297. package/dist/gltf/lib/extensions/utils/3d-tiles-utils.js.map +1 -1
  298. package/dist/gltf/lib/parsers/parse-gltf.cjs +34 -8
  299. package/dist/gltf/lib/parsers/parse-gltf.cjs.map +3 -3
  300. package/dist/gltf/lib/parsers/parse-gltf.d.ts +2 -0
  301. package/dist/gltf/lib/parsers/parse-gltf.d.ts.map +1 -1
  302. package/dist/gltf/lib/parsers/parse-gltf.js +26 -6
  303. package/dist/gltf/lib/parsers/parse-gltf.js.map +1 -1
  304. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs +22 -0
  305. package/dist/gltf/lib/types/gltf-additional-extension-schemas.cjs.map +2 -2
  306. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts +23 -0
  307. package/dist/gltf/lib/types/gltf-additional-extension-schemas.d.ts.map +1 -1
  308. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js +22 -0
  309. package/dist/gltf/lib/types/gltf-additional-extension-schemas.js.map +1 -1
  310. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.cjs.map +1 -1
  311. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts +1 -1
  312. package/dist/gltf/lib/types/gltf-ext-gaussian-splatting-schema.d.ts.map +1 -1
  313. package/dist/gltf/lib/types/gltf-extension-schemas.cjs +8 -0
  314. package/dist/gltf/lib/types/gltf-extension-schemas.cjs.map +2 -2
  315. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts +27 -0
  316. package/dist/gltf/lib/types/gltf-extension-schemas.d.ts.map +1 -1
  317. package/dist/gltf/lib/types/gltf-extension-schemas.js +8 -1
  318. package/dist/gltf/lib/types/gltf-extension-schemas.js.map +1 -1
  319. package/dist/gltf/lib/types/gltf-json-schema.cjs.map +1 -1
  320. package/dist/gltf/lib/types/gltf-json-schema.d.ts +2 -2
  321. package/dist/gltf/lib/types/gltf-json-schema.d.ts.map +1 -1
  322. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs +19 -0
  323. package/dist/gltf/lib/types/gltf-texture-procedurals.cjs.map +7 -0
  324. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts +45 -0
  325. package/dist/gltf/lib/types/gltf-texture-procedurals.d.ts.map +1 -0
  326. package/dist/gltf/lib/types/gltf-texture-procedurals.js +5 -0
  327. package/dist/gltf/lib/types/gltf-texture-procedurals.js.map +1 -0
  328. package/dist/gltf/lib/types/gltf-types.cjs.map +1 -1
  329. package/dist/gltf/lib/types/gltf-types.d.ts +7 -0
  330. package/dist/gltf/lib/types/gltf-types.d.ts.map +1 -1
  331. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts +34 -0
  332. package/dist/gltf/lib/types/gltf-version-zod-schemas.d.ts.map +1 -1
  333. package/dist/gltf/lib/types/gltf-zod-schema.cjs +4 -1
  334. package/dist/gltf/lib/types/gltf-zod-schema.cjs.map +2 -2
  335. package/dist/gltf/lib/types/gltf-zod-schema.d.ts +57 -1
  336. package/dist/gltf/lib/types/gltf-zod-schema.d.ts.map +1 -1
  337. package/dist/gltf/lib/types/gltf-zod-schema.js +6 -2
  338. package/dist/gltf/lib/types/gltf-zod-schema.js.map +1 -1
  339. package/dist/gltf/lib/utils/version.cjs +1 -1
  340. package/dist/gltf/lib/utils/version.cjs.map +1 -1
  341. package/dist/gltf/lib/utils/version.js +1 -1
  342. package/dist/gltf/lib/utils/version.js.map +1 -1
  343. package/dist/gltf/schema.cjs +3 -0
  344. package/dist/gltf/schema.cjs.map +2 -2
  345. package/dist/gltf/schema.d.ts +1 -0
  346. package/dist/gltf/schema.d.ts.map +1 -1
  347. package/dist/gltf/schema.js +1 -0
  348. package/dist/gltf/schema.js.map +1 -1
  349. package/dist/gltf-loader-types.cjs +73 -0
  350. package/dist/gltf-loader-types.cjs.map +7 -0
  351. package/dist/gltf-loader-types.d.ts +2 -0
  352. package/dist/gltf-loader-types.d.ts.map +1 -0
  353. package/dist/gltf-loader-types.js +2 -0
  354. package/dist/gltf-loader-types.js.map +1 -0
  355. package/dist/gltf-loader.cjs +48 -0
  356. package/dist/gltf-loader.cjs.map +7 -0
  357. package/dist/gltf-loader.d.ts +2 -0
  358. package/dist/gltf-loader.d.ts.map +1 -0
  359. package/dist/gltf-loader.js +2 -0
  360. package/dist/gltf-loader.js.map +1 -0
  361. package/dist/gltf-source.cjs +238 -0
  362. package/dist/gltf-source.cjs.map +7 -0
  363. package/dist/gltf-source.d.ts +2 -0
  364. package/dist/gltf-source.d.ts.map +1 -0
  365. package/dist/gltf-source.js +2 -0
  366. package/dist/gltf-source.js.map +1 -0
  367. package/dist/gltf-writer.cjs +69 -0
  368. package/dist/gltf-writer.cjs.map +7 -0
  369. package/dist/gltf-writer.d.ts +2 -0
  370. package/dist/gltf-writer.d.ts.map +1 -0
  371. package/dist/gltf-writer.js +2 -0
  372. package/dist/gltf-writer.js.map +1 -0
  373. package/dist/index.cjs +18 -5
  374. package/dist/index.cjs.map +2 -2
  375. package/dist/index.d.ts +9 -2
  376. package/dist/index.d.ts.map +1 -1
  377. package/dist/index.js +8 -3
  378. package/dist/index.js.map +1 -1
  379. package/dist/libs/DRACO-LICENSE +252 -0
  380. package/dist/libs/README.md +20 -0
  381. package/dist/libs/draco_decoder.js +34 -0
  382. package/dist/libs/draco_decoder.mjs +37 -0
  383. package/dist/libs/draco_decoder.wasm +0 -0
  384. package/dist/libs/draco_decoder_gltf.wasm +0 -0
  385. package/dist/libs/draco_encoder.js +98 -0
  386. package/dist/libs/draco_encoder.mjs +101 -0
  387. package/dist/libs/draco_encoder.wasm +0 -0
  388. package/dist/libs/draco_wasm_wrapper.js +117 -0
  389. package/dist/libs/draco_wasm_wrapper.mjs +120 -0
  390. package/dist/libs/draco_wasm_wrapper_gltf.js +116 -0
  391. package/dist/libs/draco_wasm_wrapper_gltf.mjs +119 -0
  392. package/dist/materialx/parse-materialx.cjs +61 -0
  393. package/dist/materialx/parse-materialx.cjs.map +7 -0
  394. package/dist/materialx/parse-materialx.d.ts +23 -0
  395. package/dist/materialx/parse-materialx.d.ts.map +1 -0
  396. package/dist/materialx/parse-materialx.js +39 -0
  397. package/dist/materialx/parse-materialx.js.map +1 -0
  398. package/dist/materialx/procedural-graph.cjs +77 -0
  399. package/dist/materialx/procedural-graph.cjs.map +7 -0
  400. package/dist/materialx/procedural-graph.d.ts +40 -0
  401. package/dist/materialx/procedural-graph.d.ts.map +1 -0
  402. package/dist/materialx/procedural-graph.js +59 -0
  403. package/dist/materialx/procedural-graph.js.map +1 -0
  404. package/dist/materialx-loader-types.cjs +57 -0
  405. package/dist/materialx-loader-types.cjs.map +7 -0
  406. package/dist/materialx-loader-types.d.ts +34 -0
  407. package/dist/materialx-loader-types.d.ts.map +1 -0
  408. package/dist/materialx-loader-types.js +20 -0
  409. package/dist/materialx-loader-types.js.map +1 -0
  410. package/dist/materialx-loader.cjs +40 -0
  411. package/dist/materialx-loader.cjs.map +7 -0
  412. package/dist/materialx-loader.d.ts +19 -0
  413. package/dist/materialx-loader.d.ts.map +1 -0
  414. package/dist/materialx-loader.js +14 -0
  415. package/dist/materialx-loader.js.map +1 -0
  416. package/dist/mtl-loader-types.cjs +61 -0
  417. package/dist/mtl-loader-types.cjs.map +7 -0
  418. package/dist/mtl-loader-types.d.ts +2 -0
  419. package/dist/mtl-loader-types.d.ts.map +1 -0
  420. package/dist/mtl-loader-types.js +2 -0
  421. package/dist/mtl-loader-types.js.map +1 -0
  422. package/dist/mtl-loader.cjs +47 -0
  423. package/dist/mtl-loader.cjs.map +7 -0
  424. package/dist/mtl-loader.d.ts +2 -0
  425. package/dist/mtl-loader.d.ts.map +1 -0
  426. package/dist/mtl-loader.js +2 -0
  427. package/dist/mtl-loader.js.map +1 -0
  428. package/dist/obj/bundled.cjs +2 -4
  429. package/dist/obj/bundled.cjs.map +2 -2
  430. package/dist/obj/bundled.d.ts +1 -1
  431. package/dist/obj/bundled.d.ts.map +1 -1
  432. package/dist/obj/bundled.js +1 -1
  433. package/dist/obj/bundled.js.map +1 -1
  434. package/dist/obj/index.cjs +0 -6
  435. package/dist/obj/index.cjs.map +3 -3
  436. package/dist/obj/index.d.ts +0 -4
  437. package/dist/obj/index.d.ts.map +1 -1
  438. package/dist/obj/index.js +0 -5
  439. package/dist/obj/index.js.map +1 -1
  440. package/dist/obj/mtl-loader-types.cjs +4 -7
  441. package/dist/obj/mtl-loader-types.cjs.map +2 -2
  442. package/dist/obj/mtl-loader-types.d.ts +2 -22
  443. package/dist/obj/mtl-loader-types.d.ts.map +1 -1
  444. package/dist/obj/mtl-loader-types.js +2 -4
  445. package/dist/obj/mtl-loader-types.js.map +1 -1
  446. package/dist/obj/mtl-loader.cjs +1 -1
  447. package/dist/obj/mtl-loader.cjs.map +2 -2
  448. package/dist/obj/mtl-loader.js +1 -1
  449. package/dist/obj/mtl-loader.js.map +1 -1
  450. package/dist/obj/obj-loader-types.cjs +9 -10
  451. package/dist/obj/obj-loader-types.cjs.map +2 -2
  452. package/dist/obj/obj-loader-types.d.ts +19 -39
  453. package/dist/obj/obj-loader-types.d.ts.map +1 -1
  454. package/dist/obj/obj-loader-types.js +6 -6
  455. package/dist/obj/obj-loader-types.js.map +1 -1
  456. package/dist/obj/obj-loader.cjs +63 -31
  457. package/dist/obj/obj-loader.cjs.map +3 -3
  458. package/dist/obj/obj-loader.d.ts +43 -9
  459. package/dist/obj/obj-loader.d.ts.map +1 -1
  460. package/dist/obj/obj-loader.js +61 -22
  461. package/dist/obj/obj-loader.js.map +1 -1
  462. package/dist/obj/obj-writer.cjs +3 -3
  463. package/dist/obj/obj-writer.cjs.map +2 -2
  464. package/dist/obj/obj-writer.d.ts +5 -4
  465. package/dist/obj/obj-writer.d.ts.map +1 -1
  466. package/dist/obj/obj-writer.js +4 -4
  467. package/dist/obj/obj-writer.js.map +1 -1
  468. package/dist/obj/unbundled.cjs +2 -6
  469. package/dist/obj/unbundled.cjs.map +2 -2
  470. package/dist/obj/unbundled.d.ts +2 -2
  471. package/dist/obj/unbundled.d.ts.map +1 -1
  472. package/dist/obj/unbundled.js +2 -2
  473. package/dist/obj/unbundled.js.map +1 -1
  474. package/dist/obj/workers/obj-worker.cjs +5 -5
  475. package/dist/obj/workers/obj-worker.cjs.map +2 -2
  476. package/dist/obj/workers/obj-worker.js +6 -6
  477. package/dist/obj/workers/obj-worker.js.map +1 -1
  478. package/dist/obj-loader-types.cjs +70 -0
  479. package/dist/obj-loader-types.cjs.map +7 -0
  480. package/dist/obj-loader-types.d.ts +2 -0
  481. package/dist/obj-loader-types.d.ts.map +1 -0
  482. package/dist/obj-loader-types.js +2 -0
  483. package/dist/obj-loader-types.js.map +1 -0
  484. package/dist/obj-loader.cjs +195 -0
  485. package/dist/obj-loader.cjs.map +7 -0
  486. package/dist/obj-loader.d.ts +2 -0
  487. package/dist/obj-loader.d.ts.map +1 -0
  488. package/dist/obj-loader.js +2 -0
  489. package/dist/obj-loader.js.map +1 -0
  490. package/dist/obj-worker.js +1420 -406
  491. package/dist/obj-writer.cjs +167 -0
  492. package/dist/obj-writer.cjs.map +7 -0
  493. package/dist/obj-writer.d.ts +2 -0
  494. package/dist/obj-writer.d.ts.map +1 -0
  495. package/dist/obj-writer.js +2 -0
  496. package/dist/obj-writer.js.map +1 -0
  497. package/dist/stl/parse-stl.cjs +100 -0
  498. package/dist/stl/parse-stl.cjs.map +7 -0
  499. package/dist/stl/parse-stl.d.ts +4 -0
  500. package/dist/stl/parse-stl.d.ts.map +1 -0
  501. package/dist/stl/parse-stl.js +84 -0
  502. package/dist/stl/parse-stl.js.map +1 -0
  503. package/dist/stl-loader-types.cjs +58 -0
  504. package/dist/stl-loader-types.cjs.map +7 -0
  505. package/dist/stl-loader-types.d.ts +32 -0
  506. package/dist/stl-loader-types.d.ts.map +1 -0
  507. package/dist/stl-loader-types.js +25 -0
  508. package/dist/stl-loader-types.js.map +1 -0
  509. package/dist/stl-loader.cjs +38 -0
  510. package/dist/stl-loader.cjs.map +7 -0
  511. package/dist/stl-loader.d.ts +17 -0
  512. package/dist/stl-loader.d.ts.map +1 -0
  513. package/dist/stl-loader.js +13 -0
  514. package/dist/stl-loader.js.map +1 -0
  515. package/dist/usd/index.cjs.map +1 -1
  516. package/dist/usd/index.d.ts +1 -1
  517. package/dist/usd/index.d.ts.map +1 -1
  518. package/dist/usd/lib/parse-usd.cjs +42 -5
  519. package/dist/usd/lib/parse-usd.cjs.map +2 -2
  520. package/dist/usd/lib/parse-usd.d.ts.map +1 -1
  521. package/dist/usd/lib/parse-usd.js +53 -6
  522. package/dist/usd/lib/parse-usd.js.map +1 -1
  523. package/dist/usd/lib/parse-usdc.cjs +187 -0
  524. package/dist/usd/lib/parse-usdc.cjs.map +7 -0
  525. package/dist/usd/lib/parse-usdc.d.ts +4 -0
  526. package/dist/usd/lib/parse-usdc.d.ts.map +1 -0
  527. package/dist/usd/lib/parse-usdc.js +176 -0
  528. package/dist/usd/lib/parse-usdc.js.map +1 -0
  529. package/dist/usd/lib/parse-usdz.cjs +22 -0
  530. package/dist/usd/lib/parse-usdz.cjs.map +2 -2
  531. package/dist/usd/lib/parse-usdz.d.ts.map +1 -1
  532. package/dist/usd/lib/parse-usdz.js +26 -0
  533. package/dist/usd/lib/parse-usdz.js.map +1 -1
  534. package/dist/usd/lib/usd-types.cjs.map +1 -1
  535. package/dist/usd/lib/usd-types.d.ts +14 -1
  536. package/dist/usd/lib/usd-types.d.ts.map +1 -1
  537. package/dist/usd/lib/usd-types.js +1 -1
  538. package/dist/usd/lib/usd-types.js.map +1 -1
  539. package/dist/usd/libs/README.md +27 -0
  540. package/dist/usd/libs/THREE-LICENSE +21 -0
  541. package/dist/usd/libs/usdc-parser.d.ts +78 -0
  542. package/dist/usd/libs/usdc-parser.d.ts.map +1 -0
  543. package/dist/usd/libs/usdc-parser.js +1669 -0
  544. package/dist/usd/libs/usdc-parser.js.map +1 -0
  545. package/dist/usd/usd-loader-types.cjs +5 -5
  546. package/dist/usd/usd-loader-types.cjs.map +2 -2
  547. package/dist/usd/usd-loader-types.d.ts +7 -7
  548. package/dist/usd/usd-loader-types.d.ts.map +1 -1
  549. package/dist/usd/usd-loader-types.js +7 -7
  550. package/dist/usd/usd-loader-types.js.map +1 -1
  551. package/dist/usd/usd-loader.cjs.map +1 -1
  552. package/dist/usd/usd-loader.d.ts +4 -4
  553. package/dist/usd/usd-loader.d.ts.map +1 -1
  554. package/dist/usd/usd-loader.js +2 -2
  555. package/dist/usd/usd-loader.js.map +1 -1
  556. package/dist/usd-loader-types.cjs +69 -0
  557. package/dist/usd-loader-types.cjs.map +7 -0
  558. package/dist/usd-loader-types.d.ts +2 -0
  559. package/dist/usd-loader-types.d.ts.map +1 -0
  560. package/dist/usd-loader-types.js +2 -0
  561. package/dist/usd-loader-types.js.map +1 -0
  562. package/dist/usd-loader.cjs +43 -0
  563. package/dist/usd-loader.cjs.map +7 -0
  564. package/dist/usd-loader.d.ts +2 -0
  565. package/dist/usd-loader.d.ts.map +1 -0
  566. package/dist/usd-loader.js +2 -0
  567. package/dist/usd-loader.js.map +1 -0
  568. package/package.json +144 -72
  569. package/src/draco/bundled.ts +9 -0
  570. package/src/draco/draco-format.ts +20 -0
  571. package/src/draco/draco-javascript-loader-with-parser.ts +30 -0
  572. package/src/draco/draco-libraries.ts +35 -0
  573. package/src/draco/draco-library-options.ts +76 -0
  574. package/src/draco/draco-loader-options.ts +33 -0
  575. package/src/draco/draco-loader-types.ts +77 -0
  576. package/src/draco/draco-loader.ts +45 -0
  577. package/src/draco/draco-wasm-loader-with-parser.ts +31 -0
  578. package/src/draco/draco-writer.ts +254 -0
  579. package/src/draco/draco3d/draco3d-types.ts +498 -0
  580. package/src/draco/draco3d-loader-with-parser.ts +34 -0
  581. package/src/draco/index.ts +42 -0
  582. package/src/draco/lib/draco-builder.ts +935 -0
  583. package/src/draco/lib/draco-library-loader.ts +38 -0
  584. package/src/draco/lib/draco-module-loader.ts +370 -0
  585. package/src/draco/lib/draco-parser.ts +779 -0
  586. package/src/draco/lib/draco-types.ts +72 -0
  587. package/src/draco/lib/parse-draco.ts +52 -0
  588. package/src/draco/lib/utils/get-draco-schema.ts +65 -0
  589. package/src/draco/lib/utils/version.ts +8 -0
  590. package/src/draco/libs/DRACO-LICENSE +252 -0
  591. package/src/draco/libs/README.md +20 -0
  592. package/src/draco/libs/draco_decoder.js +34 -0
  593. package/src/draco/libs/draco_decoder.wasm +0 -0
  594. package/src/draco/libs/draco_decoder_gltf.wasm +0 -0
  595. package/src/draco/libs/draco_encoder.js +98 -0
  596. package/src/draco/libs/draco_encoder.wasm +0 -0
  597. package/src/draco/libs/draco_wasm_wrapper.js +117 -0
  598. package/src/draco/libs/draco_wasm_wrapper_gltf.js +116 -0
  599. package/src/draco/unbundled.ts +6 -0
  600. package/src/draco/workers/draco-worker-node.ts +10 -0
  601. package/src/draco/workers/draco-worker.ts +8 -0
  602. package/src/draco/workers/draco-writer-worker-node.cjs +21 -0
  603. package/src/draco/workers/draco-writer-worker-node.ts +13 -0
  604. package/src/draco/workers/draco-writer-worker.ts +11 -0
  605. package/src/draco-javascript-loader.ts +2 -0
  606. package/src/draco-library-options.ts +6 -0
  607. package/src/draco-loader-types.ts +2 -0
  608. package/src/draco-loader.ts +2 -0
  609. package/src/draco-wasm-loader.ts +2 -0
  610. package/src/draco-writer.ts +2 -0
  611. package/src/draco3d-loader.ts +2 -0
  612. package/src/glb-loader-types.ts +1 -0
  613. package/src/glb-loader.ts +1 -0
  614. package/src/glb-writer.ts +1 -0
  615. package/src/gltf/glb-loader-types.ts +1 -1
  616. package/src/gltf/gltf-loader-types.ts +11 -5
  617. package/src/gltf/gltf-loader.ts +4 -4
  618. package/src/gltf/index.ts +4 -1
  619. package/src/gltf/lib/api/gltf-extensions.ts +7 -2
  620. package/src/gltf/lib/encoders/encode-gltf-draco.ts +2 -2
  621. package/src/gltf/lib/extensions/EXT_texture_webp.ts +3 -0
  622. package/src/gltf/lib/extensions/KHR_accessor_float64.ts +22 -0
  623. package/src/gltf/lib/extensions/KHR_draco_mesh_compression.ts +2 -1
  624. package/src/gltf/lib/extensions/KHR_gaussian_splatting.ts +31 -7
  625. package/src/gltf/lib/extensions/MSFT_texture_dds.ts +52 -0
  626. package/src/gltf/lib/extensions/utils/3d-tiles-utils.ts +5 -1
  627. package/src/gltf/lib/parsers/parse-gltf.ts +38 -6
  628. package/src/gltf/lib/types/gltf-additional-extension-schemas.ts +32 -0
  629. package/src/gltf/lib/types/gltf-ext-gaussian-splatting-schema.ts +1 -1
  630. package/src/gltf/lib/types/gltf-extension-schemas.ts +12 -0
  631. package/src/gltf/lib/types/gltf-json-schema.ts +2 -1
  632. package/src/gltf/lib/types/gltf-texture-procedurals.ts +67 -0
  633. package/src/gltf/lib/types/gltf-types.ts +8 -0
  634. package/src/gltf/lib/types/gltf-zod-schema.ts +7 -1
  635. package/src/gltf/schema.ts +1 -0
  636. package/src/gltf-loader-types.ts +1 -0
  637. package/src/gltf-loader.ts +1 -0
  638. package/src/gltf-source.ts +1 -0
  639. package/src/gltf-writer.ts +1 -0
  640. package/src/index.ts +13 -3
  641. package/src/materialx/README.md +5 -0
  642. package/src/materialx/parse-materialx.ts +70 -0
  643. package/src/materialx/procedural-graph.ts +94 -0
  644. package/src/materialx-loader-types.ts +24 -0
  645. package/src/materialx-loader.ts +15 -0
  646. package/src/mtl-loader-types.ts +1 -0
  647. package/src/mtl-loader.ts +1 -0
  648. package/src/obj/bundled.ts +1 -4
  649. package/src/obj/index.ts +0 -6
  650. package/src/obj/mtl-loader-types.ts +1 -4
  651. package/src/obj/mtl-loader.ts +1 -1
  652. package/src/obj/obj-loader-types.ts +11 -11
  653. package/src/obj/obj-loader.ts +87 -37
  654. package/src/obj/obj-writer.ts +12 -8
  655. package/src/obj/unbundled.ts +2 -2
  656. package/src/obj/workers/obj-worker.ts +6 -6
  657. package/src/obj-loader-types.ts +1 -0
  658. package/src/obj-loader.ts +1 -0
  659. package/src/obj-writer.ts +1 -0
  660. package/src/stl/parse-stl.ts +90 -0
  661. package/src/stl-loader-types.ts +28 -0
  662. package/src/stl-loader.ts +12 -0
  663. package/src/usd/index.ts +1 -0
  664. package/src/usd/lib/parse-usd.ts +68 -7
  665. package/src/usd/lib/parse-usdc.ts +188 -0
  666. package/src/usd/lib/parse-usdz.ts +28 -0
  667. package/src/usd/lib/usd-types.ts +16 -2
  668. package/src/usd/libs/README.md +27 -0
  669. package/src/usd/libs/THREE-LICENSE +21 -0
  670. package/src/usd/libs/usdc-parser.d.ts +18 -0
  671. package/src/usd/libs/usdc-parser.js +1669 -0
  672. package/src/usd/usd-loader-types.ts +6 -6
  673. package/src/usd/usd-loader.ts +2 -2
  674. package/src/usd-loader-types.ts +1 -0
  675. package/src/usd-loader.ts +1 -0
@@ -20,47 +20,36 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/obj/obj-loader.ts
21
21
  var obj_loader_exports = {};
22
22
  __export(obj_loader_exports, {
23
+ OBJColumnLoader: () => OBJColumnLoader,
23
24
  OBJLoaderWithParser: () => OBJLoaderWithParser
24
25
  });
25
26
  module.exports = __toCommonJS(obj_loader_exports);
26
- var import_loader_utils = require("@loaders.gl/core/loader-utils");
27
- var import_arrow_transport = require("@loaders.gl/core/schema-utils/arrow-transport");
28
27
  var import_schema_utils = require("@loaders.gl/core/schema-utils");
28
+ var import_loader_utils = require("@loaders.gl/core/loader-utils");
29
+ var import_arrow_worker_transport = require("@loaders.gl/core/arrow-worker-transport");
30
+ var import_schema_utils2 = require("@loaders.gl/core/schema-utils");
29
31
  var import_get_obj_schema = require("./lib/get-obj-schema.cjs");
30
32
  var import_parse_obj = require("./lib/parse-obj.cjs");
31
33
  var import_obj_loader_types = require("./obj-loader-types.cjs");
32
34
  var { preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload } = import_obj_loader_types.OBJLoader;
33
35
  function convertOBJMesh(mesh, options) {
34
- const table = (0, import_schema_utils.convertMeshToTable)(mesh, "arrow-table");
35
- return options?.obj?.shape === "mesh" ? (0, import_schema_utils.convertTableToMesh)(table) : table;
36
+ const table = (0, import_schema_utils2.convertMeshToArrowTableWrapper)(mesh);
37
+ return options?.obj?.shape === "mesh" ? (0, import_schema_utils2.convertTableToMesh)(table) : table;
36
38
  }
37
- var OBJLoaderWithParser = {
39
+ var OBJColumnLoader = {
38
40
  ...OBJLoaderMetadataWithoutPreload,
41
+ dataType: null,
42
+ batchType: null,
39
43
  parse: async (arrayBuffer, options) => convertOBJMesh((0, import_parse_obj.parseOBJ)(new TextDecoder().decode(arrayBuffer), options), options),
40
44
  parseTextSync: (text, options) => convertOBJMesh((0, import_parse_obj.parseOBJ)(text, options), options),
41
- parseInBatches: async function* (arrayBuffer, options) {
42
- const batchSize = getNumericBatchSize(options);
43
- if (options?.obj?.pointCloud) {
44
- const textIterator = (0, import_loader_utils.makeTextDecoderIterator)(arrayBuffer);
45
- const lineIterator = (0, import_loader_utils.makeLineIterator)(textIterator);
46
- yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);
47
- return;
48
- }
49
- const data = await (0, import_loader_utils.concatenateArrayBuffersAsync)(arrayBuffer);
50
- const text = new TextDecoder().decode(data);
51
- if (hasOBJGeometryRecords(text)) {
52
- yield makeOBJBatch((0, import_parse_obj.parseOBJ)(text, options), options);
53
- return;
54
- }
55
- yield* parseOBJPointCloudInBatches(text, options, batchSize);
56
- },
57
- serializeWorkerResult: import_arrow_transport.serializeArrowWorkerTable,
45
+ parseInBatches: (input, options) => (0, import_schema_utils.refineArrowTableBatches)(parseOBJWithMetadataInBatches(input, options)),
46
+ serializeWorkerResult: import_arrow_worker_transport.serializeArrowWorkerTable,
58
47
  deserializeWorkerResult: deserializeOBJWorkerResult,
59
- serializeWorkerBatch: import_arrow_transport.serializeArrowWorkerTable,
48
+ serializeWorkerBatch: import_arrow_worker_transport.serializeArrowWorkerTable,
60
49
  deserializeWorkerBatch: deserializeOBJWorkerBatch
61
50
  };
62
51
  function getNumericBatchSize(options) {
63
- const batchSize = options?.batchSize ?? options?.core?.batchSize;
52
+ const batchSize = options?.core?.batchSize;
64
53
  return typeof batchSize === "number" ? batchSize : void 0;
65
54
  }
66
55
  function hasOBJGeometryRecords(text) {
@@ -113,7 +102,7 @@ function parseOBJPointCloudMesh(vertexLines) {
113
102
  size: 3
114
103
  }
115
104
  };
116
- const boundingBox = (0, import_schema_utils.getMeshBoundingBox)(attributes);
105
+ const boundingBox = (0, import_schema_utils2.getMeshBoundingBox)(attributes);
117
106
  return {
118
107
  loaderData: {
119
108
  header: {}
@@ -132,9 +121,9 @@ function parseOBJPointCloudMesh(vertexLines) {
132
121
  };
133
122
  }
134
123
  function makeOBJBatch(mesh, options) {
135
- const table = (0, import_schema_utils.convertMeshToTable)(mesh, "arrow-table");
124
+ const table = (0, import_schema_utils2.convertMeshToArrowTableWrapper)(mesh);
136
125
  if (options?.obj?.shape === "mesh") {
137
- const convertedMesh = (0, import_schema_utils.convertTableToMesh)(table);
126
+ const convertedMesh = (0, import_schema_utils2.convertTableToMesh)(table);
138
127
  return {
139
128
  shape: "mesh",
140
129
  batchType: "data",
@@ -145,17 +134,60 @@ function makeOBJBatch(mesh, options) {
145
134
  return (0, import_loader_utils.makeTableScanBatch)(table);
146
135
  }
147
136
  function deserializeOBJWorkerResult(result, options) {
148
- const table = (0, import_arrow_transport.deserializeArrowWorkerTable)(result);
149
- return options?.obj?.shape === "mesh" ? (0, import_schema_utils.convertTableToMesh)(table) : table;
137
+ const table = (0, import_arrow_worker_transport.deserializeArrowWorkerTable)(result);
138
+ return options?.obj?.shape === "mesh" ? (0, import_schema_utils2.convertTableToMesh)(table) : table;
150
139
  }
151
140
  function deserializeOBJWorkerBatch(result, options) {
152
- const table = (0, import_arrow_transport.deserializeArrowWorkerTable)(result);
141
+ const table = (0, import_arrow_worker_transport.deserializeArrowWorkerTable)(result);
153
142
  if (options?.obj?.shape !== "mesh") return table;
154
- const mesh = (0, import_schema_utils.convertTableToMesh)(table);
143
+ const mesh = (0, import_schema_utils2.convertTableToMesh)(table);
155
144
  return { shape: "mesh", batchType: "data", data: mesh, length: table.length };
156
145
  }
146
+ async function* parseOBJWithMetadataInBatches(arrayBuffer, options) {
147
+ const batchSize = getNumericBatchSize(options);
148
+ if (options?.obj?.pointCloud) {
149
+ const textIterator = (0, import_loader_utils.makeTextDecoderIterator)(arrayBuffer);
150
+ const lineIterator = (0, import_loader_utils.makeLineIterator)(textIterator);
151
+ yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);
152
+ return;
153
+ }
154
+ const data = await (0, import_loader_utils.concatenateArrayBuffersAsync)(arrayBuffer);
155
+ const text = new TextDecoder().decode(data);
156
+ if (hasOBJGeometryRecords(text)) {
157
+ yield makeOBJBatch((0, import_parse_obj.parseOBJ)(text, options), options);
158
+ return;
159
+ }
160
+ yield* parseOBJPointCloudInBatches(text, options, batchSize);
161
+ }
162
+ var OBJLoaderWithParser = {
163
+ ...OBJColumnLoader,
164
+ dataType: import_obj_loader_types.OBJLoader.dataType,
165
+ batchType: import_obj_loader_types.OBJLoader.batchType,
166
+ parse: async (input, options) => unwrapOBJTable(await OBJColumnLoader.parse(input, options)),
167
+ parseTextSync: (input, options) => unwrapOBJTable(OBJColumnLoader.parseTextSync(input, options)),
168
+ async *parseInBatches(input, options) {
169
+ for await (const batch of OBJColumnLoader.parseInBatches(input, options)) {
170
+ if ("shape" in batch && batch.shape === "arrow-table") {
171
+ if (batch.data.batches.length) yield* batch.data.batches;
172
+ else yield (0, import_schema_utils.makeArrowMetadataBatch)(batch.data.schema);
173
+ } else yield batch;
174
+ }
175
+ },
176
+ deserializeWorkerResult: (result, options) => unwrapOBJTable(OBJColumnLoader.deserializeWorkerResult(result, options)),
177
+ deserializeWorkerBatch(result, options) {
178
+ const batch = OBJColumnLoader.deserializeWorkerBatch(result, options);
179
+ return "shape" in batch && batch.shape === "arrow-table" ? batch.data.batches[0] ?? (0, import_schema_utils.makeArrowMetadataBatch)(batch.data.schema) : batch;
180
+ }
181
+ };
182
+ function unwrapOBJTable(result) {
183
+ if ("shape" in result && result.shape === "arrow-table") {
184
+ return result.data;
185
+ }
186
+ return result;
187
+ }
157
188
  // Annotate the CommonJS export names for ESM import in node:
158
189
  0 && (module.exports = {
190
+ OBJColumnLoader,
159
191
  OBJLoaderWithParser
160
192
  });
161
193
  //# sourceMappingURL=obj-loader.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/obj/obj-loader.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {OBJLoaderOptions, OBJParsedBatch} from './obj-loader-types';\n\nimport {\n concatenateArrayBuffersAsync,\n makeLineIterator,\n makeTextDecoderIterator,\n makeTableScanBatch,\n type LoaderWithParser\n} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/schema-utils/arrow-transport';\nimport {\n convertMeshToTable,\n convertTableToMesh,\n getMeshBoundingBox\n} from '@loaders.gl/core/schema-utils';\nimport {getOBJSchema} from './lib/get-obj-schema';\nimport {parseOBJ} from './lib/parse-obj';\nimport {OBJLoader as OBJLoaderMetadata} from './obj-loader-types';\n\nconst {preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload} = OBJLoaderMetadata;\n\nfunction convertOBJMesh(mesh: Mesh, options?: OBJLoaderOptions): Mesh | MeshArrowTable {\n const table = convertMeshToTable(mesh, 'arrow-table');\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n// OBJLoaderWithParser\n\n/**\n * Loader for the OBJ geometry format\n */\nexport const OBJLoaderWithParser = {\n ...OBJLoaderMetadataWithoutPreload,\n parse: async (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(new TextDecoder().decode(arrayBuffer), options), options),\n parseTextSync: (text: string, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(text, options), options),\n parseInBatches: async function* (\n arrayBuffer:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options\n ): AsyncIterable<OBJParsedBatch> {\n const batchSize = getNumericBatchSize(options);\n if (options?.obj?.pointCloud) {\n const textIterator = makeTextDecoderIterator(arrayBuffer as AsyncIterable<ArrayBuffer>);\n const lineIterator = makeLineIterator(textIterator);\n yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);\n return;\n }\n\n const data = await concatenateArrayBuffersAsync(arrayBuffer);\n const text = new TextDecoder().decode(data);\n if (hasOBJGeometryRecords(text)) {\n yield makeOBJBatch(parseOBJ(text, options), options);\n return;\n }\n\n yield* parseOBJPointCloudInBatches(text, options, batchSize);\n },\n serializeWorkerResult: serializeArrowWorkerTable,\n deserializeWorkerResult: deserializeOBJWorkerResult,\n serializeWorkerBatch: serializeArrowWorkerTable,\n deserializeWorkerBatch: deserializeOBJWorkerBatch\n} as const satisfies LoaderWithParser<Mesh | MeshArrowTable, OBJParsedBatch, OBJLoaderOptions>;\n\n/** Returns a numeric batch size when batching has an explicit row count. */\nfunction getNumericBatchSize(options?: OBJLoaderOptions): number | undefined {\n const batchSize = options?.batchSize ?? options?.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : undefined;\n}\n\nfunction hasOBJGeometryRecords(text: string): boolean {\n return text.split(/\\r?\\n/).some(line => {\n const trimmedLine = line.trimStart();\n return trimmedLine.startsWith('f ') || trimmedLine.startsWith('l ');\n });\n}\n\nfunction* parseOBJPointCloudInBatches(\n text: string,\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJParsedBatch> {\n const vertexLines = text.split(/\\r?\\n/).filter(line => line.trimStart().startsWith('v '));\n yield* makeOBJPointCloudBatches(vertexLines, options, batchSize);\n}\n\nasync function* parseOBJPointCloudLinesInBatches(\n lines: AsyncIterable<string>,\n options?: OBJLoaderOptions,\n batchSize?: number\n): AsyncIterable<OBJParsedBatch> {\n const normalizedBatchSize = batchSize || 1000;\n let vertexLines: string[] = [];\n\n for await (const line of lines) {\n if (!line.trimStart().startsWith('v ')) {\n continue;\n }\n vertexLines.push(line);\n if (vertexLines.length >= normalizedBatchSize) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n vertexLines = [];\n }\n }\n\n if (vertexLines.length > 0) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n }\n}\n\nfunction* makeOBJPointCloudBatches(\n vertexLines: string[],\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJParsedBatch> {\n const normalizedBatchSize = batchSize || vertexLines.length || 1;\n\n for (let rowIndex = 0; rowIndex < vertexLines.length; rowIndex += normalizedBatchSize) {\n const mesh = parseOBJPointCloudMesh(\n vertexLines.slice(rowIndex, rowIndex + normalizedBatchSize)\n );\n yield makeOBJBatch(mesh, options);\n }\n}\n\n/** Builds a point-list mesh directly from OBJ `v` records. */\nfunction parseOBJPointCloudMesh(vertexLines: string[]): Mesh {\n const positions = new Float32Array(vertexLines.length * 3);\n\n for (let vertexIndex = 0; vertexIndex < vertexLines.length; vertexIndex++) {\n const values = vertexLines[vertexIndex].trim().split(/\\s+/);\n positions[vertexIndex * 3 + 0] = Number(values[1]);\n positions[vertexIndex * 3 + 1] = Number(values[2]);\n positions[vertexIndex * 3 + 2] = Number(values[3]);\n }\n\n const attributes = {\n POSITION: {\n value: positions,\n size: 3\n }\n };\n const boundingBox = getMeshBoundingBox(attributes);\n\n return {\n loaderData: {\n header: {}\n },\n schema: getOBJSchema(attributes, {\n mode: 0,\n boundingBox: boundingBox ?? undefined\n }),\n header: {\n vertexCount: vertexLines.length,\n boundingBox: boundingBox ?? undefined\n },\n mode: 0,\n topology: 'point-list',\n attributes\n };\n}\n\nfunction makeOBJBatch(mesh: Mesh, options?: OBJLoaderOptions): OBJParsedBatch {\n const table = convertMeshToTable(mesh, 'arrow-table');\n if (options?.obj?.shape === 'mesh') {\n const convertedMesh = convertTableToMesh(table);\n return {\n shape: 'mesh',\n batchType: 'data',\n data: convertedMesh,\n length: convertedMesh.header?.vertexCount || 0\n };\n }\n\n return makeTableScanBatch(table);\n}\n\n/** Hydrates worker columns before applying the requested legacy mesh shape on the caller. */\nfunction deserializeOBJWorkerResult(\n result: unknown,\n options?: OBJLoaderOptions\n): Mesh | MeshArrowTable {\n const table = deserializeArrowWorkerTable(result);\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n/** Restores the OBJ mesh batch envelope after caller-side conversion. */\nfunction deserializeOBJWorkerBatch(result: unknown, options?: OBJLoaderOptions): OBJParsedBatch {\n const table = deserializeArrowWorkerTable(result);\n if (options?.obj?.shape !== 'mesh') return table;\n const mesh = convertTableToMesh(table);\n return {shape: 'mesh', batchType: 'data', data: mesh, length: table.length};\n}\n"],
5
- "mappings": "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",
6
- "names": ["OBJLoaderMetadata"]
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {refineArrowTableBatches, makeArrowMetadataBatch} from '@loaders.gl/core/schema-utils';\nimport type {Table} from 'apache-arrow';\nimport type {OBJLoaderOptions, OBJMeshBatch, OBJParsedBatch} from './obj-loader-types';\n\nimport {\n concatenateArrayBuffersAsync,\n makeLineIterator,\n makeTextDecoderIterator,\n makeTableScanBatch,\n type LoaderWithParser\n} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, ArrowTableBatch} from '@loaders.gl/core/schema';\nimport {\n deserializeArrowWorkerTable,\n serializeArrowWorkerTable\n} from '@loaders.gl/core/arrow-worker-transport';\nimport {\n convertMeshToArrowTableWrapper,\n convertTableToMesh,\n getMeshBoundingBox\n} from '@loaders.gl/core/schema-utils';\nimport {getOBJSchema} from './lib/get-obj-schema';\nimport {parseOBJ} from './lib/parse-obj';\nimport {OBJLoader as OBJLoaderMetadata} from './obj-loader-types';\n\nconst {preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload} = OBJLoaderMetadata;\n\nfunction convertOBJMesh(mesh: Mesh, options?: OBJLoaderOptions): Mesh | MeshArrowTable {\n const table = convertMeshToArrowTableWrapper(mesh);\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n// OBJLoaderWithParser\n\n/**\n * Loader for the OBJ geometry format\n */\nexport const OBJColumnLoader = {\n ...OBJLoaderMetadataWithoutPreload,\n dataType: null as unknown as Mesh | MeshArrowTable,\n batchType: null as unknown as OBJMeshBatch | ArrowTableBatch,\n parse: async (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(new TextDecoder().decode(arrayBuffer), options), options),\n parseTextSync: (text: string, options?: OBJLoaderOptions) =>\n convertOBJMesh(parseOBJ(text, options), options),\n parseInBatches: (input, options) =>\n refineArrowTableBatches(parseOBJWithMetadataInBatches(input, options)),\n serializeWorkerResult: serializeArrowWorkerTable,\n deserializeWorkerResult: deserializeOBJWorkerResult,\n serializeWorkerBatch: serializeArrowWorkerTable,\n deserializeWorkerBatch: deserializeOBJWorkerBatch\n} as const satisfies LoaderWithParser<\n Mesh | MeshArrowTable,\n OBJMeshBatch | ArrowTableBatch,\n OBJLoaderOptions\n>;\n\n/** Returns a numeric batch size when batching has an explicit row count. */\nfunction getNumericBatchSize(options?: OBJLoaderOptions): number | undefined {\n const batchSize = options?.core?.batchSize;\n return typeof batchSize === 'number' ? batchSize : undefined;\n}\n\nfunction hasOBJGeometryRecords(text: string): boolean {\n return text.split(/\\r?\\n/).some(line => {\n const trimmedLine = line.trimStart();\n return trimmedLine.startsWith('f ') || trimmedLine.startsWith('l ');\n });\n}\n\nfunction* parseOBJPointCloudInBatches(\n text: string,\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJMeshBatch | ArrowTableBatch> {\n const vertexLines = text.split(/\\r?\\n/).filter(line => line.trimStart().startsWith('v '));\n yield* makeOBJPointCloudBatches(vertexLines, options, batchSize);\n}\n\nasync function* parseOBJPointCloudLinesInBatches(\n lines: AsyncIterable<string>,\n options?: OBJLoaderOptions,\n batchSize?: number\n): AsyncIterable<OBJMeshBatch | ArrowTableBatch> {\n const normalizedBatchSize = batchSize || 1000;\n let vertexLines: string[] = [];\n\n for await (const line of lines) {\n if (!line.trimStart().startsWith('v ')) {\n continue;\n }\n vertexLines.push(line);\n if (vertexLines.length >= normalizedBatchSize) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n vertexLines = [];\n }\n }\n\n if (vertexLines.length > 0) {\n yield makeOBJBatch(parseOBJPointCloudMesh(vertexLines), options);\n }\n}\n\nfunction* makeOBJPointCloudBatches(\n vertexLines: string[],\n options?: OBJLoaderOptions,\n batchSize?: number\n): Iterable<OBJMeshBatch | ArrowTableBatch> {\n const normalizedBatchSize = batchSize || vertexLines.length || 1;\n\n for (let rowIndex = 0; rowIndex < vertexLines.length; rowIndex += normalizedBatchSize) {\n const mesh = parseOBJPointCloudMesh(\n vertexLines.slice(rowIndex, rowIndex + normalizedBatchSize)\n );\n yield makeOBJBatch(mesh, options);\n }\n}\n\n/** Builds a point-list mesh directly from OBJ `v` records. */\nfunction parseOBJPointCloudMesh(vertexLines: string[]): Mesh {\n const positions = new Float32Array(vertexLines.length * 3);\n\n for (let vertexIndex = 0; vertexIndex < vertexLines.length; vertexIndex++) {\n const values = vertexLines[vertexIndex].trim().split(/\\s+/);\n positions[vertexIndex * 3 + 0] = Number(values[1]);\n positions[vertexIndex * 3 + 1] = Number(values[2]);\n positions[vertexIndex * 3 + 2] = Number(values[3]);\n }\n\n const attributes = {\n POSITION: {\n value: positions,\n size: 3\n }\n };\n const boundingBox = getMeshBoundingBox(attributes);\n\n return {\n loaderData: {\n header: {}\n },\n schema: getOBJSchema(attributes, {\n mode: 0,\n boundingBox: boundingBox ?? undefined\n }),\n header: {\n vertexCount: vertexLines.length,\n boundingBox: boundingBox ?? undefined\n },\n mode: 0,\n topology: 'point-list',\n attributes\n };\n}\n\nfunction makeOBJBatch(mesh: Mesh, options?: OBJLoaderOptions): OBJMeshBatch | ArrowTableBatch {\n const table = convertMeshToArrowTableWrapper(mesh);\n if (options?.obj?.shape === 'mesh') {\n const convertedMesh = convertTableToMesh(table);\n return {\n shape: 'mesh',\n batchType: 'data',\n data: convertedMesh,\n length: convertedMesh.header?.vertexCount || 0\n };\n }\n\n return makeTableScanBatch(table);\n}\n\n/** Hydrates worker columns before applying the requested legacy mesh shape on the caller. */\nfunction deserializeOBJWorkerResult(\n result: unknown,\n options?: OBJLoaderOptions\n): Mesh | MeshArrowTable {\n const table = deserializeArrowWorkerTable(result);\n return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;\n}\n\n/** Restores the OBJ mesh batch envelope after caller-side conversion. */\nfunction deserializeOBJWorkerBatch(\n result: unknown,\n options?: OBJLoaderOptions\n): OBJMeshBatch | ArrowTableBatch {\n const table = deserializeArrowWorkerTable(result);\n if (options?.obj?.shape !== 'mesh') return table;\n const mesh = convertTableToMesh(table);\n return {shape: 'mesh', batchType: 'data', data: mesh, length: table.length};\n}\n\n/** Parses OBJ batches before shared cumulative metadata refinement. */\nasync function* parseOBJWithMetadataInBatches(\n arrayBuffer:\n | AsyncIterable<ArrayBufferLike | ArrayBufferView>\n | Iterable<ArrayBufferLike | ArrayBufferView>,\n options?: OBJLoaderOptions\n): AsyncIterable<OBJMeshBatch | ArrowTableBatch> {\n const batchSize = getNumericBatchSize(options);\n if (options?.obj?.pointCloud) {\n const textIterator = makeTextDecoderIterator(arrayBuffer as AsyncIterable<ArrayBuffer>);\n const lineIterator = makeLineIterator(textIterator);\n yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);\n return;\n }\n\n const data = await concatenateArrayBuffersAsync(arrayBuffer);\n const text = new TextDecoder().decode(data);\n if (hasOBJGeometryRecords(text)) {\n yield makeOBJBatch(parseOBJ(text, options), options);\n return;\n }\n\n yield* parseOBJPointCloudInBatches(text, options, batchSize);\n}\n\n/** Exposes native Arrow output while retaining the worker's column protocol. */\nexport const OBJLoaderWithParser = {\n ...OBJColumnLoader,\n dataType: OBJLoaderMetadata.dataType,\n batchType: OBJLoaderMetadata.batchType,\n parse: async (input: ArrayBuffer, options?: OBJLoaderOptions) =>\n unwrapOBJTable(await OBJColumnLoader.parse(input, options)),\n parseTextSync: (input: string, options?: OBJLoaderOptions) =>\n unwrapOBJTable(OBJColumnLoader.parseTextSync(input, options)),\n async *parseInBatches(input, options) {\n for await (const batch of OBJColumnLoader.parseInBatches(input, options)) {\n if ('shape' in batch && batch.shape === 'arrow-table') {\n if (batch.data.batches.length) yield* batch.data.batches;\n else yield makeArrowMetadataBatch(batch.data.schema);\n } else yield batch;\n }\n },\n deserializeWorkerResult: (result: unknown, options?: OBJLoaderOptions) =>\n unwrapOBJTable(OBJColumnLoader.deserializeWorkerResult(result, options)),\n deserializeWorkerBatch(result: unknown, options?: OBJLoaderOptions) {\n const batch = OBJColumnLoader.deserializeWorkerBatch(result, options);\n return 'shape' in batch && batch.shape === 'arrow-table'\n ? (batch.data.batches[0] ?? makeArrowMetadataBatch(batch.data.schema))\n : batch;\n }\n} as const satisfies LoaderWithParser<Mesh | Table, OBJParsedBatch, OBJLoaderOptions>;\n\n/** Returns the Arrow table with its file metadata or the requested mesh. */\nfunction unwrapOBJTable(result: Mesh | MeshArrowTable): Mesh | Table {\n if ('shape' in result && result.shape === 'arrow-table') {\n return result.data;\n }\n return result as Mesh;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_schema_utils", "OBJLoaderMetadata"]
7
7
  }
@@ -1,19 +1,20 @@
1
- import type { OBJLoaderOptions, OBJParsedBatch } from "./obj-loader-types.js";
2
- import type { Mesh, MeshArrowTable } from '@loaders.gl/core/schema';
3
- import { serializeArrowWorkerTable } from '@loaders.gl/core/schema-utils/arrow-transport';
1
+ import type { Table } from 'apache-arrow';
2
+ import type { OBJLoaderOptions, OBJMeshBatch, OBJParsedBatch } from "./obj-loader-types.js";
3
+ import type { Mesh, MeshArrowTable, ArrowTableBatch } from '@loaders.gl/core/schema';
4
+ import { serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
4
5
  /**
5
6
  * Loader for the OBJ geometry format
6
7
  */
7
- export declare const OBJLoaderWithParser: {
8
+ export declare const OBJColumnLoader: {
9
+ readonly dataType: Mesh | MeshArrowTable;
10
+ readonly batchType: OBJMeshBatch | ArrowTableBatch;
8
11
  readonly parse: (arrayBuffer: ArrayBuffer, options?: OBJLoaderOptions) => Promise<Mesh | MeshArrowTable>;
9
12
  readonly parseTextSync: (text: string, options?: OBJLoaderOptions) => Mesh | MeshArrowTable;
10
- readonly parseInBatches: (arrayBuffer: AsyncIterable<ArrayBufferLike | ArrayBufferView> | Iterable<ArrayBufferLike | ArrayBufferView>, options: OBJLoaderOptions | undefined) => AsyncIterable<OBJParsedBatch>;
13
+ readonly parseInBatches: (input: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options: OBJLoaderOptions | undefined) => AsyncIterable<OBJMeshBatch | ArrowTableBatch>;
11
14
  readonly serializeWorkerResult: typeof serializeArrowWorkerTable;
12
15
  readonly deserializeWorkerResult: typeof deserializeOBJWorkerResult;
13
16
  readonly serializeWorkerBatch: typeof serializeArrowWorkerTable;
14
17
  readonly deserializeWorkerBatch: typeof deserializeOBJWorkerBatch;
15
- readonly dataType: Mesh | MeshArrowTable;
16
- readonly batchType: OBJParsedBatch;
17
18
  readonly version: any;
18
19
  readonly worker: true;
19
20
  readonly workerInBatches: true;
@@ -21,7 +22,7 @@ export declare const OBJLoaderWithParser: {
21
22
  readonly testText: (text: string) => boolean;
22
23
  readonly options: {
23
24
  readonly obj: {
24
- readonly shape: "arrow-table";
25
+ readonly shape: "arrow";
25
26
  };
26
27
  };
27
28
  readonly name: "OBJ";
@@ -31,10 +32,43 @@ export declare const OBJLoaderWithParser: {
31
32
  readonly format: "obj";
32
33
  readonly extensions: ["obj"];
33
34
  readonly mimeTypes: ["text/plain"];
35
+ readonly defaultShape: "arrow";
36
+ readonly supportsNativeArrow: true;
34
37
  };
35
38
  /** Hydrates worker columns before applying the requested legacy mesh shape on the caller. */
36
39
  declare function deserializeOBJWorkerResult(result: unknown, options?: OBJLoaderOptions): Mesh | MeshArrowTable;
37
40
  /** Restores the OBJ mesh batch envelope after caller-side conversion. */
38
- declare function deserializeOBJWorkerBatch(result: unknown, options?: OBJLoaderOptions): OBJParsedBatch;
41
+ declare function deserializeOBJWorkerBatch(result: unknown, options?: OBJLoaderOptions): OBJMeshBatch | ArrowTableBatch;
42
+ /** Exposes native Arrow output while retaining the worker's column protocol. */
43
+ export declare const OBJLoaderWithParser: {
44
+ readonly dataType: Mesh | Table<any>;
45
+ readonly batchType: OBJParsedBatch;
46
+ readonly parse: (input: ArrayBuffer, options?: OBJLoaderOptions) => Promise<Mesh | Table<any>>;
47
+ readonly parseTextSync: (input: string, options?: OBJLoaderOptions) => Mesh | Table<any>;
48
+ readonly parseInBatches: (input: AsyncIterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>> | Iterable<ArrayBufferLike | ArrayBufferView<ArrayBufferLike>>, options: OBJLoaderOptions | undefined) => AsyncGenerator<OBJMeshBatch | import("apache-arrow").RecordBatch<any>, void, unknown>;
49
+ readonly deserializeWorkerResult: (result: unknown, options?: OBJLoaderOptions) => Mesh | Table<any>;
50
+ readonly deserializeWorkerBatch: (result: unknown, options?: OBJLoaderOptions) => OBJMeshBatch | import("apache-arrow").RecordBatch<any>;
51
+ readonly serializeWorkerResult: typeof serializeArrowWorkerTable;
52
+ readonly serializeWorkerBatch: typeof serializeArrowWorkerTable;
53
+ readonly version: any;
54
+ readonly worker: true;
55
+ readonly workerInBatches: true;
56
+ readonly text: true;
57
+ readonly testText: (text: string) => boolean;
58
+ readonly options: {
59
+ readonly obj: {
60
+ readonly shape: "arrow";
61
+ };
62
+ };
63
+ readonly name: "OBJ";
64
+ readonly id: "obj";
65
+ readonly module: "scene";
66
+ readonly encoding: "text";
67
+ readonly format: "obj";
68
+ readonly extensions: ["obj"];
69
+ readonly mimeTypes: ["text/plain"];
70
+ readonly defaultShape: "arrow";
71
+ readonly supportsNativeArrow: true;
72
+ };
39
73
  export {};
40
74
  //# sourceMappingURL=obj-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"obj-loader.d.ts","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,gBAAgB,EAAE,cAAc,EAAC,8BAA2B;AASzE,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAC,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAEL,yBAAyB,EAC1B,MAAM,+CAA+C,CAAC;AAmBvD;;GAEG;AACH,eAAO,MAAM,mBAAmB;kCAEH,WAAW,YAAY,gBAAgB;mCAE5C,MAAM,YAAY,gBAAgB;2CAIlD,aAAa,CAAC,eAAe,GAAG,eAAe,CAAC,GAChD,QAAQ,CAAC,eAAe,GAAG,eAAe,CAAC,4CAE9C,aAAa,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;CAsB4D,CAAC;AAmH/F,6FAA6F;AAC7F,iBAAS,0BAA0B,CACjC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,IAAI,GAAG,cAAc,CAGvB;AAED,yEAAyE;AACzE,iBAAS,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,cAAc,CAK9F"}
1
+ {"version":3,"file":"obj-loader.d.ts","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAC,gBAAgB,EAAE,YAAY,EAAE,cAAc,EAAC,8BAA2B;AASvF,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAE,eAAe,EAAC,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAEL,yBAAyB,EAC1B,MAAM,yCAAyC,CAAC;AAmBjD;;GAEG;AACH,eAAO,MAAM,eAAe;uBAEG,IAAI,GAAG,cAAc;wBACpB,YAAY,GAAG,eAAe;kCACjC,WAAW,YAAY,gBAAgB;mCAE5C,MAAM,YAAY,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;CAYzD,CAAC;AAmHF,6FAA6F;AAC7F,iBAAS,0BAA0B,CACjC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,IAAI,GAAG,cAAc,CAGvB;AAED,yEAAyE;AACzE,iBAAS,yBAAyB,CAChC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,gBAAgB,GACzB,YAAY,GAAG,eAAe,CAKhC;AA2BD,gFAAgF;AAChF,eAAO,MAAM,mBAAmB;;;4BAIT,WAAW,YAAY,gBAAgB;oCAErC,MAAM,YAAY,gBAAgB;;+CAUvB,OAAO,YAAY,gBAAgB;8CAEtC,OAAO,YAAY,gBAAgB;;;;;;;;;;;;;;;;;;;;;;CAMiB,CAAC"}
@@ -1,41 +1,29 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
+ import { refineArrowTableBatches, makeArrowMetadataBatch } from '@loaders.gl/core/schema-utils';
4
5
  import { concatenateArrayBuffersAsync, makeLineIterator, makeTextDecoderIterator, makeTableScanBatch } from '@loaders.gl/core/loader-utils';
5
- import { deserializeArrowWorkerTable, serializeArrowWorkerTable } from '@loaders.gl/core/schema-utils/arrow-transport';
6
- import { convertMeshToTable, convertTableToMesh, getMeshBoundingBox } from '@loaders.gl/core/schema-utils';
6
+ import { deserializeArrowWorkerTable, serializeArrowWorkerTable } from '@loaders.gl/core/arrow-worker-transport';
7
+ import { convertMeshToArrowTableWrapper, convertTableToMesh, getMeshBoundingBox } from '@loaders.gl/core/schema-utils';
7
8
  import { getOBJSchema } from "./lib/get-obj-schema.js";
8
9
  import { parseOBJ } from "./lib/parse-obj.js";
9
10
  import { OBJLoader as OBJLoaderMetadata } from "./obj-loader-types.js";
10
11
  const { preload: _OBJLoaderPreload, ...OBJLoaderMetadataWithoutPreload } = OBJLoaderMetadata;
11
12
  function convertOBJMesh(mesh, options) {
12
- const table = convertMeshToTable(mesh, 'arrow-table');
13
+ const table = convertMeshToArrowTableWrapper(mesh);
13
14
  return options?.obj?.shape === 'mesh' ? convertTableToMesh(table) : table;
14
15
  }
15
16
  // OBJLoaderWithParser
16
17
  /**
17
18
  * Loader for the OBJ geometry format
18
19
  */
19
- export const OBJLoaderWithParser = {
20
+ export const OBJColumnLoader = {
20
21
  ...OBJLoaderMetadataWithoutPreload,
22
+ dataType: null,
23
+ batchType: null,
21
24
  parse: async (arrayBuffer, options) => convertOBJMesh(parseOBJ(new TextDecoder().decode(arrayBuffer), options), options),
22
25
  parseTextSync: (text, options) => convertOBJMesh(parseOBJ(text, options), options),
23
- parseInBatches: async function* (arrayBuffer, options) {
24
- const batchSize = getNumericBatchSize(options);
25
- if (options?.obj?.pointCloud) {
26
- const textIterator = makeTextDecoderIterator(arrayBuffer);
27
- const lineIterator = makeLineIterator(textIterator);
28
- yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);
29
- return;
30
- }
31
- const data = await concatenateArrayBuffersAsync(arrayBuffer);
32
- const text = new TextDecoder().decode(data);
33
- if (hasOBJGeometryRecords(text)) {
34
- yield makeOBJBatch(parseOBJ(text, options), options);
35
- return;
36
- }
37
- yield* parseOBJPointCloudInBatches(text, options, batchSize);
38
- },
26
+ parseInBatches: (input, options) => refineArrowTableBatches(parseOBJWithMetadataInBatches(input, options)),
39
27
  serializeWorkerResult: serializeArrowWorkerTable,
40
28
  deserializeWorkerResult: deserializeOBJWorkerResult,
41
29
  serializeWorkerBatch: serializeArrowWorkerTable,
@@ -43,7 +31,7 @@ export const OBJLoaderWithParser = {
43
31
  };
44
32
  /** Returns a numeric batch size when batching has an explicit row count. */
45
33
  function getNumericBatchSize(options) {
46
- const batchSize = options?.batchSize ?? options?.core?.batchSize;
34
+ const batchSize = options?.core?.batchSize;
47
35
  return typeof batchSize === 'number' ? batchSize : undefined;
48
36
  }
49
37
  function hasOBJGeometryRecords(text) {
@@ -114,7 +102,7 @@ function parseOBJPointCloudMesh(vertexLines) {
114
102
  };
115
103
  }
116
104
  function makeOBJBatch(mesh, options) {
117
- const table = convertMeshToTable(mesh, 'arrow-table');
105
+ const table = convertMeshToArrowTableWrapper(mesh);
118
106
  if (options?.obj?.shape === 'mesh') {
119
107
  const convertedMesh = convertTableToMesh(table);
120
108
  return {
@@ -139,4 +127,55 @@ function deserializeOBJWorkerBatch(result, options) {
139
127
  const mesh = convertTableToMesh(table);
140
128
  return { shape: 'mesh', batchType: 'data', data: mesh, length: table.length };
141
129
  }
130
+ /** Parses OBJ batches before shared cumulative metadata refinement. */
131
+ async function* parseOBJWithMetadataInBatches(arrayBuffer, options) {
132
+ const batchSize = getNumericBatchSize(options);
133
+ if (options?.obj?.pointCloud) {
134
+ const textIterator = makeTextDecoderIterator(arrayBuffer);
135
+ const lineIterator = makeLineIterator(textIterator);
136
+ yield* parseOBJPointCloudLinesInBatches(lineIterator, options, batchSize);
137
+ return;
138
+ }
139
+ const data = await concatenateArrayBuffersAsync(arrayBuffer);
140
+ const text = new TextDecoder().decode(data);
141
+ if (hasOBJGeometryRecords(text)) {
142
+ yield makeOBJBatch(parseOBJ(text, options), options);
143
+ return;
144
+ }
145
+ yield* parseOBJPointCloudInBatches(text, options, batchSize);
146
+ }
147
+ /** Exposes native Arrow output while retaining the worker's column protocol. */
148
+ export const OBJLoaderWithParser = {
149
+ ...OBJColumnLoader,
150
+ dataType: OBJLoaderMetadata.dataType,
151
+ batchType: OBJLoaderMetadata.batchType,
152
+ parse: async (input, options) => unwrapOBJTable(await OBJColumnLoader.parse(input, options)),
153
+ parseTextSync: (input, options) => unwrapOBJTable(OBJColumnLoader.parseTextSync(input, options)),
154
+ async *parseInBatches(input, options) {
155
+ for await (const batch of OBJColumnLoader.parseInBatches(input, options)) {
156
+ if ('shape' in batch && batch.shape === 'arrow-table') {
157
+ if (batch.data.batches.length)
158
+ yield* batch.data.batches;
159
+ else
160
+ yield makeArrowMetadataBatch(batch.data.schema);
161
+ }
162
+ else
163
+ yield batch;
164
+ }
165
+ },
166
+ deserializeWorkerResult: (result, options) => unwrapOBJTable(OBJColumnLoader.deserializeWorkerResult(result, options)),
167
+ deserializeWorkerBatch(result, options) {
168
+ const batch = OBJColumnLoader.deserializeWorkerBatch(result, options);
169
+ return 'shape' in batch && batch.shape === 'arrow-table'
170
+ ? (batch.data.batches[0] ?? makeArrowMetadataBatch(batch.data.schema))
171
+ : batch;
172
+ }
173
+ };
174
+ /** Returns the Arrow table with its file metadata or the requested mesh. */
175
+ function unwrapOBJTable(result) {
176
+ if ('shape' in result && result.shape === 'arrow-table') {
177
+ return result.data;
178
+ }
179
+ return result;
180
+ }
142
181
  //# sourceMappingURL=obj-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"obj-loader.js","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"obj-loader.js","sourceRoot":"","sources":["../../src/obj/obj-loader.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,+BAA+B;AAC/B,oCAAoC;AAEpC,OAAO,EAAC,uBAAuB,EAAE,sBAAsB,EAAC,MAAM,+BAA+B,CAAC;AAI9F,OAAO,EACL,4BAA4B,EAC5B,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAEnB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EAC1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,8BAA8B,EAC9B,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAC,YAAY,EAAC,gCAA6B;AAClD,OAAO,EAAC,QAAQ,EAAC,2BAAwB;AACzC,OAAO,EAAC,SAAS,IAAI,iBAAiB,EAAC,8BAA2B;AAElE,MAAM,EAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,+BAA+B,EAAC,GAAG,iBAAiB,CAAC;AAE3F,SAAS,cAAc,CAAC,IAAU,EAAE,OAA0B;IAC5D,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,OAAO,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC;AAED,sBAAsB;AAEtB;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,GAAG,+BAA+B;IAClC,QAAQ,EAAE,IAAwC;IAClD,SAAS,EAAE,IAAiD;IAC5D,KAAK,EAAE,KAAK,EAAE,WAAwB,EAAE,OAA0B,EAAE,EAAE,CACpE,cAAc,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IACnF,aAAa,EAAE,CAAC,IAAY,EAAE,OAA0B,EAAE,EAAE,CAC1D,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClD,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACjC,uBAAuB,CAAC,6BAA6B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxE,qBAAqB,EAAE,yBAAyB;IAChD,uBAAuB,EAAE,0BAA0B;IACnD,oBAAoB,EAAE,yBAAyB;IAC/C,sBAAsB,EAAE,yBAAyB;CAKlD,CAAC;AAEF,4EAA4E;AAC5E,SAAS,mBAAmB,CAAC,OAA0B;IACrD,MAAM,SAAS,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC;IAC3C,OAAO,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/D,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,CAAC,2BAA2B,CACnC,IAAY,EACZ,OAA0B,EAC1B,SAAkB;IAElB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1F,KAAK,CAAC,CAAC,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AACnE,CAAC;AAED,KAAK,SAAS,CAAC,CAAC,gCAAgC,CAC9C,KAA4B,EAC5B,OAA0B,EAC1B,SAAkB;IAElB,MAAM,mBAAmB,GAAG,SAAS,IAAI,IAAI,CAAC;IAC9C,IAAI,WAAW,GAAa,EAAE,CAAC;IAE/B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,SAAS;QACX,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,WAAW,CAAC,MAAM,IAAI,mBAAmB,EAAE,CAAC;YAC9C,MAAM,YAAY,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;YACjE,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,YAAY,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,CAAC,wBAAwB,CAChC,WAAqB,EACrB,OAA0B,EAC1B,SAAkB;IAElB,MAAM,mBAAmB,GAAG,SAAS,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;IAEjE,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QACtF,MAAM,IAAI,GAAG,sBAAsB,CACjC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,mBAAmB,CAAC,CAC5D,CAAC;QACF,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,SAAS,sBAAsB,CAAC,WAAqB;IACnD,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE3D,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;QAC1E,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,SAAS,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,SAAS,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,SAAS,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,QAAQ,EAAE;YACR,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC;SACR;KACF,CAAC;IACF,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAEnD,OAAO;QACL,UAAU,EAAE;YACV,MAAM,EAAE,EAAE;SACX;QACD,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE;YAC/B,IAAI,EAAE,CAAC;YACP,WAAW,EAAE,WAAW,IAAI,SAAS;SACtC,CAAC;QACF,MAAM,EAAE;YACN,WAAW,EAAE,WAAW,CAAC,MAAM;YAC/B,WAAW,EAAE,WAAW,IAAI,SAAS;SACtC;QACD,IAAI,EAAE,CAAC;QACP,QAAQ,EAAE,YAAY;QACtB,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,IAAU,EAAE,OAA0B;IAC1D,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,OAAO,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM,EAAE,CAAC;QACnC,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChD,OAAO;YACL,KAAK,EAAE,MAAM;YACb,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC;SAC/C,CAAC;IACJ,CAAC;IAED,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,6FAA6F;AAC7F,SAAS,0BAA0B,CACjC,MAAe,EACf,OAA0B;IAE1B,MAAM,KAAK,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,OAAO,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5E,CAAC;AAED,yEAAyE;AACzE,SAAS,yBAAyB,CAChC,MAAe,EACf,OAA0B;IAE1B,MAAM,KAAK,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,OAAO,EAAE,GAAG,EAAE,KAAK,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IACjD,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,EAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAC,CAAC;AAC9E,CAAC;AAED,uEAAuE;AACvE,KAAK,SAAS,CAAC,CAAC,6BAA6B,CAC3C,WAE+C,EAC/C,OAA0B;IAE1B,MAAM,SAAS,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,uBAAuB,CAAC,WAAyC,CAAC,CAAC;QACxF,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACpD,KAAK,CAAC,CAAC,gCAAgC,CAAC,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1E,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,KAAK,CAAC,CAAC,2BAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC/D,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,GAAG,eAAe;IAClB,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;IACpC,SAAS,EAAE,iBAAiB,CAAC,SAAS;IACtC,KAAK,EAAE,KAAK,EAAE,KAAkB,EAAE,OAA0B,EAAE,EAAE,CAC9D,cAAc,CAAC,MAAM,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7D,aAAa,EAAE,CAAC,KAAa,EAAE,OAA0B,EAAE,EAAE,CAC3D,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/D,KAAK,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO;QAClC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YACzE,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;gBACtD,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM;oBAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;;oBACpD,MAAM,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvD,CAAC;;gBAAM,MAAM,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;IACD,uBAAuB,EAAE,CAAC,MAAe,EAAE,OAA0B,EAAE,EAAE,CACvE,cAAc,CAAC,eAAe,CAAC,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1E,sBAAsB,CAAC,MAAe,EAAE,OAA0B;QAChE,MAAM,KAAK,GAAG,eAAe,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtE,OAAO,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa;YACtD,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtE,CAAC,CAAC,KAAK,CAAC;IACZ,CAAC;CACkF,CAAC;AAEtF,4EAA4E;AAC5E,SAAS,cAAc,CAAC,MAA6B;IACnD,IAAI,OAAO,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,MAAc,CAAC;AACxB,CAAC"}
@@ -25,7 +25,7 @@ __export(obj_writer_exports, {
25
25
  module.exports = __toCommonJS(obj_writer_exports);
26
26
  var import_schema_utils = require("@loaders.gl/core/schema-utils");
27
27
  var import_obj_format = require("./obj-format.cjs");
28
- var VERSION = true ? "5.0.0-beta.1" : "latest";
28
+ var VERSION = true ? "5.0.0-beta.10" : "latest";
29
29
  var OBJWriter = {
30
30
  ...import_obj_format.OBJFormat,
31
31
  dataType: null,
@@ -113,10 +113,10 @@ function encodeOBJ(data, options) {
113
113
  `;
114
114
  }
115
115
  function normalizeMeshArrowTable(data) {
116
- if ("shape" in data && data.shape === "arrow-table") {
116
+ if (!("attributes" in data)) {
117
117
  return data;
118
118
  }
119
- return (0, import_schema_utils.convertMeshToTable)(data, "arrow-table");
119
+ return (0, import_schema_utils.convertMeshToArrowTableWrapper)(data);
120
120
  }
121
121
  function getRequiredAttribute(mesh, attributeName) {
122
122
  const attribute = mesh.attributes[attributeName];
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/obj/obj-writer.ts"],
4
- "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {WriterOptions, WriterWithEncoder} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, MeshAttribute} from '@loaders.gl/core/schema';\nimport {convertMeshToTable, convertTableToMesh} from '@loaders.gl/core/schema-utils';\nimport {OBJFormat} from './obj-format';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for `OBJWriter`. */\nexport type OBJWriterOptions = WriterOptions & {\n /** Reserved for future OBJ writer options. */\n obj?: Record<string, never>;\n};\n\n/**\n * Writer for the OBJ geometry format.\n */\nexport const OBJWriter = {\n ...OBJFormat,\n dataType: null as unknown as Mesh | MeshArrowTable,\n batchType: null as never,\n version: VERSION,\n options: {\n obj: {}\n },\n text: true,\n encode: async (data, options) => encodeOBJSync(data, options),\n encodeSync: encodeOBJSync,\n encodeTextSync: encodeOBJ\n} as const satisfies WriterWithEncoder<Mesh | MeshArrowTable, never, OBJWriterOptions>;\n\n/** Encode mesh category data as OBJ bytes. */\nfunction encodeOBJSync(data: Mesh | MeshArrowTable, options?: OBJWriterOptions): ArrayBuffer {\n const text = encodeOBJ(data, options);\n return new TextEncoder().encode(text).buffer;\n}\n\n/** Encode mesh category data as OBJ text. */\nfunction encodeOBJ(data: Mesh | MeshArrowTable, options?: OBJWriterOptions): string {\n const mesh = convertTableToMesh(normalizeMeshArrowTable(data));\n const positionAttribute = getRequiredAttribute(mesh, 'POSITION');\n const normalAttribute = mesh.attributes.NORMAL;\n const textureCoordinateAttribute = mesh.attributes.TEXCOORD_0;\n const colorAttribute = mesh.attributes.COLOR_0;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const lines: string[] = ['# loaders.gl OBJ'];\n\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n const vertex = [\n getComponent(positionAttribute, vertexIndex, 0),\n getComponent(positionAttribute, vertexIndex, 1),\n getComponent(positionAttribute, vertexIndex, 2)\n ];\n\n if (colorAttribute) {\n vertex.push(\n getColorComponent(colorAttribute, vertexIndex, 0),\n getColorComponent(colorAttribute, vertexIndex, 1),\n getColorComponent(colorAttribute, vertexIndex, 2)\n );\n }\n\n lines.push(`v ${vertex.join(' ')}`);\n }\n\n if (textureCoordinateAttribute) {\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n lines.push(\n `vt ${getComponent(textureCoordinateAttribute, vertexIndex, 0)} ${getComponent(\n textureCoordinateAttribute,\n vertexIndex,\n 1\n )}`\n );\n }\n }\n\n if (normalAttribute) {\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n lines.push(\n `vn ${getComponent(normalAttribute, vertexIndex, 0)} ${getComponent(\n normalAttribute,\n vertexIndex,\n 1\n )} ${getComponent(normalAttribute, vertexIndex, 2)}`\n );\n }\n }\n\n const triangleIndices = getTriangleIndices(mesh, vertexCount);\n for (let triangleIndex = 0; triangleIndex < triangleIndices.length; triangleIndex += 3) {\n const face = [\n getFaceVertex(\n triangleIndices[triangleIndex],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n ),\n getFaceVertex(\n triangleIndices[triangleIndex + 1],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n ),\n getFaceVertex(\n triangleIndices[triangleIndex + 2],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n )\n ];\n lines.push(`f ${face.join(' ')}`);\n }\n\n return `${lines.join('\\n')}\\n`;\n}\n\n/** Return mesh data as a MeshArrowTable, converting plain Mesh data first. */\nfunction normalizeMeshArrowTable(data: Mesh | MeshArrowTable): MeshArrowTable {\n if ('shape' in data && data.shape === 'arrow-table') {\n return data;\n }\n return convertMeshToTable(data as Mesh, 'arrow-table');\n}\n\n/** Return a required mesh attribute or throw a format-specific error. */\nfunction getRequiredAttribute(mesh: Mesh, attributeName: string): MeshAttribute {\n const attribute = mesh.attributes[attributeName];\n if (!attribute) {\n throw new Error(`OBJWriter: ${attributeName} attribute is required`);\n }\n return attribute;\n}\n\n/** Return a single attribute component with 0 as the missing component fallback. */\nfunction getComponent(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n return attribute.value[vertexIndex * attribute.size + componentIndex] || 0;\n}\n\n/** Return a color component normalized for OBJ vertex colors. */\nfunction getColorComponent(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n const value = getComponent(attribute, vertexIndex, componentIndex);\n return attribute.normalized || value > 1 ? value / 255 : value;\n}\n\n/** Return triangle indices for indexed or sequential triangle-list meshes. */\nfunction getTriangleIndices(mesh: Mesh, vertexCount: number): number[] {\n if (mesh.indices?.value?.length) {\n return Array.from(mesh.indices.value);\n }\n\n if (mesh.mode !== 4 && mesh.topology !== 'triangle-list') {\n return [];\n }\n\n const triangleIndices: number[] = [];\n for (let vertexIndex = 0; vertexIndex + 2 < vertexCount; vertexIndex += 3) {\n triangleIndices.push(vertexIndex, vertexIndex + 1, vertexIndex + 2);\n }\n return triangleIndices;\n}\n\n/** Return an OBJ face vertex reference. */\nfunction getFaceVertex(\n vertexIndex: number,\n hasTextureCoordinates: boolean,\n hasNormals: boolean\n): string {\n const faceIndex = vertexIndex + 1;\n if (hasTextureCoordinates && hasNormals) {\n return `${faceIndex}/${faceIndex}/${faceIndex}`;\n }\n if (hasTextureCoordinates) {\n return `${faceIndex}/${faceIndex}`;\n }\n if (hasNormals) {\n return `${faceIndex}//${faceIndex}`;\n }\n return String(faceIndex);\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// loaders.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport type {Table} from 'apache-arrow';\nimport type {WriterOptions, WriterWithEncoder} from '@loaders.gl/core/loader-utils';\nimport type {Mesh, MeshArrowTable, MeshAttribute} from '@loaders.gl/core/schema';\nimport {convertMeshToArrowTableWrapper, convertTableToMesh} from '@loaders.gl/core/schema-utils';\nimport {OBJFormat} from './obj-format';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\n/** Options for `OBJWriter`. */\nexport type OBJWriterOptions = WriterOptions & {\n /** Reserved for future OBJ writer options. */\n obj?: Record<string, never>;\n};\n\n/**\n * Writer for the OBJ geometry format.\n */\nexport const OBJWriter = {\n ...OBJFormat,\n dataType: null as unknown as Mesh | MeshArrowTable | Table,\n batchType: null as never,\n version: VERSION,\n options: {\n obj: {}\n },\n text: true,\n encode: async (data, options) => encodeOBJSync(data, options),\n encodeSync: encodeOBJSync,\n encodeTextSync: encodeOBJ\n} as const satisfies WriterWithEncoder<Mesh | MeshArrowTable | Table, never, OBJWriterOptions>;\n\n/** Encode mesh category data as OBJ bytes. */\nfunction encodeOBJSync(\n data: Mesh | MeshArrowTable | Table,\n options?: OBJWriterOptions\n): ArrayBuffer {\n const text = encodeOBJ(data, options);\n return new TextEncoder().encode(text).buffer;\n}\n\n/** Encode mesh category data as OBJ text. */\nfunction encodeOBJ(data: Mesh | MeshArrowTable | Table, options?: OBJWriterOptions): string {\n const mesh = convertTableToMesh(normalizeMeshArrowTable(data));\n const positionAttribute = getRequiredAttribute(mesh, 'POSITION');\n const normalAttribute = mesh.attributes.NORMAL;\n const textureCoordinateAttribute = mesh.attributes.TEXCOORD_0;\n const colorAttribute = mesh.attributes.COLOR_0;\n const vertexCount = positionAttribute.value.length / positionAttribute.size;\n const lines: string[] = ['# loaders.gl OBJ'];\n\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n const vertex = [\n getComponent(positionAttribute, vertexIndex, 0),\n getComponent(positionAttribute, vertexIndex, 1),\n getComponent(positionAttribute, vertexIndex, 2)\n ];\n\n if (colorAttribute) {\n vertex.push(\n getColorComponent(colorAttribute, vertexIndex, 0),\n getColorComponent(colorAttribute, vertexIndex, 1),\n getColorComponent(colorAttribute, vertexIndex, 2)\n );\n }\n\n lines.push(`v ${vertex.join(' ')}`);\n }\n\n if (textureCoordinateAttribute) {\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n lines.push(\n `vt ${getComponent(textureCoordinateAttribute, vertexIndex, 0)} ${getComponent(\n textureCoordinateAttribute,\n vertexIndex,\n 1\n )}`\n );\n }\n }\n\n if (normalAttribute) {\n for (let vertexIndex = 0; vertexIndex < vertexCount; vertexIndex++) {\n lines.push(\n `vn ${getComponent(normalAttribute, vertexIndex, 0)} ${getComponent(\n normalAttribute,\n vertexIndex,\n 1\n )} ${getComponent(normalAttribute, vertexIndex, 2)}`\n );\n }\n }\n\n const triangleIndices = getTriangleIndices(mesh, vertexCount);\n for (let triangleIndex = 0; triangleIndex < triangleIndices.length; triangleIndex += 3) {\n const face = [\n getFaceVertex(\n triangleIndices[triangleIndex],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n ),\n getFaceVertex(\n triangleIndices[triangleIndex + 1],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n ),\n getFaceVertex(\n triangleIndices[triangleIndex + 2],\n Boolean(textureCoordinateAttribute),\n Boolean(normalAttribute)\n )\n ];\n lines.push(`f ${face.join(' ')}`);\n }\n\n return `${lines.join('\\n')}\\n`;\n}\n\n/** Return mesh data as a MeshArrowTable, converting plain Mesh data first. */\nfunction normalizeMeshArrowTable(data: Mesh | MeshArrowTable | Table): MeshArrowTable | Table {\n if (!('attributes' in data)) {\n return data;\n }\n return convertMeshToArrowTableWrapper(data as Mesh);\n}\n\n/** Return a required mesh attribute or throw a format-specific error. */\nfunction getRequiredAttribute(mesh: Mesh, attributeName: string): MeshAttribute {\n const attribute = mesh.attributes[attributeName];\n if (!attribute) {\n throw new Error(`OBJWriter: ${attributeName} attribute is required`);\n }\n return attribute;\n}\n\n/** Return a single attribute component with 0 as the missing component fallback. */\nfunction getComponent(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n return attribute.value[vertexIndex * attribute.size + componentIndex] || 0;\n}\n\n/** Return a color component normalized for OBJ vertex colors. */\nfunction getColorComponent(\n attribute: MeshAttribute,\n vertexIndex: number,\n componentIndex: number\n): number {\n const value = getComponent(attribute, vertexIndex, componentIndex);\n return attribute.normalized || value > 1 ? value / 255 : value;\n}\n\n/** Return triangle indices for indexed or sequential triangle-list meshes. */\nfunction getTriangleIndices(mesh: Mesh, vertexCount: number): number[] {\n if (mesh.indices?.value?.length) {\n return Array.from(mesh.indices.value);\n }\n\n if (mesh.mode !== 4 && mesh.topology !== 'triangle-list') {\n return [];\n }\n\n const triangleIndices: number[] = [];\n for (let vertexIndex = 0; vertexIndex + 2 < vertexCount; vertexIndex += 3) {\n triangleIndices.push(vertexIndex, vertexIndex + 1, vertexIndex + 2);\n }\n return triangleIndices;\n}\n\n/** Return an OBJ face vertex reference. */\nfunction getFaceVertex(\n vertexIndex: number,\n hasTextureCoordinates: boolean,\n hasNormals: boolean\n): string {\n const faceIndex = vertexIndex + 1;\n if (hasTextureCoordinates && hasNormals) {\n return `${faceIndex}/${faceIndex}/${faceIndex}`;\n }\n if (hasTextureCoordinates) {\n return `${faceIndex}/${faceIndex}`;\n }\n if (hasNormals) {\n return `${faceIndex}//${faceIndex}`;\n }\n return String(faceIndex);\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,4 @@
1
+ import type { Table } from 'apache-arrow';
1
2
  import type { WriterOptions } from '@loaders.gl/core/loader-utils';
2
3
  import type { Mesh, MeshArrowTable } from '@loaders.gl/core/schema';
3
4
  /** Options for `OBJWriter`. */
@@ -9,14 +10,14 @@ export type OBJWriterOptions = WriterOptions & {
9
10
  * Writer for the OBJ geometry format.
10
11
  */
11
12
  export declare const OBJWriter: {
12
- readonly dataType: Mesh | MeshArrowTable;
13
+ readonly dataType: Mesh | MeshArrowTable | Table;
13
14
  readonly batchType: never;
14
15
  readonly version: any;
15
16
  readonly options: {
16
17
  readonly obj: {};
17
18
  };
18
19
  readonly text: true;
19
- readonly encode: (data: Mesh | MeshArrowTable, options: OBJWriterOptions | undefined) => Promise<ArrayBuffer>;
20
+ readonly encode: (data: Mesh | Table<any> | MeshArrowTable, options: OBJWriterOptions | undefined) => Promise<ArrayBuffer>;
20
21
  readonly encodeSync: typeof encodeOBJSync;
21
22
  readonly encodeTextSync: typeof encodeOBJ;
22
23
  readonly name: "OBJ";
@@ -28,8 +29,8 @@ export declare const OBJWriter: {
28
29
  readonly mimeTypes: ["text/plain"];
29
30
  };
30
31
  /** Encode mesh category data as OBJ bytes. */
31
- declare function encodeOBJSync(data: Mesh | MeshArrowTable, options?: OBJWriterOptions): ArrayBuffer;
32
+ declare function encodeOBJSync(data: Mesh | MeshArrowTable | Table, options?: OBJWriterOptions): ArrayBuffer;
32
33
  /** Encode mesh category data as OBJ text. */
33
- declare function encodeOBJ(data: Mesh | MeshArrowTable, options?: OBJWriterOptions): string;
34
+ declare function encodeOBJ(data: Mesh | MeshArrowTable | Table, options?: OBJWriterOptions): string;
34
35
  export {};
35
36
  //# sourceMappingURL=obj-writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"obj-writer.d.ts","sourceRoot":"","sources":["../../src/obj/obj-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,aAAa,EAAoB,MAAM,+BAA+B,CAAC;AACpF,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAgB,MAAM,yBAAyB,CAAC;AAQjF,+BAA+B;AAC/B,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;uBAES,IAAI,GAAG,cAAc;wBAC/B,KAAK;;;;;;;;;;;;;;;;CAS4D,CAAC;AAEvF,8CAA8C;AAC9C,iBAAS,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,WAAW,CAG3F;AAED,6CAA6C;AAC7C,iBAAS,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CA0ElF"}
1
+ {"version":3,"file":"obj-writer.d.ts","sourceRoot":"","sources":["../../src/obj/obj-writer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,EAAC,aAAa,EAAoB,MAAM,+BAA+B,CAAC;AACpF,OAAO,KAAK,EAAC,IAAI,EAAE,cAAc,EAAgB,MAAM,yBAAyB,CAAC;AAQjF,+BAA+B;AAC/B,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;uBAES,IAAI,GAAG,cAAc,GAAG,KAAK;wBACvC,KAAK;;;;;;;;;;;;;;;;CASoE,CAAC;AAE/F,8CAA8C;AAC9C,iBAAS,aAAa,CACpB,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,KAAK,EACnC,OAAO,CAAC,EAAE,gBAAgB,GACzB,WAAW,CAGb;AAED,6CAA6C;AAC7C,iBAAS,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,cAAc,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM,CA0E1F"}
@@ -1,11 +1,11 @@
1
1
  // loaders.gl
2
2
  // SPDX-License-Identifier: MIT
3
3
  // Copyright (c) vis.gl contributors
4
- import { convertMeshToTable, convertTableToMesh } from '@loaders.gl/core/schema-utils';
4
+ import { convertMeshToArrowTableWrapper, convertTableToMesh } from '@loaders.gl/core/schema-utils';
5
5
  import { OBJFormat } from "./obj-format.js";
6
6
  // __VERSION__ is injected by babel-plugin-version-inline
7
7
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
- const VERSION = typeof "5.0.0-beta.1" !== 'undefined' ? "5.0.0-beta.1" : 'latest';
8
+ const VERSION = typeof "5.0.0-beta.10" !== 'undefined' ? "5.0.0-beta.10" : 'latest';
9
9
  /**
10
10
  * Writer for the OBJ geometry format.
11
11
  */
@@ -70,10 +70,10 @@ function encodeOBJ(data, options) {
70
70
  }
71
71
  /** Return mesh data as a MeshArrowTable, converting plain Mesh data first. */
72
72
  function normalizeMeshArrowTable(data) {
73
- if ('shape' in data && data.shape === 'arrow-table') {
73
+ if (!('attributes' in data)) {
74
74
  return data;
75
75
  }
76
- return convertMeshToTable(data, 'arrow-table');
76
+ return convertMeshToArrowTableWrapper(data);
77
77
  }
78
78
  /** Return a required mesh attribute or throw a format-specific error. */
79
79
  function getRequiredAttribute(mesh, attributeName) {