@zephyr3d/scene 0.9.4 → 0.9.6

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 (517) hide show
  1. package/dist/animation/animationmask.js +224 -0
  2. package/dist/animation/animationmask.js.map +1 -0
  3. package/dist/animation/animationset.js +268 -67
  4. package/dist/animation/animationset.js.map +1 -1
  5. package/dist/animation/animationtrack.js.map +1 -1
  6. package/dist/animation/eulerrotationtrack.js +3 -0
  7. package/dist/animation/eulerrotationtrack.js.map +1 -1
  8. package/dist/animation/fixed_geometry_cache_track.js +7 -0
  9. package/dist/animation/fixed_geometry_cache_track.js.map +1 -1
  10. package/dist/animation/ik_modifier.js.map +1 -1
  11. package/dist/animation/joint_dynamics/collision.js +6 -4
  12. package/dist/animation/joint_dynamics/collision.js.map +1 -1
  13. package/dist/animation/joint_dynamics/controller.js +390 -43
  14. package/dist/animation/joint_dynamics/controller.js.map +1 -1
  15. package/dist/animation/joint_dynamics/joint_dynamics_system.js +62 -3
  16. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -1
  17. package/dist/animation/joint_dynamics/solver.js +4 -3
  18. package/dist/animation/joint_dynamics/solver.js.map +1 -1
  19. package/dist/animation/joint_dynamics/types.js.map +1 -1
  20. package/dist/animation/joint_dynamics_modifier.js +2 -0
  21. package/dist/animation/joint_dynamics_modifier.js.map +1 -1
  22. package/dist/animation/morphtarget.js +3 -72
  23. package/dist/animation/morphtarget.js.map +1 -1
  24. package/dist/animation/morphtrack.js +3 -0
  25. package/dist/animation/morphtrack.js.map +1 -1
  26. package/dist/animation/pca_geometry_cache_track.js +3 -0
  27. package/dist/animation/pca_geometry_cache_track.js.map +1 -1
  28. package/dist/animation/proptrack.js +3 -0
  29. package/dist/animation/proptrack.js.map +1 -1
  30. package/dist/animation/rotationtrack.js +3 -0
  31. package/dist/animation/rotationtrack.js.map +1 -1
  32. package/dist/animation/scaletrack.js +3 -0
  33. package/dist/animation/scaletrack.js.map +1 -1
  34. package/dist/animation/skeleton.js +254 -79
  35. package/dist/animation/skeleton.js.map +1 -1
  36. package/dist/animation/skeleton_modifier.js.map +1 -1
  37. package/dist/animation/spring_modifier.js.map +1 -1
  38. package/dist/animation/translationtrack.js +3 -0
  39. package/dist/animation/translationtrack.js.map +1 -1
  40. package/dist/app/engine.js +171 -107
  41. package/dist/app/engine.js.map +1 -1
  42. package/dist/app/scriptregistry.js +251 -80
  43. package/dist/app/scriptregistry.js.map +1 -1
  44. package/dist/asset/assetmanager.js +344 -365
  45. package/dist/asset/assetmanager.js.map +1 -1
  46. package/dist/asset/loaders/loader.js +1 -6
  47. package/dist/asset/loaders/loader.js.map +1 -1
  48. package/dist/asset/loaders/zabc/zabc_loader.js.map +1 -1
  49. package/dist/asset/model.js +1000 -131
  50. package/dist/asset/model.js.map +1 -1
  51. package/dist/avatar/wardrobe.js +474 -0
  52. package/dist/avatar/wardrobe.js.map +1 -0
  53. package/dist/index.d.ts +1126 -199
  54. package/dist/index.js +3 -2
  55. package/dist/index.js.map +1 -1
  56. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +6 -3
  57. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  58. package/dist/material/mixins/pbr/common.js +72 -15
  59. package/dist/material/mixins/pbr/common.js.map +1 -1
  60. package/dist/material/msdf_text.js +3 -3
  61. package/dist/material/msdf_text.js.map +1 -1
  62. package/dist/material/msdf_text_sprite.js +4 -4
  63. package/dist/material/msdf_text_sprite.js.map +1 -1
  64. package/dist/material/pbrblueprint.js +102 -102
  65. package/dist/material/pbrblueprint.js.map +1 -1
  66. package/dist/render/envlight.js +54 -1
  67. package/dist/render/envlight.js.map +1 -1
  68. package/dist/render/sky.js +9 -0
  69. package/dist/render/sky.js.map +1 -1
  70. package/dist/scene/batchgroup.js +11 -13
  71. package/dist/scene/batchgroup.js.map +1 -1
  72. package/dist/scene/environment.js +15 -2
  73. package/dist/scene/environment.js.map +1 -1
  74. package/dist/scene/mesh.js +79 -16
  75. package/dist/scene/mesh.js.map +1 -1
  76. package/dist/scene/scene.js +1 -0
  77. package/dist/scene/scene.js.map +1 -1
  78. package/dist/scene/scene_node.js +203 -2
  79. package/dist/scene/scene_node.js.map +1 -1
  80. package/dist/text/font/cff_font.js +890 -0
  81. package/dist/text/font/cff_font.js.map +1 -0
  82. package/dist/text/font/font_asset.js +17 -3
  83. package/dist/text/font/font_asset.js.map +1 -1
  84. package/dist/text/msdf/generator.js.map +1 -1
  85. package/dist/text/msdf/shape.js +4 -1
  86. package/dist/text/msdf/shape.js.map +1 -1
  87. package/dist/text/runtime/msdf_text_atlas_manager.js +4 -1
  88. package/dist/text/runtime/msdf_text_atlas_manager.js.map +1 -1
  89. package/dist/utility/blueprint/material/inputs.js +1157 -1154
  90. package/dist/utility/blueprint/material/inputs.js.map +1 -1
  91. package/dist/utility/bounding_volume.js.map +1 -1
  92. package/dist/utility/pmrem.js +34 -8
  93. package/dist/utility/pmrem.js.map +1 -1
  94. package/dist/utility/serialization/manager.js +22 -9
  95. package/dist/utility/serialization/manager.js.map +1 -1
  96. package/dist/utility/serialization/scene/animation.js +700 -7
  97. package/dist/utility/serialization/scene/animation.js.map +1 -1
  98. package/dist/utility/serialization/scene/mesh.js +64 -4
  99. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  100. package/dist/utility/serialization/scene/node.js +187 -8
  101. package/dist/utility/serialization/scene/node.js.map +1 -1
  102. package/dist/utility/serialization/types.js.map +1 -1
  103. package/dist/utility/textures/sheenlut.js +138 -0
  104. package/dist/utility/textures/sheenlut.js.map +1 -0
  105. package/package.json +2 -2
  106. package/dist/animation/ik/ik_chain_builder.js +0 -68
  107. package/dist/animation/ik/ik_chain_builder.js.map +0 -1
  108. package/dist/animation/ik/ik_pole_constraint.js +0 -123
  109. package/dist/animation/ik/ik_pole_constraint.js.map +0 -1
  110. package/dist/animation/ik/ik_track.js +0 -96
  111. package/dist/animation/ik/ik_track.js.map +0 -1
  112. package/dist/animation/ik_postprocessor.js +0 -71
  113. package/dist/animation/ik_postprocessor.js.map +0 -1
  114. package/dist/animation/joint_dynamics/math.js +0 -16
  115. package/dist/animation/joint_dynamics/math.js.map +0 -1
  116. package/dist/animation/manual_transform_processor.js +0 -156
  117. package/dist/animation/manual_transform_processor.js.map +0 -1
  118. package/dist/animation/skeleton_postprocessor.js +0 -50
  119. package/dist/animation/skeleton_postprocessor.js.map +0 -1
  120. package/dist/animation/spring2/collision.js +0 -469
  121. package/dist/animation/spring2/collision.js.map +0 -1
  122. package/dist/animation/spring2/constraints.js +0 -329
  123. package/dist/animation/spring2/constraints.js.map +0 -1
  124. package/dist/animation/spring2/controller.js +0 -434
  125. package/dist/animation/spring2/controller.js.map +0 -1
  126. package/dist/animation/spring2/math.js +0 -16
  127. package/dist/animation/spring2/math.js.map +0 -1
  128. package/dist/animation/spring2/solver.js +0 -624
  129. package/dist/animation/spring2/solver.js.map +0 -1
  130. package/dist/animation/spring2/spring_system.js +0 -118
  131. package/dist/animation/spring2/spring_system.js.map +0 -1
  132. package/dist/animation/spring2/types.js +0 -19
  133. package/dist/animation/spring2/types.js.map +0 -1
  134. package/dist/animation/spring_postprocessor.js +0 -54
  135. package/dist/animation/spring_postprocessor.js.map +0 -1
  136. package/dist/asset/loaders/gltf/gltf_loader.js +0 -1273
  137. package/dist/asset/loaders/gltf/gltf_loader.js.map +0 -1
  138. package/dist/asset/loaders/gltf/helpers.js +0 -331
  139. package/dist/asset/loaders/gltf/helpers.js.map +0 -1
  140. package/dist/material/sprite3d.js +0 -301
  141. package/dist/material/sprite3d.js.map +0 -1
  142. package/dist/material/sprite3d_std.js +0 -116
  143. package/dist/material/sprite3d_std.js.map +0 -1
  144. package/dist/material/sprite3dblueprint.js +0 -235
  145. package/dist/material/sprite3dblueprint.js.map +0 -1
  146. package/dist/material/sprite_sdf.js +0 -106
  147. package/dist/material/sprite_sdf.js.map +0 -1
  148. package/dist/material/terrainmaterial.js +0 -368
  149. package/dist/material/terrainmaterial.js.map +0 -1
  150. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js +0 -38
  151. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimemgr.js.map +0 -1
  152. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js +0 -10
  153. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/runtimescript.js.map +0 -1
  154. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js +0 -127
  155. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptingsystem.js.map +0 -1
  156. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js +0 -263
  157. package/dist/node_modules/@zephyr3d/runtime/dist/runtime/scriptregistry.js.map +0 -1
  158. package/dist/render/deferredlightpass.js +0 -510
  159. package/dist/render/deferredlightpass.js.map +0 -1
  160. package/dist/render/deferredshadowlightpass.js +0 -428
  161. package/dist/render/deferredshadowlightpass.js.map +0 -1
  162. package/dist/render/gbufferpass.js +0 -50
  163. package/dist/render/gbufferpass.js.map +0 -1
  164. package/dist/scene/sdftextsprite.js +0 -322
  165. package/dist/scene/sdftextsprite.js.map +0 -1
  166. package/dist/scene/sprite3d.js +0 -18
  167. package/dist/scene/sprite3d.js.map +0 -1
  168. package/dist/scene/terrain/grass.js +0 -280
  169. package/dist/scene/terrain/grass.js.map +0 -1
  170. package/dist/scene/terrain/heightfield.js +0 -475
  171. package/dist/scene/terrain/heightfield.js.map +0 -1
  172. package/dist/scene/terrain/patch.js +0 -532
  173. package/dist/scene/terrain/patch.js.map +0 -1
  174. package/dist/scene/terrain/quadtree.js +0 -461
  175. package/dist/scene/terrain/quadtree.js.map +0 -1
  176. package/dist/scene/terrain/terrain.js +0 -231
  177. package/dist/scene/terrain/terrain.js.map +0 -1
  178. package/dist/src/animation/animation.js +0 -127
  179. package/dist/src/animation/animation.js.map +0 -1
  180. package/dist/src/animation/animationset.js +0 -255
  181. package/dist/src/animation/animationset.js.map +0 -1
  182. package/dist/src/animation/animationtrack.js +0 -34
  183. package/dist/src/animation/animationtrack.js.map +0 -1
  184. package/dist/src/animation/eulerrotationtrack.js +0 -52
  185. package/dist/src/animation/eulerrotationtrack.js.map +0 -1
  186. package/dist/src/animation/morphtarget.js +0 -93
  187. package/dist/src/animation/morphtarget.js.map +0 -1
  188. package/dist/src/animation/morphtrack.js +0 -70
  189. package/dist/src/animation/morphtrack.js.map +0 -1
  190. package/dist/src/animation/proptrack.js +0 -161
  191. package/dist/src/animation/proptrack.js.map +0 -1
  192. package/dist/src/animation/rotationtrack.js +0 -51
  193. package/dist/src/animation/rotationtrack.js.map +0 -1
  194. package/dist/src/animation/scaletrack.js +0 -50
  195. package/dist/src/animation/scaletrack.js.map +0 -1
  196. package/dist/src/animation/skeleton.js +0 -204
  197. package/dist/src/animation/skeleton.js.map +0 -1
  198. package/dist/src/animation/translationtrack.js +0 -50
  199. package/dist/src/animation/translationtrack.js.map +0 -1
  200. package/dist/src/app/app.js +0 -129
  201. package/dist/src/app/app.js.map +0 -1
  202. package/dist/src/app/inputmgr.js +0 -267
  203. package/dist/src/app/inputmgr.js.map +0 -1
  204. package/dist/src/asset/assetmanager.js +0 -404
  205. package/dist/src/asset/assetmanager.js.map +0 -1
  206. package/dist/src/asset/builtin.js +0 -337
  207. package/dist/src/asset/builtin.js.map +0 -1
  208. package/dist/src/asset/loaders/dds/dds.js +0 -470
  209. package/dist/src/asset/loaders/dds/dds.js.map +0 -1
  210. package/dist/src/asset/loaders/dds/dds_loader.js +0 -28
  211. package/dist/src/asset/loaders/dds/dds_loader.js.map +0 -1
  212. package/dist/src/asset/loaders/gltf/gltf_loader.js +0 -1265
  213. package/dist/src/asset/loaders/gltf/gltf_loader.js.map +0 -1
  214. package/dist/src/asset/loaders/gltf/helpers.js +0 -327
  215. package/dist/src/asset/loaders/gltf/helpers.js.map +0 -1
  216. package/dist/src/asset/loaders/hdr/hdr.js +0 -180
  217. package/dist/src/asset/loaders/hdr/hdr.js.map +0 -1
  218. package/dist/src/asset/loaders/image/tga_Loader.js +0 -116
  219. package/dist/src/asset/loaders/image/tga_Loader.js.map +0 -1
  220. package/dist/src/asset/loaders/image/webimage_loader.js +0 -63
  221. package/dist/src/asset/loaders/image/webimage_loader.js.map +0 -1
  222. package/dist/src/asset/loaders/loader.js +0 -45
  223. package/dist/src/asset/loaders/loader.js.map +0 -1
  224. package/dist/src/asset/model.js +0 -414
  225. package/dist/src/asset/model.js.map +0 -1
  226. package/dist/src/blitter/bilateralblur.js +0 -221
  227. package/dist/src/blitter/bilateralblur.js.map +0 -1
  228. package/dist/src/blitter/blitter.js +0 -390
  229. package/dist/src/blitter/blitter.js.map +0 -1
  230. package/dist/src/blitter/box.js +0 -118
  231. package/dist/src/blitter/box.js.map +0 -1
  232. package/dist/src/blitter/copy.js +0 -22
  233. package/dist/src/blitter/copy.js.map +0 -1
  234. package/dist/src/blitter/gaussianblur.js +0 -228
  235. package/dist/src/blitter/gaussianblur.js.map +0 -1
  236. package/dist/src/camera/base.js +0 -92
  237. package/dist/src/camera/base.js.map +0 -1
  238. package/dist/src/camera/camera.js +0 -1005
  239. package/dist/src/camera/camera.js.map +0 -1
  240. package/dist/src/camera/fps.js +0 -238
  241. package/dist/src/camera/fps.js.map +0 -1
  242. package/dist/src/camera/orbit.js +0 -245
  243. package/dist/src/camera/orbit.js.map +0 -1
  244. package/dist/src/camera/orthocamera.js +0 -167
  245. package/dist/src/camera/orthocamera.js.map +0 -1
  246. package/dist/src/camera/perspectivecamera.js +0 -141
  247. package/dist/src/camera/perspectivecamera.js.map +0 -1
  248. package/dist/src/index.js +0 -120
  249. package/dist/src/index.js.map +0 -1
  250. package/dist/src/material/blinn.js +0 -81
  251. package/dist/src/material/blinn.js.map +0 -1
  252. package/dist/src/material/grassmaterial.js +0 -113
  253. package/dist/src/material/grassmaterial.js.map +0 -1
  254. package/dist/src/material/lambert.js +0 -92
  255. package/dist/src/material/lambert.js.map +0 -1
  256. package/dist/src/material/material.js +0 -301
  257. package/dist/src/material/material.js.map +0 -1
  258. package/dist/src/material/meshmaterial.js +0 -704
  259. package/dist/src/material/meshmaterial.js.map +0 -1
  260. package/dist/src/material/mixins/albedocolor.js +0 -76
  261. package/dist/src/material/mixins/albedocolor.js.map +0 -1
  262. package/dist/src/material/mixins/foliage.js +0 -47
  263. package/dist/src/material/mixins/foliage.js.map +0 -1
  264. package/dist/src/material/mixins/lightmodel/blinnphong.js +0 -112
  265. package/dist/src/material/mixins/lightmodel/blinnphong.js.map +0 -1
  266. package/dist/src/material/mixins/lightmodel/lambert.js +0 -58
  267. package/dist/src/material/mixins/lightmodel/lambert.js.map +0 -1
  268. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js +0 -178
  269. package/dist/src/material/mixins/lightmodel/pbrmetallicroughness.js.map +0 -1
  270. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js +0 -139
  271. package/dist/src/material/mixins/lightmodel/pbrspecularglossness.js.map +0 -1
  272. package/dist/src/material/mixins/lit.js +0 -476
  273. package/dist/src/material/mixins/lit.js.map +0 -1
  274. package/dist/src/material/mixins/pbr/common.js +0 -918
  275. package/dist/src/material/mixins/pbr/common.js.map +0 -1
  276. package/dist/src/material/mixins/texture.js +0 -172
  277. package/dist/src/material/mixins/texture.js.map +0 -1
  278. package/dist/src/material/mixins/vertexcolor.js +0 -56
  279. package/dist/src/material/mixins/vertexcolor.js.map +0 -1
  280. package/dist/src/material/particle.js +0 -178
  281. package/dist/src/material/particle.js.map +0 -1
  282. package/dist/src/material/pbrmr.js +0 -97
  283. package/dist/src/material/pbrmr.js.map +0 -1
  284. package/dist/src/material/pbrsg.js +0 -97
  285. package/dist/src/material/pbrsg.js.map +0 -1
  286. package/dist/src/material/shader/helper.js +0 -1209
  287. package/dist/src/material/shader/helper.js.map +0 -1
  288. package/dist/src/material/terrain-cm.js +0 -606
  289. package/dist/src/material/terrain-cm.js.map +0 -1
  290. package/dist/src/material/terrainmaterial.js +0 -375
  291. package/dist/src/material/terrainmaterial.js.map +0 -1
  292. package/dist/src/material/unlit.js +0 -41
  293. package/dist/src/material/unlit.js.map +0 -1
  294. package/dist/src/material/water.js +0 -417
  295. package/dist/src/material/water.js.map +0 -1
  296. package/dist/src/posteffect/bloom.js +0 -361
  297. package/dist/src/posteffect/bloom.js.map +0 -1
  298. package/dist/src/posteffect/compositor.js +0 -226
  299. package/dist/src/posteffect/compositor.js.map +0 -1
  300. package/dist/src/posteffect/fxaa.js +0 -273
  301. package/dist/src/posteffect/fxaa.js.map +0 -1
  302. package/dist/src/posteffect/grayscale.js +0 -69
  303. package/dist/src/posteffect/grayscale.js.map +0 -1
  304. package/dist/src/posteffect/motionblur.js +0 -96
  305. package/dist/src/posteffect/motionblur.js.map +0 -1
  306. package/dist/src/posteffect/posteffect.js +0 -126
  307. package/dist/src/posteffect/posteffect.js.map +0 -1
  308. package/dist/src/posteffect/sao.js +0 -324
  309. package/dist/src/posteffect/sao.js.map +0 -1
  310. package/dist/src/posteffect/ssr.js +0 -489
  311. package/dist/src/posteffect/ssr.js.map +0 -1
  312. package/dist/src/posteffect/taa.js +0 -172
  313. package/dist/src/posteffect/taa.js.map +0 -1
  314. package/dist/src/posteffect/tonemap.js +0 -94
  315. package/dist/src/posteffect/tonemap.js.map +0 -1
  316. package/dist/src/render/abuffer_oit.js +0 -361
  317. package/dist/src/render/abuffer_oit.js.map +0 -1
  318. package/dist/src/render/clipmap.js +0 -851
  319. package/dist/src/render/clipmap.js.map +0 -1
  320. package/dist/src/render/cluster_light.js +0 -333
  321. package/dist/src/render/cluster_light.js.map +0 -1
  322. package/dist/src/render/cull_visitor.js +0 -187
  323. package/dist/src/render/cull_visitor.js.map +0 -1
  324. package/dist/src/render/depthpass.js +0 -68
  325. package/dist/src/render/depthpass.js.map +0 -1
  326. package/dist/src/render/drawable_mixin.js +0 -227
  327. package/dist/src/render/drawable_mixin.js.map +0 -1
  328. package/dist/src/render/envlight.js +0 -463
  329. package/dist/src/render/envlight.js.map +0 -1
  330. package/dist/src/render/fbm_wavegenerator.js +0 -251
  331. package/dist/src/render/fbm_wavegenerator.js.map +0 -1
  332. package/dist/src/render/fft_wavegenerator.js +0 -1006
  333. package/dist/src/render/fft_wavegenerator.js.map +0 -1
  334. package/dist/src/render/fullscreenquad.js +0 -38
  335. package/dist/src/render/fullscreenquad.js.map +0 -1
  336. package/dist/src/render/gerstner_wavegenerator.js +0 -314
  337. package/dist/src/render/gerstner_wavegenerator.js.map +0 -1
  338. package/dist/src/render/globalbindgroup_allocator.js +0 -60
  339. package/dist/src/render/globalbindgroup_allocator.js.map +0 -1
  340. package/dist/src/render/hzb.js +0 -273
  341. package/dist/src/render/hzb.js.map +0 -1
  342. package/dist/src/render/lightpass.js +0 -172
  343. package/dist/src/render/lightpass.js.map +0 -1
  344. package/dist/src/render/objectcolorpass.js +0 -51
  345. package/dist/src/render/objectcolorpass.js.map +0 -1
  346. package/dist/src/render/primitive.js +0 -364
  347. package/dist/src/render/primitive.js.map +0 -1
  348. package/dist/src/render/render_queue.js +0 -467
  349. package/dist/src/render/render_queue.js.map +0 -1
  350. package/dist/src/render/renderbundle_wrapper.js +0 -152
  351. package/dist/src/render/renderbundle_wrapper.js.map +0 -1
  352. package/dist/src/render/renderer.js +0 -455
  353. package/dist/src/render/renderer.js.map +0 -1
  354. package/dist/src/render/renderpass.js +0 -200
  355. package/dist/src/render/renderpass.js.map +0 -1
  356. package/dist/src/render/shadowmap_pass.js +0 -56
  357. package/dist/src/render/shadowmap_pass.js.map +0 -1
  358. package/dist/src/render/sky.js +0 -1103
  359. package/dist/src/render/sky.js.map +0 -1
  360. package/dist/src/render/weightedblended_oit.js +0 -168
  361. package/dist/src/render/weightedblended_oit.js.map +0 -1
  362. package/dist/src/scene/batchgroup.js +0 -162
  363. package/dist/src/scene/batchgroup.js.map +0 -1
  364. package/dist/src/scene/environment.js +0 -209
  365. package/dist/src/scene/environment.js.map +0 -1
  366. package/dist/src/scene/graph_node.js +0 -72
  367. package/dist/src/scene/graph_node.js.map +0 -1
  368. package/dist/src/scene/light.js +0 -416
  369. package/dist/src/scene/light.js.map +0 -1
  370. package/dist/src/scene/mesh.js +0 -341
  371. package/dist/src/scene/mesh.js.map +0 -1
  372. package/dist/src/scene/octree.js +0 -649
  373. package/dist/src/scene/octree.js.map +0 -1
  374. package/dist/src/scene/particlesys.js +0 -738
  375. package/dist/src/scene/particlesys.js.map +0 -1
  376. package/dist/src/scene/raycast_visitor.js +0 -103
  377. package/dist/src/scene/raycast_visitor.js.map +0 -1
  378. package/dist/src/scene/scene.js +0 -284
  379. package/dist/src/scene/scene.js.map +0 -1
  380. package/dist/src/scene/scene_node.js +0 -732
  381. package/dist/src/scene/scene_node.js.map +0 -1
  382. package/dist/src/scene/terrain/grass.js +0 -278
  383. package/dist/src/scene/terrain/grass.js.map +0 -1
  384. package/dist/src/scene/terrain/heightfield.js +0 -475
  385. package/dist/src/scene/terrain/heightfield.js.map +0 -1
  386. package/dist/src/scene/terrain/patch.js +0 -530
  387. package/dist/src/scene/terrain/patch.js.map +0 -1
  388. package/dist/src/scene/terrain/quadtree.js +0 -461
  389. package/dist/src/scene/terrain/quadtree.js.map +0 -1
  390. package/dist/src/scene/terrain/terrain.js +0 -246
  391. package/dist/src/scene/terrain/terrain.js.map +0 -1
  392. package/dist/src/scene/terrain-cm/grass.js +0 -594
  393. package/dist/src/scene/terrain-cm/grass.js.map +0 -1
  394. package/dist/src/scene/terrain-cm/grassmaterial.js +0 -159
  395. package/dist/src/scene/terrain-cm/grassmaterial.js.map +0 -1
  396. package/dist/src/scene/terrain-cm/terrain-cm.js +0 -538
  397. package/dist/src/scene/terrain-cm/terrain-cm.js.map +0 -1
  398. package/dist/src/scene/water.js +0 -374
  399. package/dist/src/scene/water.js.map +0 -1
  400. package/dist/src/shaders/atmosphere.js +0 -957
  401. package/dist/src/shaders/atmosphere.js.map +0 -1
  402. package/dist/src/shaders/fog.js +0 -112
  403. package/dist/src/shaders/fog.js.map +0 -1
  404. package/dist/src/shaders/misc.js +0 -266
  405. package/dist/src/shaders/misc.js.map +0 -1
  406. package/dist/src/shaders/noise.js +0 -222
  407. package/dist/src/shaders/noise.js.map +0 -1
  408. package/dist/src/shaders/pbr.js +0 -51
  409. package/dist/src/shaders/pbr.js.map +0 -1
  410. package/dist/src/shaders/shadow.js +0 -636
  411. package/dist/src/shaders/shadow.js.map +0 -1
  412. package/dist/src/shaders/ssr.js +0 -490
  413. package/dist/src/shaders/ssr.js.map +0 -1
  414. package/dist/src/shaders/temporal.js +0 -215
  415. package/dist/src/shaders/temporal.js.map +0 -1
  416. package/dist/src/shaders/water.js +0 -756
  417. package/dist/src/shaders/water.js.map +0 -1
  418. package/dist/src/shadow/esm.js +0 -237
  419. package/dist/src/shadow/esm.js.map +0 -1
  420. package/dist/src/shadow/pcf_opt.js +0 -181
  421. package/dist/src/shadow/pcf_opt.js.map +0 -1
  422. package/dist/src/shadow/pcf_pd.js +0 -189
  423. package/dist/src/shadow/pcf_pd.js.map +0 -1
  424. package/dist/src/shadow/shader.js +0 -37
  425. package/dist/src/shadow/shader.js.map +0 -1
  426. package/dist/src/shadow/shadow_impl.js +0 -15
  427. package/dist/src/shadow/shadow_impl.js.map +0 -1
  428. package/dist/src/shadow/shadowmapper.js +0 -790
  429. package/dist/src/shadow/shadowmapper.js.map +0 -1
  430. package/dist/src/shadow/ssm.js +0 -159
  431. package/dist/src/shadow/ssm.js.map +0 -1
  432. package/dist/src/shadow/vsm.js +0 -297
  433. package/dist/src/shadow/vsm.js.map +0 -1
  434. package/dist/src/shapes/box.js +0 -386
  435. package/dist/src/shapes/box.js.map +0 -1
  436. package/dist/src/shapes/cylinder.js +0 -125
  437. package/dist/src/shapes/cylinder.js.map +0 -1
  438. package/dist/src/shapes/plane.js +0 -88
  439. package/dist/src/shapes/plane.js.map +0 -1
  440. package/dist/src/shapes/shape.js +0 -87
  441. package/dist/src/shapes/shape.js.map +0 -1
  442. package/dist/src/shapes/sphere.js +0 -114
  443. package/dist/src/shapes/sphere.js.map +0 -1
  444. package/dist/src/shapes/tetrahedron.js +0 -188
  445. package/dist/src/shapes/tetrahedron.js.map +0 -1
  446. package/dist/src/shapes/torus.js +0 -111
  447. package/dist/src/shapes/torus.js.map +0 -1
  448. package/dist/src/utility/aabbtree.js +0 -400
  449. package/dist/src/utility/aabbtree.js.map +0 -1
  450. package/dist/src/utility/bounding_volume.js +0 -29
  451. package/dist/src/utility/bounding_volume.js.map +0 -1
  452. package/dist/src/utility/debug.js +0 -28
  453. package/dist/src/utility/debug.js.map +0 -1
  454. package/dist/src/utility/draco/decoder.js +0 -116
  455. package/dist/src/utility/draco/decoder.js.map +0 -1
  456. package/dist/src/utility/misc.js +0 -105
  457. package/dist/src/utility/misc.js.map +0 -1
  458. package/dist/src/utility/panorama.js +0 -163
  459. package/dist/src/utility/panorama.js.map +0 -1
  460. package/dist/src/utility/pmrem.js +0 -354
  461. package/dist/src/utility/pmrem.js.map +0 -1
  462. package/dist/src/utility/rendermipmap.js +0 -115
  463. package/dist/src/utility/rendermipmap.js.map +0 -1
  464. package/dist/src/utility/serialization/json.js +0 -402
  465. package/dist/src/utility/serialization/json.js.map +0 -1
  466. package/dist/src/utility/serialization/manager.js +0 -623
  467. package/dist/src/utility/serialization/manager.js.map +0 -1
  468. package/dist/src/utility/serialization/scene/animation.js +0 -248
  469. package/dist/src/utility/serialization/scene/animation.js.map +0 -1
  470. package/dist/src/utility/serialization/scene/batch.js +0 -59
  471. package/dist/src/utility/serialization/scene/batch.js.map +0 -1
  472. package/dist/src/utility/serialization/scene/camera.js +0 -790
  473. package/dist/src/utility/serialization/scene/camera.js.map +0 -1
  474. package/dist/src/utility/serialization/scene/common.js +0 -222
  475. package/dist/src/utility/serialization/scene/common.js.map +0 -1
  476. package/dist/src/utility/serialization/scene/light.js +0 -575
  477. package/dist/src/utility/serialization/scene/light.js.map +0 -1
  478. package/dist/src/utility/serialization/scene/material.js +0 -1111
  479. package/dist/src/utility/serialization/scene/material.js.map +0 -1
  480. package/dist/src/utility/serialization/scene/mesh.js +0 -148
  481. package/dist/src/utility/serialization/scene/mesh.js.map +0 -1
  482. package/dist/src/utility/serialization/scene/misc.js +0 -39
  483. package/dist/src/utility/serialization/scene/misc.js.map +0 -1
  484. package/dist/src/utility/serialization/scene/node.js +0 -451
  485. package/dist/src/utility/serialization/scene/node.js.map +0 -1
  486. package/dist/src/utility/serialization/scene/particle.js +0 -425
  487. package/dist/src/utility/serialization/scene/particle.js.map +0 -1
  488. package/dist/src/utility/serialization/scene/primitive.js +0 -692
  489. package/dist/src/utility/serialization/scene/primitive.js.map +0 -1
  490. package/dist/src/utility/serialization/scene/scene.js +0 -704
  491. package/dist/src/utility/serialization/scene/scene.js.map +0 -1
  492. package/dist/src/utility/serialization/scene/terrain.js +0 -488
  493. package/dist/src/utility/serialization/scene/terrain.js.map +0 -1
  494. package/dist/src/utility/serialization/scene/water.js +0 -465
  495. package/dist/src/utility/serialization/scene/water.js.map +0 -1
  496. package/dist/src/utility/shprojector.js +0 -297
  497. package/dist/src/utility/shprojector.js.map +0 -1
  498. package/dist/src/utility/textures/ggxlut.js +0 -213
  499. package/dist/src/utility/textures/ggxlut.js.map +0 -1
  500. package/dist/src/utility/textures/gradientnoise.js +0 -62
  501. package/dist/src/utility/textures/gradientnoise.js.map +0 -1
  502. package/dist/src/utility/textures/randomnoise.js +0 -41
  503. package/dist/src/utility/textures/randomnoise.js.map +0 -1
  504. package/dist/src/values.js +0 -162
  505. package/dist/src/values.js.map +0 -1
  506. package/dist/utility/blueprint/material/common.js +0 -7
  507. package/dist/utility/blueprint/material/common.js.map +0 -1
  508. package/dist/utility/serialization/blueprint/constants.js +0 -255
  509. package/dist/utility/serialization/blueprint/constants.js.map +0 -1
  510. package/dist/utility/serialization/blueprint/material/constants.js +0 -203
  511. package/dist/utility/serialization/blueprint/material/constants.js.map +0 -1
  512. package/dist/utility/serialization/blueprint/material/texture.js +0 -165
  513. package/dist/utility/serialization/blueprint/material/texture.js.map +0 -1
  514. package/dist/utility/serialization/scene/cloth_script.js +0 -834
  515. package/dist/utility/serialization/scene/cloth_script.js.map +0 -1
  516. package/dist/utility/serialization/scene/spring_script.js +0 -596
  517. package/dist/utility/serialization/scene/spring_script.js.map +0 -1
