@aura3d/engine 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/README.md +49 -44
  2. package/dist/animation/AnimationClipEvents.d.ts +55 -0
  3. package/dist/animation/AnimationClipEvents.d.ts.map +1 -1
  4. package/dist/animation/AnimationClipEvents.js +136 -0
  5. package/dist/animation/AnimationClipEvents.js.map +1 -1
  6. package/dist/animation/AnimationClipRegistry.d.ts +9 -3
  7. package/dist/animation/AnimationClipRegistry.d.ts.map +1 -1
  8. package/dist/animation/AnimationClipRegistry.js +52 -5
  9. package/dist/animation/AnimationClipRegistry.js.map +1 -1
  10. package/dist/animation/AnimationController.d.ts +6 -6
  11. package/dist/animation/AnimationController.d.ts.map +1 -1
  12. package/dist/animation/AnimationController.js +3 -3
  13. package/dist/animation/AnimationController.js.map +1 -1
  14. package/dist/animation/AnimationMixer.d.ts +10 -0
  15. package/dist/animation/AnimationMixer.d.ts.map +1 -1
  16. package/dist/animation/AnimationMixer.js +35 -0
  17. package/dist/animation/AnimationMixer.js.map +1 -1
  18. package/dist/animation/AnimationStateGraph.d.ts +14 -5
  19. package/dist/animation/AnimationStateGraph.d.ts.map +1 -1
  20. package/dist/animation/AnimationStateGraph.js +25 -2
  21. package/dist/animation/AnimationStateGraph.js.map +1 -1
  22. package/dist/animation/AnimationStateMachine.d.ts +26 -0
  23. package/dist/animation/AnimationStateMachine.d.ts.map +1 -1
  24. package/dist/animation/AnimationStateMachine.js +32 -0
  25. package/dist/animation/AnimationStateMachine.js.map +1 -1
  26. package/dist/animation/Bone.d.ts +4 -0
  27. package/dist/animation/Bone.d.ts.map +1 -1
  28. package/dist/animation/Bone.js +3 -0
  29. package/dist/animation/Bone.js.map +1 -1
  30. package/dist/animation/FighterAnimationAdapter.d.ts +49 -0
  31. package/dist/animation/FighterAnimationAdapter.d.ts.map +1 -0
  32. package/dist/animation/FighterAnimationAdapter.js +71 -0
  33. package/dist/animation/FighterAnimationAdapter.js.map +1 -0
  34. package/dist/animation/FootIk.d.ts +77 -0
  35. package/dist/animation/FootIk.d.ts.map +1 -0
  36. package/dist/animation/FootIk.js +153 -0
  37. package/dist/animation/FootIk.js.map +1 -0
  38. package/dist/animation/HumanoidBoneInference.d.ts +61 -0
  39. package/dist/animation/HumanoidBoneInference.d.ts.map +1 -0
  40. package/dist/animation/HumanoidBoneInference.js +239 -0
  41. package/dist/animation/HumanoidBoneInference.js.map +1 -0
  42. package/dist/animation/HumanoidRetargeting.d.ts +48 -4
  43. package/dist/animation/HumanoidRetargeting.d.ts.map +1 -1
  44. package/dist/animation/HumanoidRetargeting.js +149 -14
  45. package/dist/animation/HumanoidRetargeting.js.map +1 -1
  46. package/dist/animation/IK.d.ts +5 -0
  47. package/dist/animation/IK.d.ts.map +1 -1
  48. package/dist/animation/IK.js +9 -0
  49. package/dist/animation/IK.js.map +1 -1
  50. package/dist/animation/Inertialization.d.ts +65 -0
  51. package/dist/animation/Inertialization.d.ts.map +1 -0
  52. package/dist/animation/Inertialization.js +211 -0
  53. package/dist/animation/Inertialization.js.map +1 -0
  54. package/dist/animation/LocomotionController.d.ts +5 -0
  55. package/dist/animation/LocomotionController.d.ts.map +1 -1
  56. package/dist/animation/LocomotionController.js +3 -0
  57. package/dist/animation/LocomotionController.js.map +1 -1
  58. package/dist/animation/LocomotionKit.d.ts +52 -0
  59. package/dist/animation/LocomotionKit.d.ts.map +1 -0
  60. package/dist/animation/LocomotionKit.js +38 -0
  61. package/dist/animation/LocomotionKit.js.map +1 -0
  62. package/dist/animation/MotionQuality.d.ts +3 -3
  63. package/dist/animation/MotionQuality.d.ts.map +1 -1
  64. package/dist/animation/MotionQuality.js +2 -2
  65. package/dist/animation/MotionQuality.js.map +1 -1
  66. package/dist/animation/RigQuality.d.ts +31 -0
  67. package/dist/animation/RigQuality.d.ts.map +1 -0
  68. package/dist/animation/RigQuality.js +70 -0
  69. package/dist/animation/RigQuality.js.map +1 -0
  70. package/dist/animation/SecondaryAnimationFixtures.d.ts.map +1 -1
  71. package/dist/animation/SecondaryAnimationFixtures.js +1 -3
  72. package/dist/animation/SecondaryAnimationFixtures.js.map +1 -1
  73. package/dist/animation/Skeleton.d.ts +16 -1
  74. package/dist/animation/Skeleton.d.ts.map +1 -1
  75. package/dist/animation/Skeleton.js +42 -0
  76. package/dist/animation/Skeleton.js.map +1 -1
  77. package/dist/animation/SpringBones.d.ts +60 -0
  78. package/dist/animation/SpringBones.d.ts.map +1 -0
  79. package/dist/animation/SpringBones.js +173 -0
  80. package/dist/animation/SpringBones.js.map +1 -0
  81. package/dist/animation/browser-index.d.ts +12 -3
  82. package/dist/animation/browser-index.d.ts.map +1 -1
  83. package/dist/animation/browser-index.js +11 -2
  84. package/dist/animation/browser-index.js.map +1 -1
  85. package/dist/animation/index.d.ts +11 -3
  86. package/dist/animation/index.d.ts.map +1 -1
  87. package/dist/animation/index.js +10 -2
  88. package/dist/animation/index.js.map +1 -1
  89. package/dist/animation/library/performanceStateGraph.d.ts +42 -0
  90. package/dist/animation/library/performanceStateGraph.d.ts.map +1 -0
  91. package/dist/animation/library/performanceStateGraph.js +101 -0
  92. package/dist/animation/library/performanceStateGraph.js.map +1 -0
  93. package/dist/animation/library/standardHumanoidClips.d.ts +27 -0
  94. package/dist/animation/library/standardHumanoidClips.d.ts.map +1 -0
  95. package/dist/animation/library/standardHumanoidClips.js +357 -0
  96. package/dist/animation/library/standardHumanoidClips.js.map +1 -0
  97. package/dist/assets/GLTFAnimationRuntime.d.ts +85 -0
  98. package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
  99. package/dist/assets/GLTFAnimationRuntime.js +143 -0
  100. package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
  101. package/dist/assets/GLTFAutoFit.d.ts +61 -0
  102. package/dist/assets/GLTFAutoFit.d.ts.map +1 -0
  103. package/dist/assets/GLTFAutoFit.js +77 -0
  104. package/dist/assets/GLTFAutoFit.js.map +1 -0
  105. package/dist/assets/GLTFLoader.d.ts +21 -0
  106. package/dist/assets/GLTFLoader.d.ts.map +1 -1
  107. package/dist/assets/GLTFLoader.js +60 -15
  108. package/dist/assets/GLTFLoader.js.map +1 -1
  109. package/dist/assets/GLTFRenderResources.d.ts +9 -1
  110. package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
  111. package/dist/assets/GLTFRenderResources.js +93 -4
  112. package/dist/assets/GLTFRenderResources.js.map +1 -1
  113. package/dist/assets/browser-index.d.ts +6 -4
  114. package/dist/assets/browser-index.d.ts.map +1 -1
  115. package/dist/assets/browser-index.js +3 -2
  116. package/dist/assets/browser-index.js.map +1 -1
  117. package/dist/assets/index.d.ts +7 -5
  118. package/dist/assets/index.d.ts.map +1 -1
  119. package/dist/assets/index.js +4 -3
  120. package/dist/assets/index.js.map +1 -1
  121. package/dist/audio/AudioMixer.d.ts +3 -3
  122. package/dist/audio/AudioMixer.d.ts.map +1 -1
  123. package/dist/audio/AudioMixer.js +1 -1
  124. package/dist/audio/AudioMixer.js.map +1 -1
  125. package/dist/audio/index.d.ts +2 -2
  126. package/dist/audio/index.d.ts.map +1 -1
  127. package/dist/audio/index.js +1 -1
  128. package/dist/audio/index.js.map +1 -1
  129. package/dist/aura3d-cli/animation-asset-profiles.d.ts +15 -0
  130. package/dist/aura3d-cli/animation-asset-profiles.d.ts.map +1 -0
  131. package/dist/aura3d-cli/animation-asset-profiles.js +46 -0
  132. package/dist/aura3d-cli/animation-asset-profiles.js.map +1 -0
  133. package/dist/aura3d-cli/animation-asset-validator.d.ts +22 -0
  134. package/dist/aura3d-cli/animation-asset-validator.d.ts.map +1 -0
  135. package/dist/aura3d-cli/animation-asset-validator.js +49 -0
  136. package/dist/aura3d-cli/animation-asset-validator.js.map +1 -0
  137. package/dist/aura3d-cli/cli.js +40 -17
  138. package/dist/aura3d-cli/cli.js.map +1 -1
  139. package/dist/aura3d-cli/game-asset-validator.d.ts +4 -4
  140. package/dist/aura3d-cli/game-asset-validator.d.ts.map +1 -1
  141. package/dist/aura3d-cli/game-asset-validator.js +2 -2
  142. package/dist/aura3d-cli/game-asset-validator.js.map +1 -1
  143. package/dist/aura3d-cli/index.d.ts +32 -19
  144. package/dist/aura3d-cli/index.d.ts.map +1 -1
  145. package/dist/aura3d-cli/index.js +101 -68
  146. package/dist/aura3d-cli/index.js.map +1 -1
  147. package/dist/aura3d-cli/pull-bridge.d.ts +30 -4
  148. package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
  149. package/dist/aura3d-cli/pull-bridge.js +320 -51
  150. package/dist/aura3d-cli/pull-bridge.js.map +1 -1
  151. package/dist/create-aura3d/index.d.ts +1 -1
  152. package/dist/create-aura3d/index.d.ts.map +1 -1
  153. package/dist/create-aura3d/index.js +6 -4
  154. package/dist/create-aura3d/index.js.map +1 -1
  155. package/dist/editor-runtime/AnimationSceneEditor.d.ts +111 -0
  156. package/dist/editor-runtime/AnimationSceneEditor.d.ts.map +1 -0
  157. package/dist/editor-runtime/AnimationSceneEditor.js +285 -0
  158. package/dist/editor-runtime/AnimationSceneEditor.js.map +1 -0
  159. package/dist/editor-runtime/AssetDropZone.d.ts +9 -9
  160. package/dist/editor-runtime/AssetDropZone.d.ts.map +1 -1
  161. package/dist/editor-runtime/AssetDropZone.js +4 -4
  162. package/dist/editor-runtime/AssetDropZone.js.map +1 -1
  163. package/dist/editor-runtime/EventTrackEditor.d.ts +54 -0
  164. package/dist/editor-runtime/EventTrackEditor.d.ts.map +1 -0
  165. package/dist/editor-runtime/EventTrackEditor.js +124 -0
  166. package/dist/editor-runtime/EventTrackEditor.js.map +1 -0
  167. package/dist/editor-runtime/SceneOutliner.d.ts +3 -3
  168. package/dist/editor-runtime/SceneOutliner.d.ts.map +1 -1
  169. package/dist/editor-runtime/SceneOutliner.js.map +1 -1
  170. package/dist/editor-runtime/index.d.ts +5 -3
  171. package/dist/editor-runtime/index.d.ts.map +1 -1
  172. package/dist/editor-runtime/index.js +2 -1
  173. package/dist/editor-runtime/index.js.map +1 -1
  174. package/dist/engine/agent-api/AnimationAssetManifest.d.ts +50 -0
  175. package/dist/engine/agent-api/AnimationAssetManifest.d.ts.map +1 -0
  176. package/dist/engine/agent-api/AnimationAssetManifest.js +65 -0
  177. package/dist/engine/agent-api/AnimationAssetManifest.js.map +1 -0
  178. package/dist/engine/agent-api/AnimationDirector.d.ts +120 -0
  179. package/dist/engine/agent-api/AnimationDirector.d.ts.map +1 -0
  180. package/dist/engine/agent-api/AnimationDirector.js +432 -0
  181. package/dist/engine/agent-api/AnimationDirector.js.map +1 -0
  182. package/dist/engine/agent-api/AnimationEpisodePackage.d.ts +51 -0
  183. package/dist/engine/agent-api/AnimationEpisodePackage.d.ts.map +1 -0
  184. package/dist/engine/agent-api/AnimationEpisodePackage.js +79 -0
  185. package/dist/engine/agent-api/AnimationEpisodePackage.js.map +1 -0
  186. package/dist/engine/agent-api/AnimationMotionQuality.d.ts +83 -0
  187. package/dist/engine/agent-api/AnimationMotionQuality.d.ts.map +1 -0
  188. package/dist/engine/agent-api/AnimationMotionQuality.js +128 -0
  189. package/dist/engine/agent-api/AnimationMotionQuality.js.map +1 -0
  190. package/dist/engine/agent-api/AnimationPerformance.d.ts +150 -0
  191. package/dist/engine/agent-api/AnimationPerformance.d.ts.map +1 -0
  192. package/dist/engine/agent-api/AnimationPerformance.js +345 -0
  193. package/dist/engine/agent-api/AnimationPerformance.js.map +1 -0
  194. package/dist/engine/agent-api/AnimationRenderQueue.d.ts +143 -0
  195. package/dist/engine/agent-api/AnimationRenderQueue.d.ts.map +1 -0
  196. package/dist/engine/agent-api/AnimationRenderQueue.js +410 -0
  197. package/dist/engine/agent-api/AnimationRenderQueue.js.map +1 -0
  198. package/dist/engine/agent-api/AnimationRouteProof.d.ts +112 -0
  199. package/dist/engine/agent-api/AnimationRouteProof.d.ts.map +1 -0
  200. package/dist/engine/agent-api/AnimationRouteProof.js +127 -0
  201. package/dist/engine/agent-api/AnimationRouteProof.js.map +1 -0
  202. package/dist/engine/agent-api/AssetLibraryBrowser.d.ts +6 -6
  203. package/dist/engine/agent-api/AssetLibraryBrowser.d.ts.map +1 -1
  204. package/dist/engine/agent-api/AssetLibraryBrowser.js +6 -6
  205. package/dist/engine/agent-api/AssetLibraryBrowser.js.map +1 -1
  206. package/dist/engine/agent-api/AuraVoiceBridge.d.ts +7 -7
  207. package/dist/engine/agent-api/AuraVoiceBridge.d.ts.map +1 -1
  208. package/dist/engine/agent-api/AuraVoiceBridge.js +5 -5
  209. package/dist/engine/agent-api/AuraVoiceBridge.js.map +1 -1
  210. package/dist/engine/agent-api/BatchEpisodeRenderer.d.ts +5 -5
  211. package/dist/engine/agent-api/BatchEpisodeRenderer.d.ts.map +1 -1
  212. package/dist/engine/agent-api/BatchEpisodeRenderer.js.map +1 -1
  213. package/dist/engine/agent-api/BodyLanguageLibrary.d.ts +3 -3
  214. package/dist/engine/agent-api/BodyLanguageLibrary.d.ts.map +1 -1
  215. package/dist/engine/agent-api/BodyLanguageLibrary.js.map +1 -1
  216. package/dist/engine/agent-api/BrowserFrameCaptureAdapter.d.ts +4 -4
  217. package/dist/engine/agent-api/BrowserFrameCaptureAdapter.d.ts.map +1 -1
  218. package/dist/engine/agent-api/BrowserFrameCaptureAdapter.js +2 -2
  219. package/dist/engine/agent-api/BrowserFrameCaptureAdapter.js.map +1 -1
  220. package/dist/engine/agent-api/CharacterAssembly.d.ts +2 -2
  221. package/dist/engine/agent-api/CharacterAssembly.d.ts.map +1 -1
  222. package/dist/engine/agent-api/CloudRenderAdapter.d.ts +4 -4
  223. package/dist/engine/agent-api/CloudRenderAdapter.d.ts.map +1 -1
  224. package/dist/engine/agent-api/FfmpegFrameEncoder.d.ts +129 -0
  225. package/dist/engine/agent-api/FfmpegFrameEncoder.d.ts.map +1 -0
  226. package/dist/engine/agent-api/FfmpegFrameEncoder.js +306 -0
  227. package/dist/engine/agent-api/FfmpegFrameEncoder.js.map +1 -0
  228. package/dist/engine/agent-api/FrameEncoder.d.ts +5 -5
  229. package/dist/engine/agent-api/FrameEncoder.d.ts.map +1 -1
  230. package/dist/engine/agent-api/GameAssetValidation.d.ts +1 -1
  231. package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -1
  232. package/dist/engine/agent-api/MediaRecorderFrameEncoder.d.ts.map +1 -1
  233. package/dist/engine/agent-api/MediaRecorderFrameEncoder.js +7 -2
  234. package/dist/engine/agent-api/MediaRecorderFrameEncoder.js.map +1 -1
  235. package/dist/engine/agent-api/PerformanceBlender.d.ts +5 -5
  236. package/dist/engine/agent-api/PerformanceBlender.d.ts.map +1 -1
  237. package/dist/engine/agent-api/PerformanceBlender.js.map +1 -1
  238. package/dist/engine/agent-api/PerformanceCaptureSession.d.ts +5 -5
  239. package/dist/engine/agent-api/PerformanceCaptureSession.d.ts.map +1 -1
  240. package/dist/engine/agent-api/PerformanceCaptureSession.js +2 -2
  241. package/dist/engine/agent-api/PerformanceCaptureSession.js.map +1 -1
  242. package/dist/engine/agent-api/PerformancePoseEditor.d.ts +8 -8
  243. package/dist/engine/agent-api/PerformancePoseEditor.d.ts.map +1 -1
  244. package/dist/engine/agent-api/PerformancePoseEditor.js.map +1 -1
  245. package/dist/engine/agent-api/PngSequenceEncoder.d.ts +4 -4
  246. package/dist/engine/agent-api/PngSequenceEncoder.d.ts.map +1 -1
  247. package/dist/engine/agent-api/PromptAnimationContract.d.ts +2 -2
  248. package/dist/engine/agent-api/PromptAnimationContract.d.ts.map +1 -1
  249. package/dist/engine/agent-api/PromptAnimationEvidence.d.ts +2 -2
  250. package/dist/engine/agent-api/PromptAnimationEvidence.d.ts.map +1 -1
  251. package/dist/engine/agent-api/PublishingPipeline.d.ts +3 -3
  252. package/dist/engine/agent-api/PublishingPipeline.d.ts.map +1 -1
  253. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +2 -0
  254. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -1
  255. package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -1
  256. package/dist/engine/agent-api/SceneGroundingUtils.d.ts +73 -0
  257. package/dist/engine/agent-api/SceneGroundingUtils.d.ts.map +1 -0
  258. package/dist/engine/agent-api/SceneGroundingUtils.js +74 -0
  259. package/dist/engine/agent-api/SceneGroundingUtils.js.map +1 -0
  260. package/dist/engine/agent-api/ShotTimeline.d.ts +3 -3
  261. package/dist/engine/agent-api/ShotTimeline.d.ts.map +1 -1
  262. package/dist/engine/agent-api/ShotTimeline.js.map +1 -1
  263. package/dist/engine/agent-api/ThumbnailGenerator.d.ts +4 -4
  264. package/dist/engine/agent-api/ThumbnailGenerator.d.ts.map +1 -1
  265. package/dist/engine/agent-api/ThumbnailGenerator.js.map +1 -1
  266. package/dist/engine/agent-api/VideoExportPipeline.d.ts +9 -9
  267. package/dist/engine/agent-api/VideoExportPipeline.d.ts.map +1 -1
  268. package/dist/engine/agent-api/VideoExportPipeline.js.map +1 -1
  269. package/dist/engine/agent-api/VisemeController.d.ts +12 -0
  270. package/dist/engine/agent-api/VisemeController.d.ts.map +1 -1
  271. package/dist/engine/agent-api/VisemeController.js +23 -0
  272. package/dist/engine/agent-api/VisemeController.js.map +1 -1
  273. package/dist/engine/agent-api/YouTubeMetadataGenerator.d.ts +2 -2
  274. package/dist/engine/agent-api/YouTubeMetadataGenerator.d.ts.map +1 -1
  275. package/dist/engine/agent-api/YouTubeMetadataGenerator.js +1 -1
  276. package/dist/engine/agent-api/YouTubeMetadataGenerator.js.map +1 -1
  277. package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -1
  278. package/dist/engine/agent-api/index.d.ts +43 -38
  279. package/dist/engine/agent-api/index.d.ts.map +1 -1
  280. package/dist/engine/agent-api/index.js +42 -28
  281. package/dist/engine/agent-api/index.js.map +1 -1
  282. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  283. package/dist/engine/animation-studio/animation-episode-validator.d.ts +24 -0
  284. package/dist/engine/animation-studio/animation-episode-validator.d.ts.map +1 -0
  285. package/dist/engine/animation-studio/animation-episode-validator.js +74 -0
  286. package/dist/engine/animation-studio/animation-episode-validator.js.map +1 -0
  287. package/dist/engine/animation-studio/director-heuristics.d.ts +73 -0
  288. package/dist/engine/animation-studio/director-heuristics.d.ts.map +1 -0
  289. package/dist/engine/animation-studio/director-heuristics.js +149 -0
  290. package/dist/engine/animation-studio/director-heuristics.js.map +1 -0
  291. package/dist/engine/animation-studio/episode-document.d.ts +214 -0
  292. package/dist/engine/animation-studio/episode-document.d.ts.map +1 -0
  293. package/dist/engine/animation-studio/episode-document.js +143 -0
  294. package/dist/engine/animation-studio/episode-document.js.map +1 -0
  295. package/dist/engine/animation-studio/index.d.ts +20 -0
  296. package/dist/engine/animation-studio/index.d.ts.map +1 -0
  297. package/dist/engine/animation-studio/index.js +20 -0
  298. package/dist/engine/animation-studio/index.js.map +1 -0
  299. package/dist/engine/animation-studio/scene-tools.d.ts +34 -0
  300. package/dist/engine/animation-studio/scene-tools.d.ts.map +1 -0
  301. package/dist/engine/animation-studio/scene-tools.js +95 -0
  302. package/dist/engine/animation-studio/scene-tools.js.map +1 -0
  303. package/dist/engine/index.d.ts +2 -2
  304. package/dist/engine/index.d.ts.map +1 -1
  305. package/dist/engine/index.js +1 -1
  306. package/dist/engine/index.js.map +1 -1
  307. package/dist/engine/production-runtime/TypedGLBActor.d.ts +13 -1
  308. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  309. package/dist/engine/production-runtime/TypedGLBActor.js +8 -0
  310. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  311. package/dist/physics/Raycast.d.ts +17 -0
  312. package/dist/physics/Raycast.d.ts.map +1 -1
  313. package/dist/physics/Raycast.js +16 -0
  314. package/dist/physics/Raycast.js.map +1 -1
  315. package/dist/rendering/ForwardPass.js +18 -13
  316. package/dist/rendering/ForwardPass.js.map +1 -1
  317. package/dist/rendering/MorphTargetPlan.d.ts +42 -0
  318. package/dist/rendering/MorphTargetPlan.d.ts.map +1 -0
  319. package/dist/rendering/MorphTargetPlan.js +129 -0
  320. package/dist/rendering/MorphTargetPlan.js.map +1 -0
  321. package/dist/rendering/MorphUnlitMaterial.d.ts.map +1 -1
  322. package/dist/rendering/MorphUnlitMaterial.js +7 -1
  323. package/dist/rendering/MorphUnlitMaterial.js.map +1 -1
  324. package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
  325. package/dist/rendering/ShaderLibrary.js +34 -6
  326. package/dist/rendering/ShaderLibrary.js.map +1 -1
  327. package/dist/rendering/WebGPUDevice.d.ts +2 -0
  328. package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
  329. package/dist/rendering/WebGPUDevice.js +69 -12
  330. package/dist/rendering/WebGPUDevice.js.map +1 -1
  331. package/dist/rendering/animation/AnimationMaterialStyle.d.ts +19 -0
  332. package/dist/rendering/animation/AnimationMaterialStyle.d.ts.map +1 -0
  333. package/dist/rendering/animation/AnimationMaterialStyle.js +13 -0
  334. package/dist/rendering/animation/AnimationMaterialStyle.js.map +1 -0
  335. package/dist/rendering/animation/AnimationRenderPreset.d.ts +36 -0
  336. package/dist/rendering/animation/AnimationRenderPreset.d.ts.map +1 -0
  337. package/dist/rendering/animation/AnimationRenderPreset.js +23 -0
  338. package/dist/rendering/animation/AnimationRenderPreset.js.map +1 -0
  339. package/dist/rendering/animation/AnimationToonMaterial.d.ts +130 -0
  340. package/dist/rendering/animation/AnimationToonMaterial.d.ts.map +1 -0
  341. package/dist/rendering/animation/AnimationToonMaterial.js +303 -0
  342. package/dist/rendering/animation/AnimationToonMaterial.js.map +1 -0
  343. package/dist/rendering/animation/AnimationVisualQuality.d.ts +28 -0
  344. package/dist/rendering/animation/AnimationVisualQuality.d.ts.map +1 -0
  345. package/dist/rendering/animation/AnimationVisualQuality.js +39 -0
  346. package/dist/rendering/animation/AnimationVisualQuality.js.map +1 -0
  347. package/dist/rendering/animation/applyAnimationRenderPreset.d.ts +79 -0
  348. package/dist/rendering/animation/applyAnimationRenderPreset.d.ts.map +1 -0
  349. package/dist/rendering/animation/applyAnimationRenderPreset.js +88 -0
  350. package/dist/rendering/animation/applyAnimationRenderPreset.js.map +1 -0
  351. package/dist/rendering/animation/index.d.ts +6 -0
  352. package/dist/rendering/animation/index.d.ts.map +1 -0
  353. package/dist/rendering/animation/index.js +6 -0
  354. package/dist/rendering/animation/index.js.map +1 -0
  355. package/dist/rendering/cartoon/CartoonToonMaterial.d.ts +130 -0
  356. package/dist/rendering/cartoon/CartoonToonMaterial.d.ts.map +1 -0
  357. package/dist/rendering/cartoon/CartoonToonMaterial.js +303 -0
  358. package/dist/rendering/cartoon/CartoonToonMaterial.js.map +1 -0
  359. package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts +79 -0
  360. package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts.map +1 -0
  361. package/dist/rendering/cartoon/applyCartoonRenderPreset.js +88 -0
  362. package/dist/rendering/cartoon/applyCartoonRenderPreset.js.map +1 -0
  363. package/dist/rendering/cartoon/index.d.ts +2 -0
  364. package/dist/rendering/cartoon/index.d.ts.map +1 -1
  365. package/dist/rendering/cartoon/index.js +2 -0
  366. package/dist/rendering/cartoon/index.js.map +1 -1
  367. package/dist/rendering/index.d.ts +4 -2
  368. package/dist/rendering/index.d.ts.map +1 -1
  369. package/dist/rendering/index.js +3 -2
  370. package/dist/rendering/index.js.map +1 -1
  371. package/dist/scripting/AnimationNodeCategories.d.ts +3 -0
  372. package/dist/scripting/AnimationNodeCategories.d.ts.map +1 -0
  373. package/dist/scripting/AnimationNodeCategories.js +9 -0
  374. package/dist/scripting/AnimationNodeCategories.js.map +1 -0
  375. package/dist/scripting/AnimationVisualNodes.d.ts +3 -0
  376. package/dist/scripting/AnimationVisualNodes.d.ts.map +1 -0
  377. package/dist/scripting/AnimationVisualNodes.js +41 -0
  378. package/dist/scripting/AnimationVisualNodes.js.map +1 -0
  379. package/dist/scripting/VisualGraphExecutor.js +24 -24
  380. package/dist/scripting/VisualGraphExecutor.js.map +1 -1
  381. package/dist/scripting/VisualNodeCatalog.js +2 -2
  382. package/dist/scripting/VisualNodeCatalog.js.map +1 -1
  383. package/dist/scripting/index.d.ts +3 -3
  384. package/dist/scripting/index.d.ts.map +1 -1
  385. package/dist/scripting/index.js +2 -2
  386. package/dist/scripting/index.js.map +1 -1
  387. package/package.json +150 -126
