@tolokoban/tgd 2.0.1 → 2.0.4

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 (367) hide show
  1. package/lib/dist/buffer/buffer.js +37 -0
  2. package/lib/dist/buffer/index.js +2 -0
  3. package/lib/dist/camera/camera-orthographic.d.ts +13 -5
  4. package/lib/dist/camera/camera-orthographic.d.ts.map +1 -1
  5. package/lib/dist/camera/camera-orthographic.js +97 -0
  6. package/lib/dist/camera/camera-perspective.d.ts +19 -9
  7. package/lib/dist/camera/camera-perspective.d.ts.map +1 -1
  8. package/lib/dist/camera/camera-perspective.js +94 -0
  9. package/lib/dist/camera/camera.d.ts +84 -18
  10. package/lib/dist/camera/camera.d.ts.map +1 -1
  11. package/lib/dist/camera/camera.js +368 -0
  12. package/lib/dist/camera/index.d.ts +3 -3
  13. package/lib/dist/camera/index.d.ts.map +1 -1
  14. package/lib/dist/camera/index.js +4 -0
  15. package/lib/dist/canvas/gizmo/gizmo.d.ts +42 -0
  16. package/lib/dist/canvas/gizmo/gizmo.d.ts.map +1 -0
  17. package/lib/dist/canvas/gizmo/gizmo.js +183 -0
  18. package/lib/dist/canvas/gizmo/index.d.ts +2 -0
  19. package/lib/dist/canvas/gizmo/index.d.ts.map +1 -0
  20. package/lib/dist/canvas/gizmo/index.js +2 -0
  21. package/lib/dist/canvas/gizmo/painter/shader.frag +17 -0
  22. package/lib/dist/canvas/gizmo/painter/shader.vert +24 -0
  23. package/lib/dist/canvas/gizmo/painter/tips.d.ts +13 -0
  24. package/lib/dist/canvas/gizmo/painter/tips.d.ts.map +1 -0
  25. package/lib/dist/canvas/gizmo/painter/tips.js +96 -0
  26. package/lib/dist/canvas/index.d.ts +3 -0
  27. package/lib/dist/canvas/index.d.ts.map +1 -0
  28. package/lib/dist/canvas/index.js +3 -0
  29. package/lib/dist/canvas/landscape/index.d.ts +2 -0
  30. package/lib/dist/canvas/landscape/index.d.ts.map +1 -0
  31. package/lib/dist/canvas/landscape/index.js +2 -0
  32. package/lib/dist/canvas/landscape/landscape.d.ts +18 -0
  33. package/lib/dist/canvas/landscape/landscape.d.ts.map +1 -0
  34. package/lib/dist/canvas/landscape/landscape.js +40 -0
  35. package/lib/dist/color/color.d.ts +22 -0
  36. package/lib/dist/color/color.d.ts.map +1 -0
  37. package/lib/dist/color/color.js +160 -0
  38. package/lib/dist/color/index.d.ts +2 -0
  39. package/lib/dist/color/index.d.ts.map +1 -0
  40. package/lib/dist/color/index.js +2 -0
  41. package/lib/dist/context/animation/animation-manager.d.ts +8 -0
  42. package/lib/dist/context/animation/animation-manager.d.ts.map +1 -0
  43. package/lib/dist/context/animation/animation-manager.js +41 -0
  44. package/lib/dist/context/context.d.ts +95 -8
  45. package/lib/dist/context/context.d.ts.map +1 -1
  46. package/lib/dist/context/context.js +297 -0
  47. package/lib/dist/context/index.js +2 -0
  48. package/lib/dist/controller/camera/index.js +2 -0
  49. package/lib/dist/controller/camera/orbit.d.ts +79 -4
  50. package/lib/dist/controller/camera/orbit.d.ts.map +1 -1
  51. package/lib/dist/controller/camera/orbit.js +186 -0
  52. package/lib/dist/controller/index.js +2 -0
  53. package/lib/dist/dataset/dataset.d.ts +78 -10
  54. package/lib/dist/dataset/dataset.d.ts.map +1 -1
  55. package/lib/dist/dataset/dataset.js +217 -0
  56. package/lib/dist/dataset/index.js +2 -0
  57. package/lib/dist/debug.js +13 -0
  58. package/lib/dist/event/event.js +13 -0
  59. package/lib/dist/event/index.js +2 -0
  60. package/lib/dist/filter/blur.d.ts +10 -0
  61. package/lib/dist/filter/blur.d.ts.map +1 -0
  62. package/lib/dist/filter/blur.js +42 -0
  63. package/lib/dist/filter/filter.d.ts +39 -0
  64. package/lib/dist/filter/filter.d.ts.map +1 -0
  65. package/lib/dist/filter/filter.js +43 -0
  66. package/lib/dist/filter/hue-rotation.d.ts +12 -0
  67. package/lib/dist/filter/hue-rotation.d.ts.map +1 -0
  68. package/lib/dist/filter/hue-rotation.js +41 -0
  69. package/lib/dist/filter/index.d.ts +4 -0
  70. package/lib/dist/filter/index.d.ts.map +1 -0
  71. package/lib/dist/filter/index.js +4 -0
  72. package/lib/dist/geometry/box.d.ts +10 -0
  73. package/lib/dist/geometry/box.d.ts.map +1 -0
  74. package/lib/dist/geometry/box.js +136 -0
  75. package/lib/dist/geometry/geometry.d.ts +47 -0
  76. package/lib/dist/geometry/geometry.d.ts.map +1 -0
  77. package/lib/dist/geometry/geometry.js +190 -0
  78. package/lib/dist/geometry/index.d.ts +3 -0
  79. package/lib/dist/geometry/index.d.ts.map +1 -0
  80. package/lib/dist/geometry/index.js +3 -0
  81. package/lib/dist/index.d.ts +7 -0
  82. package/lib/dist/index.d.ts.map +1 -1
  83. package/lib/dist/index.js +21 -2
  84. package/lib/dist/input/index.js +4 -0
  85. package/lib/dist/input/inputs.d.ts.map +1 -1
  86. package/lib/dist/input/inputs.js +23 -0
  87. package/lib/dist/input/keyboard.d.ts +3 -0
  88. package/lib/dist/input/keyboard.d.ts.map +1 -1
  89. package/lib/dist/input/keyboard.js +46 -0
  90. package/lib/dist/input/pointer.d.ts +17 -33
  91. package/lib/dist/input/pointer.d.ts.map +1 -1
  92. package/lib/dist/input/pointer.js +138 -0
  93. package/lib/dist/light/index.d.ts +2 -0
  94. package/lib/dist/light/index.d.ts.map +1 -0
  95. package/lib/dist/light/index.js +2 -0
  96. package/lib/dist/light/light.d.ts +16 -0
  97. package/lib/dist/light/light.d.ts.map +1 -0
  98. package/lib/dist/light/light.js +19 -0
  99. package/lib/dist/loader/image.d.ts +4 -0
  100. package/lib/dist/loader/image.d.ts.map +1 -1
  101. package/lib/dist/loader/image.js +31 -0
  102. package/lib/dist/loader/index.js +2 -0
  103. package/lib/dist/material/diffuse.d.ts +28 -0
  104. package/lib/dist/material/diffuse.d.ts.map +1 -0
  105. package/lib/dist/material/diffuse.js +68 -0
  106. package/lib/dist/material/ghost.d.ts +19 -0
  107. package/lib/dist/material/ghost.d.ts.map +1 -0
  108. package/lib/dist/material/ghost.js +25 -0
  109. package/lib/dist/material/index.d.ts +5 -0
  110. package/lib/dist/material/index.d.ts.map +1 -0
  111. package/lib/dist/material/index.js +5 -0
  112. package/lib/dist/material/material.d.ts +29 -0
  113. package/lib/dist/material/material.d.ts.map +1 -0
  114. package/lib/dist/material/material.js +14 -0
  115. package/lib/dist/material/normals.d.ts +13 -0
  116. package/lib/dist/material/normals.d.ts.map +1 -0
  117. package/lib/dist/material/normals.js +20 -0
  118. package/lib/dist/math/index.d.ts +3 -0
  119. package/lib/dist/math/index.d.ts.map +1 -1
  120. package/lib/dist/math/index.js +8 -0
  121. package/lib/dist/math/mat3.d.ts +8 -0
  122. package/lib/dist/math/mat3.d.ts.map +1 -1
  123. package/lib/dist/math/mat3.js +154 -0
  124. package/lib/dist/math/mat4.d.ts +111 -2
  125. package/lib/dist/math/mat4.d.ts.map +1 -1
  126. package/lib/dist/math/mat4.js +402 -0
  127. package/lib/dist/math/mat4.test.js +57 -0
  128. package/lib/dist/math/quat.d.ts +1 -0
  129. package/lib/dist/math/quat.d.ts.map +1 -1
  130. package/lib/dist/math/quat.js +184 -0
  131. package/lib/dist/math/quat.test.js +45 -0
  132. package/lib/dist/math/transfo.d.ts +27 -0
  133. package/lib/dist/math/transfo.d.ts.map +1 -0
  134. package/lib/dist/math/transfo.js +86 -0
  135. package/lib/dist/math/vec2.d.ts +34 -0
  136. package/lib/dist/math/vec2.d.ts.map +1 -0
  137. package/lib/dist/math/vec2.js +119 -0
  138. package/lib/dist/math/vec3.d.ts +24 -13
  139. package/lib/dist/math/vec3.d.ts.map +1 -1
  140. package/lib/dist/math/vec3.js +187 -0
  141. package/lib/dist/math/vec3.test.d.ts +2 -0
  142. package/lib/dist/math/vec3.test.d.ts.map +1 -0
  143. package/lib/dist/math/vec3.test.js +22 -0
  144. package/lib/dist/math/vec4.d.ts +8 -4
  145. package/lib/dist/math/vec4.d.ts.map +1 -1
  146. package/lib/dist/math/vec4.js +152 -0
  147. package/lib/dist/math/vec4.test.js +15 -0
  148. package/lib/dist/painter/axis/axis.d.ts +1 -1
  149. package/lib/dist/painter/axis/axis.d.ts.map +1 -1
  150. package/lib/dist/painter/axis/axis.frag +11 -0
  151. package/lib/dist/painter/axis/axis.js +84 -0
  152. package/lib/dist/painter/axis/axis.vert +21 -0
  153. package/lib/dist/painter/axis/index.js +2 -0
  154. package/lib/dist/painter/background/background.d.ts +5 -1
  155. package/lib/dist/painter/background/background.d.ts.map +1 -1
  156. package/lib/dist/painter/background/background.frag +11 -0
  157. package/lib/dist/painter/background/background.js +63 -0
  158. package/lib/dist/painter/background/background.vert +16 -0
  159. package/lib/dist/painter/background/index.js +2 -0
  160. package/lib/dist/painter/clear.d.ts +11 -6
  161. package/lib/dist/painter/clear.d.ts.map +1 -1
  162. package/lib/dist/painter/clear.js +51 -0
  163. package/lib/dist/painter/depth.d.ts.map +1 -1
  164. package/lib/dist/painter/depth.js +34 -0
  165. package/lib/dist/painter/filter/filter.d.ts +23 -0
  166. package/lib/dist/painter/filter/filter.d.ts.map +1 -0
  167. package/lib/dist/painter/filter/filter.js +76 -0
  168. package/lib/dist/painter/filter/index.d.ts +2 -0
  169. package/lib/dist/painter/filter/index.d.ts.map +1 -0
  170. package/lib/dist/painter/filter/index.js +2 -0
  171. package/lib/dist/painter/framebuffer.d.ts +38 -0
  172. package/lib/dist/painter/framebuffer.d.ts.map +1 -0
  173. package/lib/dist/painter/framebuffer.js +102 -0
  174. package/lib/dist/painter/group.d.ts +4 -0
  175. package/lib/dist/painter/group.d.ts.map +1 -1
  176. package/lib/dist/painter/group.js +59 -0
  177. package/lib/dist/painter/index.d.ts +3 -1
  178. package/lib/dist/painter/index.d.ts.map +1 -1
  179. package/lib/dist/painter/index.js +12 -0
  180. package/lib/dist/painter/logic.d.ts +3 -0
  181. package/lib/dist/painter/logic.d.ts.map +1 -1
  182. package/lib/dist/painter/logic.js +16 -0
  183. package/lib/dist/painter/mesh/gltf/gltf.d.ts +14 -0
  184. package/lib/dist/painter/mesh/gltf/gltf.d.ts.map +1 -0
  185. package/lib/dist/painter/mesh/gltf/gltf.js +93 -0
  186. package/lib/dist/painter/mesh/gltf/index.d.ts +2 -0
  187. package/lib/dist/painter/mesh/gltf/index.d.ts.map +1 -0
  188. package/lib/dist/painter/mesh/gltf/index.js +2 -0
  189. package/lib/dist/painter/mesh/index.d.ts +4 -0
  190. package/lib/dist/painter/mesh/index.d.ts.map +1 -0
  191. package/lib/dist/painter/mesh/index.js +4 -0
  192. package/lib/dist/painter/mesh/mesh/index.d.ts +2 -0
  193. package/lib/dist/painter/mesh/mesh/index.d.ts.map +1 -0
  194. package/lib/dist/painter/mesh/mesh/index.js +2 -0
  195. package/lib/dist/painter/mesh/mesh/mesh.d.ts +32 -0
  196. package/lib/dist/painter/mesh/mesh/mesh.d.ts.map +1 -0
  197. package/lib/dist/painter/mesh/mesh/mesh.js +128 -0
  198. package/lib/dist/painter/mesh/normals/index.d.ts +2 -0
  199. package/lib/dist/painter/mesh/normals/index.d.ts.map +1 -0
  200. package/lib/dist/painter/mesh/normals/index.js +2 -0
  201. package/lib/dist/painter/mesh/normals/normals.d.ts +18 -0
  202. package/lib/dist/painter/mesh/normals/normals.d.ts.map +1 -0
  203. package/lib/dist/painter/mesh/normals/normals.js +53 -0
  204. package/lib/dist/painter/mesh/normals/shader.frag +14 -0
  205. package/lib/dist/painter/mesh/normals/shader.vert +18 -0
  206. package/lib/dist/painter/node.d.ts +26 -0
  207. package/lib/dist/painter/node.d.ts.map +1 -0
  208. package/lib/dist/painter/node.js +67 -0
  209. package/lib/dist/painter/painter.d.ts +1 -0
  210. package/lib/dist/painter/painter.d.ts.map +1 -1
  211. package/lib/dist/painter/painter.js +4 -0
  212. package/lib/dist/painter/segments/index.js +2 -0
  213. package/lib/dist/painter/segments/segments.d.ts +56 -17
  214. package/lib/dist/painter/segments/segments.d.ts.map +1 -1
  215. package/lib/dist/painter/segments/segments.frag +12 -0
  216. package/lib/dist/painter/segments/segments.js +196 -0
  217. package/lib/dist/painter/segments/segments.vert +114 -0
  218. package/lib/dist/painter/skybox/index.js +2 -0
  219. package/lib/dist/painter/skybox/skybox.d.ts +2 -2
  220. package/lib/dist/painter/skybox/skybox.d.ts.map +1 -1
  221. package/lib/dist/painter/skybox/skybox.frag +15 -0
  222. package/lib/dist/painter/skybox/skybox.js +59 -0
  223. package/lib/dist/painter/skybox/skybox.vert +10 -0
  224. package/lib/dist/parser/for-each-line.d.ts +3 -0
  225. package/lib/dist/parser/for-each-line.d.ts.map +1 -1
  226. package/lib/dist/parser/for-each-line.js +17 -0
  227. package/lib/dist/parser/gltf/gltf.d.ts +34 -0
  228. package/lib/dist/parser/gltf/gltf.d.ts.map +1 -0
  229. package/lib/dist/parser/gltf/gltf.js +164 -0
  230. package/lib/dist/parser/gltf/index.d.ts +2 -0
  231. package/lib/dist/parser/gltf/index.d.ts.map +1 -0
  232. package/lib/dist/parser/gltf/index.js +2 -0
  233. package/lib/dist/parser/gltf/parser.d.ts +9 -0
  234. package/lib/dist/parser/gltf/parser.d.ts.map +1 -0
  235. package/lib/dist/parser/gltf/parser.js +53 -0
  236. package/lib/dist/parser/index.d.ts +1 -0
  237. package/lib/dist/parser/index.d.ts.map +1 -1
  238. package/lib/dist/parser/index.js +3 -0
  239. package/lib/dist/parser/mesh/wavefront.d.ts +70 -12
  240. package/lib/dist/parser/mesh/wavefront.d.ts.map +1 -1
  241. package/lib/dist/parser/mesh/wavefront.js +246 -0
  242. package/lib/dist/program/index.js +2 -0
  243. package/lib/dist/program/program.d.ts +15 -0
  244. package/lib/dist/program/program.d.ts.map +1 -1
  245. package/lib/dist/program/program.js +220 -0
  246. package/lib/dist/ref-map.d.ts +15 -0
  247. package/lib/dist/ref-map.d.ts.map +1 -1
  248. package/lib/dist/ref-map.js +48 -0
  249. package/lib/dist/resource/index.js +5 -0
  250. package/lib/dist/resource/program.d.ts.map +1 -1
  251. package/lib/dist/resource/program.js +20 -0
  252. package/lib/dist/resource/resource.d.ts +7 -1
  253. package/lib/dist/resource/resource.d.ts.map +1 -1
  254. package/lib/dist/resource/resource.js +48 -0
  255. package/lib/dist/resource/texture2d.d.ts +1 -0
  256. package/lib/dist/resource/texture2d.d.ts.map +1 -1
  257. package/lib/dist/resource/texture2d.js +20 -0
  258. package/lib/dist/resource/textureCube.d.ts.map +1 -1
  259. package/lib/dist/resource/textureCube.js +17 -0
  260. package/lib/dist/shader/code.d.ts +12 -0
  261. package/lib/dist/shader/code.d.ts.map +1 -0
  262. package/lib/dist/shader/code.js +32 -0
  263. package/lib/dist/shader/fragment.d.ts +23 -0
  264. package/lib/dist/shader/fragment.d.ts.map +1 -0
  265. package/lib/dist/shader/fragment.js +37 -0
  266. package/lib/dist/shader/vertex.d.ts +23 -0
  267. package/lib/dist/shader/vertex.d.ts.map +1 -0
  268. package/lib/dist/shader/vertex.js +35 -0
  269. package/lib/dist/texture/index.js +3 -0
  270. package/lib/dist/texture/texture2d.d.ts +4 -3
  271. package/lib/dist/texture/texture2d.d.ts.map +1 -1
  272. package/lib/dist/texture/texture2d.js +132 -0
  273. package/lib/dist/texture/textureCube.d.ts.map +1 -1
  274. package/lib/dist/texture/textureCube.js +87 -0
  275. package/lib/dist/types/animation.d.ts +20 -0
  276. package/lib/dist/types/animation.d.ts.map +1 -0
  277. package/lib/dist/types/animation.js +2 -0
  278. package/lib/dist/types/arrays.d.ts +33 -0
  279. package/lib/dist/types/arrays.d.ts.map +1 -0
  280. package/lib/dist/types/arrays.js +2 -0
  281. package/lib/dist/types/context.d.ts +7 -2
  282. package/lib/dist/types/context.d.ts.map +1 -1
  283. package/lib/dist/types/context.js +2 -0
  284. package/lib/dist/types/gltf.d.ts +200 -0
  285. package/lib/dist/types/gltf.d.ts.map +1 -0
  286. package/lib/dist/types/gltf.js +117 -0
  287. package/lib/dist/types/guards.d.ts +25 -0
  288. package/lib/dist/types/guards.d.ts.map +1 -0
  289. package/lib/dist/types/guards.js +218 -0
  290. package/lib/dist/types/index.d.ts +2 -0
  291. package/lib/dist/types/index.d.ts.map +1 -1
  292. package/lib/dist/types/index.js +10 -0
  293. package/lib/dist/types/input-keyboard.d.ts +3 -0
  294. package/lib/dist/types/input-keyboard.d.ts.map +1 -1
  295. package/lib/dist/types/input-keyboard.js +2 -0
  296. package/lib/dist/types/input-pointer.d.ts +33 -20
  297. package/lib/dist/types/input-pointer.d.ts.map +1 -1
  298. package/lib/dist/types/input-pointer.js +2 -0
  299. package/lib/dist/types/mesh.d.ts +10 -0
  300. package/lib/dist/types/mesh.d.ts.map +1 -0
  301. package/lib/dist/types/mesh.js +2 -0
  302. package/lib/dist/types/painter.js +2 -0
  303. package/lib/dist/types/program.d.ts +15 -0
  304. package/lib/dist/types/program.d.ts.map +1 -1
  305. package/lib/dist/types/program.js +2 -0
  306. package/lib/dist/types/texture2d.d.ts +14 -6
  307. package/lib/dist/types/texture2d.d.ts.map +1 -1
  308. package/lib/dist/types/texture2d.js +2 -0
  309. package/lib/dist/types/textureCube.d.ts +39 -0
  310. package/lib/dist/types/textureCube.d.ts.map +1 -1
  311. package/lib/dist/types/textureCube.js +2 -0
  312. package/lib/dist/types/webgl.d.ts +28 -1
  313. package/lib/dist/types/webgl.d.ts.map +1 -1
  314. package/lib/dist/types/webgl.js +2 -0
  315. package/lib/dist/utils/action/camera.d.ts +13 -0
  316. package/lib/dist/utils/action/camera.d.ts.map +1 -0
  317. package/lib/dist/utils/action/camera.js +30 -0
  318. package/lib/dist/utils/action/index.d.ts +2 -0
  319. package/lib/dist/utils/action/index.d.ts.map +1 -0
  320. package/lib/dist/utils/action/index.js +2 -0
  321. package/lib/dist/utils/canvas.d.ts +9 -1
  322. package/lib/dist/utils/canvas.d.ts.map +1 -1
  323. package/lib/dist/utils/canvas.js +23 -0
  324. package/lib/dist/utils/ease-func/ease-func.d.ts +32 -0
  325. package/lib/dist/utils/ease-func/ease-func.d.ts.map +1 -0
  326. package/lib/dist/utils/ease-func/ease-func.js +142 -0
  327. package/lib/dist/utils/ease-func/index.d.ts +2 -0
  328. package/lib/dist/utils/ease-func/index.d.ts.map +1 -0
  329. package/lib/dist/utils/ease-func/index.js +2 -0
  330. package/lib/dist/utils/fetch/fetch.d.ts +2 -0
  331. package/lib/dist/utils/fetch/fetch.d.ts.map +1 -0
  332. package/lib/dist/utils/fetch/fetch.js +5 -0
  333. package/lib/dist/utils/fetch/index.d.ts +2 -0
  334. package/lib/dist/utils/fetch/index.d.ts.map +1 -0
  335. package/lib/dist/utils/fetch/index.js +2 -0
  336. package/lib/dist/utils/fullscreen.d.ts +21 -0
  337. package/lib/dist/utils/fullscreen.d.ts.map +1 -0
  338. package/lib/dist/utils/fullscreen.js +64 -0
  339. package/lib/dist/utils/index.d.ts +4 -0
  340. package/lib/dist/utils/index.d.ts.map +1 -1
  341. package/lib/dist/utils/index.js +6 -0
  342. package/lib/dist/utils/math.d.ts +3 -0
  343. package/lib/dist/utils/math.d.ts.map +1 -0
  344. package/lib/dist/utils/math.js +11 -0
  345. package/lib/dist/utils/ref-map.d.ts +22 -0
  346. package/lib/dist/utils/ref-map.d.ts.map +1 -0
  347. package/lib/dist/utils/ref-map.js +48 -0
  348. package/lib/dist/vao/index.js +2 -0
  349. package/lib/dist/vao/vao.d.ts +7 -1
  350. package/lib/dist/vao/vao.d.ts.map +1 -1
  351. package/lib/dist/vao/vao.js +70 -0
  352. package/package.json +2 -4
  353. package/lib/dist/index.js.map +0 -1
  354. package/lib/dist/mesh/mesh.d.ts +0 -11
  355. package/lib/dist/mesh/mesh.d.ts.map +0 -1
  356. package/lib/dist/painter/isometric/isometric.frag.d.ts +0 -3
  357. package/lib/dist/painter/isometric/isometric.frag.d.ts.map +0 -1
  358. package/lib/dist/painter/isometric/isometric.vert.d.ts +0 -3
  359. package/lib/dist/painter/isometric/isometric.vert.d.ts.map +0 -1
  360. package/lib/dist/painter/primitive/primitive.frag.d.ts +0 -3
  361. package/lib/dist/painter/primitive/primitive.frag.d.ts.map +0 -1
  362. package/lib/dist/painter/primitive/primitive.vert.d.ts +0 -3
  363. package/lib/dist/painter/primitive/primitive.vert.d.ts.map +0 -1
  364. package/lib/dist/painter/sprites/sprites-painter.frag.d.ts +0 -3
  365. package/lib/dist/painter/sprites/sprites-painter.frag.d.ts.map +0 -1
  366. package/lib/dist/painter/sprites/sprites-painter.vert.d.ts +0 -3
  367. package/lib/dist/painter/sprites/sprites-painter.vert.d.ts.map +0 -1