@@ -1,123 +0,0 @@
1
- import { Vector3 } from '@zephyr3d/base';
2
- import { IKConstraint } from './ik_constraint.js';
3
-
4
- /**
5
- * Pole vector constraint for IK chains.
6
- *
7
- * Controls the twist/rotation of a joint chain by ensuring the middle joint
8
- * bends toward a specified pole vector position.
9
- *
10
- * @remarks
11
- * This is commonly used for arms and legs to control which direction
12
- * the elbow or knee points. For example, ensuring an elbow points
13
- * backward or a knee points forward.
14
- *
15
- * The pole vector defines a plane, and the middle joint is constrained
16
- * to lie on this plane.
17
- *
18
- * @public
19
- */ class IKPoleVectorConstraint extends IKConstraint {
20
- /** The pole vector position in world space */ _poleVector;
21
- /** Weight of the constraint (0 = no effect, 1 = full effect) */ _weight;
22
- /**
23
- * Create a pole vector constraint.
24
- *
25
- * @param jointIndex - Index of the middle joint to constrain (typically elbow or knee)
26
- * @param poleVector - Position in world space that the joint should point toward
27
- * @param weight - Constraint weight (0-1, default: 1)
28
- */ constructor(jointIndex, poleVector, weight = 1){
29
- super(jointIndex);
30
- this._poleVector = poleVector.clone();
31
- this._weight = Math.max(0, Math.min(1, weight));
32
- }
33
- /**
34
- * Get the pole vector position.
35
- */ get poleVector() {
36
- return this._poleVector;
37
- }
38
- /**
39
- * Set the pole vector position.
40
- */ set poleVector(value) {
41
- this._poleVector.set(value);
42
- }
43
- /**
44
- * Get the constraint weight.
45
- */ get weight() {
46
- return this._weight;
47
- }
48
- /**
49
- * Set the constraint weight (0-1).
50
- */ set weight(value) {
51
- this._weight = Math.max(0, Math.min(1, value));
52
- }
53
- /**
54
- * Apply the pole vector constraint.
55
- *
56
- * This adjusts the middle joint position to align with the pole vector
57
- * while maintaining bone lengths.
58
- */ apply(joints) {
59
- const index = this._jointIndex;
60
- // Need at least 3 joints (parent, this, child)
61
- if (index < 1 || index >= joints.length - 1) {
62
- return;
63
- }
64
- if (this._weight < 0.001) {
65
- return; // No effect
66
- }
67
- const parentJoint = joints[index - 1];
68
- const currentJoint = joints[index];
69
- const childJoint = joints[index + 1];
70
- // Calculate the plane defined by parent, child, and pole vector
71
- const parentPos = parentJoint.position;
72
- const childPos = childJoint.position;
73
- const currentPos = currentJoint.position;
74
- // Vector from parent to child (the "line" we're bending around)
75
- const parentToChild = Vector3.sub(childPos, parentPos, new Vector3());
76
- const lineLength = parentToChild.magnitude;
77
- if (lineLength < 0.000001) {
78
- return; // Parent and child are at same position
79
- }
80
- const lineDir = Vector3.scale(parentToChild, 1 / lineLength, new Vector3());
81
- // Project current joint onto the parent-child line
82
- const parentToCurrent = Vector3.sub(currentPos, parentPos, new Vector3());
83
- const projectionLength = Vector3.dot(parentToCurrent, lineDir);
84
- const projectionPoint = Vector3.scale(lineDir, projectionLength, new Vector3());
85
- projectionPoint.addBy(parentPos);
86
- // Vector from projection point to current joint (perpendicular to line)
87
- const perpendicular = Vector3.sub(currentPos, projectionPoint, new Vector3());
88
- const perpLength = perpendicular.magnitude;
89
- if (perpLength < 0.000001) {
90
- return; // Current joint is on the line
91
- }
92
- // Calculate desired direction toward pole vector
93
- const parentToPole = Vector3.sub(this._poleVector, parentPos, new Vector3());
94
- const poleProjectionLength = Vector3.dot(parentToPole, lineDir);
95
- const poleProjectionPoint = Vector3.scale(lineDir, poleProjectionLength, new Vector3());
96
- poleProjectionPoint.addBy(parentPos);
97
- // Direction from projection to pole (perpendicular to line)
98
- const poleDirection = Vector3.sub(this._poleVector, poleProjectionPoint, new Vector3());
99
- const poleDirLength = poleDirection.magnitude;
100
- if (poleDirLength < 0.000001) {
101
- return; // Pole is on the line
102
- }
103
- poleDirection.scaleBy(1 / poleDirLength);
104
- // Calculate new position for current joint
105
- // Keep the same distance from the line, but rotate toward pole direction
106
- const desiredPerpendicular = Vector3.scale(poleDirection, perpLength, new Vector3());
107
- const newPosition = Vector3.add(projectionPoint, desiredPerpendicular, new Vector3());
108
- // Apply weight (blend between original and constrained position)
109
- if (this._weight < 0.999) {
110
- // Manual lerp: result = a + (b - a) * t
111
- const blended = new Vector3();
112
- blended.x = currentPos.x + (newPosition.x - currentPos.x) * this._weight;
113
- blended.y = currentPos.y + (newPosition.y - currentPos.y) * this._weight;
114
- blended.z = currentPos.z + (newPosition.z - currentPos.z) * this._weight;
115
- currentJoint.position.set(blended);
116
- } else {
117
- currentJoint.position.set(newPosition);
118
- }
119
- }
120
- }
121
-
122
- export { IKPoleVectorConstraint };
123
- //# sourceMappingURL=ik_pole_constraint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ik_pole_constraint.js","sources":["../../../src/animation/ik/ik_pole_constraint.ts"],"sourcesContent":["import { Vector3 } from '@zephyr3d/base';\r\nimport { IKConstraint } from './ik_constraint';\r\nimport type { IKJoint } from './ik_joint';\r\n\r\n/**\r\n * Pole vector constraint for IK chains.\r\n *\r\n * Controls the twist/rotation of a joint chain by ensuring the middle joint\r\n * bends toward a specified pole vector position.\r\n *\r\n * @remarks\r\n * This is commonly used for arms and legs to control which direction\r\n * the elbow or knee points. For example, ensuring an elbow points\r\n * backward or a knee points forward.\r\n *\r\n * The pole vector defines a plane, and the middle joint is constrained\r\n * to lie on this plane.\r\n *\r\n * @public\r\n */\r\nexport class IKPoleVectorConstraint extends IKConstraint {\r\n /** The pole vector position in world space */\r\n private _poleVector: Vector3;\r\n /** Weight of the constraint (0 = no effect, 1 = full effect) */\r\n private _weight: number;\r\n\r\n /**\r\n * Create a pole vector constraint.\r\n *\r\n * @param jointIndex - Index of the middle joint to constrain (typically elbow or knee)\r\n * @param poleVector - Position in world space that the joint should point toward\r\n * @param weight - Constraint weight (0-1, default: 1)\r\n */\r\n constructor(jointIndex: number, poleVector: Vector3, weight = 1) {\r\n super(jointIndex);\r\n this._poleVector = poleVector.clone();\r\n this._weight = Math.max(0, Math.min(1, weight));\r\n }\r\n\r\n /**\r\n * Get the pole vector position.\r\n */\r\n get poleVector(): Vector3 {\r\n return this._poleVector;\r\n }\r\n\r\n /**\r\n * Set the pole vector position.\r\n */\r\n set poleVector(value: Vector3) {\r\n this._poleVector.set(value);\r\n }\r\n\r\n /**\r\n * Get the constraint weight.\r\n */\r\n get weight(): number {\r\n return this._weight;\r\n }\r\n\r\n /**\r\n * Set the constraint weight (0-1).\r\n */\r\n set weight(value: number) {\r\n this._weight = Math.max(0, Math.min(1, value));\r\n }\r\n\r\n /**\r\n * Apply the pole vector constraint.\r\n *\r\n * This adjusts the middle joint position to align with the pole vector\r\n * while maintaining bone lengths.\r\n */\r\n apply(joints: IKJoint[]): void {\r\n const index = this._jointIndex;\r\n\r\n // Need at least 3 joints (parent, this, child)\r\n if (index < 1 || index >= joints.length - 1) {\r\n return;\r\n }\r\n\r\n if (this._weight < 0.001) {\r\n return; // No effect\r\n }\r\n\r\n const parentJoint = joints[index - 1];\r\n const currentJoint = joints[index];\r\n const childJoint = joints[index + 1];\r\n\r\n // Calculate the plane defined by parent, child, and pole vector\r\n const parentPos = parentJoint.position;\r\n const childPos = childJoint.position;\r\n const currentPos = currentJoint.position;\r\n\r\n // Vector from parent to child (the \"line\" we're bending around)\r\n const parentToChild = Vector3.sub(childPos, parentPos, new Vector3());\r\n const lineLength = parentToChild.magnitude;\r\n\r\n if (lineLength < 0.000001) {\r\n return; // Parent and child are at same position\r\n }\r\n\r\n const lineDir = Vector3.scale(parentToChild, 1 / lineLength, new Vector3());\r\n\r\n // Project current joint onto the parent-child line\r\n const parentToCurrent = Vector3.sub(currentPos, parentPos, new Vector3());\r\n const projectionLength = Vector3.dot(parentToCurrent, lineDir);\r\n const projectionPoint = Vector3.scale(lineDir, projectionLength, new Vector3());\r\n projectionPoint.addBy(parentPos);\r\n\r\n // Vector from projection point to current joint (perpendicular to line)\r\n const perpendicular = Vector3.sub(currentPos, projectionPoint, new Vector3());\r\n const perpLength = perpendicular.magnitude;\r\n\r\n if (perpLength < 0.000001) {\r\n return; // Current joint is on the line\r\n }\r\n\r\n // Calculate desired direction toward pole vector\r\n const parentToPole = Vector3.sub(this._poleVector, parentPos, new Vector3());\r\n const poleProjectionLength = Vector3.dot(parentToPole, lineDir);\r\n const poleProjectionPoint = Vector3.scale(lineDir, poleProjectionLength, new Vector3());\r\n poleProjectionPoint.addBy(parentPos);\r\n\r\n // Direction from projection to pole (perpendicular to line)\r\n const poleDirection = Vector3.sub(this._poleVector, poleProjectionPoint, new Vector3());\r\n const poleDirLength = poleDirection.magnitude;\r\n\r\n if (poleDirLength < 0.000001) {\r\n return; // Pole is on the line\r\n }\r\n\r\n poleDirection.scaleBy(1 / poleDirLength);\r\n\r\n // Calculate new position for current joint\r\n // Keep the same distance from the line, but rotate toward pole direction\r\n const desiredPerpendicular = Vector3.scale(poleDirection, perpLength, new Vector3());\r\n const newPosition = Vector3.add(projectionPoint, desiredPerpendicular, new Vector3());\r\n\r\n // Apply weight (blend between original and constrained position)\r\n if (this._weight < 0.999) {\r\n // Manual lerp: result = a + (b - a) * t\r\n const blended = new Vector3();\r\n blended.x = currentPos.x + (newPosition.x - currentPos.x) * this._weight;\r\n blended.y = currentPos.y + (newPosition.y - currentPos.y) * this._weight;\r\n blended.z = currentPos.z + (newPosition.z - currentPos.z) * this._weight;\r\n currentJoint.position.set(blended);\r\n } else {\r\n currentJoint.position.set(newPosition);\r\n }\r\n }\r\n}\r\n"],"names":["IKPoleVectorConstraint","IKConstraint","jointIndex","poleVector","weight","_poleVector","clone","_weight","Math","max","min","value","set","apply","joints","index","_jointIndex","length","parentJoint","currentJoint","childJoint","parentPos","position","childPos","currentPos","parentToChild","Vector3","sub","lineLength","magnitude","lineDir","scale","parentToCurrent","projectionLength","dot","projectionPoint","addBy","perpendicular","perpLength","parentToPole","poleProjectionLength","poleProjectionPoint","poleDirection","poleDirLength","scaleBy","desiredPerpendicular","newPosition","add","blended","x","y","z"],"mappings":"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"}
@@ -1,96 +0,0 @@
1
- import { Quaternion } from '@zephyr3d/base';
2
- import { AnimationTrack } from '../animationtrack.js';
3
-
4
- /**
5
- * Animation track that applies IK solving.
6
- *
7
- * @remarks
8
- * This track integrates IK solving into the animation system, allowing
9
- * IK to be blended with other animations. The track solves the IK chain
10
- * each frame and produces joint rotations that can be mixed with other
11
- * animation tracks.
12
- *
13
- * @public
14
- */ class IKTrack extends AnimationTrack {
15
- /** The IK solver */ _solver;
16
- /** Cached state for reuse */ _state;
17
- /** Duration of the track (can be infinite for procedural IK) */ _duration;
18
- /**
19
- * Create an IK animation track.
20
- *
21
- * @param solver - The FABRIK solver to use
22
- * @param duration - Duration of the track in seconds (default: Infinity for procedural)
23
- */ constructor(solver, duration = Infinity){
24
- super(false);
25
- this._solver = solver;
26
- this._duration = duration;
27
- // Initialize state with identity rotations
28
- const numJoints = solver.chain.joints.length - 1; // Exclude end effector
29
- this._state = {
30
- rotations: Array.from({
31
- length: numJoints
32
- }, ()=>new Quaternion())
33
- };
34
- }
35
- /**
36
- * Get the IK solver.
37
- */ get solver() {
38
- return this._solver;
39
- }
40
- /**
41
- * Set the duration of the track.
42
- */ setDuration(duration) {
43
- this._duration = Math.max(0, duration);
44
- }
45
- /**
46
- * Calculate IK state at the given time.
47
- *
48
- * @remarks
49
- * For procedural IK, the time parameter is typically ignored.
50
- * The solver uses the current target position set externally.
51
- */ calculateState(_target, _currentTime) {
52
- const joints = this._solver.chain.joints;
53
- // Store current rotations as the calculated state
54
- for(let i = 0; i < joints.length - 1; i++){
55
- this._state.rotations[i].set(joints[i].rotation);
56
- }
57
- return this._state;
58
- }
59
- /**
60
- * Apply IK state to the target scene nodes.
61
- */ applyState(_target, state) {
62
- const joints = this._solver.chain.joints;
63
- // Apply rotations to scene nodes
64
- for(let i = 0; i < state.rotations.length && i < joints.length - 1; i++){
65
- joints[i].node.rotation = state.rotations[i];
66
- }
67
- }
68
- /**
69
- * Mix two IK states using spherical interpolation.
70
- */ mixState(a, b, t) {
71
- const result = {
72
- rotations: []
73
- };
74
- const count = Math.min(a.rotations.length, b.rotations.length);
75
- for(let i = 0; i < count; i++){
76
- result.rotations.push(Quaternion.slerp(a.rotations[i], b.rotations[i], t));
77
- }
78
- return result;
79
- }
80
- /**
81
- * Get the blend identifier for this track.
82
- *
83
- * IK tracks with the same root joint can be blended together.
84
- */ getBlendId() {
85
- const rootNode = this._solver.chain.root.node;
86
- return `ik-chain-${rootNode.runtimeId}`;
87
- }
88
- /**
89
- * Get the duration of this track.
90
- */ getDuration() {
91
- return this._duration;
92
- }
93
- }
94
-
95
- export { IKTrack };
96
- //# sourceMappingURL=ik_track.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ik_track.js","sources":["../../../src/animation/ik/ik_track.ts"],"sourcesContent":["import { Quaternion } from '@zephyr3d/base';\r\nimport { AnimationTrack } from '../animationtrack';\r\nimport type { FABRIKSolver } from './fabrik_solver';\r\n\r\n/**\r\n * IK animation track state.\r\n *\r\n * Represents the rotations of all joints in an IK chain at a specific time.\r\n */\r\ninterface IKState {\r\n /** Array of joint rotations (one per joint, excluding end effector) */\r\n rotations: Quaternion[];\r\n}\r\n\r\n/**\r\n * Animation track that applies IK solving.\r\n *\r\n * @remarks\r\n * This track integrates IK solving into the animation system, allowing\r\n * IK to be blended with other animations. The track solves the IK chain\r\n * each frame and produces joint rotations that can be mixed with other\r\n * animation tracks.\r\n *\r\n * @public\r\n */\r\nexport class IKTrack extends AnimationTrack<IKState> {\r\n /** The IK solver */\r\n private _solver: FABRIKSolver;\r\n /** Cached state for reuse */\r\n private _state: IKState;\r\n /** Duration of the track (can be infinite for procedural IK) */\r\n private _duration: number;\r\n\r\n /**\r\n * Create an IK animation track.\r\n *\r\n * @param solver - The FABRIK solver to use\r\n * @param duration - Duration of the track in seconds (default: Infinity for procedural)\r\n */\r\n constructor(solver: FABRIKSolver, duration = Infinity) {\r\n super(false);\r\n this._solver = solver;\r\n this._duration = duration;\r\n\r\n // Initialize state with identity rotations\r\n const numJoints = solver.chain.joints.length - 1; // Exclude end effector\r\n this._state = {\r\n rotations: Array.from({ length: numJoints }, () => new Quaternion())\r\n };\r\n }\r\n\r\n /**\r\n * Get the IK solver.\r\n */\r\n get solver(): FABRIKSolver {\r\n return this._solver;\r\n }\r\n\r\n /**\r\n * Set the duration of the track.\r\n */\r\n setDuration(duration: number): void {\r\n this._duration = Math.max(0, duration);\r\n }\r\n\r\n /**\r\n * Calculate IK state at the given time.\r\n *\r\n * @remarks\r\n * For procedural IK, the time parameter is typically ignored.\r\n * The solver uses the current target position set externally.\r\n */\r\n calculateState(_target: object, _currentTime: number): IKState {\r\n const joints = this._solver.chain.joints;\r\n\r\n // Store current rotations as the calculated state\r\n for (let i = 0; i < joints.length - 1; i++) {\r\n this._state.rotations[i].set(joints[i].rotation);\r\n }\r\n\r\n return this._state;\r\n }\r\n\r\n /**\r\n * Apply IK state to the target scene nodes.\r\n */\r\n applyState(_target: object, state: IKState): void {\r\n const joints = this._solver.chain.joints;\r\n\r\n // Apply rotations to scene nodes\r\n for (let i = 0; i < state.rotations.length && i < joints.length - 1; i++) {\r\n joints[i].node.rotation = state.rotations[i];\r\n }\r\n }\r\n\r\n /**\r\n * Mix two IK states using spherical interpolation.\r\n */\r\n mixState(a: IKState, b: IKState, t: number): IKState {\r\n const result: IKState = {\r\n rotations: []\r\n };\r\n\r\n const count = Math.min(a.rotations.length, b.rotations.length);\r\n for (let i = 0; i < count; i++) {\r\n result.rotations.push(Quaternion.slerp(a.rotations[i], b.rotations[i], t));\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Get the blend identifier for this track.\r\n *\r\n * IK tracks with the same root joint can be blended together.\r\n */\r\n getBlendId(): string {\r\n const rootNode = this._solver.chain.root.node;\r\n return `ik-chain-${rootNode.runtimeId}`;\r\n }\r\n\r\n /**\r\n * Get the duration of this track.\r\n */\r\n getDuration(): number {\r\n return this._duration;\r\n }\r\n}\r\n"],"names":["IKTrack","AnimationTrack","solver","duration","Infinity","_solver","_duration","numJoints","chain","joints","length","_state","rotations","Array","from","Quaternion","setDuration","Math","max","calculateState","_target","_currentTime","i","set","rotation","applyState","state","node","mixState","a","b","t","result","count","min","push","slerp","getBlendId","rootNode","root","runtimeId","getDuration"],"mappings":"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"}
@@ -1,71 +0,0 @@
1
- import { SkeletonPostProcessor } from './skeleton_postprocessor.js';
2
-
3
- /**
4
- * Post-processor wrapper for IK solvers.
5
- *
6
- * Integrates IK solving into the skeleton post-processing pipeline.
7
- * The IK solver is executed each frame and results are blended with the base animation.
8
- *
9
- * @example
10
- * ```typescript
11
- * const ikChain = new IKChain([joint1, joint2, joint3]);
12
- * const ikSolver = new FABRIKSolver(ikChain);
13
- * const targetPos = new Vector3(1, 2, 3);
14
- * const processor = new IKPostProcessor(ikSolver, targetPos, 1.0);
15
- * skeleton.addPostProcessor(processor);
16
- * ```
17
- *
18
- * @public
19
- */ class IKPostProcessor extends SkeletonPostProcessor {
20
- _solver;
21
- _target;
22
- /**
23
- * Create an IK post-processor.
24
- *
25
- * @param solver - The IK solver to integrate
26
- * @param target - Target position for the end effector
27
- * @param weight - Blend weight [0-1] (default: 1.0)
28
- * @param priority - Priority for ordering (default: 50)
29
- */ constructor(solver, target, weight = 1.0, priority = 50){
30
- super(weight, priority);
31
- this._solver = solver;
32
- this._target = target.clone();
33
- }
34
- /**
35
- * Get the IK solver.
36
- */ get solver() {
37
- return this._solver;
38
- }
39
- /**
40
- * Get the current target position.
41
- */ get target() {
42
- return this._target.clone();
43
- }
44
- /**
45
- * Set the target position for the end effector.
46
- *
47
- * @param target - New target position (will be cloned)
48
- */ setTarget(target) {
49
- this._target.set(target);
50
- }
51
- /**
52
- * Apply IK solving to skeleton joints.
53
- */ apply(_skeleton, _deltaTime) {
54
- if (!this._enabled || this._weight <= 0) {
55
- return;
56
- }
57
- // Solve IK
58
- this._solver.solve(this._target);
59
- // Apply to nodes with blending
60
- this._solver.applyToNodes(this._weight);
61
- }
62
- /**
63
- * Reset the IK solver to initial state.
64
- */ reset() {
65
- // IK solvers typically don't need explicit reset
66
- // as they solve based on current joint positions
67
- }
68
- }
69
-
70
- export { IKPostProcessor };
71
- //# sourceMappingURL=ik_postprocessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ik_postprocessor.js","sources":["../../src/animation/ik_postprocessor.ts"],"sourcesContent":["import { SkeletonPostProcessor } from './skeleton_postprocessor';\r\nimport type { Skeleton } from './skeleton';\r\nimport type { IKSolver } from './ik/ik_solver';\r\nimport type { Vector3 } from '@zephyr3d/base';\r\n\r\n/**\r\n * Post-processor wrapper for IK solvers.\r\n *\r\n * Integrates IK solving into the skeleton post-processing pipeline.\r\n * The IK solver is executed each frame and results are blended with the base animation.\r\n *\r\n * @example\r\n * ```typescript\r\n * const ikChain = new IKChain([joint1, joint2, joint3]);\r\n * const ikSolver = new FABRIKSolver(ikChain);\r\n * const targetPos = new Vector3(1, 2, 3);\r\n * const processor = new IKPostProcessor(ikSolver, targetPos, 1.0);\r\n * skeleton.addPostProcessor(processor);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class IKPostProcessor<Solver extends IKSolver = IKSolver> extends SkeletonPostProcessor {\r\n private _solver: Solver;\r\n private _target: Vector3;\r\n\r\n /**\r\n * Create an IK post-processor.\r\n *\r\n * @param solver - The IK solver to integrate\r\n * @param target - Target position for the end effector\r\n * @param weight - Blend weight [0-1] (default: 1.0)\r\n * @param priority - Priority for ordering (default: 50)\r\n */\r\n constructor(solver: Solver, target: Vector3, weight: number = 1.0, priority: number = 50) {\r\n super(weight, priority);\r\n this._solver = solver;\r\n this._target = target.clone();\r\n }\r\n\r\n /**\r\n * Get the IK solver.\r\n */\r\n get solver(): Solver {\r\n return this._solver;\r\n }\r\n\r\n /**\r\n * Get the current target position.\r\n */\r\n get target(): Vector3 {\r\n return this._target.clone();\r\n }\r\n\r\n /**\r\n * Set the target position for the end effector.\r\n *\r\n * @param target - New target position (will be cloned)\r\n */\r\n setTarget(target: Vector3): void {\r\n this._target.set(target);\r\n }\r\n\r\n /**\r\n * Apply IK solving to skeleton joints.\r\n */\r\n apply(_skeleton: Skeleton, _deltaTime: number): void {\r\n if (!this._enabled || this._weight <= 0) {\r\n return;\r\n }\r\n\r\n // Solve IK\r\n this._solver.solve(this._target);\r\n\r\n // Apply to nodes with blending\r\n this._solver.applyToNodes(this._weight);\r\n }\r\n\r\n /**\r\n * Reset the IK solver to initial state.\r\n */\r\n reset(): void {\r\n // IK solvers typically don't need explicit reset\r\n // as they solve based on current joint positions\r\n }\r\n}\r\n"],"names":["IKPostProcessor","SkeletonPostProcessor","_solver","_target","solver","target","weight","priority","clone","setTarget","set","apply","_skeleton","_deltaTime","_enabled","_weight","solve","applyToNodes","reset"],"mappings":";;AAKA;;;;;;;;;;;;;;;;IAiBO,MAAMA,eAA4DC,SAAAA,qBAAAA,CAAAA;IAC/DC,OAAgB;IAChBC,OAAiB;AAEzB;;;;;;;MAQA,WAAA,CAAYC,MAAc,EAAEC,MAAe,EAAEC,SAAiB,GAAG,EAAEC,QAAmB,GAAA,EAAE,CAAE;AACxF,QAAA,KAAK,CAACD,MAAQC,EAAAA,QAAAA,CAAAA;QACd,IAAI,CAACL,OAAO,GAAGE,MAAAA;AACf,QAAA,IAAI,CAACD,OAAO,GAAGE,MAAAA,CAAOG,KAAK,EAAA;AAC7B;AAEA;;AAEC,MACD,IAAIJ,MAAiB,GAAA;QACnB,OAAO,IAAI,CAACF,OAAO;AACrB;AAEA;;AAEC,MACD,IAAIG,MAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAACF,OAAO,CAACK,KAAK,EAAA;AAC3B;AAEA;;;;MAKAC,SAAAA,CAAUJ,MAAe,EAAQ;AAC/B,QAAA,IAAI,CAACF,OAAO,CAACO,GAAG,CAACL,MAAAA,CAAAA;AACnB;AAEA;;AAEC,MACDM,KAAMC,CAAAA,SAAmB,EAAEC,UAAkB,EAAQ;QACnD,IAAI,CAAC,IAAI,CAACC,QAAQ,IAAI,IAAI,CAACC,OAAO,IAAI,CAAG,EAAA;AACvC,YAAA;AACF;;AAGA,QAAA,IAAI,CAACb,OAAO,CAACc,KAAK,CAAC,IAAI,CAACb,OAAO,CAAA;;AAG/B,QAAA,IAAI,CAACD,OAAO,CAACe,YAAY,CAAC,IAAI,CAACF,OAAO,CAAA;AACxC;AAEA;;AAEC,MACDG,KAAc,GAAA;;;AAGd;AACF;;;;"}
@@ -1,16 +0,0 @@
1
- // spcr-joint-dynamics — math adapter layer
2
- // Wraps base/vector.ts (class-based) with plain-object API for backward compatibility
3
- // ── Utility ──
4
- function clamp(v, min, max) {
5
- return v < min ? min : v > max ? max : v;
6
- }
7
- function clamp01(v) {
8
- return v < 0 ? 0 : v > 1 ? 1 : v;
9
- }
10
- function smoothStep(from, to, t) {
11
- const c = clamp01((t - from) / (to - from));
12
- return c * c * (3 - 2 * c);
13
- }
14
-
15
- export { clamp, clamp01, smoothStep };
16
- //# sourceMappingURL=math.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"math.js","sources":["../../../src/animation/joint_dynamics/math.ts"],"sourcesContent":["// spcr-joint-dynamics — math adapter layer\r\n// Wraps base/vector.ts (class-based) with plain-object API for backward compatibility\r\n\r\n// ── Utility ──\r\n\r\nexport function clamp(v: number, min: number, max: number): number {\r\n return v < min ? min : v > max ? max : v;\r\n}\r\n\r\nexport function clamp01(v: number): number {\r\n return v < 0 ? 0 : v > 1 ? 1 : v;\r\n}\r\n\r\nexport function smoothStep(from: number, to: number, t: number): number {\r\n const c = clamp01((t - from) / (to - from));\r\n return c * c * (3 - 2 * c);\r\n}\r\n"],"names":["clamp","v","min","max","clamp01","smoothStep","from","to","t","c"],"mappings":"AAAA;AACA;AAEA;AAEO,SAASA,KAAMC,CAAAA,CAAS,EAAEC,GAAW,EAAEC,GAAW,EAAA;AACvD,IAAA,OAAOF,CAAIC,GAAAA,GAAAA,GAAMA,GAAMD,GAAAA,CAAAA,GAAIE,MAAMA,GAAMF,GAAAA,CAAAA;AACzC;AAEO,SAASG,QAAQH,CAAS,EAAA;AAC/B,IAAA,OAAOA,CAAI,GAAA,CAAA,GAAI,CAAIA,GAAAA,CAAAA,GAAI,IAAI,CAAIA,GAAAA,CAAAA;AACjC;AAEO,SAASI,UAAWC,CAAAA,IAAY,EAAEC,EAAU,EAAEC,CAAS,EAAA;IAC5D,MAAMC,CAAAA,GAAIL,QAAQ,CAACI,IAAIF,IAAG,KAAMC,EAAAA,GAAKD,IAAG,CAAA,CAAA;AACxC,IAAA,OAAOG,CAAIA,GAAAA,CAAAA,IAAK,CAAA,GAAI,IAAIA,CAAAA,CAAAA;AAC1B;;;;"}
@@ -1,156 +0,0 @@
1
- import { Vector3, Quaternion } from '@zephyr3d/base';
2
- import { SkeletonPostProcessor } from './skeleton_postprocessor.js';
3
-
4
- /**
5
- * Post-processor for manual joint transform control.
6
- *
7
- * Allows setting custom transforms for specific joints that blend with
8
- * the base animation/bind pose layer.
9
- *
10
- * @example
11
- * ```typescript
12
- * const processor = new ManualTransformProcessor();
13
- * processor.setJointPosition(5, new Vector3(1, 2, 3));
14
- * processor.setJointRotation(5, Quaternion.fromEuler(0, Math.PI / 2, 0));
15
- * skeleton.addPostProcessor(processor);
16
- * ```
17
- *
18
- * @public
19
- */ class ManualTransformProcessor extends SkeletonPostProcessor {
20
- /** Map of joint index to transform overrides */ _overrides;
21
- constructor(weight = 1.0, priority = 100){
22
- super(weight, priority);
23
- this._overrides = new Map();
24
- }
25
- /**
26
- * Set position override for a joint.
27
- *
28
- * @param jointIndex - Index of the joint in the skeleton
29
- * @param position - New local position (will be cloned)
30
- */ setJointPosition(jointIndex, position) {
31
- let override = this._overrides.get(jointIndex);
32
- if (!override) {
33
- override = {};
34
- this._overrides.set(jointIndex, override);
35
- }
36
- override.position = position.clone();
37
- }
38
- /**
39
- * Set rotation override for a joint.
40
- *
41
- * @param jointIndex - Index of the joint in the skeleton
42
- * @param rotation - New local rotation (will be cloned)
43
- */ setJointRotation(jointIndex, rotation) {
44
- let override = this._overrides.get(jointIndex);
45
- if (!override) {
46
- override = {};
47
- this._overrides.set(jointIndex, override);
48
- }
49
- override.rotation = rotation.clone();
50
- }
51
- /**
52
- * Set scale override for a joint.
53
- *
54
- * @param jointIndex - Index of the joint in the skeleton
55
- * @param scale - New local scale (will be cloned)
56
- */ setJointScale(jointIndex, scale) {
57
- let override = this._overrides.get(jointIndex);
58
- if (!override) {
59
- override = {};
60
- this._overrides.set(jointIndex, override);
61
- }
62
- override.scale = scale.clone();
63
- }
64
- /**
65
- * Set full transform override for a joint.
66
- *
67
- * @param jointIndex - Index of the joint in the skeleton
68
- * @param position - New local position (optional)
69
- * @param rotation - New local rotation (optional)
70
- * @param scale - New local scale (optional)
71
- */ setJointTransform(jointIndex, position, rotation, scale) {
72
- const override = {};
73
- if (position) {
74
- override.position = position.clone();
75
- }
76
- if (rotation) {
77
- override.rotation = rotation.clone();
78
- }
79
- if (scale) {
80
- override.scale = scale.clone();
81
- }
82
- this._overrides.set(jointIndex, override);
83
- }
84
- /**
85
- * Clear override for a specific joint.
86
- *
87
- * @param jointIndex - Index of the joint to clear
88
- */ clearJoint(jointIndex) {
89
- this._overrides.delete(jointIndex);
90
- }
91
- /**
92
- * Clear all joint overrides.
93
- */ clearAll() {
94
- this._overrides.clear();
95
- }
96
- /**
97
- * Check if a joint has any overrides.
98
- *
99
- * @param jointIndex - Index of the joint to check
100
- * @returns True if the joint has overrides
101
- */ hasOverride(jointIndex) {
102
- return this._overrides.has(jointIndex);
103
- }
104
- /**
105
- * Get the number of joints with overrides.
106
- */ get overrideCount() {
107
- return this._overrides.size;
108
- }
109
- /**
110
- * Apply manual transform overrides to skeleton joints.
111
- */ apply(skeleton, _deltaTime) {
112
- if (!this._enabled || this._overrides.size === 0 || this._weight <= 0) {
113
- return;
114
- }
115
- const joints = skeleton.joints;
116
- const weight = this._weight;
117
- this._overrides.forEach((override, jointIndex)=>{
118
- if (jointIndex < 0 || jointIndex >= joints.length) {
119
- return;
120
- }
121
- const joint = joints[jointIndex];
122
- // Blend position
123
- if (override.position) {
124
- if (weight >= 1) {
125
- joint.position = override.position;
126
- } else {
127
- joint.position = Vector3.combine(joint.position, override.position, weight, 1 - weight);
128
- }
129
- }
130
- // Blend rotation
131
- if (override.rotation) {
132
- if (weight >= 1) {
133
- joint.rotation = override.rotation;
134
- } else {
135
- joint.rotation = Quaternion.slerp(joint.rotation, override.rotation, weight);
136
- }
137
- }
138
- // Blend scale
139
- if (override.scale) {
140
- if (weight >= 1) {
141
- joint.scale = override.scale;
142
- } else {
143
- joint.scale = Vector3.combine(joint.scale, override.scale, weight, 1 - weight);
144
- }
145
- }
146
- });
147
- }
148
- /**
149
- * Reset the processor (clears all overrides).
150
- */ reset() {
151
- this._overrides.clear();
152
- }
153
- }
154
-
155
- export { ManualTransformProcessor };
156
- //# sourceMappingURL=manual_transform_processor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"manual_transform_processor.js","sources":["../../src/animation/manual_transform_processor.ts"],"sourcesContent":["import { Vector3, Quaternion } from '@zephyr3d/base';\r\nimport { SkeletonPostProcessor } from './skeleton_postprocessor';\r\nimport type { Skeleton } from './skeleton';\r\n\r\n/**\r\n * Manual transform override for specific joints.\r\n *\r\n * Stores position, rotation, and scale overrides for joints and blends them\r\n * with the base animation layer.\r\n */\r\ninterface JointOverride {\r\n position?: Vector3;\r\n rotation?: Quaternion;\r\n scale?: Vector3;\r\n}\r\n\r\n/**\r\n * Post-processor for manual joint transform control.\r\n *\r\n * Allows setting custom transforms for specific joints that blend with\r\n * the base animation/bind pose layer.\r\n *\r\n * @example\r\n * ```typescript\r\n * const processor = new ManualTransformProcessor();\r\n * processor.setJointPosition(5, new Vector3(1, 2, 3));\r\n * processor.setJointRotation(5, Quaternion.fromEuler(0, Math.PI / 2, 0));\r\n * skeleton.addPostProcessor(processor);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class ManualTransformProcessor extends SkeletonPostProcessor {\r\n /** Map of joint index to transform overrides */\r\n private _overrides: Map<number, JointOverride>;\r\n\r\n constructor(weight: number = 1.0, priority: number = 100) {\r\n super(weight, priority);\r\n this._overrides = new Map();\r\n }\r\n\r\n /**\r\n * Set position override for a joint.\r\n *\r\n * @param jointIndex - Index of the joint in the skeleton\r\n * @param position - New local position (will be cloned)\r\n */\r\n setJointPosition(jointIndex: number, position: Vector3): void {\r\n let override = this._overrides.get(jointIndex);\r\n if (!override) {\r\n override = {};\r\n this._overrides.set(jointIndex, override);\r\n }\r\n override.position = position.clone();\r\n }\r\n\r\n /**\r\n * Set rotation override for a joint.\r\n *\r\n * @param jointIndex - Index of the joint in the skeleton\r\n * @param rotation - New local rotation (will be cloned)\r\n */\r\n setJointRotation(jointIndex: number, rotation: Quaternion): void {\r\n let override = this._overrides.get(jointIndex);\r\n if (!override) {\r\n override = {};\r\n this._overrides.set(jointIndex, override);\r\n }\r\n override.rotation = rotation.clone();\r\n }\r\n\r\n /**\r\n * Set scale override for a joint.\r\n *\r\n * @param jointIndex - Index of the joint in the skeleton\r\n * @param scale - New local scale (will be cloned)\r\n */\r\n setJointScale(jointIndex: number, scale: Vector3): void {\r\n let override = this._overrides.get(jointIndex);\r\n if (!override) {\r\n override = {};\r\n this._overrides.set(jointIndex, override);\r\n }\r\n override.scale = scale.clone();\r\n }\r\n\r\n /**\r\n * Set full transform override for a joint.\r\n *\r\n * @param jointIndex - Index of the joint in the skeleton\r\n * @param position - New local position (optional)\r\n * @param rotation - New local rotation (optional)\r\n * @param scale - New local scale (optional)\r\n */\r\n setJointTransform(jointIndex: number, position?: Vector3, rotation?: Quaternion, scale?: Vector3): void {\r\n const override: JointOverride = {};\r\n if (position) {\r\n override.position = position.clone();\r\n }\r\n if (rotation) {\r\n override.rotation = rotation.clone();\r\n }\r\n if (scale) {\r\n override.scale = scale.clone();\r\n }\r\n this._overrides.set(jointIndex, override);\r\n }\r\n\r\n /**\r\n * Clear override for a specific joint.\r\n *\r\n * @param jointIndex - Index of the joint to clear\r\n */\r\n clearJoint(jointIndex: number): void {\r\n this._overrides.delete(jointIndex);\r\n }\r\n\r\n /**\r\n * Clear all joint overrides.\r\n */\r\n clearAll(): void {\r\n this._overrides.clear();\r\n }\r\n\r\n /**\r\n * Check if a joint has any overrides.\r\n *\r\n * @param jointIndex - Index of the joint to check\r\n * @returns True if the joint has overrides\r\n */\r\n hasOverride(jointIndex: number): boolean {\r\n return this._overrides.has(jointIndex);\r\n }\r\n\r\n /**\r\n * Get the number of joints with overrides.\r\n */\r\n get overrideCount(): number {\r\n return this._overrides.size;\r\n }\r\n\r\n /**\r\n * Apply manual transform overrides to skeleton joints.\r\n */\r\n apply(skeleton: Skeleton, _deltaTime: number): void {\r\n if (!this._enabled || this._overrides.size === 0 || this._weight <= 0) {\r\n return;\r\n }\r\n\r\n const joints = skeleton.joints;\r\n const weight = this._weight;\r\n\r\n this._overrides.forEach((override, jointIndex) => {\r\n if (jointIndex < 0 || jointIndex >= joints.length) {\r\n return;\r\n }\r\n\r\n const joint = joints[jointIndex];\r\n\r\n // Blend position\r\n if (override.position) {\r\n if (weight >= 1) {\r\n joint.position = override.position;\r\n } else {\r\n joint.position = Vector3.combine(joint.position, override.position, weight, 1 - weight);\r\n }\r\n }\r\n\r\n // Blend rotation\r\n if (override.rotation) {\r\n if (weight >= 1) {\r\n joint.rotation = override.rotation;\r\n } else {\r\n joint.rotation = Quaternion.slerp(joint.rotation, override.rotation, weight);\r\n }\r\n }\r\n\r\n // Blend scale\r\n if (override.scale) {\r\n if (weight >= 1) {\r\n joint.scale = override.scale;\r\n } else {\r\n joint.scale = Vector3.combine(joint.scale, override.scale, weight, 1 - weight);\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Reset the processor (clears all overrides).\r\n */\r\n reset(): void {\r\n this._overrides.clear();\r\n }\r\n}\r\n"],"names":["ManualTransformProcessor","SkeletonPostProcessor","weight","priority","_overrides","Map","setJointPosition","jointIndex","position","override","get","set","clone","setJointRotation","rotation","setJointScale","scale","setJointTransform","clearJoint","delete","clearAll","clear","hasOverride","has","overrideCount","size","apply","skeleton","_deltaTime","_enabled","_weight","joints","forEach","length","joint","Vector3","combine","Quaternion","slerp","reset"],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- /**
2
- * Abstract base class for skeleton post-processors.
3
- *
4
- * Post-processors are applied after the base animation/bind pose layer,
5
- * allowing procedural modifications like IK, spring physics, or manual overrides.
6
- *
7
- * @public
8
- */ class SkeletonPostProcessor {
9
- /** Blend weight for this processor [0-1] */ _weight;
10
- /** Whether this processor is enabled */ _enabled;
11
- /** Priority for ordering (higher = applied later) */ _priority;
12
- constructor(weight = 1.0, priority = 0){
13
- this._weight = Math.max(0, Math.min(1, weight));
14
- this._enabled = true;
15
- this._priority = priority;
16
- }
17
- /**
18
- * Get the blend weight [0-1]
19
- */ get weight() {
20
- return this._weight;
21
- }
22
- /**
23
- * Set the blend weight [0-1]
24
- */ set weight(value) {
25
- this._weight = Math.max(0, Math.min(1, value));
26
- }
27
- /**
28
- * Get whether this processor is enabled
29
- */ get enabled() {
30
- return this._enabled;
31
- }
32
- /**
33
- * Set whether this processor is enabled
34
- */ set enabled(value) {
35
- this._enabled = value;
36
- }
37
- /**
38
- * Get the priority (higher = applied later)
39
- */ get priority() {
40
- return this._priority;
41
- }
42
- /**
43
- * Set the priority (higher = applied later)
44
- */ set priority(value) {
45
- this._priority = value;
46
- }
47
- }
48
-
49
- export { SkeletonPostProcessor };
50
- //# sourceMappingURL=skeleton_postprocessor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skeleton_postprocessor.js","sources":["../../src/animation/skeleton_postprocessor.ts"],"sourcesContent":["import type { Skeleton } from './skeleton';\r\n\r\n/**\r\n * Abstract base class for skeleton post-processors.\r\n *\r\n * Post-processors are applied after the base animation/bind pose layer,\r\n * allowing procedural modifications like IK, spring physics, or manual overrides.\r\n *\r\n * @public\r\n */\r\nexport abstract class SkeletonPostProcessor {\r\n /** Blend weight for this processor [0-1] */\r\n protected _weight: number;\r\n /** Whether this processor is enabled */\r\n protected _enabled: boolean;\r\n /** Priority for ordering (higher = applied later) */\r\n protected _priority: number;\r\n\r\n constructor(weight: number = 1.0, priority: number = 0) {\r\n this._weight = Math.max(0, Math.min(1, weight));\r\n this._enabled = true;\r\n this._priority = priority;\r\n }\r\n\r\n /**\r\n * Get the blend weight [0-1]\r\n */\r\n get weight(): number {\r\n return this._weight;\r\n }\r\n\r\n /**\r\n * Set the blend weight [0-1]\r\n */\r\n set weight(value: number) {\r\n this._weight = Math.max(0, Math.min(1, value));\r\n }\r\n\r\n /**\r\n * Get whether this processor is enabled\r\n */\r\n get enabled(): boolean {\r\n return this._enabled;\r\n }\r\n\r\n /**\r\n * Set whether this processor is enabled\r\n */\r\n set enabled(value: boolean) {\r\n this._enabled = value;\r\n }\r\n\r\n /**\r\n * Get the priority (higher = applied later)\r\n */\r\n get priority(): number {\r\n return this._priority;\r\n }\r\n\r\n /**\r\n * Set the priority (higher = applied later)\r\n */\r\n set priority(value: number) {\r\n this._priority = value;\r\n }\r\n\r\n /**\r\n * Apply post-processing to skeleton joints.\r\n *\r\n * This method is called after the base animation/bind pose has been applied.\r\n * Implementations should modify joint transforms and blend with the current state\r\n * using the processor's weight.\r\n *\r\n * @param skeleton - The skeleton to process\r\n * @param deltaTime - Time elapsed since last frame (in seconds)\r\n */\r\n abstract apply(skeleton: Skeleton, deltaTime: number): void;\r\n\r\n /**\r\n * Reset the processor to its initial state.\r\n *\r\n * Called when the skeleton or animation state changes significantly.\r\n */\r\n abstract reset(): void;\r\n}\r\n"],"names":["SkeletonPostProcessor","weight","priority","_weight","Math","max","min","_enabled","_priority","value","enabled"],"mappings":"AAEA;;;;;;;AAOC,IACM,MAAeA,qBAAAA,CAAAA;iDAEpB,OAA0B;6CAE1B,QAA4B;0DAE5B,SAA4B;AAE5B,IAAA,WAAA,CAAYC,MAAiB,GAAA,GAAG,EAAEC,QAAAA,GAAmB,CAAC,CAAE;QACtD,IAAI,CAACC,OAAO,GAAGC,IAAKC,CAAAA,GAAG,CAAC,CAAGD,EAAAA,IAAAA,CAAKE,GAAG,CAAC,CAAGL,EAAAA,MAAAA,CAAAA,CAAAA;QACvC,IAAI,CAACM,QAAQ,GAAG,IAAA;QAChB,IAAI,CAACC,SAAS,GAAGN,QAAAA;AACnB;AAEA;;AAEC,MACD,IAAID,MAAiB,GAAA;QACnB,OAAO,IAAI,CAACE,OAAO;AACrB;AAEA;;MAGA,IAAIF,MAAOQ,CAAAA,KAAa,EAAE;QACxB,IAAI,CAACN,OAAO,GAAGC,IAAKC,CAAAA,GAAG,CAAC,CAAGD,EAAAA,IAAAA,CAAKE,GAAG,CAAC,CAAGG,EAAAA,KAAAA,CAAAA,CAAAA;AACzC;AAEA;;AAEC,MACD,IAAIC,OAAmB,GAAA;QACrB,OAAO,IAAI,CAACH,QAAQ;AACtB;AAEA;;MAGA,IAAIG,OAAQD,CAAAA,KAAc,EAAE;QAC1B,IAAI,CAACF,QAAQ,GAAGE,KAAAA;AAClB;AAEA;;AAEC,MACD,IAAIP,QAAmB,GAAA;QACrB,OAAO,IAAI,CAACM,SAAS;AACvB;AAEA;;MAGA,IAAIN,QAASO,CAAAA,KAAa,EAAE;QAC1B,IAAI,CAACD,SAAS,GAAGC,KAAAA;AACnB;AAoBF;;;;"}