@@ -200,7 +200,9 @@ export function createHumanoidRetargetingMap(source, target, options = {}) {
200
200
  bone,
201
201
  source: sourceBinding,
202
202
  target: targetBinding,
203
- scale: estimateBoneScale(sourceBinding, targetBinding, source.scale, target.scale)
203
+ scale: estimateBoneScale(sourceBinding, targetBinding, source.scale, target.scale),
204
+ sourceRest: restRotationFor(source, bone, sourceBinding),
205
+ targetRest: restRotationFor(target, bone, targetBinding)
204
206
  };
205
207
  }
206
208
  const coverage = mappedBones / HUMANOID_BONES.length;
@@ -221,9 +223,43 @@ export function createHumanoidRetargetingMap(source, target, options = {}) {
221
223
  coverage,
222
224
  requiredCoverage,
223
225
  bindings,
224
- diagnostics
226
+ diagnostics,
227
+ sourceFacingAxis: source.facingAxis ?? "z",
228
+ targetFacingAxis: target.facingAxis ?? "z"
225
229
  };
226
230
  }
231
+ /**
232
+ * Retarget a source-rig {@link AnimationPose} onto the target rig described by `map`.
233
+ *
234
+ * This is NOT a 1:1 rotation copy. For each bone we reconcile differing rest/bind orientations and
235
+ * a differing facing axis, and scale translations by the per-bone length ratio:
236
+ *
237
+ * 1. Rest-pose reconciliation (per bone, local space). Let `Rs0` be the source rest local
238
+ * rotation and `Rt0` the target rest local rotation (both from the rigs' `restPose`/binding
239
+ * `rotation`, identity when unknown). An animation expresses a source local rotation `Ra`.
240
+ * The motion *away from rest* in the source's local frame is the delta `D = Rs0⁻¹ · Ra`. We
241
+ * re-anchor that delta onto the target rest: `Rt = Rt0 · D = Rt0 · Rs0⁻¹ · Ra`.
242
+ * When both rests are identity (or equal) this collapses to a straight copy, and an identity
243
+ * map (source rig === target rig) is therefore a no-op.
244
+ *
245
+ * 2. Facing-axis / coordinate-frame conversion. If the source faces a different cardinal axis
246
+ * than the target, the hips (root) rotation is pre-multiplied by the frame-alignment rotation
247
+ * `F` that carries the source facing axis onto the target facing axis: `Rt_hips = F · Rt_hips`.
248
+ * This only touches the root so child bones inherit the reframe through the hierarchy.
249
+ *
250
+ * 3. Position / hip-height scaling (unchanged from before): translations are scaled by the
251
+ * bone's length ratio (`binding.scale`), and optional root motion by the average bone scale.
252
+ *
253
+ * The signature and return type are unchanged.
254
+ *
255
+ * Honesty note: step 1 is the well-known "rest-delta" reconciliation. It is exact when the source
256
+ * and target rest orientations are the bones' true local bind rotations and the bones are mapped
257
+ * one-to-one (the common case for humanoid GLBs). It does NOT model differing bone *roll* beyond
258
+ * what the rest rotations capture, nor parent-chain reparametrization when intermediate bones
259
+ * (e.g. chest/upperChest) are present on one rig and absent on the other — those remain
260
+ * approximate. Step 2 corrects whole-body facing only via the root; per-limb axis remaps that
261
+ * aren't expressible as a single root rotation are not handled.
262
+ */
227
263
  export function retargetHumanoidPose(sourcePose, map, options = {}) {
228
264
  const bones = {};
229
265
  if (options.includeUnmappedSourceBones) {
@@ -231,6 +267,7 @@ export function retargetHumanoidPose(sourcePose, map, options = {}) {
231
267
  bones[boneName] = cloneTransform(transform);
232
268
  }
233
269
  }
270
+ const facing = facingAlignmentQuat(map.sourceFacingAxis ?? "z", map.targetFacingAxis ?? "z");
234
271
  for (const bone of HUMANOID_BONES) {
235
272
  const binding = map.bindings[bone];
236
273
  if (!binding)
@@ -238,7 +275,7 @@ export function retargetHumanoidPose(sourcePose, map, options = {}) {
238
275
  const sourceTransform = sourcePose.bones[binding.source.name] ?? sourcePose.bones[bone];
239
276
  if (!sourceTransform)
240
277
  continue;
241
- const retargeted = scaleTransform(sourceTransform, binding.scale);
278
+ const retargeted = retargetBoneTransform(sourceTransform, binding, bone === "hips" ? facing : undefined);
242
279
  bones[binding.target.name] = retargeted;
243
280
  if (options.includeSemanticBoneNames) {
244
281
  bones[bone] = retargeted;
@@ -266,7 +303,7 @@ export function retargetHumanoidPose(sourcePose, map, options = {}) {
266
303
  export function humanoidRetargetingDiagnostics(source, target, options = {}) {
267
304
  return createHumanoidRetargetingMap(source, target, options).diagnostics;
268
305
  }
269
- export function analyzeCartoonHumanoidRetargeting(rig, options = {}) {
306
+ export function analyzeAnimationHumanoidRetargeting(rig, options = {}) {
270
307
  const base = analyzeHumanoidRig(rig, { minRequiredCoverage: 0.9, requireRestPose: true, ...options });
271
308
  const diagnostics = [...base.diagnostics];
272
309
  const requiredClips = options.requiredClips ?? ["Idle", "Talk", "Gesture", "Walk"];
@@ -278,29 +315,29 @@ export function analyzeCartoonHumanoidRetargeting(rig, options = {}) {
278
315
  if (!mouthReady) {
279
316
  diagnostics.push({
280
317
  severity: "error",
281
- code: "CARTOON_MOUTH_METADATA_MISSING",
282
- message: "Cartoon retargeting requires mouth blendshape or mouth-card metadata.",
318
+ code: "ANIMATION_MOUTH_METADATA_MISSING",
319
+ message: "Animation retargeting requires mouth blendshape or mouth-card metadata.",
283
320
  rigId: rig.id
284
321
  });
285
322
  }
286
323
  for (const clip of missingClips) {
287
324
  diagnostics.push({
288
325
  severity: "error",
289
- code: "CARTOON_REQUIRED_CLIP_MISSING",
290
- message: `Cartoon retargeting requires clip "${clip}".`,
326
+ code: "ANIMATION_REQUIRED_CLIP_MISSING",
327
+ message: `Animation retargeting requires clip "${clip}".`,
291
328
  rigId: rig.id
292
329
  });
293
330
  }
294
331
  if (!retargetMapProvided) {
295
332
  diagnostics.push({
296
333
  severity: "error",
297
- code: "CARTOON_RETARGET_MAP_MISSING",
298
- message: "Cartoon retargeting requires external bone-map/retarget metadata.",
334
+ code: "ANIMATION_RETARGET_MAP_MISSING",
335
+ message: "Animation retargeting requires external bone-map/retarget metadata.",
299
336
  rigId: rig.id
300
337
  });
301
338
  }
302
339
  return {
303
- kind: "cartoon-humanoid-retargeting-diagnostics",
340
+ kind: "animation-humanoid-retargeting-diagnostics",
304
341
  ...base,
305
342
  ok: !diagnostics.some((diagnostic) => diagnostic.severity === "error"),
306
343
  diagnostics,
@@ -347,13 +384,111 @@ function averageBindingScale(map) {
347
384
  return 1;
348
385
  return scales.reduce((sum, scale) => sum + scale, 0) / scales.length;
349
386
  }
350
- function scaleTransform(transform, scale) {
387
+ const IDENTITY_QUAT = { x: 0, y: 0, z: 0, w: 1 };
388
+ /**
389
+ * Extract the rest local rotation for a bone, preferring the rig's explicit `restPose` entry and
390
+ * falling back to the binding's own `rotation`. Returns identity when neither is present.
391
+ */
392
+ function restRotationFor(rig, bone, binding) {
393
+ const fromRestPose = rig.restPose?.[bone]?.rotation;
394
+ if (fromRestPose)
395
+ return normalizeQuatObj(fromRestPose);
396
+ if (binding.rotation)
397
+ return normalizeQuatObj(binding.rotation);
398
+ return IDENTITY_QUAT;
399
+ }
400
+ /**
401
+ * Apply rest-pose reconciliation + (root-only) facing alignment + length scaling to one bone.
402
+ * See {@link retargetHumanoidPose} for the math derivation.
403
+ */
404
+ function retargetBoneTransform(transform, binding, facing) {
405
+ const sourceRest = binding.sourceRest ?? IDENTITY_QUAT;
406
+ const targetRest = binding.targetRest ?? IDENTITY_QUAT;
407
+ let rotation = transform.rotation;
408
+ if (rotation) {
409
+ // Rt = Rt0 · Rs0⁻¹ · Ra
410
+ const delta = multiplyQuat(invertQuat(sourceRest), normalizeQuatObj(rotation));
411
+ rotation = multiplyQuat(targetRest, delta);
412
+ if (facing) {
413
+ // Whole-body facing correction, applied on the root before its local rotation.
414
+ rotation = multiplyQuat(facing, rotation);
415
+ }
416
+ rotation = normalizeQuatObj(rotation);
417
+ }
418
+ else if (facing) {
419
+ // No animated rotation but a facing delta still needs to reframe the root.
420
+ rotation = normalizeQuatObj(multiplyQuat(facing, targetRest));
421
+ }
351
422
  return {
352
- position: transform.position ? scaleVector(transform.position, scale) : undefined,
353
- rotation: transform.rotation,
423
+ position: transform.position ? scaleVector(transform.position, binding.scale) : undefined,
424
+ rotation,
354
425
  scale: transform.scale
355
426
  };
356
427
  }
428
+ /**
429
+ * Rotation that carries `from` cardinal axis onto `to` cardinal axis (shortest arc). Used to
430
+ * reconcile rigs that face different world axes (e.g. +Z forward vs -Z forward, or +X vs +Z).
431
+ */
432
+ function facingAlignmentQuat(from, to) {
433
+ if (from === to)
434
+ return undefined;
435
+ const a = axisVector(from);
436
+ const b = axisVector(to);
437
+ return shortestArcQuat(a, b);
438
+ }
439
+ function axisVector(axis) {
440
+ switch (axis) {
441
+ case "x": return { x: 1, y: 0, z: 0 };
442
+ case "-x": return { x: -1, y: 0, z: 0 };
443
+ case "y": return { x: 0, y: 1, z: 0 };
444
+ case "-y": return { x: 0, y: -1, z: 0 };
445
+ case "z": return { x: 0, y: 0, z: 1 };
446
+ case "-z": return { x: 0, y: 0, z: -1 };
447
+ default: return { x: 0, y: 0, z: 1 };
448
+ }
449
+ }
450
+ /** Quaternion of the shortest rotation from unit vector `a` to unit vector `b`. */
451
+ function shortestArcQuat(a, b) {
452
+ const dot = a.x * b.x + a.y * b.y + a.z * b.z;
453
+ if (dot >= 1 - 1e-8)
454
+ return IDENTITY_QUAT;
455
+ if (dot <= -1 + 1e-8) {
456
+ // Opposite vectors: rotate 180° about any axis orthogonal to a.
457
+ let ortho = Math.abs(a.x) < 0.9 ? { x: 1, y: 0, z: 0 } : { x: 0, y: 1, z: 0 };
458
+ ortho = crossVec(a, ortho);
459
+ const len = Math.hypot(ortho.x, ortho.y, ortho.z) || 1;
460
+ return normalizeQuatObj({ x: ortho.x / len, y: ortho.y / len, z: ortho.z / len, w: 0 });
461
+ }
462
+ const c = crossVec(a, b);
463
+ const w = 1 + dot;
464
+ return normalizeQuatObj({ x: c.x, y: c.y, z: c.z, w });
465
+ }
466
+ function crossVec(a, b) {
467
+ return {
468
+ x: a.y * b.z - a.z * b.y,
469
+ y: a.z * b.x - a.x * b.z,
470
+ z: a.x * b.y - a.y * b.x
471
+ };
472
+ }
473
+ function multiplyQuat(a, b) {
474
+ return {
475
+ x: a.w * b.x + a.x * b.w + a.y * b.z - a.z * b.y,
476
+ y: a.w * b.y - a.x * b.z + a.y * b.w + a.z * b.x,
477
+ z: a.w * b.z + a.x * b.y - a.y * b.x + a.z * b.w,
478
+ w: a.w * b.w - a.x * b.x - a.y * b.y - a.z * b.z
479
+ };
480
+ }
481
+ function invertQuat(q) {
482
+ // Unit quaternion inverse is its conjugate; normalize defensively first.
483
+ const n = normalizeQuatObj(q);
484
+ return { x: -n.x, y: -n.y, z: -n.z, w: n.w };
485
+ }
486
+ function normalizeQuatObj(q) {
487
+ const len = Math.hypot(q.x, q.y, q.z, q.w);
488
+ if (len <= 1e-9)
489
+ return IDENTITY_QUAT;
490
+ return { x: q.x / len, y: q.y / len, z: q.z / len, w: q.w / len };
491
+ }
357
492
  function cloneTransform(transform) {
358
493
  return {
359
494
  position: transform.position ? { ...transform.position } : undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"HumanoidRetargeting.js","sourceRoot":"","sources":["../../../../packages/animation/src/HumanoidRetargeting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HumanoidRetargeting.js","sourceRoot":"","sources":["../../../../packages/animation/src/HumanoidRetargeting.ts"],"names":[],"mappings":"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"}
@@ -21,4 +21,9 @@ export interface TwoBoneIkResult {
21
21
  readonly poleInfluence: number;
22
22
  }
23
23
  export declare function solveTwoBoneIk(input: TwoBoneIkInput): TwoBoneIkResult;
24
+ /**
25
+ * Convenience knee/elbow pole hint: a point offset from the mid-joint along a forward direction,
26
+ * giving {@link solveTwoBoneIk} a stable bend plane (knees point forward, elbows back). Pure.
27
+ */
28
+ export declare function kneePoleHint(root: Vec3, mid: Vec3, forward: Vec3, distance?: number): Vec3;
24
29
  //# sourceMappingURL=IK.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IK.d.ts","sourceRoot":"","sources":["../../../../packages/animation/src/IK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAqCrE"}
1
+ {"version":3,"file":"IK.d.ts","sourceRoot":"","sources":["../../../../packages/animation/src/IK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAqCrE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,SAAI,GAAG,IAAI,CAIrF"}
@@ -36,6 +36,15 @@ export function solveTwoBoneIk(input) {
36
36
  poleInfluence: Math.abs(dot(normalize(subtract(mid, input.root)), poleDirection))
37
37
  };
38
38
  }
39
+ /**
40
+ * Convenience knee/elbow pole hint: a point offset from the mid-joint along a forward direction,
41
+ * giving {@link solveTwoBoneIk} a stable bend plane (knees point forward, elbows back). Pure.
42
+ */
43
+ export function kneePoleHint(root, mid, forward, distance = 1) {
44
+ const dir = normalize(forward);
45
+ const center = [(root[0] + mid[0]) / 2, (root[1] + mid[1]) / 2, (root[2] + mid[2]) / 2];
46
+ return [center[0] + dir[0] * distance, center[1] + dir[1] * distance, center[2] + dir[2] * distance];
47
+ }
39
48
  function projectedPoleDirection(root, axis, pole) {
40
49
  const poleDelta = subtract(pole, root);
41
50
  const projected = subtract(poleDelta, scale(axis, dot(poleDelta, axis)));
@@ -1 +1 @@
1
- {"version":3,"file":"IK.js","sourceRoot":"","sources":["../../../../packages/animation/src/IK.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IK.js","sourceRoot":"","sources":["../../../../packages/animation/src/IK.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { type AnimationValue, type Quat, type Vec3 } from "./Keyframe.js";
2
+ /** Default transition half-life in seconds. ~0.12s reads as a snappy-but-smooth swap. */
3
+ export declare const DEFAULT_INERTIALIZATION_HALF_LIFE = 0.12;
4
+ /**
5
+ * Decay rate `k` (1/seconds) for a given half-life. The critically-damped envelope used here is
6
+ * `(1 + k·t)·e^(−k·t)`; because of the `(1 + k·t)` term the offset is not exactly halved at
7
+ * `t = halfLife` (it crosses 0.5 a little later) — `halfLife` parameterizes the e-folding decay
8
+ * rate, not a literal 50%-crossing time. A non-positive half-life means an instant snap (rate ∞).
9
+ */
10
+ export declare function inertializationDecayRate(halfLife: number): number;
11
+ /**
12
+ * Critically-damped decay of a scalar offset `offset0` with initial velocity `velocity0`,
13
+ * sampled at time `t` (seconds) since the transition. Decays smoothly to zero; preserves the
14
+ * initial velocity at `t = 0` (so momentum carries through). Deterministic.
15
+ */
16
+ export declare function inertializedScalar(offset0: number, velocity0: number, t: number, halfLife: number): number;
17
+ /**
18
+ * Source-clip weight for an inertialized transition, decaying from 1 → 0 with zero initial slope
19
+ * (critically damped, monotonic). The destination weight is `1 − thisWeight`. A drop-in,
20
+ * smoother replacement for a linear `1 − t/duration` ramp. `elapsed`/`halfLife` in seconds.
21
+ */
22
+ export declare function inertializedTransitionWeight(elapsed: number, halfLife: number): number;
23
+ /** Vector3 offset decay (per-component critically-damped). `velocity0` defaults to zero. */
24
+ export declare function inertializedVec3(offset0: Vec3, t: number, halfLife: number, velocity0?: Vec3): Vec3;
25
+ /**
26
+ * Critically-damped decay of the rotational offset `source · target⁻¹`, re-applied to `target`.
27
+ * At `t = 0` returns `source`; as `t → ∞` returns `target`. `angularSpeed0` (rad/s, about the
28
+ * offset axis) optionally carries rotational momentum through the transition. Deterministic.
29
+ */
30
+ export declare function inertializedQuat(source: Quat, target: Quat, t: number, halfLife: number, angularSpeed0?: number): Quat;
31
+ /** A pose is a map of animation target → value (scalar / vec3 / quaternion supported for decay). */
32
+ export type InertializationPose = Readonly<Record<string, AnimationValue>>;
33
+ /**
34
+ * Optional per-target velocities at transition time. Scalars → number (units/s), vec3 → Vec3
35
+ * (units/s), quaternions → number (rad/s about the offset axis). Targets absent here decay from
36
+ * rest (velocity 0).
37
+ */
38
+ export type InertializationVelocities = Readonly<Record<string, number | Vec3>>;
39
+ export interface InertializerOptions {
40
+ /** Transition half-life in seconds (default {@link DEFAULT_INERTIALIZATION_HALF_LIFE}). */
41
+ readonly halfLife?: number;
42
+ }
43
+ export interface Inertializer {
44
+ readonly halfLife: number;
45
+ /**
46
+ * Record a transition from `previousPose` to `targetPose` (the destination clip's pose at the
47
+ * transition instant), with optional per-target velocities. Resets the transition clock.
48
+ */
49
+ recordTransition(previousPose: InertializationPose, targetPose: InertializationPose, velocities?: InertializationVelocities): void;
50
+ /**
51
+ * Sample the inertialized pose `t` seconds after the recorded transition. At `t = 0` equals the
52
+ * source pose for every recorded target; as `t` grows it converges to the target pose.
53
+ */
54
+ sampleInertialized(t: number): InertializationPose;
55
+ /** True once the offset has decayed to within `epsilon` of the target across all targets. */
56
+ settled(t: number, epsilon?: number): boolean;
57
+ /** Clear the recorded transition. */
58
+ reset(): void;
59
+ }
60
+ /**
61
+ * Create a pose-space inertializer. Pure/deterministic given fixed `t`. Use it to replace a
62
+ * linear state-transition crossfade with a momentum-preserving decay of the pose difference.
63
+ */
64
+ export declare function createInertializer(options?: InertializerOptions): Inertializer;
65
+ //# sourceMappingURL=Inertialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Inertialization.d.ts","sourceRoot":"","sources":["../../../../packages/animation/src/Inertialization.ts"],"names":[],"mappings":"AAmBA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,IAAI,EACT,KAAK,IAAI,EACV,MAAM,eAAe,CAAC;AAIvB,yFAAyF;AACzF,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAEtD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM1G;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMtF;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,IAAgB,GAAG,IAAI,CAM9G;AAmCD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,SAAI,GAAG,IAAI,CAOjH;AAID,oGAAoG;AACpG,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AAEhF,MAAM,WAAW,mBAAmB;IAClC,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AASD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,mBAAmB,EAAE,UAAU,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;IACnI;;;OAGG;IACH,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACnD,6FAA6F;IAC7F,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,qCAAqC;IACrC,KAAK,IAAI,IAAI,CAAC;CACf;AAWD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAuClF"}
@@ -0,0 +1,211 @@
1
+ // Inertialization: a critically-damped decay of the *pose offset* captured at the moment a
2
+ // transition begins, added on top of the destination pose. Unlike a linear crossfade (which
3
+ // interpolates two clips by a straight ramp and visibly "snaps" its slope at both ends), an
4
+ // inertialized transition starts the destination pose already offset by the source pose's
5
+ // difference (and optionally its velocity), then lets that offset decay smoothly to zero. The
6
+ // result is C1-continuous at the transition boundary: no velocity discontinuity, so motion
7
+ // "carries through" the swap instead of dissolving.
8
+ //
9
+ // This module is pure and deterministic: no `Date.now()`, no `Math.random()`, no engine/render
10
+ // imports. Given the same inputs and the same `t` it always returns the same result, so it is
11
+ // safe inside deterministic replay (combat sims) and reproducible tests.
12
+ //
13
+ // Two layers are provided:
14
+ // 1. Scalar / vector / quaternion offset primitives (`inertializedScalar`, ...).
15
+ // 2. A pose-space `Inertializer` that records a transition between two `AnimationValue` poses
16
+ // and samples the inertialized pose at a given time.
17
+ // Plus a weight-domain helper (`inertializedTransitionWeight`) for consumers that blend two
18
+ // clips by weight (e.g. the fighter adapter / `applyClips` call sites) rather than by pose.
19
+ import { cloneAnimationValue, normalizeQuat } from "./Keyframe.js";
20
+ const LN2 = Math.log(2);
21
+ /** Default transition half-life in seconds. ~0.12s reads as a snappy-but-smooth swap. */
22
+ export const DEFAULT_INERTIALIZATION_HALF_LIFE = 0.12;
23
+ /**
24
+ * Decay rate `k` (1/seconds) for a given half-life. The critically-damped envelope used here is
25
+ * `(1 + k·t)·e^(−k·t)`; because of the `(1 + k·t)` term the offset is not exactly halved at
26
+ * `t = halfLife` (it crosses 0.5 a little later) — `halfLife` parameterizes the e-folding decay
27
+ * rate, not a literal 50%-crossing time. A non-positive half-life means an instant snap (rate ∞).
28
+ */
29
+ export function inertializationDecayRate(halfLife) {
30
+ if (!Number.isFinite(halfLife) || halfLife <= 0)
31
+ return Number.POSITIVE_INFINITY;
32
+ return LN2 / halfLife;
33
+ }
34
+ /**
35
+ * Critically-damped decay of a scalar offset `offset0` with initial velocity `velocity0`,
36
+ * sampled at time `t` (seconds) since the transition. Decays smoothly to zero; preserves the
37
+ * initial velocity at `t = 0` (so momentum carries through). Deterministic.
38
+ */
39
+ export function inertializedScalar(offset0, velocity0, t, halfLife) {
40
+ if (!(t > 0))
41
+ return offset0;
42
+ const k = inertializationDecayRate(halfLife);
43
+ if (!Number.isFinite(k))
44
+ return 0; // instant snap
45
+ // x(t) = (x0 + (v0 + k·x0)·t)·e^(−k·t); x(0)=x0, x'(0)=v0, x(∞)=0.
46
+ return (offset0 + (velocity0 + k * offset0) * t) * Math.exp(-k * t);
47
+ }
48
+ /**
49
+ * Source-clip weight for an inertialized transition, decaying from 1 → 0 with zero initial slope
50
+ * (critically damped, monotonic). The destination weight is `1 − thisWeight`. A drop-in,
51
+ * smoother replacement for a linear `1 − t/duration` ramp. `elapsed`/`halfLife` in seconds.
52
+ */
53
+ export function inertializedTransitionWeight(elapsed, halfLife) {
54
+ if (!(elapsed > 0))
55
+ return 1;
56
+ const k = inertializationDecayRate(halfLife);
57
+ if (!Number.isFinite(k))
58
+ return 0; // instant snap
59
+ const w = (1 + k * elapsed) * Math.exp(-k * elapsed);
60
+ return w < 0 ? 0 : w > 1 ? 1 : w;
61
+ }
62
+ /** Vector3 offset decay (per-component critically-damped). `velocity0` defaults to zero. */
63
+ export function inertializedVec3(offset0, t, halfLife, velocity0 = [0, 0, 0]) {
64
+ return [
65
+ inertializedScalar(offset0[0], velocity0[0], t, halfLife),
66
+ inertializedScalar(offset0[1], velocity0[1], t, halfLife),
67
+ inertializedScalar(offset0[2], velocity0[2], t, halfLife)
68
+ ];
69
+ }
70
+ // ---- quaternion helpers (local; unit-quaternion algebra) -------------------------------------
71
+ function quatConjugate(q) {
72
+ return [-q[0], -q[1], -q[2], q[3]];
73
+ }
74
+ function quatMultiply(a, b) {
75
+ return [
76
+ a[3] * b[0] + a[0] * b[3] + a[1] * b[2] - a[2] * b[1],
77
+ a[3] * b[1] - a[0] * b[2] + a[1] * b[3] + a[2] * b[0],
78
+ a[3] * b[2] + a[0] * b[1] - a[1] * b[0] + a[2] * b[3],
79
+ a[3] * b[3] - a[0] * b[0] - a[1] * b[1] - a[2] * b[2]
80
+ ];
81
+ }
82
+ /** Shortest-arc axis/angle of a unit quaternion; angle in [0, π], axis normalized (or +X). */
83
+ function quatToAxisAngle(q) {
84
+ const n = normalizeQuat(q);
85
+ // Force the shorter arc (w >= 0) so the decayed rotation never takes the long way around.
86
+ const w = n[3] < 0 ? -n[3] : n[3];
87
+ const sign = n[3] < 0 ? -1 : 1;
88
+ const angle = 2 * Math.acos(Math.min(1, w));
89
+ const s = Math.sqrt(Math.max(0, 1 - w * w));
90
+ if (s < 1e-8)
91
+ return { axis: [1, 0, 0], angle: 0 };
92
+ return { axis: [(sign * n[0]) / s, (sign * n[1]) / s, (sign * n[2]) / s], angle };
93
+ }
94
+ function quatFromAxisAngle(axis, angle) {
95
+ const half = angle / 2;
96
+ const s = Math.sin(half);
97
+ return [axis[0] * s, axis[1] * s, axis[2] * s, Math.cos(half)];
98
+ }
99
+ /**
100
+ * Critically-damped decay of the rotational offset `source · target⁻¹`, re-applied to `target`.
101
+ * At `t = 0` returns `source`; as `t → ∞` returns `target`. `angularSpeed0` (rad/s, about the
102
+ * offset axis) optionally carries rotational momentum through the transition. Deterministic.
103
+ */
104
+ export function inertializedQuat(source, target, t, halfLife, angularSpeed0 = 0) {
105
+ const offset = quatMultiply(normalizeQuat(source), quatConjugate(normalizeQuat(target)));
106
+ const { axis, angle } = quatToAxisAngle(offset);
107
+ if (angle === 0 && angularSpeed0 === 0)
108
+ return normalizeQuat(target);
109
+ const decayedAngle = inertializedScalar(angle, angularSpeed0, t, halfLife);
110
+ const decayedOffset = quatFromAxisAngle(axis, decayedAngle);
111
+ return normalizeQuat(quatMultiply(decayedOffset, normalizeQuat(target)));
112
+ }
113
+ function classify(value) {
114
+ if (typeof value === "number")
115
+ return "scalar";
116
+ if (Array.isArray(value)) {
117
+ if (value.length === 3)
118
+ return "vector3";
119
+ if (value.length === 4)
120
+ return "quaternion";
121
+ }
122
+ return "snap";
123
+ }
124
+ /**
125
+ * Create a pose-space inertializer. Pure/deterministic given fixed `t`. Use it to replace a
126
+ * linear state-transition crossfade with a momentum-preserving decay of the pose difference.
127
+ */
128
+ export function createInertializer(options = {}) {
129
+ const halfLife = options.halfLife ?? DEFAULT_INERTIALIZATION_HALF_LIFE;
130
+ let offsets = new Map();
131
+ return {
132
+ halfLife,
133
+ recordTransition(previousPose, targetPose, velocities) {
134
+ const next = new Map();
135
+ for (const [target, targetValue] of Object.entries(targetPose)) {
136
+ const sourceValue = previousPose[target];
137
+ if (sourceValue === undefined)
138
+ continue;
139
+ const type = classify(targetValue);
140
+ const velocity = velocities?.[target] ?? (type === "vector3" ? [0, 0, 0] : 0);
141
+ next.set(target, {
142
+ type,
143
+ source: cloneAnimationValue(sourceValue),
144
+ target: cloneAnimationValue(targetValue),
145
+ velocity
146
+ });
147
+ }
148
+ offsets = next;
149
+ },
150
+ sampleInertialized(t) {
151
+ const pose = {};
152
+ for (const [target, rec] of offsets) {
153
+ pose[target] = sampleOffset(rec, t, halfLife);
154
+ }
155
+ return pose;
156
+ },
157
+ settled(t, epsilon = 1e-3) {
158
+ for (const [, rec] of offsets) {
159
+ if (!offsetSettled(rec, t, halfLife, epsilon))
160
+ return false;
161
+ }
162
+ return true;
163
+ },
164
+ reset() {
165
+ offsets = new Map();
166
+ }
167
+ };
168
+ }
169
+ function sampleOffset(rec, t, halfLife) {
170
+ switch (rec.type) {
171
+ case "scalar": {
172
+ const target = rec.target;
173
+ const offset0 = rec.source - target;
174
+ return target + inertializedScalar(offset0, rec.velocity, t, halfLife);
175
+ }
176
+ case "vector3": {
177
+ const target = rec.target;
178
+ const source = rec.source;
179
+ const offset0 = [source[0] - target[0], source[1] - target[1], source[2] - target[2]];
180
+ const decayed = inertializedVec3(offset0, t, halfLife, rec.velocity);
181
+ return [target[0] + decayed[0], target[1] + decayed[1], target[2] + decayed[2]];
182
+ }
183
+ case "quaternion":
184
+ return inertializedQuat(rec.source, rec.target, t, halfLife, rec.velocity);
185
+ default:
186
+ // Non-interpolable (boolean/string/other array length): snap to target immediately.
187
+ return cloneAnimationValue(rec.target);
188
+ }
189
+ }
190
+ function offsetSettled(rec, t, halfLife, epsilon) {
191
+ switch (rec.type) {
192
+ case "scalar": {
193
+ const offset0 = rec.source - rec.target;
194
+ return Math.abs(inertializedScalar(offset0, rec.velocity, t, halfLife)) <= epsilon;
195
+ }
196
+ case "vector3": {
197
+ const target = rec.target;
198
+ const source = rec.source;
199
+ const decayed = inertializedVec3([source[0] - target[0], source[1] - target[1], source[2] - target[2]], t, halfLife, rec.velocity);
200
+ return Math.hypot(decayed[0], decayed[1], decayed[2]) <= epsilon;
201
+ }
202
+ case "quaternion": {
203
+ const offset = quatMultiply(normalizeQuat(rec.source), quatConjugate(normalizeQuat(rec.target)));
204
+ const { angle } = quatToAxisAngle(offset);
205
+ return Math.abs(inertializedScalar(angle, rec.velocity, t, halfLife)) <= epsilon;
206
+ }
207
+ default:
208
+ return true;
209
+ }
210
+ }
211
+ //# sourceMappingURL=Inertialization.js.map