@zephyr3d/scene 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/dist/animation/animationset.js +198 -1
  2. package/dist/animation/animationset.js.map +1 -1
  3. package/dist/animation/ik/ccd_solver.js +3 -4
  4. package/dist/animation/ik/ccd_solver.js.map +1 -1
  5. package/dist/animation/ik/fabrik_solver.js +3 -4
  6. package/dist/animation/ik/fabrik_solver.js.map +1 -1
  7. package/dist/animation/ik/ik_pole_constraint.js +7 -2
  8. package/dist/animation/ik/ik_pole_constraint.js.map +1 -1
  9. package/dist/animation/ik/ik_utils.js +0 -79
  10. package/dist/animation/ik/ik_utils.js.map +1 -1
  11. package/dist/animation/ik/two_bone_ik_solver.js +3 -4
  12. package/dist/animation/ik/two_bone_ik_solver.js.map +1 -1
  13. package/dist/animation/spring/spring_bone.js +240 -0
  14. package/dist/animation/spring/spring_bone.js.map +1 -0
  15. package/dist/animation/spring/spring_bone_collider.js +198 -0
  16. package/dist/animation/spring/spring_bone_collider.js.map +1 -0
  17. package/dist/animation/spring/spring_bone_constraint.js +170 -0
  18. package/dist/animation/spring/spring_bone_constraint.js.map +1 -0
  19. package/dist/animation/spring/spring_bone_system.js +328 -0
  20. package/dist/animation/spring/spring_bone_system.js.map +1 -0
  21. package/dist/asset/model.js +2 -2
  22. package/dist/index.d.ts +15 -0
  23. package/dist/material/mixins/pbr/common.js +20 -17
  24. package/dist/material/mixins/pbr/common.js.map +1 -1
  25. package/dist/render/gpu_picking.js +100 -0
  26. package/dist/render/gpu_picking.js.map +1 -0
  27. package/dist/render/rendergraph/device_pool_allocator.js +41 -0
  28. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -0
  29. package/dist/render/rendergraph/executor.js +146 -0
  30. package/dist/render/rendergraph/executor.js.map +1 -0
  31. package/dist/render/rendergraph/forward_plus_builder.js +414 -0
  32. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -0
  33. package/dist/render/rendergraph/rendergraph.js +306 -0
  34. package/dist/render/rendergraph/rendergraph.js.map +1 -0
  35. package/dist/render/rendergraph/types.js +57 -0
  36. package/dist/render/rendergraph/types.js.map +1 -0
  37. package/dist/render/sky_motion_vector.js +85 -0
  38. package/dist/render/sky_motion_vector.js.map +1 -0
  39. package/dist/utility/serialization/scene/animation.js +3 -3
  40. package/dist/utility/serialization/scene/node.js +1 -1
  41. package/package.json +2 -2
  42. package/dist/animation/ik/ik_chain_builder.js +0 -68
  43. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  44. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  45. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  46. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  47. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  48. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  49. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  50. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  51. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  52. package/dist/src/animation/animation.js +0 -127
  53. package/dist/src/animation/animation.js.map +0 -1
  54. package/dist/src/animation/animationset.js +0 -255
  55. package/dist/src/animation/animationset.js.map +0 -1
  56. package/dist/src/animation/animationtrack.js +0 -34
  57. package/dist/src/animation/animationtrack.js.map +0 -1
  58. package/dist/src/animation/eulerrotationtrack.js +0 -52
  59. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  60. package/dist/src/animation/morphtarget.js +0 -93
  61. package/dist/src/animation/morphtarget.js.map +0 -1
  62. package/dist/src/animation/morphtrack.js +0 -70
  63. package/dist/src/animation/morphtrack.js.map +0 -1
  64. package/dist/src/animation/proptrack.js +0 -161
  65. package/dist/src/animation/proptrack.js.map +0 -1
  66. package/dist/src/animation/rotationtrack.js +0 -51
  67. package/dist/src/animation/rotationtrack.js.map +0 -1
  68. package/dist/src/animation/scaletrack.js +0 -50
  69. package/dist/src/animation/scaletrack.js.map +0 -1
  70. package/dist/src/animation/skeleton.js +0 -204
  71. package/dist/src/animation/skeleton.js.map +0 -1
  72. package/dist/src/animation/translationtrack.js +0 -50
  73. package/dist/src/animation/translationtrack.js.map +0 -1
  74. package/dist/src/app/app.js +0 -129
  75. package/dist/src/app/app.js.map +0 -1
  76. package/dist/src/app/inputmgr.js +0 -267
  77. package/dist/src/app/inputmgr.js.map +0 -1
  78. package/dist/src/asset/assetmanager.js +0 -404
  79. package/dist/src/asset/assetmanager.js.map +0 -1
  80. package/dist/src/asset/builtin.js +0 -337
  81. package/dist/src/asset/builtin.js.map +0 -1
  82. package/dist/src/asset/loaders/dds/dds.js +0 -470
  83. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  84. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  85. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  86. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  87. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  88. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  89. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  90. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  91. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  92. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  93. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  94. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  95. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  96. package/dist/src/asset/loaders/loader.js +0 -45
  97. package/dist/src/asset/loaders/loader.js.map +0 -1
  98. package/dist/src/asset/model.js +0 -414
  99. package/dist/src/asset/model.js.map +0 -1
  100. package/dist/src/blitter/bilateralblur.js +0 -221
  101. package/dist/src/blitter/bilateralblur.js.map +0 -1
  102. package/dist/src/blitter/blitter.js +0 -390
  103. package/dist/src/blitter/blitter.js.map +0 -1
  104. package/dist/src/blitter/box.js +0 -118
  105. package/dist/src/blitter/box.js.map +0 -1
  106. package/dist/src/blitter/copy.js +0 -22
  107. package/dist/src/blitter/copy.js.map +0 -1
  108. package/dist/src/blitter/gaussianblur.js +0 -228
  109. package/dist/src/blitter/gaussianblur.js.map +0 -1
  110. package/dist/src/camera/base.js +0 -92
  111. package/dist/src/camera/base.js.map +0 -1
  112. package/dist/src/camera/camera.js +0 -1005
  113. package/dist/src/camera/camera.js.map +0 -1
  114. package/dist/src/camera/fps.js +0 -238
  115. package/dist/src/camera/fps.js.map +0 -1
  116. package/dist/src/camera/orbit.js +0 -245
  117. package/dist/src/camera/orbit.js.map +0 -1
  118. package/dist/src/camera/orthocamera.js +0 -167
  119. package/dist/src/camera/orthocamera.js.map +0 -1
  120. package/dist/src/camera/perspectivecamera.js +0 -141
  121. package/dist/src/camera/perspectivecamera.js.map +0 -1
  122. package/dist/src/index.js +0 -120
  123. package/dist/src/index.js.map +0 -1
  124. package/dist/src/material/blinn.js +0 -81
  125. package/dist/src/material/blinn.js.map +0 -1
  126. package/dist/src/material/grassmaterial.js +0 -113
  127. package/dist/src/material/grassmaterial.js.map +0 -1
  128. package/dist/src/material/lambert.js +0 -92
  129. package/dist/src/material/lambert.js.map +0 -1
  130. package/dist/src/material/material.js +0 -301
  131. package/dist/src/material/material.js.map +0 -1
  132. package/dist/src/material/meshmaterial.js +0 -704
  133. package/dist/src/material/meshmaterial.js.map +0 -1
  134. package/dist/src/material/mixins/albedocolor.js +0 -76
  135. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  136. package/dist/src/material/mixins/foliage.js +0 -47
  137. package/dist/src/material/mixins/foliage.js.map +0 -1
  138. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  139. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  140. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  141. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  142. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  143. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  144. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  145. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  146. package/dist/src/material/mixins/lit.js +0 -476
  147. package/dist/src/material/mixins/lit.js.map +0 -1
  148. package/dist/src/material/mixins/pbr/common.js +0 -918
  149. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  150. package/dist/src/material/mixins/texture.js +0 -172
  151. package/dist/src/material/mixins/texture.js.map +0 -1
  152. package/dist/src/material/mixins/vertexcolor.js +0 -56
  153. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  154. package/dist/src/material/particle.js +0 -178
  155. package/dist/src/material/particle.js.map +0 -1
  156. package/dist/src/material/pbrmr.js +0 -97
  157. package/dist/src/material/pbrmr.js.map +0 -1
  158. package/dist/src/material/pbrsg.js +0 -97
  159. package/dist/src/material/pbrsg.js.map +0 -1
  160. package/dist/src/material/shader/helper.js +0 -1209
  161. package/dist/src/material/shader/helper.js.map +0 -1
  162. package/dist/src/material/terrain-cm.js +0 -606
  163. package/dist/src/material/terrain-cm.js.map +0 -1
  164. package/dist/src/material/terrainmaterial.js +0 -375
  165. package/dist/src/material/terrainmaterial.js.map +0 -1
  166. package/dist/src/material/unlit.js +0 -41
  167. package/dist/src/material/unlit.js.map +0 -1
  168. package/dist/src/material/water.js +0 -417
  169. package/dist/src/material/water.js.map +0 -1
  170. package/dist/src/posteffect/bloom.js +0 -361
  171. package/dist/src/posteffect/bloom.js.map +0 -1
  172. package/dist/src/posteffect/compositor.js +0 -226
  173. package/dist/src/posteffect/compositor.js.map +0 -1
  174. package/dist/src/posteffect/fxaa.js +0 -273
  175. package/dist/src/posteffect/fxaa.js.map +0 -1
  176. package/dist/src/posteffect/grayscale.js +0 -69
  177. package/dist/src/posteffect/grayscale.js.map +0 -1
  178. package/dist/src/posteffect/motionblur.js +0 -96
  179. package/dist/src/posteffect/motionblur.js.map +0 -1
  180. package/dist/src/posteffect/posteffect.js +0 -126
  181. package/dist/src/posteffect/posteffect.js.map +0 -1
  182. package/dist/src/posteffect/sao.js +0 -324
  183. package/dist/src/posteffect/sao.js.map +0 -1
  184. package/dist/src/posteffect/ssr.js +0 -489
  185. package/dist/src/posteffect/ssr.js.map +0 -1
  186. package/dist/src/posteffect/taa.js +0 -172
  187. package/dist/src/posteffect/taa.js.map +0 -1
  188. package/dist/src/posteffect/tonemap.js +0 -94
  189. package/dist/src/posteffect/tonemap.js.map +0 -1
  190. package/dist/src/render/abuffer_oit.js +0 -361
  191. package/dist/src/render/abuffer_oit.js.map +0 -1
  192. package/dist/src/render/clipmap.js +0 -851
  193. package/dist/src/render/clipmap.js.map +0 -1
  194. package/dist/src/render/cluster_light.js +0 -333
  195. package/dist/src/render/cluster_light.js.map +0 -1
  196. package/dist/src/render/cull_visitor.js +0 -187
  197. package/dist/src/render/cull_visitor.js.map +0 -1
  198. package/dist/src/render/depthpass.js +0 -68
  199. package/dist/src/render/depthpass.js.map +0 -1
  200. package/dist/src/render/drawable_mixin.js +0 -227
  201. package/dist/src/render/drawable_mixin.js.map +0 -1
  202. package/dist/src/render/envlight.js +0 -463
  203. package/dist/src/render/envlight.js.map +0 -1
  204. package/dist/src/render/fbm_wavegenerator.js +0 -251
  205. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  206. package/dist/src/render/fft_wavegenerator.js +0 -1006
  207. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  208. package/dist/src/render/fullscreenquad.js +0 -38
  209. package/dist/src/render/fullscreenquad.js.map +0 -1
  210. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  211. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  212. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  213. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  214. package/dist/src/render/hzb.js +0 -273
  215. package/dist/src/render/hzb.js.map +0 -1
  216. package/dist/src/render/lightpass.js +0 -172
  217. package/dist/src/render/lightpass.js.map +0 -1
  218. package/dist/src/render/objectcolorpass.js +0 -51
  219. package/dist/src/render/objectcolorpass.js.map +0 -1
  220. package/dist/src/render/primitive.js +0 -364
  221. package/dist/src/render/primitive.js.map +0 -1
  222. package/dist/src/render/render_queue.js +0 -467
  223. package/dist/src/render/render_queue.js.map +0 -1
  224. package/dist/src/render/renderbundle_wrapper.js +0 -152
  225. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  226. package/dist/src/render/renderer.js +0 -455
  227. package/dist/src/render/renderer.js.map +0 -1
  228. package/dist/src/render/renderpass.js +0 -200
  229. package/dist/src/render/renderpass.js.map +0 -1
  230. package/dist/src/render/shadowmap_pass.js +0 -56
  231. package/dist/src/render/shadowmap_pass.js.map +0 -1
  232. package/dist/src/render/sky.js +0 -1103
  233. package/dist/src/render/sky.js.map +0 -1
  234. package/dist/src/render/weightedblended_oit.js +0 -168
  235. package/dist/src/render/weightedblended_oit.js.map +0 -1
  236. package/dist/src/scene/batchgroup.js +0 -162
  237. package/dist/src/scene/batchgroup.js.map +0 -1
  238. package/dist/src/scene/environment.js +0 -209
  239. package/dist/src/scene/environment.js.map +0 -1
  240. package/dist/src/scene/graph_node.js +0 -72
  241. package/dist/src/scene/graph_node.js.map +0 -1
  242. package/dist/src/scene/light.js +0 -416
  243. package/dist/src/scene/light.js.map +0 -1
  244. package/dist/src/scene/mesh.js +0 -341
  245. package/dist/src/scene/mesh.js.map +0 -1
  246. package/dist/src/scene/octree.js +0 -649
  247. package/dist/src/scene/octree.js.map +0 -1
  248. package/dist/src/scene/particlesys.js +0 -738
  249. package/dist/src/scene/particlesys.js.map +0 -1
  250. package/dist/src/scene/raycast_visitor.js +0 -103
  251. package/dist/src/scene/raycast_visitor.js.map +0 -1
  252. package/dist/src/scene/scene.js +0 -284
  253. package/dist/src/scene/scene.js.map +0 -1
  254. package/dist/src/scene/scene_node.js +0 -732
  255. package/dist/src/scene/scene_node.js.map +0 -1
  256. package/dist/src/scene/terrain/grass.js +0 -278
  257. package/dist/src/scene/terrain/grass.js.map +0 -1
  258. package/dist/src/scene/terrain/heightfield.js +0 -475
  259. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  260. package/dist/src/scene/terrain/patch.js +0 -530
  261. package/dist/src/scene/terrain/patch.js.map +0 -1
  262. package/dist/src/scene/terrain/quadtree.js +0 -461
  263. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  264. package/dist/src/scene/terrain/terrain.js +0 -246
  265. package/dist/src/scene/terrain/terrain.js.map +0 -1
  266. package/dist/src/scene/terrain-cm/grass.js +0 -594
  267. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  268. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  269. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  270. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  271. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  272. package/dist/src/scene/water.js +0 -374
  273. package/dist/src/scene/water.js.map +0 -1
  274. package/dist/src/shaders/atmosphere.js +0 -957
  275. package/dist/src/shaders/atmosphere.js.map +0 -1
  276. package/dist/src/shaders/fog.js +0 -112
  277. package/dist/src/shaders/fog.js.map +0 -1
  278. package/dist/src/shaders/misc.js +0 -266
  279. package/dist/src/shaders/misc.js.map +0 -1
  280. package/dist/src/shaders/noise.js +0 -222
  281. package/dist/src/shaders/noise.js.map +0 -1
  282. package/dist/src/shaders/pbr.js +0 -51
  283. package/dist/src/shaders/pbr.js.map +0 -1
  284. package/dist/src/shaders/shadow.js +0 -636
  285. package/dist/src/shaders/shadow.js.map +0 -1
  286. package/dist/src/shaders/ssr.js +0 -490
  287. package/dist/src/shaders/ssr.js.map +0 -1
  288. package/dist/src/shaders/temporal.js +0 -215
  289. package/dist/src/shaders/temporal.js.map +0 -1
  290. package/dist/src/shaders/water.js +0 -756
  291. package/dist/src/shaders/water.js.map +0 -1
  292. package/dist/src/shadow/esm.js +0 -237
  293. package/dist/src/shadow/esm.js.map +0 -1
  294. package/dist/src/shadow/pcf_opt.js +0 -181
  295. package/dist/src/shadow/pcf_opt.js.map +0 -1
  296. package/dist/src/shadow/pcf_pd.js +0 -189
  297. package/dist/src/shadow/pcf_pd.js.map +0 -1
  298. package/dist/src/shadow/shader.js +0 -37
  299. package/dist/src/shadow/shader.js.map +0 -1
  300. package/dist/src/shadow/shadow_impl.js +0 -15
  301. package/dist/src/shadow/shadow_impl.js.map +0 -1
  302. package/dist/src/shadow/shadowmapper.js +0 -790
  303. package/dist/src/shadow/shadowmapper.js.map +0 -1
  304. package/dist/src/shadow/ssm.js +0 -159
  305. package/dist/src/shadow/ssm.js.map +0 -1
  306. package/dist/src/shadow/vsm.js +0 -297
  307. package/dist/src/shadow/vsm.js.map +0 -1
  308. package/dist/src/shapes/box.js +0 -386
  309. package/dist/src/shapes/box.js.map +0 -1
  310. package/dist/src/shapes/cylinder.js +0 -125
  311. package/dist/src/shapes/cylinder.js.map +0 -1
  312. package/dist/src/shapes/plane.js +0 -88
  313. package/dist/src/shapes/plane.js.map +0 -1
  314. package/dist/src/shapes/shape.js +0 -87
  315. package/dist/src/shapes/shape.js.map +0 -1
  316. package/dist/src/shapes/sphere.js +0 -114
  317. package/dist/src/shapes/sphere.js.map +0 -1
  318. package/dist/src/shapes/tetrahedron.js +0 -188
  319. package/dist/src/shapes/tetrahedron.js.map +0 -1
  320. package/dist/src/shapes/torus.js +0 -111
  321. package/dist/src/shapes/torus.js.map +0 -1
  322. package/dist/src/utility/aabbtree.js +0 -400
  323. package/dist/src/utility/aabbtree.js.map +0 -1
  324. package/dist/src/utility/bounding_volume.js +0 -29
  325. package/dist/src/utility/bounding_volume.js.map +0 -1
  326. package/dist/src/utility/debug.js +0 -28
  327. package/dist/src/utility/debug.js.map +0 -1
  328. package/dist/src/utility/draco/decoder.js +0 -116
  329. package/dist/src/utility/draco/decoder.js.map +0 -1
  330. package/dist/src/utility/misc.js +0 -105
  331. package/dist/src/utility/misc.js.map +0 -1
  332. package/dist/src/utility/panorama.js +0 -163
  333. package/dist/src/utility/panorama.js.map +0 -1
  334. package/dist/src/utility/pmrem.js +0 -354
  335. package/dist/src/utility/pmrem.js.map +0 -1
  336. package/dist/src/utility/rendermipmap.js +0 -115
  337. package/dist/src/utility/rendermipmap.js.map +0 -1
  338. package/dist/src/utility/serialization/json.js +0 -402
  339. package/dist/src/utility/serialization/json.js.map +0 -1
  340. package/dist/src/utility/serialization/manager.js +0 -623
  341. package/dist/src/utility/serialization/manager.js.map +0 -1
  342. package/dist/src/utility/serialization/scene/animation.js +0 -248
  343. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  344. package/dist/src/utility/serialization/scene/batch.js +0 -59
  345. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  346. package/dist/src/utility/serialization/scene/camera.js +0 -790
  347. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  348. package/dist/src/utility/serialization/scene/common.js +0 -222
  349. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  350. package/dist/src/utility/serialization/scene/light.js +0 -575
  351. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  352. package/dist/src/utility/serialization/scene/material.js +0 -1111
  353. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  354. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  355. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  356. package/dist/src/utility/serialization/scene/misc.js +0 -39
  357. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  358. package/dist/src/utility/serialization/scene/node.js +0 -451
  359. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  360. package/dist/src/utility/serialization/scene/particle.js +0 -425
  361. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  362. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  363. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  364. package/dist/src/utility/serialization/scene/scene.js +0 -704
  365. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  366. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  367. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  368. package/dist/src/utility/serialization/scene/water.js +0 -465
  369. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  370. package/dist/src/utility/shprojector.js +0 -297
  371. package/dist/src/utility/shprojector.js.map +0 -1
  372. package/dist/src/utility/textures/ggxlut.js +0 -213
  373. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  374. package/dist/src/utility/textures/gradientnoise.js +0 -62
  375. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  376. package/dist/src/utility/textures/randomnoise.js +0 -41
  377. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  378. package/dist/src/values.js +0 -162
  379. package/dist/src/values.js.map +0 -1
  380. package/dist/utility/blueprint/material/common.js +0 -7
  381. package/dist/utility/blueprint/material/common.js.map +0 -1
  382. package/dist/utility/serialization/blueprint/constants.js +0 -255
  383. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  384. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  385. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  386. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  387. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
