@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.
- package/README.md +49 -44
- package/dist/animation/AnimationClipEvents.d.ts +55 -0
- package/dist/animation/AnimationClipEvents.d.ts.map +1 -1
- package/dist/animation/AnimationClipEvents.js +136 -0
- package/dist/animation/AnimationClipEvents.js.map +1 -1
- package/dist/animation/AnimationClipRegistry.d.ts +9 -3
- package/dist/animation/AnimationClipRegistry.d.ts.map +1 -1
- package/dist/animation/AnimationClipRegistry.js +52 -5
- package/dist/animation/AnimationClipRegistry.js.map +1 -1
- package/dist/animation/AnimationController.d.ts +6 -6
- package/dist/animation/AnimationController.d.ts.map +1 -1
- package/dist/animation/AnimationController.js +3 -3
- package/dist/animation/AnimationController.js.map +1 -1
- package/dist/animation/AnimationMixer.d.ts +10 -0
- package/dist/animation/AnimationMixer.d.ts.map +1 -1
- package/dist/animation/AnimationMixer.js +35 -0
- package/dist/animation/AnimationMixer.js.map +1 -1
- package/dist/animation/AnimationStateGraph.d.ts +14 -5
- package/dist/animation/AnimationStateGraph.d.ts.map +1 -1
- package/dist/animation/AnimationStateGraph.js +25 -2
- package/dist/animation/AnimationStateGraph.js.map +1 -1
- package/dist/animation/AnimationStateMachine.d.ts +26 -0
- package/dist/animation/AnimationStateMachine.d.ts.map +1 -1
- package/dist/animation/AnimationStateMachine.js +32 -0
- package/dist/animation/AnimationStateMachine.js.map +1 -1
- package/dist/animation/Bone.d.ts +4 -0
- package/dist/animation/Bone.d.ts.map +1 -1
- package/dist/animation/Bone.js +3 -0
- package/dist/animation/Bone.js.map +1 -1
- package/dist/animation/FighterAnimationAdapter.d.ts +49 -0
- package/dist/animation/FighterAnimationAdapter.d.ts.map +1 -0
- package/dist/animation/FighterAnimationAdapter.js +71 -0
- package/dist/animation/FighterAnimationAdapter.js.map +1 -0
- package/dist/animation/FootIk.d.ts +77 -0
- package/dist/animation/FootIk.d.ts.map +1 -0
- package/dist/animation/FootIk.js +153 -0
- package/dist/animation/FootIk.js.map +1 -0
- package/dist/animation/HumanoidBoneInference.d.ts +61 -0
- package/dist/animation/HumanoidBoneInference.d.ts.map +1 -0
- package/dist/animation/HumanoidBoneInference.js +239 -0
- package/dist/animation/HumanoidBoneInference.js.map +1 -0
- package/dist/animation/HumanoidRetargeting.d.ts +48 -4
- package/dist/animation/HumanoidRetargeting.d.ts.map +1 -1
- package/dist/animation/HumanoidRetargeting.js +149 -14
- package/dist/animation/HumanoidRetargeting.js.map +1 -1
- package/dist/animation/IK.d.ts +5 -0
- package/dist/animation/IK.d.ts.map +1 -1
- package/dist/animation/IK.js +9 -0
- package/dist/animation/IK.js.map +1 -1
- package/dist/animation/Inertialization.d.ts +65 -0
- package/dist/animation/Inertialization.d.ts.map +1 -0
- package/dist/animation/Inertialization.js +211 -0
- package/dist/animation/Inertialization.js.map +1 -0
- package/dist/animation/LocomotionController.d.ts +5 -0
- package/dist/animation/LocomotionController.d.ts.map +1 -1
- package/dist/animation/LocomotionController.js +3 -0
- package/dist/animation/LocomotionController.js.map +1 -1
- package/dist/animation/LocomotionKit.d.ts +52 -0
- package/dist/animation/LocomotionKit.d.ts.map +1 -0
- package/dist/animation/LocomotionKit.js +38 -0
- package/dist/animation/LocomotionKit.js.map +1 -0
- package/dist/animation/MotionQuality.d.ts +3 -3
- package/dist/animation/MotionQuality.d.ts.map +1 -1
- package/dist/animation/MotionQuality.js +2 -2
- package/dist/animation/MotionQuality.js.map +1 -1
- package/dist/animation/RigQuality.d.ts +31 -0
- package/dist/animation/RigQuality.d.ts.map +1 -0
- package/dist/animation/RigQuality.js +70 -0
- package/dist/animation/RigQuality.js.map +1 -0
- package/dist/animation/SecondaryAnimationFixtures.d.ts.map +1 -1
- package/dist/animation/SecondaryAnimationFixtures.js +1 -3
- package/dist/animation/SecondaryAnimationFixtures.js.map +1 -1
- package/dist/animation/Skeleton.d.ts +16 -1
- package/dist/animation/Skeleton.d.ts.map +1 -1
- package/dist/animation/Skeleton.js +42 -0
- package/dist/animation/Skeleton.js.map +1 -1
- package/dist/animation/SpringBones.d.ts +60 -0
- package/dist/animation/SpringBones.d.ts.map +1 -0
- package/dist/animation/SpringBones.js +173 -0
- package/dist/animation/SpringBones.js.map +1 -0
- package/dist/animation/browser-index.d.ts +12 -3
- package/dist/animation/browser-index.d.ts.map +1 -1
- package/dist/animation/browser-index.js +11 -2
- package/dist/animation/browser-index.js.map +1 -1
- package/dist/animation/index.d.ts +11 -3
- package/dist/animation/index.d.ts.map +1 -1
- package/dist/animation/index.js +10 -2
- package/dist/animation/index.js.map +1 -1
- package/dist/animation/library/performanceStateGraph.d.ts +42 -0
- package/dist/animation/library/performanceStateGraph.d.ts.map +1 -0
- package/dist/animation/library/performanceStateGraph.js +101 -0
- package/dist/animation/library/performanceStateGraph.js.map +1 -0
- package/dist/animation/library/standardHumanoidClips.d.ts +27 -0
- package/dist/animation/library/standardHumanoidClips.d.ts.map +1 -0
- package/dist/animation/library/standardHumanoidClips.js +357 -0
- package/dist/animation/library/standardHumanoidClips.js.map +1 -0
- package/dist/assets/GLTFAnimationRuntime.d.ts +85 -0
- package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.js +143 -0
- package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
- package/dist/assets/GLTFAutoFit.d.ts +61 -0
- package/dist/assets/GLTFAutoFit.d.ts.map +1 -0
- package/dist/assets/GLTFAutoFit.js +77 -0
- package/dist/assets/GLTFAutoFit.js.map +1 -0
- package/dist/assets/GLTFLoader.d.ts +21 -0
- package/dist/assets/GLTFLoader.d.ts.map +1 -1
- package/dist/assets/GLTFLoader.js +60 -15
- package/dist/assets/GLTFLoader.js.map +1 -1
- package/dist/assets/GLTFRenderResources.d.ts +9 -1
- package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
- package/dist/assets/GLTFRenderResources.js +93 -4
- package/dist/assets/GLTFRenderResources.js.map +1 -1
- package/dist/assets/browser-index.d.ts +6 -4
- package/dist/assets/browser-index.d.ts.map +1 -1
- package/dist/assets/browser-index.js +3 -2
- package/dist/assets/browser-index.js.map +1 -1
- package/dist/assets/index.d.ts +7 -5
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +4 -3
- package/dist/assets/index.js.map +1 -1
- package/dist/audio/AudioMixer.d.ts +3 -3
- package/dist/audio/AudioMixer.d.ts.map +1 -1
- package/dist/audio/AudioMixer.js +1 -1
- package/dist/audio/AudioMixer.js.map +1 -1
- package/dist/audio/index.d.ts +2 -2
- package/dist/audio/index.d.ts.map +1 -1
- package/dist/audio/index.js +1 -1
- package/dist/audio/index.js.map +1 -1
- package/dist/aura3d-cli/animation-asset-profiles.d.ts +15 -0
- package/dist/aura3d-cli/animation-asset-profiles.d.ts.map +1 -0
- package/dist/aura3d-cli/animation-asset-profiles.js +46 -0
- package/dist/aura3d-cli/animation-asset-profiles.js.map +1 -0
- package/dist/aura3d-cli/animation-asset-validator.d.ts +22 -0
- package/dist/aura3d-cli/animation-asset-validator.d.ts.map +1 -0
- package/dist/aura3d-cli/animation-asset-validator.js +49 -0
- package/dist/aura3d-cli/animation-asset-validator.js.map +1 -0
- package/dist/aura3d-cli/cli.js +40 -17
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/game-asset-validator.d.ts +4 -4
- package/dist/aura3d-cli/game-asset-validator.d.ts.map +1 -1
- package/dist/aura3d-cli/game-asset-validator.js +2 -2
- package/dist/aura3d-cli/game-asset-validator.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +32 -19
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +101 -68
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge.d.ts +30 -4
- package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge.js +320 -51
- package/dist/aura3d-cli/pull-bridge.js.map +1 -1
- package/dist/create-aura3d/index.d.ts +1 -1
- package/dist/create-aura3d/index.d.ts.map +1 -1
- package/dist/create-aura3d/index.js +6 -4
- package/dist/create-aura3d/index.js.map +1 -1
- package/dist/editor-runtime/AnimationSceneEditor.d.ts +111 -0
- package/dist/editor-runtime/AnimationSceneEditor.d.ts.map +1 -0
- package/dist/editor-runtime/AnimationSceneEditor.js +285 -0
- package/dist/editor-runtime/AnimationSceneEditor.js.map +1 -0
- package/dist/editor-runtime/AssetDropZone.d.ts +9 -9
- package/dist/editor-runtime/AssetDropZone.d.ts.map +1 -1
- package/dist/editor-runtime/AssetDropZone.js +4 -4
- package/dist/editor-runtime/AssetDropZone.js.map +1 -1
- package/dist/editor-runtime/EventTrackEditor.d.ts +54 -0
- package/dist/editor-runtime/EventTrackEditor.d.ts.map +1 -0
- package/dist/editor-runtime/EventTrackEditor.js +124 -0
- package/dist/editor-runtime/EventTrackEditor.js.map +1 -0
- package/dist/editor-runtime/SceneOutliner.d.ts +3 -3
- package/dist/editor-runtime/SceneOutliner.d.ts.map +1 -1
- package/dist/editor-runtime/SceneOutliner.js.map +1 -1
- package/dist/editor-runtime/index.d.ts +5 -3
- package/dist/editor-runtime/index.d.ts.map +1 -1
- package/dist/editor-runtime/index.js +2 -1
- package/dist/editor-runtime/index.js.map +1 -1
- package/dist/engine/agent-api/AnimationAssetManifest.d.ts +50 -0
- package/dist/engine/agent-api/AnimationAssetManifest.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationAssetManifest.js +65 -0
- package/dist/engine/agent-api/AnimationAssetManifest.js.map +1 -0
- package/dist/engine/agent-api/AnimationDirector.d.ts +120 -0
- package/dist/engine/agent-api/AnimationDirector.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationDirector.js +432 -0
- package/dist/engine/agent-api/AnimationDirector.js.map +1 -0
- package/dist/engine/agent-api/AnimationEpisodePackage.d.ts +51 -0
- package/dist/engine/agent-api/AnimationEpisodePackage.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationEpisodePackage.js +79 -0
- package/dist/engine/agent-api/AnimationEpisodePackage.js.map +1 -0
- package/dist/engine/agent-api/AnimationMotionQuality.d.ts +83 -0
- package/dist/engine/agent-api/AnimationMotionQuality.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationMotionQuality.js +128 -0
- package/dist/engine/agent-api/AnimationMotionQuality.js.map +1 -0
- package/dist/engine/agent-api/AnimationPerformance.d.ts +150 -0
- package/dist/engine/agent-api/AnimationPerformance.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationPerformance.js +345 -0
- package/dist/engine/agent-api/AnimationPerformance.js.map +1 -0
- package/dist/engine/agent-api/AnimationRenderQueue.d.ts +143 -0
- package/dist/engine/agent-api/AnimationRenderQueue.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationRenderQueue.js +410 -0
- package/dist/engine/agent-api/AnimationRenderQueue.js.map +1 -0
- package/dist/engine/agent-api/AnimationRouteProof.d.ts +112 -0
- package/dist/engine/agent-api/AnimationRouteProof.d.ts.map +1 -0
- package/dist/engine/agent-api/AnimationRouteProof.js +127 -0
- package/dist/engine/agent-api/AnimationRouteProof.js.map +1 -0
- package/dist/engine/agent-api/AssetLibraryBrowser.d.ts +6 -6
- package/dist/engine/agent-api/AssetLibraryBrowser.d.ts.map +1 -1
- package/dist/engine/agent-api/AssetLibraryBrowser.js +6 -6
- package/dist/engine/agent-api/AssetLibraryBrowser.js.map +1 -1
- package/dist/engine/agent-api/AuraVoiceBridge.d.ts +7 -7
- package/dist/engine/agent-api/AuraVoiceBridge.d.ts.map +1 -1
- package/dist/engine/agent-api/AuraVoiceBridge.js +5 -5
- package/dist/engine/agent-api/AuraVoiceBridge.js.map +1 -1
- package/dist/engine/agent-api/BatchEpisodeRenderer.d.ts +5 -5
- package/dist/engine/agent-api/BatchEpisodeRenderer.d.ts.map +1 -1
- package/dist/engine/agent-api/BatchEpisodeRenderer.js.map +1 -1
- package/dist/engine/agent-api/BodyLanguageLibrary.d.ts +3 -3
- package/dist/engine/agent-api/BodyLanguageLibrary.d.ts.map +1 -1
- package/dist/engine/agent-api/BodyLanguageLibrary.js.map +1 -1
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.d.ts +4 -4
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.d.ts.map +1 -1
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.js +2 -2
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.js.map +1 -1
- package/dist/engine/agent-api/CharacterAssembly.d.ts +2 -2
- package/dist/engine/agent-api/CharacterAssembly.d.ts.map +1 -1
- package/dist/engine/agent-api/CloudRenderAdapter.d.ts +4 -4
- package/dist/engine/agent-api/CloudRenderAdapter.d.ts.map +1 -1
- package/dist/engine/agent-api/FfmpegFrameEncoder.d.ts +129 -0
- package/dist/engine/agent-api/FfmpegFrameEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/FfmpegFrameEncoder.js +306 -0
- package/dist/engine/agent-api/FfmpegFrameEncoder.js.map +1 -0
- package/dist/engine/agent-api/FrameEncoder.d.ts +5 -5
- package/dist/engine/agent-api/FrameEncoder.d.ts.map +1 -1
- package/dist/engine/agent-api/GameAssetValidation.d.ts +1 -1
- package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -1
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.d.ts.map +1 -1
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.js +7 -2
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.js.map +1 -1
- package/dist/engine/agent-api/PerformanceBlender.d.ts +5 -5
- package/dist/engine/agent-api/PerformanceBlender.d.ts.map +1 -1
- package/dist/engine/agent-api/PerformanceBlender.js.map +1 -1
- package/dist/engine/agent-api/PerformanceCaptureSession.d.ts +5 -5
- package/dist/engine/agent-api/PerformanceCaptureSession.d.ts.map +1 -1
- package/dist/engine/agent-api/PerformanceCaptureSession.js +2 -2
- package/dist/engine/agent-api/PerformanceCaptureSession.js.map +1 -1
- package/dist/engine/agent-api/PerformancePoseEditor.d.ts +8 -8
- package/dist/engine/agent-api/PerformancePoseEditor.d.ts.map +1 -1
- package/dist/engine/agent-api/PerformancePoseEditor.js.map +1 -1
- package/dist/engine/agent-api/PngSequenceEncoder.d.ts +4 -4
- package/dist/engine/agent-api/PngSequenceEncoder.d.ts.map +1 -1
- package/dist/engine/agent-api/PromptAnimationContract.d.ts +2 -2
- package/dist/engine/agent-api/PromptAnimationContract.d.ts.map +1 -1
- package/dist/engine/agent-api/PromptAnimationEvidence.d.ts +2 -2
- package/dist/engine/agent-api/PromptAnimationEvidence.d.ts.map +1 -1
- package/dist/engine/agent-api/PublishingPipeline.d.ts +3 -3
- package/dist/engine/agent-api/PublishingPipeline.d.ts.map +1 -1
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +2 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -1
- package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -1
- package/dist/engine/agent-api/SceneGroundingUtils.d.ts +73 -0
- package/dist/engine/agent-api/SceneGroundingUtils.d.ts.map +1 -0
- package/dist/engine/agent-api/SceneGroundingUtils.js +74 -0
- package/dist/engine/agent-api/SceneGroundingUtils.js.map +1 -0
- package/dist/engine/agent-api/ShotTimeline.d.ts +3 -3
- package/dist/engine/agent-api/ShotTimeline.d.ts.map +1 -1
- package/dist/engine/agent-api/ShotTimeline.js.map +1 -1
- package/dist/engine/agent-api/ThumbnailGenerator.d.ts +4 -4
- package/dist/engine/agent-api/ThumbnailGenerator.d.ts.map +1 -1
- package/dist/engine/agent-api/ThumbnailGenerator.js.map +1 -1
- package/dist/engine/agent-api/VideoExportPipeline.d.ts +9 -9
- package/dist/engine/agent-api/VideoExportPipeline.d.ts.map +1 -1
- package/dist/engine/agent-api/VideoExportPipeline.js.map +1 -1
- package/dist/engine/agent-api/VisemeController.d.ts +12 -0
- package/dist/engine/agent-api/VisemeController.d.ts.map +1 -1
- package/dist/engine/agent-api/VisemeController.js +23 -0
- package/dist/engine/agent-api/VisemeController.js.map +1 -1
- package/dist/engine/agent-api/YouTubeMetadataGenerator.d.ts +2 -2
- package/dist/engine/agent-api/YouTubeMetadataGenerator.d.ts.map +1 -1
- package/dist/engine/agent-api/YouTubeMetadataGenerator.js +1 -1
- package/dist/engine/agent-api/YouTubeMetadataGenerator.js.map +1 -1
- package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -1
- package/dist/engine/agent-api/index.d.ts +43 -38
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +42 -28
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/engine/animation-studio/animation-episode-validator.d.ts +24 -0
- package/dist/engine/animation-studio/animation-episode-validator.d.ts.map +1 -0
- package/dist/engine/animation-studio/animation-episode-validator.js +74 -0
- package/dist/engine/animation-studio/animation-episode-validator.js.map +1 -0
- package/dist/engine/animation-studio/director-heuristics.d.ts +73 -0
- package/dist/engine/animation-studio/director-heuristics.d.ts.map +1 -0
- package/dist/engine/animation-studio/director-heuristics.js +149 -0
- package/dist/engine/animation-studio/director-heuristics.js.map +1 -0
- package/dist/engine/animation-studio/episode-document.d.ts +214 -0
- package/dist/engine/animation-studio/episode-document.d.ts.map +1 -0
- package/dist/engine/animation-studio/episode-document.js +143 -0
- package/dist/engine/animation-studio/episode-document.js.map +1 -0
- package/dist/engine/animation-studio/index.d.ts +20 -0
- package/dist/engine/animation-studio/index.d.ts.map +1 -0
- package/dist/engine/animation-studio/index.js +20 -0
- package/dist/engine/animation-studio/index.js.map +1 -0
- package/dist/engine/animation-studio/scene-tools.d.ts +34 -0
- package/dist/engine/animation-studio/scene-tools.d.ts.map +1 -0
- package/dist/engine/animation-studio/scene-tools.js +95 -0
- package/dist/engine/animation-studio/scene-tools.js.map +1 -0
- package/dist/engine/index.d.ts +2 -2
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +1 -1
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts +13 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.js +8 -0
- package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
- package/dist/physics/Raycast.d.ts +17 -0
- package/dist/physics/Raycast.d.ts.map +1 -1
- package/dist/physics/Raycast.js +16 -0
- package/dist/physics/Raycast.js.map +1 -1
- package/dist/rendering/ForwardPass.js +18 -13
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/MorphTargetPlan.d.ts +42 -0
- package/dist/rendering/MorphTargetPlan.d.ts.map +1 -0
- package/dist/rendering/MorphTargetPlan.js +129 -0
- package/dist/rendering/MorphTargetPlan.js.map +1 -0
- package/dist/rendering/MorphUnlitMaterial.d.ts.map +1 -1
- package/dist/rendering/MorphUnlitMaterial.js +7 -1
- package/dist/rendering/MorphUnlitMaterial.js.map +1 -1
- package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/ShaderLibrary.js +34 -6
- package/dist/rendering/ShaderLibrary.js.map +1 -1
- package/dist/rendering/WebGPUDevice.d.ts +2 -0
- package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
- package/dist/rendering/WebGPUDevice.js +69 -12
- package/dist/rendering/WebGPUDevice.js.map +1 -1
- package/dist/rendering/animation/AnimationMaterialStyle.d.ts +19 -0
- package/dist/rendering/animation/AnimationMaterialStyle.d.ts.map +1 -0
- package/dist/rendering/animation/AnimationMaterialStyle.js +13 -0
- package/dist/rendering/animation/AnimationMaterialStyle.js.map +1 -0
- package/dist/rendering/animation/AnimationRenderPreset.d.ts +36 -0
- package/dist/rendering/animation/AnimationRenderPreset.d.ts.map +1 -0
- package/dist/rendering/animation/AnimationRenderPreset.js +23 -0
- package/dist/rendering/animation/AnimationRenderPreset.js.map +1 -0
- package/dist/rendering/animation/AnimationToonMaterial.d.ts +130 -0
- package/dist/rendering/animation/AnimationToonMaterial.d.ts.map +1 -0
- package/dist/rendering/animation/AnimationToonMaterial.js +303 -0
- package/dist/rendering/animation/AnimationToonMaterial.js.map +1 -0
- package/dist/rendering/animation/AnimationVisualQuality.d.ts +28 -0
- package/dist/rendering/animation/AnimationVisualQuality.d.ts.map +1 -0
- package/dist/rendering/animation/AnimationVisualQuality.js +39 -0
- package/dist/rendering/animation/AnimationVisualQuality.js.map +1 -0
- package/dist/rendering/animation/applyAnimationRenderPreset.d.ts +79 -0
- package/dist/rendering/animation/applyAnimationRenderPreset.d.ts.map +1 -0
- package/dist/rendering/animation/applyAnimationRenderPreset.js +88 -0
- package/dist/rendering/animation/applyAnimationRenderPreset.js.map +1 -0
- package/dist/rendering/animation/index.d.ts +6 -0
- package/dist/rendering/animation/index.d.ts.map +1 -0
- package/dist/rendering/animation/index.js +6 -0
- package/dist/rendering/animation/index.js.map +1 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.d.ts +130 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.js +303 -0
- package/dist/rendering/cartoon/CartoonToonMaterial.js.map +1 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts +79 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts.map +1 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.js +88 -0
- package/dist/rendering/cartoon/applyCartoonRenderPreset.js.map +1 -0
- package/dist/rendering/cartoon/index.d.ts +2 -0
- package/dist/rendering/cartoon/index.d.ts.map +1 -1
- package/dist/rendering/cartoon/index.js +2 -0
- package/dist/rendering/cartoon/index.js.map +1 -1
- package/dist/rendering/index.d.ts +4 -2
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +3 -2
- package/dist/rendering/index.js.map +1 -1
- package/dist/scripting/AnimationNodeCategories.d.ts +3 -0
- package/dist/scripting/AnimationNodeCategories.d.ts.map +1 -0
- package/dist/scripting/AnimationNodeCategories.js +9 -0
- package/dist/scripting/AnimationNodeCategories.js.map +1 -0
- package/dist/scripting/AnimationVisualNodes.d.ts +3 -0
- package/dist/scripting/AnimationVisualNodes.d.ts.map +1 -0
- package/dist/scripting/AnimationVisualNodes.js +41 -0
- package/dist/scripting/AnimationVisualNodes.js.map +1 -0
- package/dist/scripting/VisualGraphExecutor.js +24 -24
- package/dist/scripting/VisualGraphExecutor.js.map +1 -1
- package/dist/scripting/VisualNodeCatalog.js +2 -2
- package/dist/scripting/VisualNodeCatalog.js.map +1 -1
- package/dist/scripting/index.d.ts +3 -3
- package/dist/scripting/index.d.ts.map +1 -1
- package/dist/scripting/index.js +2 -2
- package/dist/scripting/index.js.map +1 -1
- 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 =
|
|
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
|
|
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: "
|
|
282
|
-
message: "
|
|
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: "
|
|
290
|
-
message: `
|
|
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: "
|
|
298
|
-
message: "
|
|
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: "
|
|
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
|
-
|
|
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
|
|
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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"}
|
package/dist/animation/IK.d.ts
CHANGED
|
@@ -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"}
|
package/dist/animation/IK.js
CHANGED
|
@@ -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)));
|
package/dist/animation/IK.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IK.js","sourceRoot":"","sources":["../../../../packages/animation/src/IK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,eAAe,CAAC;AAyBpD,MAAM,UAAU,cAAc,CAAC,KAAqB;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC7G,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IACtJ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG;QACH,GAAG;QACH,OAAO,EAAE,mBAAmB,IAAI,IAAI;QACpC,SAAS,EAAE,cAAc,GAAG,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;QACnE,WAAW;QACX,WAAW;QACX,cAAc;QACd,mBAAmB;QACnB,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;KAClF,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAU,EAAE,IAAU,EAAE,IAAU;IAChE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,eAAe,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAC;IACnF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,SAAS,CAAC,iBAAiB,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,GAAG,CAAC,IAAU,EAAE,KAAW;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,KAAW;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,KAAK,CAAC,KAAW,EAAE,MAAc;IACxC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,GAAG,CAAC,IAAU,EAAE,KAAW;IAClC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,MAAM,CAAC,KAAW;IACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,KAAW;IACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,KAAW;IAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"IK.js","sourceRoot":"","sources":["../../../../packages/animation/src/IK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAa,MAAM,eAAe,CAAC;AAyBpD,MAAM,UAAU,cAAc,CAAC,KAAqB;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,GAAG,WAAW,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;IAC5D,MAAM,aAAa,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC7G,MAAM,IAAI,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,WAAW,GAAG,WAAW,GAAG,aAAa,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;IACtJ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxD,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG;QACH,GAAG;QACH,OAAO,EAAE,mBAAmB,IAAI,IAAI;QACpC,SAAS,EAAE,cAAc,GAAG,QAAQ,IAAI,KAAK,CAAC,YAAY,KAAK,IAAI;QACnE,WAAW;QACX,WAAW;QACX,cAAc;QACd,mBAAmB;QACnB,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;KAClF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,GAAS,EAAE,OAAa,EAAE,QAAQ,GAAG,CAAC;IAC7E,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9F,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvG,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAU,EAAE,IAAU,EAAE,IAAU;IAChE,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,eAAe,GAAG,IAAI;QAAE,OAAO,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAC;IACnF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,SAAS,CAAC,iBAAiB,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,GAAG,CAAC,IAAU,EAAE,KAAW;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,KAAW;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,KAAK,CAAC,KAAW,EAAE,MAAc;IACxC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,GAAG,CAAC,IAAU,EAAE,KAAW;IAClC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,MAAM,CAAC,KAAW;IACzB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,EAAE,KAAW;IACvC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,KAAW;IAC5B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -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
|