@zephyr3d/scene 0.7.1 → 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 (441) hide show
  1. package/dist/animation/animation.js +0 -18
  2. package/dist/animation/animation.js.map +1 -1
  3. package/dist/animation/animationset.js +200 -3
  4. package/dist/animation/animationset.js.map +1 -1
  5. package/dist/animation/ik/ccd_solver.js +371 -0
  6. package/dist/animation/ik/ccd_solver.js.map +1 -0
  7. package/dist/animation/ik/fabrik_solver.js +398 -0
  8. package/dist/animation/ik/fabrik_solver.js.map +1 -0
  9. package/dist/animation/ik/ik_angle_constraint.js +181 -0
  10. package/dist/animation/ik/ik_angle_constraint.js.map +1 -0
  11. package/dist/animation/ik/ik_chain.js +163 -0
  12. package/dist/animation/ik/ik_chain.js.map +1 -0
  13. package/dist/animation/ik/ik_constraint.js +25 -0
  14. package/dist/animation/ik/ik_constraint.js.map +1 -0
  15. package/dist/animation/ik/ik_pole_constraint.js +128 -0
  16. package/dist/animation/ik/ik_pole_constraint.js.map +1 -0
  17. package/dist/animation/ik/ik_solver.js +48 -0
  18. package/dist/animation/ik/ik_solver.js.map +1 -0
  19. package/dist/animation/ik/ik_track.js +96 -0
  20. package/dist/animation/ik/ik_track.js.map +1 -0
  21. package/dist/animation/ik/ik_utils.js +191 -0
  22. package/dist/animation/ik/ik_utils.js.map +1 -0
  23. package/dist/animation/ik/two_bone_ik_solver.js +331 -0
  24. package/dist/animation/ik/two_bone_ik_solver.js.map +1 -0
  25. package/dist/animation/ik_modifier.js +61 -0
  26. package/dist/animation/ik_modifier.js.map +1 -0
  27. package/dist/animation/ik_postprocessor.js +71 -0
  28. package/dist/animation/ik_postprocessor.js.map +1 -0
  29. package/dist/animation/manual_transform_processor.js +156 -0
  30. package/dist/animation/manual_transform_processor.js.map +1 -0
  31. package/dist/animation/skeleton.js +55 -51
  32. package/dist/animation/skeleton.js.map +1 -1
  33. package/dist/animation/skeleton_modifier.js +38 -0
  34. package/dist/animation/skeleton_modifier.js.map +1 -0
  35. package/dist/animation/skeleton_postprocessor.js +50 -0
  36. package/dist/animation/skeleton_postprocessor.js.map +1 -0
  37. package/dist/animation/spring/multi_chain_spring_system.js +503 -0
  38. package/dist/animation/spring/multi_chain_spring_system.js.map +1 -0
  39. package/dist/animation/spring/spring_bone.js +240 -0
  40. package/dist/animation/spring/spring_bone.js.map +1 -0
  41. package/dist/animation/spring/spring_bone_collider.js +198 -0
  42. package/dist/animation/spring/spring_bone_collider.js.map +1 -0
  43. package/dist/animation/spring/spring_bone_constraint.js +170 -0
  44. package/dist/animation/spring/spring_bone_constraint.js.map +1 -0
  45. package/dist/animation/spring/spring_bone_system.js +328 -0
  46. package/dist/animation/spring/spring_bone_system.js.map +1 -0
  47. package/dist/animation/spring/spring_chain.js +103 -0
  48. package/dist/animation/spring/spring_chain.js.map +1 -0
  49. package/dist/animation/spring/spring_collider.js +247 -0
  50. package/dist/animation/spring/spring_collider.js.map +1 -0
  51. package/dist/animation/spring/spring_constraint.js +21 -0
  52. package/dist/animation/spring/spring_constraint.js.map +1 -0
  53. package/dist/animation/spring/spring_particle.js +20 -0
  54. package/dist/animation/spring/spring_particle.js.map +1 -0
  55. package/dist/animation/spring/spring_system.js +526 -0
  56. package/dist/animation/spring/spring_system.js.map +1 -0
  57. package/dist/animation/spring_modifier.js +45 -0
  58. package/dist/animation/spring_modifier.js.map +1 -0
  59. package/dist/animation/spring_postprocessor.js +54 -0
  60. package/dist/animation/spring_postprocessor.js.map +1 -0
  61. package/dist/app/screen.js +1 -1
  62. package/dist/app/screen.js.map +1 -1
  63. package/dist/asset/model.js +10 -6
  64. package/dist/asset/model.js.map +1 -1
  65. package/dist/camera/perspectivecamera.js +3 -3
  66. package/dist/camera/perspectivecamera.js.map +1 -1
  67. package/dist/index.d.ts +1400 -4
  68. package/dist/index.js +16 -0
  69. package/dist/index.js.map +1 -1
  70. package/dist/material/mixins/lightmodel/blinnphong.js +66 -4
  71. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  72. package/dist/material/mixins/pbr/common.js +20 -17
  73. package/dist/material/mixins/pbr/common.js.map +1 -1
  74. package/dist/material/shader/helper.js +5 -3
  75. package/dist/material/shader/helper.js.map +1 -1
  76. package/dist/render/gpu_picking.js +100 -0
  77. package/dist/render/gpu_picking.js.map +1 -0
  78. package/dist/render/rendergraph/device_pool_allocator.js +41 -0
  79. package/dist/render/rendergraph/device_pool_allocator.js.map +1 -0
  80. package/dist/render/rendergraph/executor.js +146 -0
  81. package/dist/render/rendergraph/executor.js.map +1 -0
  82. package/dist/render/rendergraph/forward_plus_builder.js +414 -0
  83. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -0
  84. package/dist/render/rendergraph/rendergraph.js +306 -0
  85. package/dist/render/rendergraph/rendergraph.js.map +1 -0
  86. package/dist/render/rendergraph/types.js +57 -0
  87. package/dist/render/rendergraph/types.js.map +1 -0
  88. package/dist/render/sky_motion_vector.js +85 -0
  89. package/dist/render/sky_motion_vector.js.map +1 -0
  90. package/dist/scene/mesh.js +15 -23
  91. package/dist/scene/mesh.js.map +1 -1
  92. package/dist/utility/serialization/scene/animation.js +24 -23
  93. package/dist/utility/serialization/scene/animation.js.map +1 -1
  94. package/dist/utility/serialization/scene/material.js +62 -0
  95. package/dist/utility/serialization/scene/material.js.map +1 -1
  96. package/dist/utility/serialization/scene/node.js +1 -1
  97. package/package.json +3 -3
  98. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  99. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  100. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  101. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  102. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  103. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  104. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  105. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  106. package/dist/src/animation/animation.js +0 -127
  107. package/dist/src/animation/animation.js.map +0 -1
  108. package/dist/src/animation/animationset.js +0 -255
  109. package/dist/src/animation/animationset.js.map +0 -1
  110. package/dist/src/animation/animationtrack.js +0 -34
  111. package/dist/src/animation/animationtrack.js.map +0 -1
  112. package/dist/src/animation/eulerrotationtrack.js +0 -52
  113. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  114. package/dist/src/animation/morphtarget.js +0 -93
  115. package/dist/src/animation/morphtarget.js.map +0 -1
  116. package/dist/src/animation/morphtrack.js +0 -70
  117. package/dist/src/animation/morphtrack.js.map +0 -1
  118. package/dist/src/animation/proptrack.js +0 -161
  119. package/dist/src/animation/proptrack.js.map +0 -1
  120. package/dist/src/animation/rotationtrack.js +0 -51
  121. package/dist/src/animation/rotationtrack.js.map +0 -1
  122. package/dist/src/animation/scaletrack.js +0 -50
  123. package/dist/src/animation/scaletrack.js.map +0 -1
  124. package/dist/src/animation/skeleton.js +0 -204
  125. package/dist/src/animation/skeleton.js.map +0 -1
  126. package/dist/src/animation/translationtrack.js +0 -50
  127. package/dist/src/animation/translationtrack.js.map +0 -1
  128. package/dist/src/app/app.js +0 -129
  129. package/dist/src/app/app.js.map +0 -1
  130. package/dist/src/app/inputmgr.js +0 -267
  131. package/dist/src/app/inputmgr.js.map +0 -1
  132. package/dist/src/asset/assetmanager.js +0 -404
  133. package/dist/src/asset/assetmanager.js.map +0 -1
  134. package/dist/src/asset/builtin.js +0 -337
  135. package/dist/src/asset/builtin.js.map +0 -1
  136. package/dist/src/asset/loaders/dds/dds.js +0 -470
  137. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  138. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  139. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  140. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  141. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  142. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  143. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  144. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  145. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  146. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  147. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  148. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  149. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  150. package/dist/src/asset/loaders/loader.js +0 -45
  151. package/dist/src/asset/loaders/loader.js.map +0 -1
  152. package/dist/src/asset/model.js +0 -414
  153. package/dist/src/asset/model.js.map +0 -1
  154. package/dist/src/blitter/bilateralblur.js +0 -221
  155. package/dist/src/blitter/bilateralblur.js.map +0 -1
  156. package/dist/src/blitter/blitter.js +0 -390
  157. package/dist/src/blitter/blitter.js.map +0 -1
  158. package/dist/src/blitter/box.js +0 -118
  159. package/dist/src/blitter/box.js.map +0 -1
  160. package/dist/src/blitter/copy.js +0 -22
  161. package/dist/src/blitter/copy.js.map +0 -1
  162. package/dist/src/blitter/gaussianblur.js +0 -228
  163. package/dist/src/blitter/gaussianblur.js.map +0 -1
  164. package/dist/src/camera/base.js +0 -92
  165. package/dist/src/camera/base.js.map +0 -1
  166. package/dist/src/camera/camera.js +0 -1005
  167. package/dist/src/camera/camera.js.map +0 -1
  168. package/dist/src/camera/fps.js +0 -238
  169. package/dist/src/camera/fps.js.map +0 -1
  170. package/dist/src/camera/orbit.js +0 -245
  171. package/dist/src/camera/orbit.js.map +0 -1
  172. package/dist/src/camera/orthocamera.js +0 -167
  173. package/dist/src/camera/orthocamera.js.map +0 -1
  174. package/dist/src/camera/perspectivecamera.js +0 -141
  175. package/dist/src/camera/perspectivecamera.js.map +0 -1
  176. package/dist/src/index.js +0 -120
  177. package/dist/src/index.js.map +0 -1
  178. package/dist/src/material/blinn.js +0 -81
  179. package/dist/src/material/blinn.js.map +0 -1
  180. package/dist/src/material/grassmaterial.js +0 -113
  181. package/dist/src/material/grassmaterial.js.map +0 -1
  182. package/dist/src/material/lambert.js +0 -92
  183. package/dist/src/material/lambert.js.map +0 -1
  184. package/dist/src/material/material.js +0 -301
  185. package/dist/src/material/material.js.map +0 -1
  186. package/dist/src/material/meshmaterial.js +0 -704
  187. package/dist/src/material/meshmaterial.js.map +0 -1
  188. package/dist/src/material/mixins/albedocolor.js +0 -76
  189. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  190. package/dist/src/material/mixins/foliage.js +0 -47
  191. package/dist/src/material/mixins/foliage.js.map +0 -1
  192. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  193. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  194. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  195. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  196. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  197. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  198. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  199. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  200. package/dist/src/material/mixins/lit.js +0 -476
  201. package/dist/src/material/mixins/lit.js.map +0 -1
  202. package/dist/src/material/mixins/pbr/common.js +0 -918
  203. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  204. package/dist/src/material/mixins/texture.js +0 -172
  205. package/dist/src/material/mixins/texture.js.map +0 -1
  206. package/dist/src/material/mixins/vertexcolor.js +0 -56
  207. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  208. package/dist/src/material/particle.js +0 -178
  209. package/dist/src/material/particle.js.map +0 -1
  210. package/dist/src/material/pbrmr.js +0 -97
  211. package/dist/src/material/pbrmr.js.map +0 -1
  212. package/dist/src/material/pbrsg.js +0 -97
  213. package/dist/src/material/pbrsg.js.map +0 -1
  214. package/dist/src/material/shader/helper.js +0 -1209
  215. package/dist/src/material/shader/helper.js.map +0 -1
  216. package/dist/src/material/terrain-cm.js +0 -606
  217. package/dist/src/material/terrain-cm.js.map +0 -1
  218. package/dist/src/material/terrainmaterial.js +0 -375
  219. package/dist/src/material/terrainmaterial.js.map +0 -1
  220. package/dist/src/material/unlit.js +0 -41
  221. package/dist/src/material/unlit.js.map +0 -1
  222. package/dist/src/material/water.js +0 -417
  223. package/dist/src/material/water.js.map +0 -1
  224. package/dist/src/posteffect/bloom.js +0 -361
  225. package/dist/src/posteffect/bloom.js.map +0 -1
  226. package/dist/src/posteffect/compositor.js +0 -226
  227. package/dist/src/posteffect/compositor.js.map +0 -1
  228. package/dist/src/posteffect/fxaa.js +0 -273
  229. package/dist/src/posteffect/fxaa.js.map +0 -1
  230. package/dist/src/posteffect/grayscale.js +0 -69
  231. package/dist/src/posteffect/grayscale.js.map +0 -1
  232. package/dist/src/posteffect/motionblur.js +0 -96
  233. package/dist/src/posteffect/motionblur.js.map +0 -1
  234. package/dist/src/posteffect/posteffect.js +0 -126
  235. package/dist/src/posteffect/posteffect.js.map +0 -1
  236. package/dist/src/posteffect/sao.js +0 -324
  237. package/dist/src/posteffect/sao.js.map +0 -1
  238. package/dist/src/posteffect/ssr.js +0 -489
  239. package/dist/src/posteffect/ssr.js.map +0 -1
  240. package/dist/src/posteffect/taa.js +0 -172
  241. package/dist/src/posteffect/taa.js.map +0 -1
  242. package/dist/src/posteffect/tonemap.js +0 -94
  243. package/dist/src/posteffect/tonemap.js.map +0 -1
  244. package/dist/src/render/abuffer_oit.js +0 -361
  245. package/dist/src/render/abuffer_oit.js.map +0 -1
  246. package/dist/src/render/clipmap.js +0 -851
  247. package/dist/src/render/clipmap.js.map +0 -1
  248. package/dist/src/render/cluster_light.js +0 -333
  249. package/dist/src/render/cluster_light.js.map +0 -1
  250. package/dist/src/render/cull_visitor.js +0 -187
  251. package/dist/src/render/cull_visitor.js.map +0 -1
  252. package/dist/src/render/depthpass.js +0 -68
  253. package/dist/src/render/depthpass.js.map +0 -1
  254. package/dist/src/render/drawable_mixin.js +0 -227
  255. package/dist/src/render/drawable_mixin.js.map +0 -1
  256. package/dist/src/render/envlight.js +0 -463
  257. package/dist/src/render/envlight.js.map +0 -1
  258. package/dist/src/render/fbm_wavegenerator.js +0 -251
  259. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  260. package/dist/src/render/fft_wavegenerator.js +0 -1006
  261. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  262. package/dist/src/render/fullscreenquad.js +0 -38
  263. package/dist/src/render/fullscreenquad.js.map +0 -1
  264. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  265. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  266. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  267. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  268. package/dist/src/render/hzb.js +0 -273
  269. package/dist/src/render/hzb.js.map +0 -1
  270. package/dist/src/render/lightpass.js +0 -172
  271. package/dist/src/render/lightpass.js.map +0 -1
  272. package/dist/src/render/objectcolorpass.js +0 -51
  273. package/dist/src/render/objectcolorpass.js.map +0 -1
  274. package/dist/src/render/primitive.js +0 -364
  275. package/dist/src/render/primitive.js.map +0 -1
  276. package/dist/src/render/render_queue.js +0 -467
  277. package/dist/src/render/render_queue.js.map +0 -1
  278. package/dist/src/render/renderbundle_wrapper.js +0 -152
  279. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  280. package/dist/src/render/renderer.js +0 -455
  281. package/dist/src/render/renderer.js.map +0 -1
  282. package/dist/src/render/renderpass.js +0 -200
  283. package/dist/src/render/renderpass.js.map +0 -1
  284. package/dist/src/render/shadowmap_pass.js +0 -56
  285. package/dist/src/render/shadowmap_pass.js.map +0 -1
  286. package/dist/src/render/sky.js +0 -1103
  287. package/dist/src/render/sky.js.map +0 -1
  288. package/dist/src/render/weightedblended_oit.js +0 -168
  289. package/dist/src/render/weightedblended_oit.js.map +0 -1
  290. package/dist/src/scene/batchgroup.js +0 -162
  291. package/dist/src/scene/batchgroup.js.map +0 -1
  292. package/dist/src/scene/environment.js +0 -209
  293. package/dist/src/scene/environment.js.map +0 -1
  294. package/dist/src/scene/graph_node.js +0 -72
  295. package/dist/src/scene/graph_node.js.map +0 -1
  296. package/dist/src/scene/light.js +0 -416
  297. package/dist/src/scene/light.js.map +0 -1
  298. package/dist/src/scene/mesh.js +0 -341
  299. package/dist/src/scene/mesh.js.map +0 -1
  300. package/dist/src/scene/octree.js +0 -649
  301. package/dist/src/scene/octree.js.map +0 -1
  302. package/dist/src/scene/particlesys.js +0 -738
  303. package/dist/src/scene/particlesys.js.map +0 -1
  304. package/dist/src/scene/raycast_visitor.js +0 -103
  305. package/dist/src/scene/raycast_visitor.js.map +0 -1
  306. package/dist/src/scene/scene.js +0 -284
  307. package/dist/src/scene/scene.js.map +0 -1
  308. package/dist/src/scene/scene_node.js +0 -732
  309. package/dist/src/scene/scene_node.js.map +0 -1
  310. package/dist/src/scene/terrain/grass.js +0 -278
  311. package/dist/src/scene/terrain/grass.js.map +0 -1
  312. package/dist/src/scene/terrain/heightfield.js +0 -475
  313. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  314. package/dist/src/scene/terrain/patch.js +0 -530
  315. package/dist/src/scene/terrain/patch.js.map +0 -1
  316. package/dist/src/scene/terrain/quadtree.js +0 -461
  317. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  318. package/dist/src/scene/terrain/terrain.js +0 -246
  319. package/dist/src/scene/terrain/terrain.js.map +0 -1
  320. package/dist/src/scene/terrain-cm/grass.js +0 -594
  321. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  322. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  323. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  324. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  325. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  326. package/dist/src/scene/water.js +0 -374
  327. package/dist/src/scene/water.js.map +0 -1
  328. package/dist/src/shaders/atmosphere.js +0 -957
  329. package/dist/src/shaders/atmosphere.js.map +0 -1
  330. package/dist/src/shaders/fog.js +0 -112
  331. package/dist/src/shaders/fog.js.map +0 -1
  332. package/dist/src/shaders/misc.js +0 -266
  333. package/dist/src/shaders/misc.js.map +0 -1
  334. package/dist/src/shaders/noise.js +0 -222
  335. package/dist/src/shaders/noise.js.map +0 -1
  336. package/dist/src/shaders/pbr.js +0 -51
  337. package/dist/src/shaders/pbr.js.map +0 -1
  338. package/dist/src/shaders/shadow.js +0 -636
  339. package/dist/src/shaders/shadow.js.map +0 -1
  340. package/dist/src/shaders/ssr.js +0 -490
  341. package/dist/src/shaders/ssr.js.map +0 -1
  342. package/dist/src/shaders/temporal.js +0 -215
  343. package/dist/src/shaders/temporal.js.map +0 -1
  344. package/dist/src/shaders/water.js +0 -756
  345. package/dist/src/shaders/water.js.map +0 -1
  346. package/dist/src/shadow/esm.js +0 -237
  347. package/dist/src/shadow/esm.js.map +0 -1
  348. package/dist/src/shadow/pcf_opt.js +0 -181
  349. package/dist/src/shadow/pcf_opt.js.map +0 -1
  350. package/dist/src/shadow/pcf_pd.js +0 -189
  351. package/dist/src/shadow/pcf_pd.js.map +0 -1
  352. package/dist/src/shadow/shader.js +0 -37
  353. package/dist/src/shadow/shader.js.map +0 -1
  354. package/dist/src/shadow/shadow_impl.js +0 -15
  355. package/dist/src/shadow/shadow_impl.js.map +0 -1
  356. package/dist/src/shadow/shadowmapper.js +0 -790
  357. package/dist/src/shadow/shadowmapper.js.map +0 -1
  358. package/dist/src/shadow/ssm.js +0 -159
  359. package/dist/src/shadow/ssm.js.map +0 -1
  360. package/dist/src/shadow/vsm.js +0 -297
  361. package/dist/src/shadow/vsm.js.map +0 -1
  362. package/dist/src/shapes/box.js +0 -386
  363. package/dist/src/shapes/box.js.map +0 -1
  364. package/dist/src/shapes/cylinder.js +0 -125
  365. package/dist/src/shapes/cylinder.js.map +0 -1
  366. package/dist/src/shapes/plane.js +0 -88
  367. package/dist/src/shapes/plane.js.map +0 -1
  368. package/dist/src/shapes/shape.js +0 -87
  369. package/dist/src/shapes/shape.js.map +0 -1
  370. package/dist/src/shapes/sphere.js +0 -114
  371. package/dist/src/shapes/sphere.js.map +0 -1
  372. package/dist/src/shapes/tetrahedron.js +0 -188
  373. package/dist/src/shapes/tetrahedron.js.map +0 -1
  374. package/dist/src/shapes/torus.js +0 -111
  375. package/dist/src/shapes/torus.js.map +0 -1
  376. package/dist/src/utility/aabbtree.js +0 -400
  377. package/dist/src/utility/aabbtree.js.map +0 -1
  378. package/dist/src/utility/bounding_volume.js +0 -29
  379. package/dist/src/utility/bounding_volume.js.map +0 -1
  380. package/dist/src/utility/debug.js +0 -28
  381. package/dist/src/utility/debug.js.map +0 -1
  382. package/dist/src/utility/draco/decoder.js +0 -116
  383. package/dist/src/utility/draco/decoder.js.map +0 -1
  384. package/dist/src/utility/misc.js +0 -105
  385. package/dist/src/utility/misc.js.map +0 -1
  386. package/dist/src/utility/panorama.js +0 -163
  387. package/dist/src/utility/panorama.js.map +0 -1
  388. package/dist/src/utility/pmrem.js +0 -354
  389. package/dist/src/utility/pmrem.js.map +0 -1
  390. package/dist/src/utility/rendermipmap.js +0 -115
  391. package/dist/src/utility/rendermipmap.js.map +0 -1
  392. package/dist/src/utility/serialization/json.js +0 -402
  393. package/dist/src/utility/serialization/json.js.map +0 -1
  394. package/dist/src/utility/serialization/manager.js +0 -623
  395. package/dist/src/utility/serialization/manager.js.map +0 -1
  396. package/dist/src/utility/serialization/scene/animation.js +0 -248
  397. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  398. package/dist/src/utility/serialization/scene/batch.js +0 -59
  399. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  400. package/dist/src/utility/serialization/scene/camera.js +0 -790
  401. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  402. package/dist/src/utility/serialization/scene/common.js +0 -222
  403. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  404. package/dist/src/utility/serialization/scene/light.js +0 -575
  405. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  406. package/dist/src/utility/serialization/scene/material.js +0 -1111
  407. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  408. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  409. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  410. package/dist/src/utility/serialization/scene/misc.js +0 -39
  411. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  412. package/dist/src/utility/serialization/scene/node.js +0 -451
  413. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  414. package/dist/src/utility/serialization/scene/particle.js +0 -425
  415. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  416. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  417. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  418. package/dist/src/utility/serialization/scene/scene.js +0 -704
  419. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  420. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  421. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  422. package/dist/src/utility/serialization/scene/water.js +0 -465
  423. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  424. package/dist/src/utility/shprojector.js +0 -297
  425. package/dist/src/utility/shprojector.js.map +0 -1
  426. package/dist/src/utility/textures/ggxlut.js +0 -213
  427. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  428. package/dist/src/utility/textures/gradientnoise.js +0 -62
  429. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  430. package/dist/src/utility/textures/randomnoise.js +0 -41
  431. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  432. package/dist/src/values.js +0 -162
  433. package/dist/src/values.js.map +0 -1
  434. package/dist/utility/blueprint/material/common.js +0 -7
  435. package/dist/utility/blueprint/material/common.js.map +0 -1
  436. package/dist/utility/serialization/blueprint/constants.js +0 -255
  437. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  438. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  439. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  440. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  441. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