@@ -0,0 +1,164 @@
1
+ import { parseGLB } from "./parser.js";
2
+ export class TgdParserGLTransfertFormatBinary {
3
+ gltf;
4
+ chunks;
5
+ cacheImages = new Map();
6
+ cacheImageURLs = new Map();
7
+ cacheBufferViewDatas = new Map();
8
+ constructor(content) {
9
+ try {
10
+ const data = parseGLB(content);
11
+ this.gltf = data.gltf;
12
+ this.chunks = data.chunks;
13
+ }
14
+ catch (ex) {
15
+ const message = ex instanceof Error ? ex.message : JSON.stringify(ex);
16
+ throw Error(`[TgdParserGLTransfertFormatBinary] ${message}`);
17
+ }
18
+ }
19
+ getScenes() {
20
+ return this.gltf.scenes ?? [];
21
+ }
22
+ getScene(sceneIndex) {
23
+ const scene = this.gltf.scenes?.[sceneIndex];
24
+ if (!scene) {
25
+ throw Error(`Asset has no scene with index #${sceneIndex}!`);
26
+ }
27
+ return scene;
28
+ }
29
+ getNode(nodeIndex) {
30
+ const node = this.gltf.nodes?.[nodeIndex];
31
+ if (!node) {
32
+ throw Error(`Asset has no node with index #${nodeIndex}!`);
33
+ }
34
+ return node;
35
+ }
36
+ getAccessor(accessorIndex = 0) {
37
+ const accessor = this.gltf.accessors?.[accessorIndex];
38
+ if (!accessor) {
39
+ throw Error(`Asset has no accessor with index #${accessorIndex}!`);
40
+ }
41
+ return accessor;
42
+ }
43
+ getMaterial(materialIndex) {
44
+ const material = this.gltf.materials?.[materialIndex];
45
+ if (!material) {
46
+ throw Error(`Asset has no material with index #${materialIndex}!`);
47
+ }
48
+ return material;
49
+ }
50
+ getMesh(meshIndex = 0) {
51
+ const mesh = this.gltf.meshes?.[meshIndex];
52
+ if (!mesh) {
53
+ throw Error(`Asset has no mesh with index #${meshIndex}!`);
54
+ }
55
+ return mesh;
56
+ }
57
+ getMeshPrimitive(meshIndex = 0, primitiveIndex = 0) {
58
+ const mesh = this.getMesh(meshIndex);
59
+ const primitive = mesh.primitives[primitiveIndex];
60
+ if (!primitive) {
61
+ throw Error(`Asset has no primitive #${primitiveIndex} in mesh #${meshIndex}!`);
62
+ }
63
+ return primitive;
64
+ }
65
+ getMeshPrimitiveIndices(meshIndex = 0, primitiveIndex = 0) {
66
+ const primitive = this.getMeshPrimitive(meshIndex, primitiveIndex);
67
+ const accessor = this.getAccessor(primitive.indices ?? 0);
68
+ const buffer = this.getBufferViewData(accessor.bufferView ?? 0);
69
+ return {
70
+ type: accessor.componentType,
71
+ buff: buffer,
72
+ elemCount: accessor.count,
73
+ };
74
+ }
75
+ getTexture2DOptions(textureIndex) {
76
+ const texture = this.gltf.textures?.[textureIndex];
77
+ if (!texture) {
78
+ throw Error(`Asset has no texture with index #${textureIndex}!`);
79
+ }
80
+ const source = texture.source ?? texture.extensions?.EXT_texture_webp?.source ?? 0;
81
+ const url = this.getImageURL(source);
82
+ const options = {
83
+ image: url,
84
+ };
85
+ return options;
86
+ }
87
+ async loadImage(imageIndex) {
88
+ const fromCache = this.cacheImages.get(imageIndex);
89
+ if (fromCache)
90
+ return fromCache;
91
+ const url = this.getImageURL(imageIndex);
92
+ if (!url)
93
+ return;
94
+ const promise = new Promise((resolve, reject) => {
95
+ const img = new Image();
96
+ img.src = url;
97
+ img.onload = () => {
98
+ resolve(img);
99
+ };
100
+ img.onerror = () => {
101
+ console.error(`Unable to load image #${imageIndex}!`, this.gltf.images?.[imageIndex]);
102
+ reject();
103
+ };
104
+ });
105
+ this.cacheImages.set(imageIndex, promise);
106
+ return promise;
107
+ }
108
+ getImageURL(imageIndex) {
109
+ const fromCache = this.cacheImageURLs.get(imageIndex);
110
+ if (fromCache)
111
+ return fromCache;
112
+ const { gltf } = this;
113
+ const image = gltf.images?.[imageIndex];
114
+ if (!image)
115
+ return;
116
+ if (image.uri)
117
+ return image.uri;
118
+ if (typeof image.bufferView !== "number")
119
+ return;
120
+ const buffer = this.getBufferViewData(image.bufferView);
121
+ if (!buffer)
122
+ return;
123
+ const blob = new Blob([buffer], {
124
+ type: image.mimeType,
125
+ });
126
+ const url = URL.createObjectURL(blob);
127
+ this.cacheImageURLs.set(imageIndex, url);
128
+ return url;
129
+ }
130
+ getBufferViewData(bufferViewIndex) {
131
+ const fromCache = this.cacheBufferViewDatas.get(bufferViewIndex);
132
+ if (fromCache)
133
+ return fromCache;
134
+ const { gltf } = this;
135
+ const bufferView = gltf.bufferViews?.[bufferViewIndex];
136
+ if (!bufferView)
137
+ throw Error(`No bufferView with index #${bufferViewIndex}!`);
138
+ const buffer = this.chunks[bufferView.buffer];
139
+ const byteOffset = bufferView.byteOffset ?? 0;
140
+ const data = buffer.slice(byteOffset, byteOffset + bufferView.byteLength);
141
+ this.cacheBufferViewDatas.set(bufferViewIndex, data);
142
+ return data;
143
+ }
144
+ setAttrib(dataset, attribName, meshIndex = 0, primitiveIndex = 0, primitiveAttribName) {
145
+ const { gltf } = this;
146
+ const accessorIndex = gltf.meshes?.[meshIndex].primitives[primitiveIndex].attributes[primitiveAttribName ?? attribName] ?? -1;
147
+ const accessor = gltf.accessors?.[accessorIndex];
148
+ if (!accessor) {
149
+ throw Error(`No attribute "${primitiveAttribName ?? attribName}" for primitive #${primitiveIndex} of mesh #${meshIndex}!`);
150
+ }
151
+ const bufferViewIndex = accessor.bufferView ?? 0;
152
+ const bufferView = gltf.bufferViews?.[bufferViewIndex];
153
+ if (!bufferView) {
154
+ throw Error(`No bufferView with index #${bufferViewIndex}!`);
155
+ }
156
+ const buffer = this.getBufferViewData(bufferViewIndex);
157
+ dataset.set(attribName, buffer, {
158
+ byteStride: bufferView.byteStride,
159
+ byteOffset: accessor.byteOffset,
160
+ count: accessor.count,
161
+ });
162
+ }
163
+ }
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x0Zi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJzZXIvZ2x0Zi9nbHRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFXbkMsTUFBTSxPQUFPLGdDQUFnQztJQUN6QixJQUFJLENBQXlCO0lBRTVCLE1BQU0sQ0FBZTtJQUNyQixXQUFXLEdBQUcsSUFBSSxHQUFHLEVBR25DLENBQUE7SUFDYyxjQUFjLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUE7SUFDMUMsb0JBQW9CLEdBQUcsSUFBSSxHQUFHLEVBQXVCLENBQUE7SUFFdEUsWUFBWSxPQUFvQjtRQUM1QixJQUFJLENBQUM7WUFDRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQTtRQUM3QixDQUFDO1FBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNWLE1BQU0sT0FBTyxHQUNULEVBQUUsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDekQsTUFBTSxLQUFLLENBQUMsc0NBQXNDLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDaEUsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUE7SUFDakMsQ0FBQztJQUVELFFBQVEsQ0FBQyxVQUFrQjtRQUN2QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQzVDLElBQUksQ0FBQyxLQUFLLEVB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
@@ -0,0 +1,2 @@
1
+ export * from "./gltf";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./gltf.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFyc2VyL2dsdGYvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUEifQ==
@@ -0,0 +1,9 @@
1
+ import { TgdFormatGltf } from "../../types/gltf";
2
+ /**
3
+ * @see https://www.khronos.org/files/gltf20-reference-guide.pdf
4
+ */
5
+ export declare function parseGLB(data: ArrayBuffer): {
6
+ gltf: TgdFormatGltf;
7
+ chunks: ArrayBuffer[];
8
+ };
9
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/parser/gltf/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuB,MAAM,kBAAkB,CAAA;AAErE;;GAEG;AAEH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG;IACzC,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,CAAA;CACxB,CA+CA"}
@@ -0,0 +1,53 @@
1
+ import { assertTgdFormatGltf } from "../../types/gltf.js";
2
+ /**
3
+ * @see https://www.khronos.org/files/gltf20-reference-guide.pdf
4
+ */
5
+ // eslint-disable-next-line max-statements
6
+ export function parseGLB(data) {
7
+ const view = new DataView(data);
8
+ const magicNumber = view.getUint32(0, true);
9
+ if (magicNumber !== 0x46546c67) {
10
+ throw Error("Invalid magic number for GLB file!");
11
+ }
12
+ const version = view.getUint32(4, true);
13
+ if (version !== 2) {
14
+ throw Error(`We support only version 2, but this file is in version ${version}!`);
15
+ }
16
+ const length = view.getUint32(8, true);
17
+ let gltf = {};
18
+ const chunks = [];
19
+ let offset = 12;
20
+ while (offset < length) {
21
+ const chunkLength = view.getUint32(offset, true);
22
+ offset += 4;
23
+ const chunkType = view.getUint32(offset, true);
24
+ offset += 4;
25
+ const chunkData = data.slice(offset, offset + chunkLength);
26
+ offset += chunkLength;
27
+ if (chunkType === 0x4e4f534a) {
28
+ // This is the JSON part.
29
+ const json = new TextDecoder().decode(chunkData);
30
+ try {
31
+ const obj = JSON.parse(json);
32
+ console.log(obj);
33
+ assertTgdFormatGltf(obj);
34
+ gltf = obj;
35
+ }
36
+ catch (ex) {
37
+ console.error("Unable to parse this JSON file:", json);
38
+ console.error(ex);
39
+ throw Error("Invalid JSON data in the chunk!");
40
+ }
41
+ }
42
+ else if (chunkType === 0x004e4942) {
43
+ chunks.push(chunkData);
44
+ }
45
+ else {
46
+ throw Error(`We got an invalid chunk type: 0x${chunkType
47
+ .toString(16)
48
+ .padStart(8, "0")}!`);
49
+ }
50
+ }
51
+ return { gltf, chunks };
52
+ }
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhcnNlci9nbHRmL3BhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFckU7O0dBRUc7QUFDSCwwQ0FBMEM7QUFDMUMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUFpQjtJQUl0QyxNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUMvQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMzQyxJQUFJLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUM3QixNQUFNLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUN2QyxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQixNQUFNLEtBQUssQ0FDUCwwREFBMEQsT0FBTyxHQUFHLENBQ3ZFLENBQUE7SUFDTCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdEMsSUFBSSxJQUFJLEdBQUcsRUFBbUIsQ0FBQTtJQUM5QixNQUFNLE1BQU0sR0FBa0IsRUFBRSxDQUFBO0lBQ2hDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQTtJQUNmLE9BQU8sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ2hELE1BQU0sSUFBSSxDQUFDLENBQUE7UUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUM5QyxNQUFNLElBQUksQ0FBQyxDQUFBO1FBQ1gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFBO1FBQzFELE1BQU0sSUFBSSxXQUFXLENBQUE7UUFDckIsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDM0IseUJBQXlCO1lBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQ2hELElBQUksQ0FBQztnQkFDRCxNQUFNLEdBQUcsR0FBWSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUNoQixtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDeEIsSUFBSSxHQUFHLEdBQUcsQ0FBQTtZQUNkLENBQUM7WUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUNWLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3RELE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ2pCLE1BQU0sS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7WUFDbEQsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzFCLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxLQUFLLENBQ1AsbUNBQW1DLFNBQVM7aUJBQ3ZDLFFBQVEsQ0FBQyxFQUFFLENBQUM7aUJBQ1osUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUMzQixDQUFBO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFBO0FBQzNCLENBQUMifQ==
@@ -1,2 +1,3 @@
1
+ export * from "./gltf";
1
2
  export * from "./mesh/wavefront";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from "./gltf/index.js";