@@ -1,414 +0,0 @@
1
- import { Vector3, Quaternion, Matrix4x4, Disposable } from '@zephyr3d/base';
2
- import { Mesh } from '../scene/mesh.js';
3
- import { SceneNode } from '../scene/scene_node.js';
4
- import { NodeTranslationTrack } from '../animation/translationtrack.js';
5
- import { NodeRotationTrack } from '../animation/rotationtrack.js';
6
- import '../animation/eulerrotationtrack.js';
7
- import { NodeScaleTrack } from '../animation/scaletrack.js';
8
- import { Skeleton } from '../animation/skeleton.js';
9
- import { processMorphData } from '../animation/morphtarget.js';
10
- import { MAX_MORPH_TARGETS } from '../values.js';
11
- import { MorphTargetTrack } from '../animation/morphtrack.js';
12
-
13
- /**
14
- * Named object interface for model loading
15
- * @public
16
- */ class NamedObject {
17
- name;
18
- /**
19
- * Creates an instance of NamedObject
20
- * @param name - Name of the object
21
- */ constructor(name){
22
- this.name = name;
23
- }
24
- }
25
- /**
26
- * Heirarchical node interface for model loading
27
- * @public
28
- */ class AssetHierarchyNode extends NamedObject {
29
- _parent;
30
- _position;
31
- _rotation;
32
- _scaling;
33
- _mesh;
34
- _skeleton;
35
- _attachToSkeleton;
36
- _meshAttached;
37
- _matrix;
38
- _worldMatrix;
39
- _weights;
40
- _children;
41
- _instances;
42
- /**
43
- * Creates an instance of AssetHierarchyNode
44
- * @param name - Name of the node
45
- * @param parent - Parent of the node
46
- */ constructor(name, parent){
47
- super(name);
48
- this._parent = null;
49
- this._position = Vector3.zero();
50
- this._rotation = Quaternion.identity();
51
- this._scaling = Vector3.one();
52
- this._children = [];
53
- this._mesh = null;
54
- this._skeleton = null;
55
- this._attachToSkeleton = null;
56
- this._meshAttached = false;
57
- this._matrix = null;
58
- this._weights = null;
59
- this._worldMatrix = null;
60
- this._instances = [];
61
- parent?.addChild(this);
62
- }
63
- /** Parent of the node */ get parent() {
64
- return this._parent;
65
- }
66
- /** Local transformation matrix of the node */ get matrix() {
67
- return this._matrix;
68
- }
69
- /** World transformation matrix of the node */ get worldMatrix() {
70
- return this._worldMatrix;
71
- }
72
- /** Mesh data of the node, or null if this is not a mesh node */ get mesh() {
73
- return this._mesh;
74
- }
75
- set mesh(data) {
76
- this._mesh = data;
77
- this.setMeshAttached();
78
- }
79
- /** instances */ get instances() {
80
- return this._instances;
81
- }
82
- /** Default morph target weights */ get weights() {
83
- return this._weights;
84
- }
85
- set weights(val) {
86
- this._weights = val;
87
- }
88
- /** The skeleton used to control the node */ get skeleton() {
89
- return this._skeleton;
90
- }
91
- set skeleton(skeleton) {
92
- this._skeleton = skeleton;
93
- }
94
- /** The translation of the node */ get position() {
95
- return this._position;
96
- }
97
- set position(val) {
98
- this._position = val;
99
- }
100
- /** The rotation of the node */ get rotation() {
101
- return this._rotation;
102
- }
103
- set rotation(val) {
104
- this._rotation = val;
105
- }
106
- /** The scale of the node */ get scaling() {
107
- return this._scaling;
108
- }
109
- set scaling(val) {
110
- this._scaling = val;
111
- }
112
- /** true if the node is parent of a mesh node */ get meshAttached() {
113
- return this._meshAttached;
114
- }
115
- /** Children of the node */ get children() {
116
- return this._children;
117
- }
118
- /** The skeleton to which the node belongs if this is a joint node */ get skeletonAttached() {
119
- return this._attachToSkeleton;
120
- }
121
- /** @internal */ computeTransforms(parentTransform) {
122
- this._matrix = Matrix4x4.scaling(this._scaling).rotateLeft(this._rotation).translateLeft(this._position);
123
- this._worldMatrix = parentTransform ? Matrix4x4.multiply(parentTransform, this._matrix) : new Matrix4x4(this._matrix);
124
- for (const child of this._children){
125
- child.computeTransforms(this._worldMatrix);
126
- }
127
- }
128
- /**
129
- * Adds a child to this node
130
- * @param child - The child node to be added
131
- */ addChild(child) {
132
- if (!child || child.parent) {
133
- throw new Error('AssetHierarchyNode.addChild(): invalid child node');
134
- }
135
- this._children.push(child);
136
- child._parent = this;
137
- if (child.meshAttached) {
138
- this.setMeshAttached();
139
- }
140
- }
141
- /**
142
- * Removes a child of this node
143
- * @param child - The child node to be removed
144
- */ removeChild(child) {
145
- const index = this._children.indexOf(child);
146
- if (index < 0) {
147
- throw new Error('AssetHierarchyNode.removeChild(): invalid child node');
148
- }
149
- this._children[index]._parent = null;
150
- this._children.splice(index, 1);
151
- }
152
- /**
153
- * Attach this node to a skeleton
154
- * @param skeleton - The skeleton to which to node will attach
155
- * @param index - The joint index
156
- */ attachToSkeleton(skeleton) {
157
- if (!this._attachToSkeleton) {
158
- this._attachToSkeleton = new Set();
159
- }
160
- this._attachToSkeleton.add(skeleton);
161
- }
162
- /** @internal */ setMeshAttached() {
163
- this._meshAttached = true;
164
- this._parent?.setMeshAttached();
165
- }
166
- }
167
- /**
168
- * Skeleton information for model loading
169
- * @public
170
- */ class AssetSkeleton extends NamedObject {
171
- /** The pivot node */ pivot;
172
- /** Joints of the skeleton */ joints;
173
- /** Inverse of the binding matrices of the joints */ inverseBindMatrices;
174
- /** Binding pose matrices of the joints */ bindPoseMatrices;
175
- /**
176
- * Creates an instance of AssetSkeleton
177
- * @param name - Name of the skeleton
178
- */ constructor(name){
179
- super(name);
180
- this.name = name;
181
- this.pivot = null;
182
- this.joints = [];
183
- this.inverseBindMatrices = [];
184
- this.bindPoseMatrices = [];
185
- }
186
- /**
187
- * Adds a joint to the skeleton
188
- * @param joint - The joint node
189
- * @param inverseBindMatrix - Inverse binding matrix of the joint
190
- */ addJoint(joint, inverseBindMatrix) {
191
- joint.attachToSkeleton(this);
192
- this.joints.push(joint);
193
- this.inverseBindMatrices.push(inverseBindMatrix);
194
- this.bindPoseMatrices.push(joint.worldMatrix);
195
- }
196
- }
197
- /**
198
- * Scene for model loading
199
- * @public
200
- */ class AssetScene extends NamedObject {
201
- /** Root nodes of the scene */ rootNodes;
202
- /**
203
- * Creates an instance of AssetScene
204
- * @param name - Name of the scene
205
- */ constructor(name){
206
- super(name);
207
- this.rootNodes = [];
208
- }
209
- }
210
- /**
211
- * Model information that can be shared by multiple model nodes
212
- * @public
213
- */ class SharedModel extends Disposable {
214
- /** @internal */ _name;
215
- /** @internal */ _skeletons;
216
- /** @internal */ _nodes;
217
- /** @internal */ _animations;
218
- /** @internal */ _scenes;
219
- /** @internal */ _activeScene;
220
- /**
221
- * Creates an instance of SharedModel
222
- * @param name - Name of the model
223
- */ constructor(name){
224
- super();
225
- this._name = name || '';
226
- this._skeletons = [];
227
- this._nodes = [];
228
- this._scenes = [];
229
- this._animations = [];
230
- this._activeScene = -1;
231
- }
232
- /** Name of the model */ get name() {
233
- return this._name;
234
- }
235
- set name(val) {
236
- this._name = val;
237
- }
238
- /** All scenes that the model contains */ get scenes() {
239
- return this._scenes;
240
- }
241
- /** All animations that the model contains */ get animations() {
242
- return this._animations;
243
- }
244
- /** All skeletons that the model contains */ get skeletons() {
245
- return this._skeletons;
246
- }
247
- /** All nodes that the model contains */ get nodes() {
248
- return this._nodes;
249
- }
250
- /** The active scene of the model */ get activeScene() {
251
- return this._activeScene;
252
- }
253
- set activeScene(val) {
254
- this._activeScene = val;
255
- }
256
- /**
257
- * Adds a node to the scene
258
- * @param parent - Under which node the node should be added
259
- * @param index - Index of the node
260
- * @param name - Name of the node
261
- * @returns The added node
262
- */ addNode(parent, index, name) {
263
- const childNode = new AssetHierarchyNode(name, parent);
264
- this._nodes[index] = childNode;
265
- return childNode;
266
- }
267
- /**
268
- * Adds a skeleton to the scene
269
- * @param skeleton - The skeleton to be added
270
- */ addSkeleton(skeleton) {
271
- this._skeletons.push(skeleton);
272
- }
273
- /**
274
- * Adds an animation to the scene
275
- * @param animation - The animation to be added
276
- */ addAnimation(animation) {
277
- this._animations.push(animation);
278
- }
279
- createSceneNode(scene, instancing) {
280
- const group = new SceneNode(scene);
281
- group.name = this.name;
282
- const animationSet = group.animationSet;
283
- for(let i = 0; i < this.scenes.length; i++){
284
- const assetScene = this.scenes[i];
285
- const skeletonMeshMap = new Map();
286
- const nodeMap = new Map();
287
- for(let k = 0; k < assetScene.rootNodes.length; k++){
288
- this.setAssetNodeToSceneNode(scene, group, assetScene.rootNodes[k], skeletonMeshMap, nodeMap, instancing);
289
- }
290
- for (const animationData of this.animations){
291
- let name = animationData.name ?? `_embbeded_animation`;
292
- if (animationSet.getAnimationClip(name)) {
293
- const baseName = name;
294
- for(let t = 1;; t++){
295
- name = `${baseName}_${t}`;
296
- if (!animationSet.getAnimationClip(name)) {
297
- break;
298
- }
299
- }
300
- }
301
- const animation = animationSet.createAnimation(name, true);
302
- for (const track of animationData.tracks){
303
- if (track.type === 'translation') {
304
- animation.addTrack(nodeMap.get(track.node), new NodeTranslationTrack(track.interpolator, true));
305
- } else if (track.type === 'scale') {
306
- animation.addTrack(nodeMap.get(track.node), new NodeScaleTrack(track.interpolator, true));
307
- } else if (track.type === 'rotation') {
308
- animation.addTrack(nodeMap.get(track.node), new NodeRotationTrack(track.interpolator, true));
309
- } else if (track.type === 'weights') {
310
- for (const m of track.node.mesh.subMeshes){
311
- if (track.interpolator.stride > MAX_MORPH_TARGETS) {
312
- console.error(`Morph target too large: ${track.interpolator.stride}, the maximum is ${MAX_MORPH_TARGETS}`);
313
- } else {
314
- const morphTrack = new MorphTargetTrack(track, m, true);
315
- animation.addTrack(m.mesh, morphTrack);
316
- }
317
- }
318
- } else {
319
- console.error(`Invalid animation track type: ${track.type}`);
320
- }
321
- }
322
- for (const sk of animationData.skeletons){
323
- const nodes = skeletonMeshMap.get(sk);
324
- if (nodes) {
325
- if (!nodes.skeleton) {
326
- nodes.skeleton = new Skeleton(sk.joints.map((val)=>nodeMap.get(val)), sk.inverseBindMatrices, sk.bindPoseMatrices, nodes.mesh, nodes.bounding);
327
- }
328
- animation.addSkeleton(nodes.skeleton);
329
- }
330
- }
331
- }
332
- }
333
- group.iterate((child)=>{
334
- if (child !== group) {
335
- child.sealed = true;
336
- }
337
- });
338
- group.sharedModel = this;
339
- return group;
340
- }
341
- onDispose() {
342
- super.onDispose();
343
- const nodes = [
344
- ...this._nodes
345
- ];
346
- while(nodes.length > 0){
347
- const node = nodes.shift();
348
- nodes.push(...node.children);
349
- const mesh = node.mesh;
350
- if (mesh) {
351
- for (const subMesh of mesh.subMeshes){
352
- subMesh.primitive?.dispose();
353
- subMesh.material?.dispose();
354
- }
355
- }
356
- }
357
- this._nodes = [];
358
- this._skeletons = [];
359
- this._scenes = [];
360
- this._animations = [];
361
- }
362
- setAssetNodeToSceneNode(scene, parent, assetNode, skeletonMeshMap, nodeMap, instancing) {
363
- const node = new SceneNode(scene);
364
- nodeMap.set(assetNode, node);
365
- node.name = assetNode.name ?? '';
366
- node.position.set(assetNode.position);
367
- node.rotation.set(assetNode.rotation);
368
- node.scale.set(assetNode.scaling);
369
- if (assetNode.mesh) {
370
- const meshData = assetNode.mesh;
371
- const skeleton = assetNode.skeleton;
372
- for (const subMesh of meshData.subMeshes){
373
- for (const instance of assetNode.instances){
374
- const meshNode = new Mesh(scene);
375
- meshNode.position = instance.t;
376
- meshNode.scale = instance.s;
377
- meshNode.rotation = instance.r;
378
- meshNode.name = subMesh.name;
379
- meshNode.clipTestEnabled = true;
380
- meshNode.showState = 'inherit';
381
- meshNode.skinAnimation = !!skeleton;
382
- meshNode.morphAnimation = subMesh.numTargets > 0;
383
- meshNode.primitive = subMesh.primitive.get();
384
- meshNode.material = instancing && !meshNode.skinAnimation && !meshNode.morphAnimation ? subMesh.material.get().createInstance() : subMesh.material.get().clone();
385
- meshNode.parent = node;
386
- subMesh.mesh = meshNode;
387
- processMorphData(subMesh, meshData.morphWeights);
388
- if (skeleton) {
389
- if (!skeletonMeshMap.has(skeleton)) {
390
- skeletonMeshMap.set(skeleton, {
391
- mesh: [
392
- meshNode
393
- ],
394
- bounding: [
395
- subMesh
396
- ]
397
- });
398
- } else {
399
- skeletonMeshMap.get(skeleton).mesh.push(meshNode);
400
- skeletonMeshMap.get(skeleton).bounding.push(subMesh);
401
- }
402
- }
403
- }
404
- }
405
- }
406
- node.parent = parent;
407
- for (const child of assetNode.children){
408
- this.setAssetNodeToSceneNode(scene, node, child, skeletonMeshMap, nodeMap, instancing);
409
- }
410
- }
411
- }
412
-
413
- export { AssetHierarchyNode, AssetScene, AssetSkeleton, NamedObject, SharedModel };
414
- //# sourceMappingURL=model.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model.js","sources":["../../../src/asset/model.ts"],"sourcesContent":["import type { Vector4, TypedArray, Interpolator, DRef } from '@zephyr3d/base';\r\nimport { Disposable, Matrix4x4, Quaternion, Vector3 } from '@zephyr3d/base';\r\nimport type { Texture2D, TextureSampler } from '@zephyr3d/device';\r\nimport type { Primitive } from '../render/primitive';\r\nimport type { MeshMaterial } from '../material/meshmaterial';\r\nimport { Mesh } from '../scene/mesh';\r\nimport type { BoundingBox } from '../utility';\r\nimport type { Scene } from '../scene';\r\nimport { SceneNode } from '../scene/scene_node';\r\nimport { NodeRotationTrack, NodeScaleTrack, Skeleton, NodeTranslationTrack } from '../animation';\r\nimport { processMorphData } from '../animation/morphtarget';\r\nimport { MAX_MORPH_TARGETS } from '../values';\r\nimport { MorphTargetTrack } from '../animation/morphtrack';\r\n\r\n/**\r\n * Named object interface for model loading\r\n * @public\r\n */\r\nexport class NamedObject {\r\n name: string;\r\n /**\r\n * Creates an instance of NamedObject\r\n * @param name - Name of the object\r\n */\r\n constructor(name: string) {\r\n this.name = name;\r\n }\r\n}\r\n\r\n/**\r\n * Texture information for model loading\r\n * @public\r\n */\r\nexport interface MaterialTextureInfo {\r\n texture: Texture2D;\r\n sampler: TextureSampler;\r\n texCoord: number;\r\n transform: Matrix4x4;\r\n}\r\n\r\n/**\r\n * Common properties of material for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterialCommon {\r\n vertexColor?: boolean;\r\n vertexNormal?: boolean;\r\n useTangent?: boolean;\r\n alphaMode?: 'blend' | 'mask';\r\n alphaCutoff?: number;\r\n doubleSided?: boolean;\r\n normalMap?: MaterialTextureInfo;\r\n bumpScale?: number;\r\n emissiveMap?: MaterialTextureInfo;\r\n emissiveColor?: Vector3;\r\n emissiveStrength?: number;\r\n occlusionMap?: MaterialTextureInfo;\r\n occlusionStrength?: number;\r\n}\r\n\r\n/**\r\n * Base material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterial {\r\n type: string;\r\n common: AssetMaterialCommon;\r\n}\r\n\r\n/**\r\n * Unlit related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetUnlitMaterial extends AssetMaterial {\r\n diffuseMap?: MaterialTextureInfo;\r\n diffuse?: Vector4;\r\n}\r\n\r\n/**\r\n * Sheen related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterialSheen {\r\n sheenColorFactor?: Vector3;\r\n sheenColorMap?: MaterialTextureInfo;\r\n sheenRoughnessFactor?: number;\r\n sheenRoughnessMap?: MaterialTextureInfo;\r\n}\r\n\r\n/**\r\n * Clearcoat related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterialClearcoat {\r\n clearCoatFactor?: number;\r\n clearCoatIntensityMap?: MaterialTextureInfo;\r\n clearCoatRoughnessFactor?: number;\r\n clearCoatRoughnessMap?: MaterialTextureInfo;\r\n clearCoatNormalMap?: MaterialTextureInfo;\r\n}\r\n\r\n/**\r\n * Transmission related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterialTransmission {\r\n transmissionFactor?: number;\r\n transmissionMap?: MaterialTextureInfo;\r\n thicknessFactor?: number;\r\n thicknessMap?: MaterialTextureInfo;\r\n attenuationColor?: Vector3;\r\n attenuationDistance?: number;\r\n}\r\n\r\n/**\r\n * Iridescence related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetMaterialIridescence {\r\n iridescenceFactor?: number;\r\n iridescenceMap?: MaterialTextureInfo;\r\n iridescenceIor?: number;\r\n iridescenceThicknessMinimum?: number;\r\n iridescenceThicknessMaximum?: number;\r\n iridescenceThicknessMap?: MaterialTextureInfo;\r\n}\r\n\r\n/**\r\n * PBR related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetPBRMaterialCommon extends AssetUnlitMaterial {\r\n ior?: number;\r\n}\r\n\r\n/**\r\n * PBR of Metallic-Roughness workflow related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetPBRMaterialMR extends AssetPBRMaterialCommon {\r\n metallic?: number;\r\n roughness?: number;\r\n metallicMap?: MaterialTextureInfo;\r\n metallicIndex?: number;\r\n roughnessIndex?: number;\r\n specularMap?: MaterialTextureInfo;\r\n specularColorMap?: MaterialTextureInfo;\r\n specularFactor?: Vector4;\r\n sheen?: AssetMaterialSheen;\r\n clearcoat?: AssetMaterialClearcoat;\r\n transmission?: AssetMaterialTransmission;\r\n iridescence?: AssetMaterialIridescence;\r\n}\r\n\r\n/**\r\n * PBR of Specular-Glossness workfow related material properties for model loading\r\n * @public\r\n */\r\nexport interface AssetPBRMaterialSG extends AssetPBRMaterialCommon {\r\n specular?: Vector3;\r\n glossness?: number;\r\n specularGlossnessMap?: MaterialTextureInfo;\r\n}\r\n\r\n/**\r\n * Sub mesh data interface for model loading\r\n * @public\r\n */\r\nexport interface AssetSubMeshData {\r\n primitive: DRef<Primitive>;\r\n material: DRef<MeshMaterial>;\r\n mesh?: Mesh;\r\n rawPositions: Float32Array;\r\n rawBlendIndices: TypedArray;\r\n rawJointWeights: TypedArray;\r\n name: string;\r\n numTargets: number;\r\n targets?: Partial<Record<number, { numComponents: number; data: Float32Array[] }>>;\r\n targetBox?: BoundingBox[];\r\n morphAttribCount?: number;\r\n}\r\n\r\n/**\r\n * Mesh data interface for model loading\r\n * @public\r\n */\r\nexport interface AssetMeshData {\r\n morphWeights?: number[];\r\n subMeshes: AssetSubMeshData[];\r\n}\r\n\r\n/**\r\n * Animation track interface for model loading\r\n * @public\r\n */\r\nexport interface AssetAnimationTrack {\r\n node: AssetHierarchyNode;\r\n type: 'translation' | 'scale' | 'rotation' | 'weights';\r\n interpolator: Interpolator;\r\n defaultMorphWeights?: number[];\r\n}\r\n\r\n/**\r\n * Animation data interface for model loading\r\n * @public\r\n */\r\nexport interface AssetAnimationData {\r\n name: string;\r\n tracks: AssetAnimationTrack[];\r\n skeletons: AssetSkeleton[];\r\n nodes: AssetHierarchyNode[];\r\n}\r\n\r\n/**\r\n * Skeletal animation track interface for model loading\r\n * @public\r\n */\r\nexport interface AssetSkeletalAnimationTrack extends AssetAnimationTrack {\r\n skeleton: AssetSkeleton;\r\n keyFrames: Record<number, { translation: Vector3; rotation: Quaternion; scale: Vector3 }[]>;\r\n}\r\n\r\n/**\r\n * Rotation track of key frame animation interface for model loading\r\n * @public\r\n */\r\nexport interface AssetRotationTrack extends AssetAnimationTrack {\r\n keyFrames: Record<number, Quaternion[]>;\r\n nodes: number[];\r\n}\r\n\r\n/**\r\n * Translation track of key frame animation interface for model loading\r\n * @public\r\n */\r\nexport interface AssetTranslationTrack extends AssetAnimationTrack {\r\n keyFrames: Record<number, Vector3[]>;\r\n nodes: number[];\r\n}\r\n\r\n/**\r\n * Scale track of key frame animation interface for model loading\r\n * @public\r\n */\r\nexport interface AssetScaleTrack extends AssetAnimationTrack {\r\n keyFrames: Record<number, Vector3[]>;\r\n nodes: number[];\r\n}\r\n\r\n/**\r\n * Heirarchical node interface for model loading\r\n * @public\r\n */\r\nexport class AssetHierarchyNode extends NamedObject {\r\n private _parent: AssetHierarchyNode;\r\n private _position: Vector3;\r\n private _rotation: Quaternion;\r\n private _scaling: Vector3;\r\n private _mesh: AssetMeshData;\r\n private _skeleton: AssetSkeleton;\r\n private _attachToSkeleton: Set<AssetSkeleton>;\r\n private _meshAttached: boolean;\r\n private _matrix: Matrix4x4;\r\n private _worldMatrix: Matrix4x4;\r\n private _weights: number[];\r\n private readonly _children: AssetHierarchyNode[];\r\n private readonly _instances?: { t: Vector3; s: Vector3; r: Quaternion }[];\r\n /**\r\n * Creates an instance of AssetHierarchyNode\r\n * @param name - Name of the node\r\n * @param parent - Parent of the node\r\n */\r\n constructor(name: string, parent?: AssetHierarchyNode) {\r\n super(name);\r\n this._parent = null;\r\n this._position = Vector3.zero();\r\n this._rotation = Quaternion.identity();\r\n this._scaling = Vector3.one();\r\n this._children = [];\r\n this._mesh = null;\r\n this._skeleton = null;\r\n this._attachToSkeleton = null;\r\n this._meshAttached = false;\r\n this._matrix = null;\r\n this._weights = null;\r\n this._worldMatrix = null;\r\n this._instances = [];\r\n parent?.addChild(this);\r\n }\r\n /** Parent of the node */\r\n get parent(): AssetHierarchyNode {\r\n return this._parent;\r\n }\r\n /** Local transformation matrix of the node */\r\n get matrix(): Matrix4x4 {\r\n return this._matrix;\r\n }\r\n /** World transformation matrix of the node */\r\n get worldMatrix(): Matrix4x4 {\r\n return this._worldMatrix;\r\n }\r\n /** Mesh data of the node, or null if this is not a mesh node */\r\n get mesh(): AssetMeshData {\r\n return this._mesh;\r\n }\r\n set mesh(data: AssetMeshData) {\r\n this._mesh = data;\r\n this.setMeshAttached();\r\n }\r\n /** instances */\r\n get instances(): { t: Vector3; s: Vector3; r: Quaternion }[] {\r\n return this._instances;\r\n }\r\n /** Default morph target weights */\r\n get weights(): number[] {\r\n return this._weights;\r\n }\r\n set weights(val: number[]) {\r\n this._weights = val;\r\n }\r\n /** The skeleton used to control the node */\r\n get skeleton(): AssetSkeleton {\r\n return this._skeleton;\r\n }\r\n set skeleton(skeleton: AssetSkeleton) {\r\n this._skeleton = skeleton;\r\n }\r\n /** The translation of the node */\r\n get position(): Vector3 {\r\n return this._position;\r\n }\r\n set position(val: Vector3) {\r\n this._position = val;\r\n }\r\n /** The rotation of the node */\r\n get rotation(): Quaternion {\r\n return this._rotation;\r\n }\r\n set rotation(val: Quaternion) {\r\n this._rotation = val;\r\n }\r\n /** The scale of the node */\r\n get scaling(): Vector3 {\r\n return this._scaling;\r\n }\r\n set scaling(val: Vector3) {\r\n this._scaling = val;\r\n }\r\n /** true if the node is parent of a mesh node */\r\n get meshAttached(): boolean {\r\n return this._meshAttached;\r\n }\r\n /** Children of the node */\r\n get children(): AssetHierarchyNode[] {\r\n return this._children;\r\n }\r\n /** The skeleton to which the node belongs if this is a joint node */\r\n get skeletonAttached(): Set<AssetSkeleton> {\r\n return this._attachToSkeleton;\r\n }\r\n /** @internal */\r\n computeTransforms(parentTransform: Matrix4x4) {\r\n this._matrix = Matrix4x4.scaling(this._scaling).rotateLeft(this._rotation).translateLeft(this._position);\r\n this._worldMatrix = parentTransform\r\n ? Matrix4x4.multiply(parentTransform, this._matrix)\r\n : new Matrix4x4(this._matrix);\r\n for (const child of this._children) {\r\n child.computeTransforms(this._worldMatrix);\r\n }\r\n }\r\n /**\r\n * Adds a child to this node\r\n * @param child - The child node to be added\r\n */\r\n addChild(child: AssetHierarchyNode) {\r\n if (!child || child.parent) {\r\n throw new Error('AssetHierarchyNode.addChild(): invalid child node');\r\n }\r\n this._children.push(child);\r\n child._parent = this;\r\n if (child.meshAttached) {\r\n this.setMeshAttached();\r\n }\r\n }\r\n /**\r\n * Removes a child of this node\r\n * @param child - The child node to be removed\r\n */\r\n removeChild(child: AssetHierarchyNode) {\r\n const index = this._children.indexOf(child);\r\n if (index < 0) {\r\n throw new Error('AssetHierarchyNode.removeChild(): invalid child node');\r\n }\r\n this._children[index]._parent = null;\r\n this._children.splice(index, 1);\r\n }\r\n /**\r\n * Attach this node to a skeleton\r\n * @param skeleton - The skeleton to which to node will attach\r\n * @param index - The joint index\r\n */\r\n attachToSkeleton(skeleton: AssetSkeleton) {\r\n if (!this._attachToSkeleton) {\r\n this._attachToSkeleton = new Set();\r\n }\r\n this._attachToSkeleton.add(skeleton);\r\n }\r\n /** @internal */\r\n private setMeshAttached() {\r\n this._meshAttached = true;\r\n this._parent?.setMeshAttached();\r\n }\r\n}\r\n\r\n/**\r\n * Skeleton information for model loading\r\n * @public\r\n */\r\nexport class AssetSkeleton extends NamedObject {\r\n /** The pivot node */\r\n pivot: AssetHierarchyNode;\r\n /** Joints of the skeleton */\r\n joints: AssetHierarchyNode[];\r\n /** Inverse of the binding matrices of the joints */\r\n inverseBindMatrices: Matrix4x4[];\r\n /** Binding pose matrices of the joints */\r\n bindPoseMatrices: Matrix4x4[];\r\n /**\r\n * Creates an instance of AssetSkeleton\r\n * @param name - Name of the skeleton\r\n */\r\n constructor(name: string) {\r\n super(name);\r\n this.name = name;\r\n this.pivot = null;\r\n this.joints = [];\r\n this.inverseBindMatrices = [];\r\n this.bindPoseMatrices = [];\r\n }\r\n /**\r\n * Adds a joint to the skeleton\r\n * @param joint - The joint node\r\n * @param inverseBindMatrix - Inverse binding matrix of the joint\r\n */\r\n addJoint(joint: AssetHierarchyNode, inverseBindMatrix: Matrix4x4) {\r\n joint.attachToSkeleton(this);\r\n this.joints.push(joint);\r\n this.inverseBindMatrices.push(inverseBindMatrix);\r\n this.bindPoseMatrices.push(joint.worldMatrix);\r\n }\r\n}\r\n\r\n/**\r\n * Scene for model loading\r\n * @public\r\n */\r\nexport class AssetScene extends NamedObject {\r\n /** Root nodes of the scene */\r\n rootNodes: AssetHierarchyNode[];\r\n /**\r\n * Creates an instance of AssetScene\r\n * @param name - Name of the scene\r\n */\r\n constructor(name: string) {\r\n super(name);\r\n this.rootNodes = [];\r\n }\r\n}\r\n\r\n/**\r\n * Model information that can be shared by multiple model nodes\r\n * @public\r\n */\r\nexport class SharedModel extends Disposable {\r\n /** @internal */\r\n private _name: string;\r\n /** @internal */\r\n private _skeletons: AssetSkeleton[];\r\n /** @internal */\r\n private _nodes: AssetHierarchyNode[];\r\n /** @internal */\r\n private _animations: AssetAnimationData[];\r\n /** @internal */\r\n private _scenes: AssetScene[];\r\n /** @internal */\r\n private _activeScene: number;\r\n /**\r\n * Creates an instance of SharedModel\r\n * @param name - Name of the model\r\n */\r\n constructor(name?: string) {\r\n super();\r\n this._name = name || '';\r\n this._skeletons = [];\r\n this._nodes = [];\r\n this._scenes = [];\r\n this._animations = [];\r\n this._activeScene = -1;\r\n }\r\n /** Name of the model */\r\n get name(): string {\r\n return this._name;\r\n }\r\n set name(val: string) {\r\n this._name = val;\r\n }\r\n /** All scenes that the model contains */\r\n get scenes(): AssetScene[] {\r\n return this._scenes;\r\n }\r\n /** All animations that the model contains */\r\n get animations(): AssetAnimationData[] {\r\n return this._animations;\r\n }\r\n /** All skeletons that the model contains */\r\n get skeletons(): AssetSkeleton[] {\r\n return this._skeletons;\r\n }\r\n /** All nodes that the model contains */\r\n get nodes(): AssetHierarchyNode[] {\r\n return this._nodes;\r\n }\r\n /** The active scene of the model */\r\n get activeScene(): number {\r\n return this._activeScene;\r\n }\r\n set activeScene(val: number) {\r\n this._activeScene = val;\r\n }\r\n /**\r\n * Adds a node to the scene\r\n * @param parent - Under which node the node should be added\r\n * @param index - Index of the node\r\n * @param name - Name of the node\r\n * @returns The added node\r\n */\r\n addNode(parent: AssetHierarchyNode, index: number, name: string): AssetHierarchyNode {\r\n const childNode = new AssetHierarchyNode(name, parent);\r\n this._nodes[index] = childNode;\r\n return childNode;\r\n }\r\n /**\r\n * Adds a skeleton to the scene\r\n * @param skeleton - The skeleton to be added\r\n */\r\n addSkeleton(skeleton: AssetSkeleton) {\r\n this._skeletons.push(skeleton);\r\n }\r\n /**\r\n * Adds an animation to the scene\r\n * @param animation - The animation to be added\r\n */\r\n addAnimation(animation: AssetAnimationData) {\r\n this._animations.push(animation);\r\n }\r\n createSceneNode(scene: Scene, instancing: boolean): SceneNode {\r\n const group = new SceneNode(scene);\r\n group.name = this.name;\r\n const animationSet = group.animationSet;\r\n for (let i = 0; i < this.scenes.length; i++) {\r\n const assetScene = this.scenes[i];\r\n const skeletonMeshMap: Map<\r\n AssetSkeleton,\r\n { mesh: Mesh[]; bounding: AssetSubMeshData[]; skeleton?: Skeleton }\r\n > = new Map();\r\n const nodeMap: Map<AssetHierarchyNode, SceneNode> = new Map();\r\n for (let k = 0; k < assetScene.rootNodes.length; k++) {\r\n this.setAssetNodeToSceneNode(\r\n scene,\r\n group,\r\n assetScene.rootNodes[k],\r\n skeletonMeshMap,\r\n nodeMap,\r\n instancing\r\n );\r\n }\r\n for (const animationData of this.animations) {\r\n let name = animationData.name ?? `_embbeded_animation`;\r\n if (animationSet.getAnimationClip(name)) {\r\n const baseName = name;\r\n for (let t = 1; ; t++) {\r\n name = `${baseName}_${t}`;\r\n if (!animationSet.getAnimationClip(name)) {\r\n break;\r\n }\r\n }\r\n }\r\n const animation = animationSet.createAnimation(name, true);\r\n for (const track of animationData.tracks) {\r\n if (track.type === 'translation') {\r\n animation.addTrack(nodeMap.get(track.node), new NodeTranslationTrack(track.interpolator, true));\r\n } else if (track.type === 'scale') {\r\n animation.addTrack(nodeMap.get(track.node), new NodeScaleTrack(track.interpolator, true));\r\n } else if (track.type === 'rotation') {\r\n animation.addTrack(nodeMap.get(track.node), new NodeRotationTrack(track.interpolator, true));\r\n } else if (track.type === 'weights') {\r\n for (const m of track.node.mesh.subMeshes) {\r\n if (track.interpolator.stride > MAX_MORPH_TARGETS) {\r\n console.error(\r\n `Morph target too large: ${track.interpolator.stride}, the maximum is ${MAX_MORPH_TARGETS}`\r\n );\r\n } else {\r\n const morphTrack = new MorphTargetTrack(track, m, true);\r\n animation.addTrack(m.mesh, morphTrack);\r\n }\r\n }\r\n } else {\r\n console.error(`Invalid animation track type: ${track.type}`);\r\n }\r\n }\r\n for (const sk of animationData.skeletons) {\r\n const nodes = skeletonMeshMap.get(sk);\r\n if (nodes) {\r\n if (!nodes.skeleton) {\r\n nodes.skeleton = new Skeleton(\r\n sk.joints.map((val) => nodeMap.get(val)),\r\n sk.inverseBindMatrices,\r\n sk.bindPoseMatrices,\r\n nodes.mesh,\r\n nodes.bounding\r\n );\r\n }\r\n animation.addSkeleton(nodes.skeleton);\r\n }\r\n }\r\n }\r\n }\r\n group.iterate((child) => {\r\n if (child !== group) {\r\n child.sealed = true;\r\n }\r\n });\r\n group.sharedModel = this;\r\n return group;\r\n }\r\n protected onDispose() {\r\n super.onDispose();\r\n const nodes = [...this._nodes];\r\n while (nodes.length > 0) {\r\n const node = nodes.shift();\r\n nodes.push(...node.children);\r\n const mesh = node.mesh;\r\n if (mesh) {\r\n for (const subMesh of mesh.subMeshes) {\r\n subMesh.primitive?.dispose();\r\n subMesh.material?.dispose();\r\n }\r\n }\r\n }\r\n this._nodes = [];\r\n this._skeletons = [];\r\n this._scenes = [];\r\n this._animations = [];\r\n }\r\n private setAssetNodeToSceneNode(\r\n scene: Scene,\r\n parent: SceneNode,\r\n assetNode: AssetHierarchyNode,\r\n skeletonMeshMap: Map<AssetSkeleton, { mesh: Mesh[]; bounding: AssetSubMeshData[] }>,\r\n nodeMap: Map<AssetHierarchyNode, SceneNode>,\r\n instancing: boolean\r\n ) {\r\n const node: SceneNode = new SceneNode(scene);\r\n nodeMap.set(assetNode, node);\r\n node.name = assetNode.name ?? '';\r\n node.position.set(assetNode.position);\r\n node.rotation.set(assetNode.rotation);\r\n node.scale.set(assetNode.scaling);\r\n if (assetNode.mesh) {\r\n const meshData = assetNode.mesh;\r\n const skeleton = assetNode.skeleton;\r\n for (const subMesh of meshData.subMeshes) {\r\n for (const instance of assetNode.instances) {\r\n const meshNode = new Mesh(scene);\r\n meshNode.position = instance.t;\r\n meshNode.scale = instance.s;\r\n meshNode.rotation = instance.r;\r\n meshNode.name = subMesh.name;\r\n meshNode.clipTestEnabled = true;\r\n meshNode.showState = 'inherit';\r\n meshNode.skinAnimation = !!skeleton;\r\n meshNode.morphAnimation = subMesh.numTargets > 0;\r\n meshNode.primitive = subMesh.primitive.get();\r\n meshNode.material =\r\n instancing && !meshNode.skinAnimation && !meshNode.morphAnimation\r\n ? subMesh.material.get().createInstance()\r\n : subMesh.material.get().clone();\r\n meshNode.parent = node;\r\n subMesh.mesh = meshNode;\r\n processMorphData(subMesh, meshData.morphWeights);\r\n if (skeleton) {\r\n if (!skeletonMeshMap.has(skeleton)) {\r\n skeletonMeshMap.set(skeleton, { mesh: [meshNode], bounding: [subMesh] });\r\n } else {\r\n skeletonMeshMap.get(skeleton).mesh.push(meshNode);\r\n skeletonMeshMap.get(skeleton).bounding.push(subMesh);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n node.parent = parent;\r\n for (const child of assetNode.children) {\r\n this.setAssetNodeToSceneNode(scene, node, child, skeletonMeshMap, nodeMap, instancing);\r\n }\r\n }\r\n}\r\n"],"names":["NamedObject","name","AssetHierarchyNode","_parent","_position","_rotation","_scaling","_mesh","_skeleton","_attachToSkeleton","_meshAttached","_matrix","_worldMatrix","_weights","_children","_instances","parent","Vector3","zero","Quaternion","identity","one","addChild","matrix","worldMatrix","mesh","data","setMeshAttached","instances","weights","val","skeleton","position","rotation","scaling","meshAttached","children","skeletonAttached","computeTransforms","parentTransform","Matrix4x4","rotateLeft","translateLeft","multiply","child","Error","push","removeChild","index","indexOf","splice","attachToSkeleton","Set","add","AssetSkeleton","pivot","joints","inverseBindMatrices","bindPoseMatrices","addJoint","joint","inverseBindMatrix","AssetScene","rootNodes","SharedModel","Disposable","_name","_skeletons","_nodes","_scenes","_animations","_activeScene","scenes","animations","skeletons","nodes","activeScene","addNode","childNode","addSkeleton","addAnimation","animation","createSceneNode","scene","instancing","group","SceneNode","animationSet","i","length","assetScene","skeletonMeshMap","Map","nodeMap","k","setAssetNodeToSceneNode","animationData","getAnimationClip","baseName","t","createAnimation","track","tracks","type","addTrack","get","node","NodeTranslationTrack","interpolator","NodeScaleTrack","NodeRotationTrack","m","subMeshes","stride","MAX_MORPH_TARGETS","console","error","morphTrack","MorphTargetTrack","sk","Skeleton","map","bounding","iterate","sealed","sharedModel","onDispose","shift","subMesh","primitive","dispose","material","assetNode","set","scale","meshData","instance","meshNode","Mesh","s","r","clipTestEnabled","showState","skinAnimation","morphAnimation","numTargets","createInstance","clone","processMorphData","morphWeights","has"],"mappings":"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"}