@@ -1,255 +0,0 @@
1
- import { Disposable, DWeakRef, weightedAverage } from '@zephyr3d/base';
2
- import { AnimationClip } from './animation.js';
3
-
4
- /**
5
- * Animation set
6
- * @public
7
- */ class AnimationSet extends Disposable {
8
- /** @internal */ _model;
9
- /** @internal */ _animations;
10
- /** @internal */ _activeTracks;
11
- /** @internal */ _activeSkeletons;
12
- /** @internal */ _activeAnimations;
13
- /**
14
- * Creates an instance of AnimationSet
15
- * @param scene - The scene to which the animation set belongs
16
- * @param model - The model which is controlled by the animation set
17
- */ constructor(model){
18
- super();
19
- this._model = new DWeakRef(model);
20
- this._animations = {};
21
- this._activeTracks = new Map();
22
- this._activeSkeletons = new Map();
23
- this._activeAnimations = new Map();
24
- }
25
- /**
26
- * The model which is controlled by the animation set
27
- */ get model() {
28
- return this._model.get();
29
- }
30
- /**
31
- * How many animations in this set
32
- */ get numAnimations() {
33
- return Object.getOwnPropertyNames(this._animations).length;
34
- }
35
- /**
36
- * Gets an animation clip by name
37
- * @param name - name of the animation to get
38
- */ get(name) {
39
- return this._animations[name] ?? null;
40
- }
41
- /**
42
- * Creates an animation
43
- */ createAnimation(name, embedded = false) {
44
- if (!name || this._animations[name]) {
45
- console.error('Animation must have unique name');
46
- return null;
47
- } else {
48
- const animation = new AnimationClip(name, this, embedded);
49
- this._animations[name] = animation;
50
- return animation;
51
- }
52
- }
53
- /**
54
- * Deletes an animation
55
- */ deleteAnimation(name) {
56
- const animation = this._animations[name];
57
- if (animation) {
58
- this.stopAnimation(name);
59
- delete this._animations[name];
60
- animation.dispose();
61
- }
62
- }
63
- /**
64
- * Gets names of all the animations of the model
65
- * @returns An array of string that contains the animation names
66
- */ getAnimationNames() {
67
- return Object.keys(this._animations);
68
- }
69
- /**
70
- * Updates all animations of the model
71
- */ update(deltaInSeconds) {
72
- this._activeAnimations.forEach((v, k)=>{
73
- if (v.fadeOut > 0 && v.fadeOutStart < 0) {
74
- v.fadeOutStart = v.animateTime;
75
- }
76
- // Update animation time
77
- if (v.firstFrame) {
78
- v.firstFrame = false;
79
- } else {
80
- const timeAdvance = deltaInSeconds * v.speedRatio;
81
- v.currentTime += timeAdvance;
82
- v.animateTime += timeAdvance;
83
- if (v.currentTime > k.timeDuration) {
84
- v.repeatCounter++;
85
- v.currentTime = 0;
86
- } else if (v.currentTime < 0) {
87
- v.repeatCounter++;
88
- v.currentTime = k.timeDuration;
89
- }
90
- if (v.repeat !== 0 && v.repeatCounter >= v.repeat) {
91
- this.stopAnimation(k.name);
92
- } else if (v.fadeOut > 0) {
93
- if (v.animateTime - v.fadeOutStart >= v.fadeOut) {
94
- this.stopAnimation(k.name);
95
- }
96
- }
97
- }
98
- });
99
- // Update tracks
100
- this._activeTracks.forEach((v, k)=>{
101
- v.forEach((alltracks)=>{
102
- // Only deal with tracks which have not been removed
103
- const tracks = alltracks.filter((track)=>track.animation && this.isPlayingAnimation(track.animation.name));
104
- if (tracks.length > 0) {
105
- const weights = tracks.map((track)=>{
106
- const info = this._activeAnimations.get(track.animation);
107
- const weight = info.weight;
108
- const fadeIn = info.fadeIn === 0 ? 1 : Math.min(1, info.animateTime / info.fadeIn);
109
- let fadeOut = 1;
110
- if (info.fadeOut !== 0) {
111
- fadeOut = 1 - (info.animateTime - info.fadeOutStart) / info.fadeOut;
112
- }
113
- return weight * fadeIn * fadeOut;
114
- });
115
- const states = tracks.map((track)=>track.calculateState(k, this._activeAnimations.get(track.animation).currentTime / track.animation.timeDuration * track.getDuration()));
116
- const state = weightedAverage(weights, states, (a, b, t)=>{
117
- return tracks[0].mixState(a, b, t);
118
- });
119
- tracks[0].applyState(k, state);
120
- }
121
- });
122
- });
123
- // Update skeletons
124
- this._activeSkeletons.forEach((v, k)=>{
125
- k.apply();
126
- });
127
- }
128
- /**
129
- * Checks whether an animation is playing
130
- * @param name - Name of the animation to be checked, if not given, checks if any animation is playing
131
- * @returns true if the animation is playing, otherwise false
132
- */ isPlayingAnimation(name) {
133
- return name ? this._activeAnimations.has(this._animations[name]) : this._activeAnimations.size > 0;
134
- }
135
- /**
136
- * Gets the animation clip by name
137
- * @param name - Name of the animation to get
138
- * @returns The animation clip if exists, otherwise null
139
- */ getAnimationClip(name) {
140
- return this._animations[name] ?? null;
141
- }
142
- /**
143
- * Sets the weight of specific animation which is currently playing
144
- * @param name - Name of the animation
145
- * @param weight - New weight value
146
- */ setAnimationWeight(name, weight) {
147
- const ani = this._animations[name];
148
- const info = this._activeAnimations.get(ani);
149
- if (info) {
150
- info.weight = weight;
151
- }
152
- }
153
- /**
154
- * Starts playing an animation of the model
155
- * @param name - Name of the animation to play
156
- * @param options - Playing options
157
- */ playAnimation(name, options) {
158
- const ani = this._animations[name];
159
- if (!ani) {
160
- console.error(`Animation ${name} not exists`);
161
- return;
162
- }
163
- const fadeIn = Math.max(options?.fadeIn ?? 0, 0);
164
- const info = this._activeAnimations.get(ani);
165
- if (info) {
166
- info.fadeOut = 0;
167
- info.fadeIn = fadeIn;
168
- } else {
169
- const repeat = options?.repeat ?? 0;
170
- const speedRatio = options?.speedRatio ?? 1;
171
- const weight = ani.weight;
172
- this._activeAnimations.set(ani, {
173
- repeat,
174
- weight,
175
- speedRatio,
176
- fadeIn,
177
- fadeOut: 0,
178
- repeatCounter: 0,
179
- currentTime: speedRatio < 0 ? ani.timeDuration : 0,
180
- animateTime: 0,
181
- fadeOutStart: 0,
182
- firstFrame: true
183
- });
184
- ani.tracks?.forEach((v, k)=>{
185
- let nodeTracks = this._activeTracks.get(k);
186
- if (!nodeTracks) {
187
- nodeTracks = new Map();
188
- this._activeTracks.set(k, nodeTracks);
189
- }
190
- for (const track of v){
191
- const blendId = track.getBlendId();
192
- let blendedTracks = nodeTracks.get(blendId);
193
- if (!blendedTracks) {
194
- blendedTracks = [];
195
- nodeTracks.set(blendId, blendedTracks);
196
- }
197
- blendedTracks.push(track);
198
- }
199
- });
200
- ani.skeletons?.forEach((v, k)=>{
201
- const refcount = this._activeSkeletons.get(k);
202
- if (refcount) {
203
- this._activeSkeletons.set(k, refcount + 1);
204
- } else {
205
- this._activeSkeletons.set(k, 1);
206
- }
207
- });
208
- }
209
- }
210
- /**
211
- * Stops playing an animation of the model
212
- * @param name - Name of the animation to stop playing
213
- */ stopAnimation(name, options) {
214
- const ani = this._animations[name];
215
- const info = this._activeAnimations.get(ani);
216
- if (info) {
217
- const fadeOut = Math.max(options?.fadeOut ?? 0, 0);
218
- if (fadeOut !== 0) {
219
- info.fadeOut = fadeOut;
220
- info.fadeOutStart = -1;
221
- } else {
222
- this._activeAnimations.delete(ani);
223
- this._activeTracks.forEach((v)=>{
224
- v.forEach((tracks, id)=>{
225
- v.set(id, tracks.filter((track)=>track.animation !== ani));
226
- });
227
- });
228
- ani.skeletons?.forEach((v, k)=>{
229
- const refcount = this._activeSkeletons.get(k);
230
- if (refcount === 1) {
231
- k.reset();
232
- this._activeSkeletons.delete(k);
233
- } else {
234
- this._activeSkeletons.set(k, refcount - 1);
235
- }
236
- });
237
- }
238
- }
239
- }
240
- onDispose() {
241
- super.onDispose();
242
- this._model?.dispose();
243
- this._model = null;
244
- for(const k in this._animations){
245
- this._animations[k].dispose();
246
- }
247
- this._animations = {};
248
- this._activeAnimations.clear();
249
- this._activeSkeletons.clear();
250
- this._activeTracks.clear();
251
- }
252
- }
253
-
254
- export { AnimationSet };
255
- //# sourceMappingURL=animationset.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"animationset.js","sources":["../../../src/animation/animationset.ts"],"sourcesContent":["import { weightedAverage, DWeakRef, Disposable } from '@zephyr3d/base';\r\nimport type { IDisposable } from '@zephyr3d/base';\r\nimport type { SceneNode } from '../scene';\r\nimport { AnimationClip } from './animation';\r\nimport type { AnimationTrack } from './animationtrack';\r\nimport type { Skeleton } from './skeleton';\r\n\r\n/**\r\n * Options for playing animation\r\n * @public\r\n **/\r\nexport type PlayAnimationOptions = {\r\n /**\r\n * Repeat times\r\n *\r\n * @remarks\r\n * Number of loops, 0 for infinite loops. Default value is 0\r\n **/\r\n repeat?: number;\r\n /**\r\n * Speed factor\r\n *\r\n * @remarks\r\n * The larger the absolute value, the faster the speed.\r\n * If it is a negative value, it plays in reverse.\r\n * Default value is 1\r\n */\r\n speedRatio?: number;\r\n /**\r\n * Fade-in time\r\n *\r\n * @remarks\r\n * How long it takes for the animation weight to increase from 0 to weight,\r\n * default is 0, indicating no fade-in effect. Usually used in conjunction\r\n * with the fadeOut parameter of stopAnimation() for seamless transition\r\n * between two animations\r\n **/\r\n fadeIn?: number;\r\n};\r\n\r\n/**\r\n * Options for stop playing animation\r\n * @public\r\n **/\r\nexport type StopAnimationOptions = {\r\n /**\r\n * Fade-out time\r\n *\r\n * @remarks\r\n * How long it takes for the animation weight to decrease from current weight\r\n * to 0, default is 0, indicating no fade-out effect. Usually used in conjunction\r\n * with the fadeIn parameter of startAnimation() for seamless transition between\r\n * two animations\r\n */\r\n fadeOut?: number;\r\n};\r\n\r\n/**\r\n * Animation set\r\n * @public\r\n */\r\nexport class AnimationSet extends Disposable implements IDisposable {\r\n /** @internal */\r\n private _model: DWeakRef<SceneNode>;\r\n /** @internal */\r\n private _animations: Record<string, AnimationClip>;\r\n /** @internal */\r\n private readonly _activeTracks: Map<object, Map<unknown, AnimationTrack[]>>;\r\n /** @internal */\r\n private readonly _activeSkeletons: Map<Skeleton, number>;\r\n /** @internal */\r\n private readonly _activeAnimations: Map<\r\n AnimationClip,\r\n {\r\n currentTime: number;\r\n repeat: number;\r\n repeatCounter: number;\r\n weight: number;\r\n speedRatio: number;\r\n firstFrame: boolean;\r\n fadeIn: number;\r\n fadeOut: number;\r\n fadeOutStart: number;\r\n animateTime: number;\r\n }\r\n >;\r\n /**\r\n * Creates an instance of AnimationSet\r\n * @param scene - The scene to which the animation set belongs\r\n * @param model - The model which is controlled by the animation set\r\n */\r\n constructor(model: SceneNode) {\r\n super();\r\n this._model = new DWeakRef<SceneNode>(model);\r\n this._animations = {};\r\n this._activeTracks = new Map();\r\n this._activeSkeletons = new Map();\r\n this._activeAnimations = new Map();\r\n }\r\n /**\r\n * The model which is controlled by the animation set\r\n */\r\n get model(): SceneNode {\r\n return this._model.get();\r\n }\r\n /**\r\n * How many animations in this set\r\n */\r\n get numAnimations(): number {\r\n return Object.getOwnPropertyNames(this._animations).length;\r\n }\r\n /**\r\n * Gets an animation clip by name\r\n * @param name - name of the animation to get\r\n */\r\n get(name: string): AnimationClip {\r\n return this._animations[name] ?? null;\r\n }\r\n /**\r\n * Creates an animation\r\n */\r\n createAnimation(name: string, embedded = false): AnimationClip {\r\n if (!name || this._animations[name]) {\r\n console.error('Animation must have unique name');\r\n return null;\r\n } else {\r\n const animation = new AnimationClip(name, this, embedded);\r\n this._animations[name] = animation;\r\n return animation;\r\n }\r\n }\r\n /**\r\n * Deletes an animation\r\n */\r\n deleteAnimation(name: string) {\r\n const animation = this._animations[name];\r\n if (animation) {\r\n this.stopAnimation(name);\r\n delete this._animations[name];\r\n animation.dispose();\r\n }\r\n }\r\n /**\r\n * Gets names of all the animations of the model\r\n * @returns An array of string that contains the animation names\r\n */\r\n getAnimationNames(): string[] {\r\n return Object.keys(this._animations);\r\n }\r\n /**\r\n * Updates all animations of the model\r\n */\r\n update(deltaInSeconds: number): void {\r\n this._activeAnimations.forEach((v, k) => {\r\n if (v.fadeOut > 0 && v.fadeOutStart < 0) {\r\n v.fadeOutStart = v.animateTime;\r\n }\r\n // Update animation time\r\n if (v.firstFrame) {\r\n v.firstFrame = false;\r\n } else {\r\n const timeAdvance = deltaInSeconds * v.speedRatio;\r\n v.currentTime += timeAdvance;\r\n v.animateTime += timeAdvance;\r\n if (v.currentTime > k.timeDuration) {\r\n v.repeatCounter++;\r\n v.currentTime = 0;\r\n } else if (v.currentTime < 0) {\r\n v.repeatCounter++;\r\n v.currentTime = k.timeDuration;\r\n }\r\n if (v.repeat !== 0 && v.repeatCounter >= v.repeat) {\r\n this.stopAnimation(k.name);\r\n } else if (v.fadeOut > 0) {\r\n if (v.animateTime - v.fadeOutStart >= v.fadeOut) {\r\n this.stopAnimation(k.name);\r\n }\r\n }\r\n }\r\n });\r\n // Update tracks\r\n this._activeTracks.forEach((v, k) => {\r\n v.forEach((alltracks) => {\r\n // Only deal with tracks which have not been removed\r\n const tracks = alltracks.filter(\r\n (track) => track.animation && this.isPlayingAnimation(track.animation.name)\r\n );\r\n if (tracks.length > 0) {\r\n const weights = tracks.map((track) => {\r\n const info = this._activeAnimations.get(track.animation);\r\n const weight = info.weight;\r\n const fadeIn = info.fadeIn === 0 ? 1 : Math.min(1, info.animateTime / info.fadeIn);\r\n let fadeOut = 1;\r\n if (info.fadeOut !== 0) {\r\n fadeOut = 1 - (info.animateTime - info.fadeOutStart) / info.fadeOut;\r\n }\r\n return weight * fadeIn * fadeOut;\r\n });\r\n const states = tracks.map((track) =>\r\n track.calculateState(\r\n k,\r\n (this._activeAnimations.get(track.animation).currentTime / track.animation.timeDuration) *\r\n track.getDuration()\r\n )\r\n );\r\n const state = weightedAverage(weights, states, (a, b, t) => {\r\n return tracks[0].mixState(a, b, t);\r\n });\r\n tracks[0].applyState(k, state);\r\n }\r\n });\r\n });\r\n // Update skeletons\r\n this._activeSkeletons.forEach((v, k) => {\r\n k.apply();\r\n });\r\n }\r\n /**\r\n * Checks whether an animation is playing\r\n * @param name - Name of the animation to be checked, if not given, checks if any animation is playing\r\n * @returns true if the animation is playing, otherwise false\r\n */\r\n isPlayingAnimation(name?: string): boolean {\r\n return name ? this._activeAnimations.has(this._animations[name]) : this._activeAnimations.size > 0;\r\n }\r\n /**\r\n * Gets the animation clip by name\r\n * @param name - Name of the animation to get\r\n * @returns The animation clip if exists, otherwise null\r\n */\r\n getAnimationClip(name: string): AnimationClip | null {\r\n return this._animations[name] ?? null;\r\n }\r\n /**\r\n * Sets the weight of specific animation which is currently playing\r\n * @param name - Name of the animation\r\n * @param weight - New weight value\r\n */\r\n setAnimationWeight(name: string, weight: number): void {\r\n const ani = this._animations[name];\r\n const info = this._activeAnimations.get(ani);\r\n if (info) {\r\n info.weight = weight;\r\n }\r\n }\r\n /**\r\n * Starts playing an animation of the model\r\n * @param name - Name of the animation to play\r\n * @param options - Playing options\r\n */\r\n playAnimation(name: string, options?: PlayAnimationOptions): void {\r\n const ani = this._animations[name];\r\n if (!ani) {\r\n console.error(`Animation ${name} not exists`);\r\n return;\r\n }\r\n const fadeIn = Math.max(options?.fadeIn ?? 0, 0);\r\n const info = this._activeAnimations.get(ani);\r\n if (info) {\r\n info.fadeOut = 0;\r\n info.fadeIn = fadeIn;\r\n } else {\r\n const repeat = options?.repeat ?? 0;\r\n const speedRatio = options?.speedRatio ?? 1;\r\n const weight = ani.weight;\r\n this._activeAnimations.set(ani, {\r\n repeat,\r\n weight,\r\n speedRatio,\r\n fadeIn,\r\n fadeOut: 0,\r\n repeatCounter: 0,\r\n currentTime: speedRatio < 0 ? ani.timeDuration : 0,\r\n animateTime: 0,\r\n fadeOutStart: 0,\r\n firstFrame: true\r\n });\r\n ani.tracks?.forEach((v, k) => {\r\n let nodeTracks = this._activeTracks.get(k);\r\n if (!nodeTracks) {\r\n nodeTracks = new Map();\r\n this._activeTracks.set(k, nodeTracks);\r\n }\r\n for (const track of v) {\r\n const blendId = track.getBlendId();\r\n let blendedTracks = nodeTracks.get(blendId);\r\n if (!blendedTracks) {\r\n blendedTracks = [];\r\n nodeTracks.set(blendId, blendedTracks);\r\n }\r\n blendedTracks.push(track);\r\n }\r\n });\r\n ani.skeletons?.forEach((v, k) => {\r\n const refcount = this._activeSkeletons.get(k);\r\n if (refcount) {\r\n this._activeSkeletons.set(k, refcount + 1);\r\n } else {\r\n this._activeSkeletons.set(k, 1);\r\n }\r\n });\r\n }\r\n }\r\n /**\r\n * Stops playing an animation of the model\r\n * @param name - Name of the animation to stop playing\r\n */\r\n stopAnimation(name: string, options?: StopAnimationOptions): void {\r\n const ani = this._animations[name];\r\n const info = this._activeAnimations.get(ani);\r\n if (info) {\r\n const fadeOut = Math.max(options?.fadeOut ?? 0, 0);\r\n if (fadeOut !== 0) {\r\n info.fadeOut = fadeOut;\r\n info.fadeOutStart = -1;\r\n } else {\r\n this._activeAnimations.delete(ani);\r\n this._activeTracks.forEach((v) => {\r\n v.forEach((tracks, id) => {\r\n v.set(\r\n id,\r\n tracks.filter((track) => track.animation !== ani)\r\n );\r\n });\r\n });\r\n ani.skeletons?.forEach((v, k) => {\r\n const refcount = this._activeSkeletons.get(k);\r\n if (refcount === 1) {\r\n k.reset();\r\n this._activeSkeletons.delete(k);\r\n } else {\r\n this._activeSkeletons.set(k, refcount - 1);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n protected onDispose() {\r\n super.onDispose();\r\n this._model?.dispose();\r\n this._model = null;\r\n for (const k in this._animations) {\r\n this._animations[k].dispose();\r\n }\r\n this._animations = {};\r\n this._activeAnimations.clear();\r\n this._activeSkeletons.clear();\r\n this._activeTracks.clear();\r\n }\r\n}\r\n"],"names":["AnimationSet","Disposable","model","_model","DWeakRef","_animations","_activeTracks","Map","_activeSkeletons","_activeAnimations","get","numAnimations","Object","getOwnPropertyNames","length","name","createAnimation","embedded","console","error","animation","AnimationClip","deleteAnimation","stopAnimation","dispose","getAnimationNames","keys","update","deltaInSeconds","forEach","v","k","fadeOut","fadeOutStart","animateTime","firstFrame","timeAdvance","speedRatio","currentTime","timeDuration","repeatCounter","repeat","alltracks","tracks","filter","track","isPlayingAnimation","weights","map","info","weight","fadeIn","Math","min","states","calculateState","getDuration","state","weightedAverage","a","b","t","mixState","applyState","apply","has","size","getAnimationClip","setAnimationWeight","ani","playAnimation","options","max","set","nodeTracks","blendId","getBlendId","blendedTracks","push","skeletons","refcount","delete","id","reset","onDispose","clear"],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- /**
2
- * Base class for any kind of animation track
3
- * @public
4
- */ class AnimationTrack {
5
- /** @internal */ _name;
6
- /** @internal */ _embedded;
7
- /** @internal */ _animation;
8
- /**
9
- * Creates a new animation track
10
- * @param embedded - Whether this track is an embedded track
11
- */ constructor(embedded){
12
- this._name = 'noname';
13
- this._embedded = !!embedded;
14
- }
15
- /** Name of the track */ get name() {
16
- return this._name;
17
- }
18
- set name(val) {
19
- this._name = val;
20
- }
21
- /** Wether this is an embedded track */ get embedded() {
22
- return this._embedded;
23
- }
24
- /** Animation this track belongs to */ get animation() {
25
- return this._animation;
26
- }
27
- set animation(ani) {
28
- this._animation = ani;
29
- }
30
- /** Stops playing the track and rewind to the first frame */ reset(_target) {}
31
- }
32
-
33
- export { AnimationTrack };
34
- //# sourceMappingURL=animationtrack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"animationtrack.js","sources":["../../../src/animation/animationtrack.ts"],"sourcesContent":["import type { AnimationClip } from './animation';\r\n\r\n/**\r\n * Base class for any kind of animation track\r\n * @public\r\n */\r\nexport abstract class AnimationTrack<StateType = unknown> {\r\n /** @internal */\r\n protected _name: string;\r\n /** @internal */\r\n protected _embedded: boolean;\r\n /** @internal */\r\n protected _animation: AnimationClip;\r\n /**\r\n * Creates a new animation track\r\n * @param embedded - Whether this track is an embedded track\r\n */\r\n constructor(embedded?: boolean) {\r\n this._name = 'noname';\r\n this._embedded = !!embedded;\r\n }\r\n /** Name of the track */\r\n get name() {\r\n return this._name;\r\n }\r\n set name(val: string) {\r\n this._name = val;\r\n }\r\n /** Wether this is an embedded track */\r\n get embedded(): boolean {\r\n return this._embedded;\r\n }\r\n /** Animation this track belongs to */\r\n get animation(): AnimationClip {\r\n return this._animation;\r\n }\r\n set animation(ani: AnimationClip) {\r\n this._animation = ani;\r\n }\r\n /** Stops playing the track and rewind to the first frame */\r\n reset(_target: object) {}\r\n /**\r\n * Calculates current animation state\r\n * @param target - The animated object\r\n * @param currentTime - At which time the animation state should be calculated.\r\n * @returns State object\r\n */\r\n abstract calculateState(target: object, currentTime: number): StateType;\r\n /**\r\n * Applys animation state to node\r\n * @param target - The animated object to which the state will be applied\r\n * @param state - The animation state\r\n */\r\n abstract applyState(target: object, state: StateType);\r\n /**\r\n * Mixes two animation state according to specific weight value\r\n * @param a - The first state object\r\n * @param b - The second state object\r\n * @param t - The weight value\r\n * @returns The mixed state object\r\n */\r\n abstract mixState(a: StateType, b: StateType, t: number): StateType;\r\n /**\r\n * Get the blend ID\r\n * @returns Blend ID\r\n *\r\n * @remarks\r\n * Two tracks which have same blend ID can be blended together\r\n */\r\n abstract getBlendId(): unknown;\r\n /**\r\n * Get the duration of the track\r\n * @returns Duration of the track\r\n */\r\n abstract getDuration(): number;\r\n}\r\n"],"names":["AnimationTrack","embedded","_name","_embedded","name","val","animation","_animation","ani","reset","_target"],"mappings":"AAEA;;;AAGC,IACM,MAAeA,cAAAA,CAAAA;qBAEpB,KAAwB;qBAExB,SAA6B;qBAE7B,UAAoC;AACpC;;;MAIA,WAAA,CAAYC,QAAkB,CAAE;QAC9B,IAAI,CAACC,KAAK,GAAG,QAAA;AACb,QAAA,IAAI,CAACC,SAAS,GAAG,CAAC,CAACF,QAAAA;AACrB;6BAEA,IAAIG,IAAO,GAAA;QACT,OAAO,IAAI,CAACF,KAAK;AACnB;IACA,IAAIE,IAAAA,CAAKC,GAAW,EAAE;QACpB,IAAI,CAACH,KAAK,GAAGG,GAAAA;AACf;4CAEA,IAAIJ,QAAoB,GAAA;QACtB,OAAO,IAAI,CAACE,SAAS;AACvB;2CAEA,IAAIG,SAA2B,GAAA;QAC7B,OAAO,IAAI,CAACC,UAAU;AACxB;IACA,IAAID,SAAAA,CAAUE,GAAkB,EAAE;QAChC,IAAI,CAACD,UAAU,GAAGC,GAAAA;AACpB;AACA,iEACAC,KAAAA,CAAMC,OAAe,EAAE;AAmCzB;;;;"}
@@ -1,52 +0,0 @@
1
- import { Vector3, Interpolator, Quaternion } from '@zephyr3d/base';
2
- import { AnimationTrack } from './animationtrack.js';
3
-
4
- const tmpVec3 = new Vector3();
5
- /**
6
- * Euler angle rotation animation track
7
- * @public
8
- */ class NodeEulerRotationTrack extends AnimationTrack {
9
- _state;
10
- _interpolator;
11
- constructor(modeOrInterpolator, keyFramesOrEmbedded, embedded){
12
- if (modeOrInterpolator instanceof Interpolator) {
13
- if (modeOrInterpolator.target !== 'vec3') {
14
- throw new Error(`TranslationTrack(): interpolator target must be 'vec3'`);
15
- }
16
- super(keyFramesOrEmbedded ?? false);
17
- this._interpolator = modeOrInterpolator;
18
- } else {
19
- const keyFrames = keyFramesOrEmbedded;
20
- const inputs = new Float32Array(keyFrames.map((val)=>val.time));
21
- const outputs = new Float32Array(keyFrames.length * 3);
22
- for(let i = 0; i < keyFrames.length; i++){
23
- outputs[i * 3 + 0] = keyFrames[i].value.x;
24
- outputs[i * 3 + 1] = keyFrames[i].value.y;
25
- outputs[i * 3 + 2] = keyFrames[i].value.z;
26
- }
27
- super(embedded ?? false);
28
- this._interpolator = new Interpolator(modeOrInterpolator, 'vec3', inputs, outputs);
29
- }
30
- this._state = new Quaternion();
31
- }
32
- calculateState(target, currentTime) {
33
- this._interpolator.interpolate(currentTime, tmpVec3);
34
- this._state.fromEulerAngle(tmpVec3.x, tmpVec3.y, tmpVec3.z);
35
- return this._state;
36
- }
37
- applyState(node, state) {
38
- node.rotation.set(state);
39
- }
40
- mixState(a, b, t) {
41
- return Quaternion.slerp(a, b, t);
42
- }
43
- getBlendId() {
44
- return 'node-rotation';
45
- }
46
- getDuration() {
47
- return this._interpolator.maxTime;
48
- }
49
- }
50
-
51
- export { NodeEulerRotationTrack };
52
- //# sourceMappingURL=eulerrotationtrack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eulerrotationtrack.js","sources":["../../../src/animation/eulerrotationtrack.ts"],"sourcesContent":["import type { InterpolationMode } from '@zephyr3d/base';\r\nimport { Interpolator, Quaternion, Vector3 } from '@zephyr3d/base';\r\nimport { AnimationTrack } from './animationtrack';\r\nimport type { SceneNode } from '../scene';\r\n\r\nconst tmpVec3 = new Vector3();\r\n\r\n/**\r\n * Euler angle rotation animation track\r\n * @public\r\n */\r\nexport class NodeEulerRotationTrack extends AnimationTrack<Quaternion> {\r\n private readonly _state: Quaternion;\r\n private readonly _interpolator: Interpolator;\r\n /**\r\n * Create an instance of EulerRotationTrack from keyframe values\r\n * @param interpolator - Interpolator object that contains the keyframe values\r\n * @param embedded - Whether this track be an embedded track\r\n */\r\n constructor(interpolator: Interpolator, embedded?: boolean);\r\n /**\r\n * Create an instance of EulerRotationTrack from keyframe values\r\n * @param mode - The interpolation mode of keyframes\r\n * @param keyFrames - Keyframe values\r\n * @param embedded - Whether this track be an embedded track\r\n */\r\n constructor(mode: InterpolationMode, keyFrames: { time: number; value: Vector3 }[], embedded?: boolean);\r\n constructor(\r\n modeOrInterpolator?: Interpolator | InterpolationMode,\r\n keyFramesOrEmbedded?: { time: number; value: Vector3 }[] | boolean,\r\n embedded?: boolean\r\n ) {\r\n if (modeOrInterpolator instanceof Interpolator) {\r\n if (modeOrInterpolator.target !== 'vec3') {\r\n throw new Error(`TranslationTrack(): interpolator target must be 'vec3'`);\r\n }\r\n super((keyFramesOrEmbedded as boolean) ?? false);\r\n this._interpolator = modeOrInterpolator;\r\n } else {\r\n const keyFrames = keyFramesOrEmbedded as { time: number; value: Vector3 }[];\r\n const inputs = new Float32Array(keyFrames.map((val) => val.time));\r\n const outputs = new Float32Array(keyFrames.length * 3);\r\n for (let i = 0; i < keyFrames.length; i++) {\r\n outputs[i * 3 + 0] = keyFrames[i].value.x;\r\n outputs[i * 3 + 1] = keyFrames[i].value.y;\r\n outputs[i * 3 + 2] = keyFrames[i].value.z;\r\n }\r\n super(embedded ?? false);\r\n this._interpolator = new Interpolator(modeOrInterpolator, 'vec3', inputs, outputs);\r\n }\r\n this._state = new Quaternion();\r\n }\r\n calculateState(target: object, currentTime: number): Quaternion {\r\n this._interpolator.interpolate(currentTime, tmpVec3);\r\n this._state.fromEulerAngle(tmpVec3.x, tmpVec3.y, tmpVec3.z);\r\n return this._state;\r\n }\r\n applyState(node: SceneNode, state: Quaternion) {\r\n node.rotation.set(state);\r\n }\r\n mixState(a: Quaternion, b: Quaternion, t: number): Quaternion {\r\n return Quaternion.slerp(a, b, t);\r\n }\r\n getBlendId(): unknown {\r\n return 'node-rotation';\r\n }\r\n getDuration(): number {\r\n return this._interpolator.maxTime;\r\n }\r\n}\r\n"],"names":["tmpVec3","Vector3","NodeEulerRotationTrack","AnimationTrack","_state","_interpolator","modeOrInterpolator","keyFramesOrEmbedded","embedded","Interpolator","target","Error","keyFrames","inputs","Float32Array","map","val","time","outputs","length","i","value","x","y","z","Quaternion","calculateState","currentTime","interpolate","fromEulerAngle","applyState","node","state","rotation","set","mixState","a","b","t","slerp","getBlendId","getDuration","maxTime"],"mappings":";;;AAKA,MAAMA,UAAU,IAAIC,OAAAA,EAAAA;AAEpB;;;IAIO,MAAMC,sBAA+BC,SAAAA,cAAAA,CAAAA;IACzBC,MAAmB;IACnBC,aAA4B;AAc7C,IAAA,WAAA,CACEC,kBAAqD,EACrDC,mBAAkE,EAClEC,QAAkB,CAClB;AACA,QAAA,IAAIF,8BAA8BG,YAAc,EAAA;YAC9C,IAAIH,kBAAAA,CAAmBI,MAAM,KAAK,MAAQ,EAAA;AACxC,gBAAA,MAAM,IAAIC,KAAAA,CAAM,CAAC,sDAAsD,CAAC,CAAA;AAC1E;YACA,KAAK,CAAC,mBAAoC,IAAA,KAAA,CAAA;YAC1C,IAAI,CAACN,aAAa,GAAGC,kBAAAA;SAChB,MAAA;AACL,YAAA,MAAMM,SAAYL,GAAAA,mBAAAA;YAClB,MAAMM,MAAAA,GAAS,IAAIC,YAAaF,CAAAA,SAAAA,CAAUG,GAAG,CAAC,CAACC,GAAQA,GAAAA,GAAAA,CAAIC,IAAI,CAAA,CAAA;AAC/D,YAAA,MAAMC,OAAU,GAAA,IAAIJ,YAAaF,CAAAA,SAAAA,CAAUO,MAAM,GAAG,CAAA,CAAA;AACpD,YAAA,IAAK,IAAIC,CAAI,GAAA,CAAA,EAAGA,IAAIR,SAAUO,CAAAA,MAAM,EAAEC,CAAK,EAAA,CAAA;gBACzCF,OAAO,CAACE,CAAI,GAAA,CAAA,GAAI,CAAE,CAAA,GAAGR,SAAS,CAACQ,CAAE,CAAA,CAACC,KAAK,CAACC,CAAC;gBACzCJ,OAAO,CAACE,CAAI,GAAA,CAAA,GAAI,CAAE,CAAA,GAAGR,SAAS,CAACQ,CAAE,CAAA,CAACC,KAAK,CAACE,CAAC;gBACzCL,OAAO,CAACE,CAAI,GAAA,CAAA,GAAI,CAAE,CAAA,GAAGR,SAAS,CAACQ,CAAE,CAAA,CAACC,KAAK,CAACG,CAAC;AAC3C;AACA,YAAA,KAAK,CAAChB,QAAY,IAAA,KAAA,CAAA;AAClB,YAAA,IAAI,CAACH,aAAa,GAAG,IAAII,YAAaH,CAAAA,kBAAAA,EAAoB,QAAQO,MAAQK,EAAAA,OAAAA,CAAAA;AAC5E;QACA,IAAI,CAACd,MAAM,GAAG,IAAIqB,UAAAA,EAAAA;AACpB;IACAC,cAAehB,CAAAA,MAAc,EAAEiB,WAAmB,EAAc;AAC9D,QAAA,IAAI,CAACtB,aAAa,CAACuB,WAAW,CAACD,WAAa3B,EAAAA,OAAAA,CAAAA;AAC5C,QAAA,IAAI,CAACI,MAAM,CAACyB,cAAc,CAAC7B,OAAAA,CAAQsB,CAAC,EAAEtB,OAAQuB,CAAAA,CAAC,EAAEvB,OAAAA,CAAQwB,CAAC,CAAA;QAC1D,OAAO,IAAI,CAACpB,MAAM;AACpB;IACA0B,UAAWC,CAAAA,IAAe,EAAEC,KAAiB,EAAE;QAC7CD,IAAKE,CAAAA,QAAQ,CAACC,GAAG,CAACF,KAAAA,CAAAA;AACpB;AACAG,IAAAA,QAAAA,CAASC,CAAa,EAAEC,CAAa,EAAEC,CAAS,EAAc;AAC5D,QAAA,OAAOb,UAAWc,CAAAA,KAAK,CAACH,CAAAA,EAAGC,CAAGC,EAAAA,CAAAA,CAAAA;AAChC;IACAE,UAAsB,GAAA;QACpB,OAAO,eAAA;AACT;IACAC,WAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAACpC,aAAa,CAACqC,OAAO;AACnC;AACF;;;;"}
@@ -1,93 +0,0 @@
1
- import { PBStructTypeInfo, PBArrayTypeInfo, PBPrimitiveTypeInfo, PBPrimitiveType } from '@zephyr3d/device';
2
- import { Application } from '../app/app.js';
3
- import { MAX_MORPH_ATTRIBUTES, MAX_MORPH_TARGETS, MORPH_WEIGHTS_VECTOR_COUNT, MORPH_ATTRIBUTE_VECTOR_COUNT } from '../values.js';
4
- import { ShaderHelper } from '../material/shader/helper.js';
5
- import { BoundingBox } from '../utility/bounding_volume.js';
6
-
7
- function processMorphData(subMesh, morphWeights) {
8
- const device = Application.instance.device;
9
- const numTargets = subMesh.numTargets;
10
- if (numTargets === 0) {
11
- return;
12
- }
13
- const attributes = Object.getOwnPropertyNames(subMesh.targets);
14
- const numVertices = subMesh.primitive.get().getNumVertices();
15
- const weightsAndOffsets = new Float32Array(4 + MAX_MORPH_TARGETS + MAX_MORPH_ATTRIBUTES);
16
- for(let i = 0; i < numTargets; i++){
17
- weightsAndOffsets[4 + i] = morphWeights?.[i] ?? 0;
18
- }
19
- const textureSize = Math.ceil(Math.sqrt(numVertices * attributes.length * numTargets));
20
- if (textureSize > device.getDeviceCaps().textureCaps.maxTextureSize) {
21
- // TODO: reduce morph attributes
22
- throw new Error(`Morph target data too large`);
23
- }
24
- weightsAndOffsets[0] = textureSize;
25
- weightsAndOffsets[1] = textureSize;
26
- weightsAndOffsets[2] = numVertices;
27
- weightsAndOffsets[3] = numTargets;
28
- let offset = 0;
29
- const textureData = new Float32Array(textureSize * textureSize * 4);
30
- for(let attrib = 0; attrib < MAX_MORPH_ATTRIBUTES; attrib++){
31
- const index = attributes.indexOf(String(attrib));
32
- if (index < 0) {
33
- weightsAndOffsets[4 + MAX_MORPH_TARGETS + attrib] = -1;
34
- continue;
35
- }
36
- weightsAndOffsets[4 + MAX_MORPH_TARGETS + attrib] = offset >> 2;
37
- const info = subMesh.targets[attrib];
38
- if (info.data.length !== numTargets) {
39
- console.error(`Invalid morph target data`);
40
- return;
41
- }
42
- for(let t = 0; t < numTargets; t++){
43
- const data = info.data[t];
44
- for(let i = 0; i < numVertices; i++){
45
- for(let j = 0; j < 4; j++){
46
- textureData[offset++] = j < info.numComponents ? data[i * info.numComponents + j] : 1;
47
- }
48
- }
49
- }
50
- }
51
- const morphTexture = device.createTexture2D('rgba32f', textureSize, textureSize, {
52
- samplerOptions: {
53
- minFilter: 'nearest',
54
- magFilter: 'nearest',
55
- mipFilter: 'none'
56
- }
57
- });
58
- morphTexture.update(textureData, 0, 0, textureSize, textureSize);
59
- const bufferType = new PBStructTypeInfo('dummy', 'std140', [
60
- {
61
- name: ShaderHelper.getMorphInfoUniformName(),
62
- type: new PBArrayTypeInfo(new PBPrimitiveTypeInfo(PBPrimitiveType.F32VEC4), 1 + MORPH_WEIGHTS_VECTOR_COUNT + MORPH_ATTRIBUTE_VECTOR_COUNT)
63
- }
64
- ]);
65
- const morphUniformBuffer = device.createStructuredBuffer(bufferType, {
66
- usage: 'uniform'
67
- }, weightsAndOffsets);
68
- const morphBoundingBox = new BoundingBox();
69
- calculateMorphBoundingBox(morphBoundingBox, subMesh.targetBox, weightsAndOffsets.subarray(4, 4 + MAX_MORPH_TARGETS), numTargets);
70
- const meshAABB = subMesh.mesh.getBoundingVolume().toAABB();
71
- morphBoundingBox.minPoint.addBy(meshAABB.minPoint);
72
- morphBoundingBox.maxPoint.addBy(meshAABB.maxPoint);
73
- subMesh.mesh.setMorphData(morphTexture);
74
- subMesh.mesh.setMorphInfo(morphUniformBuffer);
75
- subMesh.mesh.setAnimatedBoundingBox(morphBoundingBox);
76
- }
77
- /** @internal */ function calculateMorphBoundingBox(morphBoundingBox, keyframeBoundingBox, weights, numTargets) {
78
- morphBoundingBox.minPoint.setXYZ(0, 0, 0);
79
- morphBoundingBox.maxPoint.setXYZ(0, 0, 0);
80
- for(let i = 0; i < numTargets; i++){
81
- const weight = weights[i];
82
- const keyframeBox = keyframeBoundingBox[i];
83
- morphBoundingBox.minPoint.x += keyframeBox.minPoint.x * weight;
84
- morphBoundingBox.minPoint.y += keyframeBox.minPoint.y * weight;
85
- morphBoundingBox.minPoint.y += keyframeBox.minPoint.z * weight;
86
- morphBoundingBox.maxPoint.x += keyframeBox.maxPoint.x * weight;
87
- morphBoundingBox.maxPoint.y += keyframeBox.maxPoint.y * weight;
88
- morphBoundingBox.maxPoint.y += keyframeBox.maxPoint.z * weight;
89
- }
90
- }
91
-
92
- export { calculateMorphBoundingBox, processMorphData };
93
- //# sourceMappingURL=morphtarget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"morphtarget.js","sources":["../../../src/animation/morphtarget.ts"],"sourcesContent":["import { PBArrayTypeInfo, PBPrimitiveType, PBPrimitiveTypeInfo, PBStructTypeInfo } from '@zephyr3d/device';\r\nimport { Application } from '../app/app';\r\nimport type { AssetSubMeshData } from '../asset';\r\nimport {\r\n MAX_MORPH_ATTRIBUTES,\r\n MAX_MORPH_TARGETS,\r\n MORPH_ATTRIBUTE_VECTOR_COUNT,\r\n MORPH_WEIGHTS_VECTOR_COUNT\r\n} from '../values';\r\nimport { ShaderHelper } from '../material/shader/helper';\r\nimport { BoundingBox } from '../utility/bounding_volume';\r\n\r\nexport function processMorphData(subMesh: AssetSubMeshData, morphWeights: number[]) {\r\n const device = Application.instance.device;\r\n const numTargets = subMesh.numTargets;\r\n if (numTargets === 0) {\r\n return;\r\n }\r\n const attributes = Object.getOwnPropertyNames(subMesh.targets);\r\n const numVertices = subMesh.primitive.get().getNumVertices();\r\n const weightsAndOffsets = new Float32Array(4 + MAX_MORPH_TARGETS + MAX_MORPH_ATTRIBUTES);\r\n for (let i = 0; i < numTargets; i++) {\r\n weightsAndOffsets[4 + i] = morphWeights?.[i] ?? 0;\r\n }\r\n const textureSize = Math.ceil(Math.sqrt(numVertices * attributes.length * numTargets));\r\n if (textureSize > device.getDeviceCaps().textureCaps.maxTextureSize) {\r\n // TODO: reduce morph attributes\r\n throw new Error(`Morph target data too large`);\r\n }\r\n weightsAndOffsets[0] = textureSize;\r\n weightsAndOffsets[1] = textureSize;\r\n weightsAndOffsets[2] = numVertices;\r\n weightsAndOffsets[3] = numTargets;\r\n let offset = 0;\r\n const textureData = new Float32Array(textureSize * textureSize * 4);\r\n for (let attrib = 0; attrib < MAX_MORPH_ATTRIBUTES; attrib++) {\r\n const index = attributes.indexOf(String(attrib));\r\n if (index < 0) {\r\n weightsAndOffsets[4 + MAX_MORPH_TARGETS + attrib] = -1;\r\n continue;\r\n }\r\n weightsAndOffsets[4 + MAX_MORPH_TARGETS + attrib] = offset >> 2;\r\n const info = subMesh.targets[attrib];\r\n if (info.data.length !== numTargets) {\r\n console.error(`Invalid morph target data`);\r\n return;\r\n }\r\n for (let t = 0; t < numTargets; t++) {\r\n const data = info.data[t];\r\n for (let i = 0; i < numVertices; i++) {\r\n for (let j = 0; j < 4; j++) {\r\n textureData[offset++] = j < info.numComponents ? data[i * info.numComponents + j] : 1;\r\n }\r\n }\r\n }\r\n }\r\n const morphTexture = device.createTexture2D('rgba32f', textureSize, textureSize, {\r\n samplerOptions: {\r\n minFilter: 'nearest',\r\n magFilter: 'nearest',\r\n mipFilter: 'none'\r\n }\r\n });\r\n morphTexture.update(textureData, 0, 0, textureSize, textureSize);\r\n const bufferType = new PBStructTypeInfo('dummy', 'std140', [\r\n {\r\n name: ShaderHelper.getMorphInfoUniformName(),\r\n type: new PBArrayTypeInfo(\r\n new PBPrimitiveTypeInfo(PBPrimitiveType.F32VEC4),\r\n 1 + MORPH_WEIGHTS_VECTOR_COUNT + MORPH_ATTRIBUTE_VECTOR_COUNT\r\n )\r\n }\r\n ]);\r\n const morphUniformBuffer = device.createStructuredBuffer(\r\n bufferType,\r\n {\r\n usage: 'uniform'\r\n },\r\n weightsAndOffsets\r\n );\r\n const morphBoundingBox = new BoundingBox();\r\n calculateMorphBoundingBox(\r\n morphBoundingBox,\r\n subMesh.targetBox,\r\n weightsAndOffsets.subarray(4, 4 + MAX_MORPH_TARGETS),\r\n numTargets\r\n );\r\n const meshAABB = subMesh.mesh.getBoundingVolume().toAABB();\r\n morphBoundingBox.minPoint.addBy(meshAABB.minPoint);\r\n morphBoundingBox.maxPoint.addBy(meshAABB.maxPoint);\r\n\r\n subMesh.mesh.setMorphData(morphTexture);\r\n subMesh.mesh.setMorphInfo(morphUniformBuffer);\r\n subMesh.mesh.setAnimatedBoundingBox(morphBoundingBox);\r\n}\r\n\r\n/** @internal */\r\nexport function calculateMorphBoundingBox(\r\n morphBoundingBox: BoundingBox,\r\n keyframeBoundingBox: BoundingBox[],\r\n weights: Float32Array,\r\n numTargets: number\r\n) {\r\n morphBoundingBox.minPoint.setXYZ(0, 0, 0);\r\n morphBoundingBox.maxPoint.setXYZ(0, 0, 0);\r\n for (let i = 0; i < numTargets; i++) {\r\n const weight = weights[i];\r\n const keyframeBox = keyframeBoundingBox[i];\r\n morphBoundingBox.minPoint.x += keyframeBox.minPoint.x * weight;\r\n morphBoundingBox.minPoint.y += keyframeBox.minPoint.y * weight;\r\n morphBoundingBox.minPoint.y += keyframeBox.minPoint.z * weight;\r\n morphBoundingBox.maxPoint.x += keyframeBox.maxPoint.x * weight;\r\n morphBoundingBox.maxPoint.y += keyframeBox.maxPoint.y * weight;\r\n morphBoundingBox.maxPoint.y += keyframeBox.maxPoint.z * weight;\r\n }\r\n}\r\n"],"names":["processMorphData","subMesh","morphWeights","device","Application","instance","numTargets","attributes","Object","getOwnPropertyNames","targets","numVertices","primitive","get","getNumVertices","weightsAndOffsets","Float32Array","MAX_MORPH_TARGETS","MAX_MORPH_ATTRIBUTES","i","textureSize","Math","ceil","sqrt","length","getDeviceCaps","textureCaps","maxTextureSize","Error","offset","textureData","attrib","index","indexOf","String","info","data","console","error","t","j","numComponents","morphTexture","createTexture2D","samplerOptions","minFilter","magFilter","mipFilter","update","bufferType","PBStructTypeInfo","name","ShaderHelper","getMorphInfoUniformName","type","PBArrayTypeInfo","PBPrimitiveTypeInfo","PBPrimitiveType","F32VEC4","MORPH_WEIGHTS_VECTOR_COUNT","MORPH_ATTRIBUTE_VECTOR_COUNT","morphUniformBuffer","createStructuredBuffer","usage","morphBoundingBox","BoundingBox","calculateMorphBoundingBox","targetBox","subarray","meshAABB","mesh","getBoundingVolume","toAABB","minPoint","addBy","maxPoint","setMorphData","setMorphInfo","setAnimatedBoundingBox","keyframeBoundingBox","weights","setXYZ","weight","keyframeBox","x","y","z"],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- import { AnimationTrack } from './animationtrack.js';
2
- import { BoundingBox } from '../utility/bounding_volume.js';
3
- import { MAX_MORPH_TARGETS } from '../values.js';
4
- import { calculateMorphBoundingBox } from './morphtarget.js';
5
- import { Vector3 } from '@zephyr3d/base';
6
-
7
- /**
8
- * Morph target track
9
- * @public
10
- */ class MorphTargetTrack extends AnimationTrack {
11
- _state;
12
- _originBox;
13
- _boundingBox;
14
- _defaultWeights;
15
- _interpolator;
16
- /**
17
- * Create an instance of MorphTargetTrack
18
- */ constructor(assetTrack, subMesh, embedded){
19
- super(embedded);
20
- this._interpolator = assetTrack.interpolator;
21
- this._state = {
22
- numTargets: assetTrack.interpolator.stride,
23
- boundingBox: new BoundingBox(),
24
- weights: new Float32Array(MAX_MORPH_TARGETS)
25
- };
26
- this._boundingBox = subMesh.targetBox;
27
- this._originBox = subMesh.mesh.getBoundingVolume().toAABB();
28
- this._defaultWeights = assetTrack.defaultMorphWeights ?? Array.from({
29
- length: this._state.numTargets
30
- }).map(()=>0);
31
- }
32
- calculateState(target, currentTime) {
33
- this._interpolator.interpolate(currentTime, this._state.weights);
34
- calculateMorphBoundingBox(this._state.boundingBox, this._boundingBox, this._state.weights, this._state.numTargets);
35
- return this._state;
36
- }
37
- applyState(node, state) {
38
- node.getMorphInfo().bufferSubData(4 * 4, state.weights);
39
- state.boundingBox.minPoint.addBy(this._originBox.minPoint);
40
- state.boundingBox.maxPoint.addBy(this._originBox.maxPoint);
41
- node.setAnimatedBoundingBox(state.boundingBox);
42
- }
43
- mixState(a, b, t) {
44
- const state = {
45
- weights: new Float32Array(a.numTargets),
46
- boundingBox: new BoundingBox(),
47
- numTargets: a.numTargets
48
- };
49
- for(let i = 0; i < a.numTargets; i++){
50
- state.weights[i] = a.weights[i] + (b.weights[i] - a.weights[i]) * t;
51
- state.boundingBox.minPoint = Vector3.min(a.boundingBox.minPoint, b.boundingBox.minPoint);
52
- state.boundingBox.maxPoint = Vector3.max(a.boundingBox.maxPoint, b.boundingBox.maxPoint);
53
- }
54
- return state;
55
- }
56
- getBlendId() {
57
- return 'node-morph';
58
- }
59
- getDuration() {
60
- return this._interpolator.maxTime;
61
- }
62
- reset(node) {
63
- // apply default weights
64
- this._state.weights.set(this._defaultWeights);
65
- this.applyState(node, this._state);
66
- }
67
- }
68
-
69
- export { MorphTargetTrack };
70
- //# sourceMappingURL=morphtrack.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"morphtrack.js","sources":["../../../src/animation/morphtrack.ts"],"sourcesContent":["import { AnimationTrack } from './animationtrack';\nimport type { Mesh, SceneNode } from '../scene';\nimport type { AssetAnimationTrack, AssetSubMeshData } from '../asset';\nimport { BoundingBox } from '../utility/bounding_volume';\nimport { MAX_MORPH_TARGETS } from '../values';\nimport { calculateMorphBoundingBox } from './morphtarget';\nimport type { AABB, Interpolator } from '@zephyr3d/base';\nimport { Vector3 } from '@zephyr3d/base';\n\n/** Morph animation state */\nexport type MorphState = {\n numTargets: number;\n weights: Float32Array<ArrayBuffer>;\n boundingBox: BoundingBox;\n};\n\n/**\n * Morph target track\n * @public\n */\nexport class MorphTargetTrack extends AnimationTrack<MorphState> {\n private readonly _state: MorphState;\n private readonly _originBox: AABB;\n private readonly _boundingBox: BoundingBox[];\n private readonly _defaultWeights: number[];\n private readonly _interpolator: Interpolator;\n /**\n * Create an instance of MorphTargetTrack\n */\n constructor(assetTrack: AssetAnimationTrack, subMesh: AssetSubMeshData, embedded?: boolean) {\n super(embedded);\n this._interpolator = assetTrack.interpolator;\n this._state = {\n numTargets: assetTrack.interpolator.stride,\n boundingBox: new BoundingBox(),\n weights: new Float32Array(MAX_MORPH_TARGETS)\n };\n this._boundingBox = subMesh.targetBox;\n this._originBox = subMesh.mesh.getBoundingVolume().toAABB();\n this._defaultWeights =\n assetTrack.defaultMorphWeights ?? Array.from({ length: this._state.numTargets }).map(() => 0);\n }\n calculateState(target: object, currentTime: number): MorphState {\n this._interpolator.interpolate(currentTime, this._state.weights);\n calculateMorphBoundingBox(\n this._state.boundingBox,\n this._boundingBox,\n this._state.weights,\n this._state.numTargets\n );\n return this._state;\n }\n applyState(node: SceneNode, state: MorphState) {\n (node as Mesh).getMorphInfo().bufferSubData(4 * 4, state.weights);\n state.boundingBox.minPoint.addBy(this._originBox.minPoint);\n state.boundingBox.maxPoint.addBy(this._originBox.maxPoint);\n (node as Mesh).setAnimatedBoundingBox(state.boundingBox);\n }\n mixState(a: MorphState, b: MorphState, t: number): MorphState {\n const state: MorphState = {\n weights: new Float32Array(a.numTargets),\n boundingBox: new BoundingBox(),\n numTargets: a.numTargets\n };\n for (let i = 0; i < a.numTargets; i++) {\n state.weights[i] = a.weights[i] + (b.weights[i] - a.weights[i]) * t;\n state.boundingBox.minPoint = Vector3.min(a.boundingBox.minPoint, b.boundingBox.minPoint);\n state.boundingBox.maxPoint = Vector3.max(a.boundingBox.maxPoint, b.boundingBox.maxPoint);\n }\n return state;\n }\n getBlendId(): unknown {\n return 'node-morph';\n }\n getDuration(): number {\n return this._interpolator.maxTime;\n }\n reset(node: SceneNode) {\n // apply default weights\n this._state.weights.set(this._defaultWeights);\n this.applyState(node, this._state);\n }\n}\n"],"names":["MorphTargetTrack","AnimationTrack","_state","_originBox","_boundingBox","_defaultWeights","_interpolator","assetTrack","subMesh","embedded","interpolator","numTargets","stride","boundingBox","BoundingBox","weights","Float32Array","MAX_MORPH_TARGETS","targetBox","mesh","getBoundingVolume","toAABB","defaultMorphWeights","Array","from","length","map","calculateState","target","currentTime","interpolate","calculateMorphBoundingBox","applyState","node","state","getMorphInfo","bufferSubData","minPoint","addBy","maxPoint","setAnimatedBoundingBox","mixState","a","b","t","i","Vector3","min","max","getBlendId","getDuration","maxTime","reset","set"],"mappings":"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"}