2
+ export * from "./mesh/wavefront.js";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFyc2VyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsa0JBQWtCLENBQUEifQ==
@@ -1,30 +1,88 @@
1
+ import { TgdMeshData } from "../../types";
2
+ export interface TgdParserMeshWavefrontAttributes {
3
+ vertex: number;
4
+ normal?: number;
5
+ uv?: number;
6
+ }
7
+ /**
8
+ * This [Wavefront](https://en.wikipedia.org/wiki/Wavefront_.obj_file)
9
+ * parser only finds the object name,
10
+ * the vertices coords, the normals and the UVs.
11
+ *
12
+ * - There can be only one object per file.
13
+ * - Normals and UVs are optional.
14
+ * - All faces **must** be triangles.
15
+ *
16
+ * To export an obj file from blender, please use the following options:
17
+ *
18
+ * - Forward axis: **Y**
19
+ * - Up axis: **Z**
20
+ * - Object / Apply Modifiers: **True**
21
+ * - Geometry / UV Coordinates: **True**
22
+ * - Geometry / Normals: **True**
23
+ * - Geometry / Triangulated Mesh: **True**
24
+ */
1
25
  export declare class TgdParserMeshWavefront {
2
26
  private name;
3
27
  private attPosition;
4
28
  private attNormal;
5
29
  private attUV;
30
+ /**
31
+ * Three consecutive elements define a triangle.
32
+ * An element is a index on the attributes array.
33
+ */
6
34
  private elements;
7
35
  private elementIndex;
8
- private vertices;
36
+ /**
37
+ * The key is `${pointIndex}/${normalIndex}/${uvIndex}`.
38
+ * The value is the index of the vertex (used in `elements`).
39
+ */
40
+ private readonly mapVertices;
41
+ /**
42
+ * A point ins not a vertex, but just a position in space
43
+ * that can be used by several different vertices.
44
+ * That's the case for faces sharing a vertex but having different
45
+ * normals. A vertex is made of a position, a normal and an uv.
46
+ */
47
+ private points;
48
+ /**
49
+ * A item of this array can be shared by different vertices.
50
+ */
9
51
  private normals;
52
+ /**
53
+ * List of vertices per face.
54
+ * The vertices are represented by the index of the attribute.
55
+ */
56
+ private verticesPerTriangle;
57
+ /**
58
+ * Here "normal" is an index on `this.normals` array.
59
+ */
60
+ private normalPerTriangle;
61
+ /**
62
+ * The vertices are indexed per attribute.
63
+ * The triangles are represented by indexes from `this.normalPerTriangle`.
64
+ */
65
+ private trianglesPerVertex;
66
+ /**
67
+ * A item of this array can be shared by different vertices.
68
+ */
10
69
  private uvs;
11
- private readonly map;
12
- parse(content: string): {
13
- name: string;
14
- count: number;
15
- type: "UNSIGNED_BYTE" | "UNSIGNED_SHORT" | "UNSIGNED_INT";
16
- elements: Uint8Array | Uint16Array | Uint32Array;
17
- attPosition: Float32Array;
18
- attNormal?: Float32Array;
19
- attUV?: Float32Array;
20
- };
70
+ parse(content: string, { computeNormals }?: {
71
+ computeNormals?: boolean;
72
+ }): TgdMeshData;
73
+ private computeNormals;
21
74
  private reset;
22
75
  private readonly onObject;
23
76
  private readonly onVertex;
24
77
  private readonly onNormal;
25
78
  private readonly onTexture;
26
79
  private readonly onFace;
27
- private getElem;
80
+ /**
81
+ * Return the index of the vertex for the triplet
82
+ * point/normal/uv.
83
+ */
84
+ private readonly getElem;
28
85
  private key;
86
+ private readVertexInto;
29
87
  }
30
88
  //# sourceMappingURL=wavefront.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wavefront.d.ts","sourceRoot":"","sources":["../../../src/parser/mesh/wavefront.ts"],"names":[],"mappings":"AAoBA,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,GAAG,CAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA4B;IAEhD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG;QACpB,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,EAAE,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAA;QACzD,QAAQ,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,CAAA;QAChD,WAAW,EAAE,YAAY,CAAA;QACzB,SAAS,CAAC,EAAE,YAAY,CAAA;QACxB,KAAK,CAAC,EAAE,YAAY,CAAA;KACvB;IAuDD,OAAO,CAAC,KAAK;IAab,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAExB;IAED,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAExB;IAED,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAExB;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAEzB;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM,CAKtB;IAED,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,GAAG;CAGd"}
1
+ {"version":3,"file":"wavefront.d.ts","sourceRoot":"","sources":["../../../src/parser/mesh/wavefront.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAIxC,MAAM,WAAW,gCAAgC;IAC7C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,KAAK,CAAe;IAC5B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,YAAY,CAAI;IACxB;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAiC;IAC/C;;OAEG;IACH,OAAO,CAAC,OAAO,CAAiC;IAChD;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAAiB;IAC5C;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAgB;IACzC;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAAiB;IAC3C;;OAEG;IACH,OAAO,CAAC,GAAG,CAAiB;IAE5B,KAAK,CACD,OAAO,EAAE,MAAM,EACf,EAAE,cAAc,EAAE,GAAE;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO,GACtD,WAAW;IAoDd,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,KAAK;IAiBb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAExB;IAED,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAExB;IAED,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAExB;IAED,OAAO,CAAC,QAAQ,CAAC,SAAS,CAEzB;IAED,OAAO,CAAC,QAAQ,CAAC,MAAM,CAetB;IAED;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAmBvB;IAED,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,cAAc;CAMzB"}
@@ -0,0 +1,246 @@
1
+ import { forEachLine } from "../for-each-line.js";
2
+ import { TgdVec3 } from "./../../math/index.js";
3
+ /**
4
+ * This [Wavefront](https://en.wikipedia.org/wiki/Wavefront_.obj_file)
5
+ * parser only finds the object name,
6
+ * the vertices coords, the normals and the UVs.
7
+ *
8
+ * - There can be only one object per file.
9
+ * - Normals and UVs are optional.
10
+ * - All faces **must** be triangles.
11
+ *
12
+ * To export an obj file from blender, please use the following options:
13
+ *
14
+ * - Forward axis: **Y**
15
+ * - Up axis: **Z**
16
+ * - Object / Apply Modifiers: **True**
17
+ * - Geometry / UV Coordinates: **True**
18
+ * - Geometry / Normals: **True**
19
+ * - Geometry / Triangulated Mesh: **True**
20
+ */
21
+ export class TgdParserMeshWavefront {
22
+ name = "Mesh";
23
+ attPosition = [];
24
+ attNormal = [];
25
+ attUV = [];
26
+ /**
27
+ * Three consecutive elements define a triangle.
28
+ * An element is a index on the attributes array.
29
+ */
30
+ elements = [];
31
+ elementIndex = 0;
32
+ /**
33
+ * The key is `${pointIndex}/${normalIndex}/${uvIndex}`.
34
+ * The value is the index of the vertex (used in `elements`).
35
+ */
36
+ mapVertices = new Map();
37
+ /**
38
+ * A point ins not a vertex, but just a position in space
39
+ * that can be used by several different vertices.
40
+ * That's the case for faces sharing a vertex but having different
41
+ * normals. A vertex is made of a position, a normal and an uv.
42
+ */
43
+ points = [];
44
+ /**
45
+ * A item of this array can be shared by different vertices.
46
+ */
47
+ normals = [];
48
+ /**
49
+ * List of vertices per face.
50
+ * The vertices are represented by the index of the attribute.
51
+ */
52
+ verticesPerTriangle = [];
53
+ /**
54
+ * Here "normal" is an index on `this.normals` array.
55
+ */
56
+ normalPerTriangle = [];
57
+ /**
58
+ * The vertices are indexed per attribute.
59
+ * The triangles are represented by indexes from `this.normalPerTriangle`.
60
+ */
61
+ trianglesPerVertex = [];
62
+ /**
63
+ * A item of this array can be shared by different vertices.
64
+ */
65
+ uvs = [];
66
+ parse(content, { computeNormals } = {}) {
67
+ this.reset();
68
+ const { onVertex, onNormal, onTexture, onFace, onObject, name, elements, } = this;
69
+ parse(content, { onVertex, onNormal, onTexture, onFace, onObject });
70
+ if (computeNormals)
71
+ this.computeNormals();
72
+ const result = {
73
+ name,
74
+ count: elements.length,
75
+ attPosition: new Float32Array(this.attPosition),
76
+ };
77
+ if (this.attNormal.length > 0) {
78
+ result.attNormal = new Float32Array(this.attNormal);
79
+ }
80
+ if (this.attUV.length > 0) {
81
+ result.attUV = new Float32Array(this.attUV);
82
+ }
83
+ const { elementIndex } = this;
84
+ if (elementIndex <= 256) {
85
+ return {
86
+ ...result,
87
+ type: "UNSIGNED_BYTE",
88
+ elements: new Uint8Array(elements),
89
+ };
90
+ }
91
+ if (elementIndex <= 0x10000) {
92
+ return {
93
+ ...result,
94
+ type: "UNSIGNED_SHORT",
95
+ elements: new Uint16Array(elements),
96
+ };
97
+ }
98
+ return {
99
+ ...result,
100
+ type: "UNSIGNED_INT",
101
+ elements: new Uint32Array(elements),
102
+ };
103
+ }
104
+ computeNormals() {
105
+ const A = new TgdVec3();
106
+ const B = new TgdVec3();
107
+ const C = new TgdVec3();
108
+ this.normalPerTriangle.forEach((normal, triIdx) => {
109
+ const [v0, v1, v2] = this.verticesPerTriangle[triIdx];
110
+ this.readVertexInto(v0, A);
111
+ this.readVertexInto(v1, B).subtract(A);
112
+ this.readVertexInto(v2, C).subtract(A);
113
+ normal.from(B.cross(C).normalize());
114
+ });
115
+ this.attNormal = [];
116
+ for (let e = 0; e < this.elementIndex; e++) {
117
+ const normal = new TgdVec3(0, 0, 0);
118
+ this.trianglesPerVertex[e].forEach(triIndex => normal.add(this.normalPerTriangle[triIndex]));
119
+ const [nx, ny, nz] = normal.normalize();
120
+ this.attNormal.push(nx, ny, nz);
121
+ }
122
+ }
123
+ reset() {
124
+ this.name = "Mesh";
125
+ this.attPosition = [];
126
+ this.attNormal = [];
127
+ this.attUV = [];
128
+ this.elements = [];
129
+ this.elementIndex = 0;
130
+ this.points = [];
131
+ this.normals = [];
132
+ this.verticesPerTriangle = [];
133
+ this.trianglesPerVertex = [];
134
+ this.normalPerTriangle = [];
135
+ this.uvs = [];
136
+ this.mapVertices.clear();
137
+ this.mapVertices.clear();
138
+ }
139
+ onObject = (name) => {
140
+ this.name = name;
141
+ };
142
+ onVertex = (x, y, z) => {
143
+ this.points.push([x, y, z]);
144
+ };
145
+ onNormal = (x, y, z) => {
146
+ this.normals.push([x, y, z]);
147
+ };
148
+ onTexture = (u, v) => {
149
+ this.uvs.push([u, v]);
150
+ };
151
+ onFace = (vertices) => {
152
+ if (vertices.length !== 3)
153
+ throw Error("We can only deal with triangles!");
154
+ const triangle = vertices.map(this.getElem);
155
+ this.elements.push(...triangle);
156
+ this.normalPerTriangle.push(new TgdVec3(0, 0, 0));
157
+ this.verticesPerTriangle.push(triangle);
158
+ const triangleIndex = this.normalPerTriangle.length - 1;
159
+ triangle.forEach(vertexIndex => {
160
+ this.trianglesPerVertex[vertexIndex] ??= [];
161
+ this.trianglesPerVertex[vertexIndex].push(triangleIndex);
162
+ });
163
+ };
164
+ /**
165
+ * Return the index of the vertex for the triplet
166
+ * point/normal/uv.
167
+ */
168
+ getElem = (triangleSummit) => {
169
+ const k = this.key(triangleSummit);
170
+ const index = this.mapVertices.get(k) ?? -1;
171
+ if (index > -1)
172
+ return index;
173
+ const [vx, vy, vz] = this.points[triangleSummit.vertex];
174
+ this.attPosition.push(vx, vy, vz);
175
+ if (typeof triangleSummit.normal === "number") {
176
+ const [nx, ny, nz] = this.normals[triangleSummit.normal];
177
+ this.attNormal.push(nx, ny, nz);
178
+ }
179
+ if (typeof triangleSummit.uv === "number") {
180
+ const [tx, ty] = this.uvs[triangleSummit.uv];
181
+ this.attUV.push(tx, ty);
182
+ }
183
+ this.mapVertices.set(k, this.elementIndex);
184
+ return this.elementIndex++;
185
+ };
186
+ key(v) {
187
+ return `${v.vertex}/${v.normal}`;
188
+ }
189
+ readVertexInto(index, target) {
190
+ const P = this.attPosition;
191
+ const k = index * 3;
192
+ target.reset(P[k + 0], P[k + 1], P[k + 2]);
193
+ return target;
194
+ }
195
+ }
196
+ function parse(content, options = {}) {
197
+ const { onVertex, onNormal, onTexture, onFace, onObject } = options;
198
+ for (const fullLine of forEachLine(content)) {
199
+ const line = fullLine.trimStart();
200
+ if (onVertex && line.startsWith("v ")) {
201
+ const vertex = line
202
+ .substring("v ".length)
203
+ .split(" ")
204
+ .map(v => Number(v));
205
+ if (isVector3(vertex))
206
+ onVertex(...vertex);
207
+ }
208
+ else if (onFace && line.startsWith("f ")) {
209
+ onFace(line
210
+ .substring("f ".length)
211
+ .split(" ")
212
+ // Warning! We need to remove 1 to the index.
213
+ .map(face => {
214
+ const [v, t, n] = face.split("/");
215
+ return {
216
+ vertex: Number(v) - 1,
217
+ normal: n ? Number(n) - 1 : undefined,
218
+ uv: t ? Number(t) - 1 : undefined,
219
+ };
220
+ }));
221
+ }
222
+ else if (onNormal && line.startsWith("vn ")) {
223
+ const normal = line
224
+ .substring("vn ".length)
225
+ .split(" ")
226
+ .map(n => Number(n));
227
+ if (isVector3(normal))
228
+ onNormal(...normal);
229
+ }
230
+ else if (onTexture && line.startsWith("vt ")) {
231
+ const [u, v, w] = line
232
+ .substring("vt ".length)
233
+ .split(" ")
234
+ .map(n => Number(n));
235
+ onTexture(u, v, w);
236
+ }
237
+ else if (onObject && line.startsWith("o ")) {
238
+ const name = line.substring("o ".length);
239
+ onObject(name);
240
+ }
241
+ }
242
+ }
243
+ function isVector3(data) {
244
+ return data.length === 3;
245
+ }
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2ZWZyb250LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhcnNlci9tZXNoL3dhdmVmcm9udC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDOUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQVFuQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBQ3ZCLElBQUksR0FBRyxNQUFNLENBQUE7SUFDYixXQUFXLEdBQWEsRUFBRSxDQUFBO0lBQzFCLFNBQVMsR0FBYSxFQUFFLENBQUE7SUFDeEIsS0FBSyxHQUFhLEVBQUUsQ0FBQTtJQUM1Qjs7O09BR0c7SUFDSyxRQUFRLEdBQWEsRUFBRSxDQUFBO0lBRXZCLFlBQVksR0FBRyxDQUFDLENBQUE7SUFDeEI7OztPQUdHO0lBQ2MsV0FBVyxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFBO0lBQ3hEOzs7OztPQUtHO0lBQ0ssTUFBTSxHQUErQixFQUFFLENBQUE7SUFDL0M7O09BRUc7SUFDSyxPQUFPLEdBQStCLEVBQUUsQ0FBQTtJQUNoRDs7O09BR0c7SUFDSyxtQkFBbUIsR0FBZSxFQUFFLENBQUE7SUFDNUM7O09BRUc7SUFDSyxpQkFBaUIsR0FBYyxFQUFFLENBQUE7SUFDekM7OztPQUdHO0lBQ0ssa0JBQWtCLEdBQWUsRUFBRSxDQUFBO0lBQzNDOztPQUVHO0lBQ0ssR0FBRyxHQUFlLEVBQUUsQ0FBQTtJQUU1QixLQUFLLENBQ0QsT0FBZSxFQUNmLEVBQUUsY0FBYyxLQUFtQyxFQUFFO1FBRXJELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQTtRQUNaLE1BQU0sRUFDRixRQUFRLEVBQ1IsUUFBUSxFQUNSLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNSLElBQUksRUFDSixRQUFRLEdBQ1gsR0FBRyxJQUFJLENBQUE7UUFDUixLQUFLLENB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
@@ -0,0 +1,2 @@
1
+ export * from "./program.js";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvZ3JhbS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQSJ9