@aura3d/engine 1.0.10 → 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 +59 -23
- 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 +22 -0
- package/dist/animation/AnimationClipRegistry.d.ts.map +1 -1
- package/dist/animation/AnimationClipRegistry.js +89 -0
- package/dist/animation/AnimationClipRegistry.js.map +1 -1
- package/dist/animation/AnimationController.d.ts +14 -0
- package/dist/animation/AnimationController.d.ts.map +1 -1
- package/dist/animation/AnimationController.js +21 -0
- 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 +20 -1
- package/dist/animation/AnimationStateGraph.d.ts.map +1 -1
- package/dist/animation/AnimationStateGraph.js +73 -1
- 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 +57 -0
- package/dist/animation/HumanoidRetargeting.d.ts.map +1 -1
- package/dist/animation/HumanoidRetargeting.js +184 -6
- 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 +6 -0
- package/dist/animation/MotionQuality.d.ts.map +1 -1
- package/dist/animation/MotionQuality.js +16 -0
- 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/AudioBus.d.ts +2 -0
- package/dist/audio/AudioBus.d.ts.map +1 -1
- package/dist/audio/AudioBus.js +6 -0
- package/dist/audio/AudioBus.js.map +1 -1
- package/dist/audio/AudioFileManager.d.ts +23 -0
- package/dist/audio/AudioFileManager.d.ts.map +1 -1
- package/dist/audio/AudioFileManager.js +60 -0
- package/dist/audio/AudioFileManager.js.map +1 -1
- package/dist/audio/AudioMixer.d.ts +43 -0
- package/dist/audio/AudioMixer.d.ts.map +1 -1
- package/dist/audio/AudioMixer.js +43 -0
- package/dist/audio/AudioMixer.js.map +1 -1
- package/dist/audio/AudioTimelineTrack.d.ts +25 -0
- package/dist/audio/AudioTimelineTrack.d.ts.map +1 -1
- package/dist/audio/AudioTimelineTrack.js +59 -0
- package/dist/audio/AudioTimelineTrack.js.map +1 -1
- package/dist/audio/AudioWaveform.d.ts +22 -0
- package/dist/audio/AudioWaveform.d.ts.map +1 -1
- package/dist/audio/AudioWaveform.js +18 -0
- package/dist/audio/AudioWaveform.js.map +1 -1
- package/dist/audio/index.d.ts +8 -7
- package/dist/audio/index.d.ts.map +1 -1
- package/dist/audio/index.js +4 -4
- 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/cartoon-asset-profiles.d.ts +1 -0
- package/dist/aura3d-cli/cartoon-asset-profiles.d.ts.map +1 -1
- package/dist/aura3d-cli/cartoon-asset-profiles.js +8 -4
- package/dist/aura3d-cli/cartoon-asset-profiles.js.map +1 -1
- package/dist/aura3d-cli/cli.js +78 -9
- 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 +69 -8
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +261 -17
- 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 +10 -8
- package/dist/editor-runtime/AssetDropZone.d.ts.map +1 -1
- package/dist/editor-runtime/AssetDropZone.js +14 -0
- package/dist/editor-runtime/AssetDropZone.js.map +1 -1
- package/dist/editor-runtime/CameraPathEditor.d.ts +48 -0
- package/dist/editor-runtime/CameraPathEditor.d.ts.map +1 -0
- package/dist/editor-runtime/CameraPathEditor.js +181 -0
- package/dist/editor-runtime/CameraPathEditor.js.map +1 -0
- package/dist/editor-runtime/CartoonSceneEditor.d.ts +24 -0
- package/dist/editor-runtime/CartoonSceneEditor.d.ts.map +1 -1
- package/dist/editor-runtime/CartoonSceneEditor.js +35 -2
- package/dist/editor-runtime/CartoonSceneEditor.js.map +1 -1
- package/dist/editor-runtime/EpisodeReviewPanel.d.ts +67 -0
- package/dist/editor-runtime/EpisodeReviewPanel.d.ts.map +1 -0
- package/dist/editor-runtime/EpisodeReviewPanel.js +162 -0
- package/dist/editor-runtime/EpisodeReviewPanel.js.map +1 -0
- 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/MultiUserReviewWorkflow.d.ts +77 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.d.ts.map +1 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.js +162 -0
- package/dist/editor-runtime/MultiUserReviewWorkflow.js.map +1 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.d.ts +81 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.d.ts.map +1 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.js +180 -0
- package/dist/editor-runtime/NonlinearAnimationEditor.js.map +1 -0
- package/dist/editor-runtime/RenderQueuePanel.d.ts +38 -0
- package/dist/editor-runtime/RenderQueuePanel.d.ts.map +1 -0
- package/dist/editor-runtime/RenderQueuePanel.js +72 -0
- package/dist/editor-runtime/RenderQueuePanel.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/TimelineEditorController.d.ts +10 -0
- package/dist/editor-runtime/TimelineEditorController.d.ts.map +1 -1
- package/dist/editor-runtime/TimelineEditorController.js +28 -3
- package/dist/editor-runtime/TimelineEditorController.js.map +1 -1
- package/dist/editor-runtime/TimelineUI.d.ts.map +1 -1
- package/dist/editor-runtime/TimelineUI.js +5 -0
- package/dist/editor-runtime/TimelineUI.js.map +1 -1
- package/dist/editor-runtime/VisualReviewDashboard.d.ts +43 -0
- package/dist/editor-runtime/VisualReviewDashboard.d.ts.map +1 -0
- package/dist/editor-runtime/VisualReviewDashboard.js +47 -0
- package/dist/editor-runtime/VisualReviewDashboard.js.map +1 -0
- package/dist/editor-runtime/index.d.ts +18 -4
- package/dist/editor-runtime/index.d.ts.map +1 -1
- package/dist/editor-runtime/index.js +8 -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 +43 -5
- package/dist/engine/agent-api/AssetLibraryBrowser.d.ts.map +1 -1
- package/dist/engine/agent-api/AssetLibraryBrowser.js +56 -4
- package/dist/engine/agent-api/AssetLibraryBrowser.js.map +1 -1
- package/dist/engine/agent-api/AudioMuxer.d.ts +4 -0
- package/dist/engine/agent-api/AudioMuxer.d.ts.map +1 -1
- package/dist/engine/agent-api/AudioMuxer.js +6 -0
- package/dist/engine/agent-api/AudioMuxer.js.map +1 -1
- package/dist/engine/agent-api/AudioVisemeAnalyzer.d.ts +4 -0
- package/dist/engine/agent-api/AudioVisemeAnalyzer.d.ts.map +1 -1
- package/dist/engine/agent-api/AudioVisemeAnalyzer.js +3 -0
- package/dist/engine/agent-api/AudioVisemeAnalyzer.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 +31 -0
- package/dist/engine/agent-api/BatchEpisodeRenderer.d.ts.map +1 -0
- package/dist/engine/agent-api/BatchEpisodeRenderer.js +20 -0
- package/dist/engine/agent-api/BatchEpisodeRenderer.js.map +1 -0
- 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 +65 -0
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.d.ts.map +1 -0
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.js +42 -0
- package/dist/engine/agent-api/BrowserFrameCaptureAdapter.js.map +1 -0
- package/dist/engine/agent-api/CameraPresetLibrary.d.ts +1 -1
- package/dist/engine/agent-api/CameraPresetLibrary.d.ts.map +1 -1
- package/dist/engine/agent-api/CameraPresetLibrary.js +18 -0
- package/dist/engine/agent-api/CameraPresetLibrary.js.map +1 -1
- package/dist/engine/agent-api/CaptionExporter.d.ts +5 -1
- package/dist/engine/agent-api/CaptionExporter.d.ts.map +1 -1
- package/dist/engine/agent-api/CaptionExporter.js +18 -3
- package/dist/engine/agent-api/CaptionExporter.js.map +1 -1
- package/dist/engine/agent-api/CartoonAssetManifest.d.ts +19 -1
- package/dist/engine/agent-api/CartoonAssetManifest.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonAssetManifest.js +62 -1
- package/dist/engine/agent-api/CartoonAssetManifest.js.map +1 -1
- package/dist/engine/agent-api/CartoonDirector.d.ts +26 -1
- package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonDirector.js +92 -2
- package/dist/engine/agent-api/CartoonDirector.js.map +1 -1
- package/dist/engine/agent-api/CartoonEpisodePackage.d.ts +51 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.js +79 -0
- package/dist/engine/agent-api/CartoonEpisodePackage.js.map +1 -0
- package/dist/engine/agent-api/CartoonMotionQuality.d.ts +83 -0
- package/dist/engine/agent-api/CartoonMotionQuality.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonMotionQuality.js +128 -0
- package/dist/engine/agent-api/CartoonMotionQuality.js.map +1 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts +1 -0
- package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonPerformance.js +28 -0
- package/dist/engine/agent-api/CartoonPerformance.js.map +1 -1
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts +11 -0
- package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -1
- package/dist/engine/agent-api/CartoonRenderQueue.js +25 -0
- package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -1
- package/dist/engine/agent-api/CartoonRouteProof.d.ts +112 -0
- package/dist/engine/agent-api/CartoonRouteProof.d.ts.map +1 -0
- package/dist/engine/agent-api/CartoonRouteProof.js +127 -0
- package/dist/engine/agent-api/CartoonRouteProof.js.map +1 -0
- 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 +55 -0
- package/dist/engine/agent-api/CloudRenderAdapter.d.ts.map +1 -0
- package/dist/engine/agent-api/CloudRenderAdapter.js +75 -0
- package/dist/engine/agent-api/CloudRenderAdapter.js.map +1 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.d.ts +54 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.d.ts.map +1 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.js +107 -0
- package/dist/engine/agent-api/ExternalPhonemeAnalyzer.js.map +1 -0
- 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 +23 -6
- package/dist/engine/agent-api/FrameEncoder.d.ts.map +1 -1
- package/dist/engine/agent-api/FrameEncoder.js +14 -0
- package/dist/engine/agent-api/FrameEncoder.js.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 +19 -0
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.js +79 -0
- package/dist/engine/agent-api/MediaRecorderFrameEncoder.js.map +1 -0
- package/dist/engine/agent-api/PerformanceBlender.d.ts +23 -4
- package/dist/engine/agent-api/PerformanceBlender.d.ts.map +1 -1
- package/dist/engine/agent-api/PerformanceBlender.js +33 -0
- package/dist/engine/agent-api/PerformanceBlender.js.map +1 -1
- package/dist/engine/agent-api/PerformanceCaptureSession.d.ts +65 -0
- package/dist/engine/agent-api/PerformanceCaptureSession.d.ts.map +1 -0
- package/dist/engine/agent-api/PerformanceCaptureSession.js +131 -0
- package/dist/engine/agent-api/PerformanceCaptureSession.js.map +1 -0
- 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 +34 -0
- package/dist/engine/agent-api/PngSequenceEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/PngSequenceEncoder.js +75 -0
- package/dist/engine/agent-api/PngSequenceEncoder.js.map +1 -0
- package/dist/engine/agent-api/PromptAnimationContract.d.ts +27 -2
- package/dist/engine/agent-api/PromptAnimationContract.d.ts.map +1 -1
- package/dist/engine/agent-api/PromptAnimationContract.js +60 -1
- package/dist/engine/agent-api/PromptAnimationContract.js.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 +8 -3
- package/dist/engine/agent-api/PublishingPipeline.d.ts.map +1 -1
- package/dist/engine/agent-api/PublishingPipeline.js +17 -3
- package/dist/engine/agent-api/PublishingPipeline.js.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/SceneSequencer.d.ts +13 -0
- package/dist/engine/agent-api/SceneSequencer.d.ts.map +1 -1
- package/dist/engine/agent-api/SceneSequencer.js +40 -0
- package/dist/engine/agent-api/SceneSequencer.js.map +1 -1
- 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 +23 -9
- package/dist/engine/agent-api/VideoExportPipeline.d.ts.map +1 -1
- package/dist/engine/agent-api/VideoExportPipeline.js +32 -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/WebCodecsFrameEncoder.d.ts +21 -0
- package/dist/engine/agent-api/WebCodecsFrameEncoder.d.ts.map +1 -0
- package/dist/engine/agent-api/WebCodecsFrameEncoder.js +94 -0
- package/dist/engine/agent-api/WebCodecsFrameEncoder.js.map +1 -0
- 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/YouTubeUploadAdapter.d.ts +48 -0
- package/dist/engine/agent-api/YouTubeUploadAdapter.d.ts.map +1 -0
- package/dist/engine/agent-api/YouTubeUploadAdapter.js +114 -0
- package/dist/engine/agent-api/YouTubeUploadAdapter.js.map +1 -0
- package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -1
- package/dist/engine/agent-api/index.d.ts +52 -18
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +51 -15
- 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 -1
- 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/FrameVisualMetrics.d.ts +19 -0
- package/dist/rendering/FrameVisualMetrics.d.ts.map +1 -1
- package/dist/rendering/FrameVisualMetrics.js +57 -0
- package/dist/rendering/FrameVisualMetrics.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/CartoonMaterialStyle.d.ts +19 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.js +13 -0
- package/dist/rendering/cartoon/CartoonMaterialStyle.js.map +1 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.d.ts +36 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.js +23 -0
- package/dist/rendering/cartoon/CartoonRenderPreset.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/CartoonVisualQuality.d.ts +28 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.d.ts.map +1 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.js +39 -0
- package/dist/rendering/cartoon/CartoonVisualQuality.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 +6 -0
- package/dist/rendering/cartoon/index.d.ts.map +1 -0
- package/dist/rendering/cartoon/index.js +6 -0
- package/dist/rendering/cartoon/index.js.map +1 -0
- package/dist/rendering/index.d.ts +6 -3
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +4 -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 +162 -120
- package/templates/product-viewer/tests/screenshot.spec.ts +8 -16
package/dist/aura3d-cli/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { copyFileSync, existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
3
|
import { dirname, extname, join, relative, resolve } from "node:path";
|
|
4
|
-
export {
|
|
4
|
+
export { animationCliAssetProfiles, getAnimationAssetProfileDefinition } from "./animation-asset-profiles.js";
|
|
5
|
+
export { validateAnimationAssets, parseAnimationClipMap, DEFAULT_ANIMATION_ACTIONS } from "./animation-asset-validator.js";
|
|
5
6
|
export const DEFAULT_AURA_ASSET_MANIFEST = "aura.assets.json";
|
|
6
7
|
export const DEFAULT_AURA_ASSET_OUTPUT_DIR = "public/aura-assets";
|
|
7
8
|
export const DEFAULT_AURA_ASSET_PUBLIC_PATH = "/aura-assets/";
|
|
@@ -14,6 +15,9 @@ export function addAsset(options) {
|
|
|
14
15
|
}
|
|
15
16
|
const manifestPath = resolve(projectDir, DEFAULT_AURA_ASSET_MANIFEST);
|
|
16
17
|
const current = readAssetManifest(projectDir);
|
|
18
|
+
// Re-adding (e.g. resolve overwriting) must not silently drop hand-authored
|
|
19
|
+
// provenance the new add does not re-supply (license/attribution/author/etc.).
|
|
20
|
+
const existing = current.assets.find((asset) => asset.id === options.name);
|
|
17
21
|
const outputDir = normalizeRelativePath(options.outputDir ?? current.outputDir ?? DEFAULT_AURA_ASSET_OUTPUT_DIR);
|
|
18
22
|
const publicPath = normalizePublicPath(options.publicPath ?? current.assetBasePath ?? DEFAULT_AURA_ASSET_PUBLIC_PATH);
|
|
19
23
|
const typegen = normalizeRelativePath(options.typegen ?? current.typegen ?? DEFAULT_AURA_ASSET_TYPEGEN);
|
|
@@ -47,7 +51,7 @@ export function addAsset(options) {
|
|
|
47
51
|
humanoid: inspection.humanoid,
|
|
48
52
|
skeleton: inspection.skeleton,
|
|
49
53
|
morphTargets: inspection.morphTargets,
|
|
50
|
-
provenance: createAssetProvenance(projectDir, sourcePath, options, inspection.provenance),
|
|
54
|
+
provenance: createAssetProvenance(projectDir, sourcePath, options, mergeDetectedProvenance(existing?.provenance, inspection.provenance)),
|
|
51
55
|
textures: inspection.textures,
|
|
52
56
|
dependencies: inspection.dependencies,
|
|
53
57
|
orientation: inspection.orientation,
|
|
@@ -305,8 +309,8 @@ export function checkDeploy(options = {}) {
|
|
|
305
309
|
export function validateGameAssets(options = {}) {
|
|
306
310
|
return validateAssetReadiness("game", options);
|
|
307
311
|
}
|
|
308
|
-
export function
|
|
309
|
-
return validateAssetReadiness("
|
|
312
|
+
export function validateAnimationStudioAssets(options = {}) {
|
|
313
|
+
return validateAssetReadiness("animation", options);
|
|
310
314
|
}
|
|
311
315
|
export function createCharacterAssemblyPlan(options) {
|
|
312
316
|
const projectDir = resolve(options.projectDir ?? process.cwd());
|
|
@@ -468,7 +472,7 @@ function validateAssetReadiness(profile, options) {
|
|
|
468
472
|
pushUnique(warnings, [...readinessIssues.warnings, ...profileIssues.warnings]);
|
|
469
473
|
const gameReady = asset.type === "model" && Boolean(asset.bounds) && asset.materials.length > 0 && asset.sizeBytes <= 50 * 1024 * 1024 && readinessIssues.failures.length === 0 && profileIssues.failures.length === 0;
|
|
470
474
|
const profileReady = profileTarget && gameReady;
|
|
471
|
-
const
|
|
475
|
+
const animationReady = asset.type === "model"
|
|
472
476
|
? Boolean(asset.bounds) && (asset.animations.length > 0 || /prop|set|stage|background|environment/i.test(asset.id))
|
|
473
477
|
: asset.type === "audio" || asset.type === "texture";
|
|
474
478
|
const artifactPaths = artifacts.assetFiles.find((entry) => entry.id === asset.id) ?? createReadinessAssetArtifacts(projectDir, manifest, asset);
|
|
@@ -479,6 +483,7 @@ function validateAssetReadiness(profile, options) {
|
|
|
479
483
|
source: asset.source,
|
|
480
484
|
outputPath: asset.outputPath,
|
|
481
485
|
url: asset.url,
|
|
486
|
+
hash: asset.hash,
|
|
482
487
|
sizeBytes: asset.sizeBytes,
|
|
483
488
|
bounds: asset.bounds,
|
|
484
489
|
boundsMetadata: asset.boundsMetadata,
|
|
@@ -498,7 +503,7 @@ function validateAssetReadiness(profile, options) {
|
|
|
498
503
|
nodeNames: asset.nodeNames,
|
|
499
504
|
artifactPaths,
|
|
500
505
|
gameReady,
|
|
501
|
-
|
|
506
|
+
animationReady,
|
|
502
507
|
...(gameProfile === "fighting-character" ? { profileTarget, profileReady, ...(profileSkippedReason ? { profileSkippedReason } : {}) } : {}),
|
|
503
508
|
warnings: assetWarnings
|
|
504
509
|
};
|
|
@@ -543,18 +548,25 @@ function validateAssetReadiness(profile, options) {
|
|
|
543
548
|
}
|
|
544
549
|
else {
|
|
545
550
|
if (modelAssets.length === 0)
|
|
546
|
-
failures.push("
|
|
551
|
+
failures.push("Animation readiness requires at least one typed model/set/prop GLB or GLTF.");
|
|
547
552
|
if (animatedModels.length === 0)
|
|
548
553
|
warnings.push("No animated character clips detected. Prompt-to-episode output can use transform animation, but character acting needs skeletal or pose clips.");
|
|
549
554
|
if (animatedModels.length > 0 && humanoidModels === 0)
|
|
550
|
-
warnings.push("No humanoid model metadata detected. Acting-heavy
|
|
555
|
+
warnings.push("No humanoid model metadata detected. Acting-heavy animation routes should confirm character rigs with assets inspect --humanoid.");
|
|
551
556
|
const audioAssets = manifest.assets.filter((asset) => asset.type === "audio");
|
|
552
557
|
if (audioAssets.length === 0)
|
|
553
558
|
warnings.push("No audio assets detected. AuraVoice bridge can still reference external narration manifests, but local episode proof is stronger with audio registered.");
|
|
554
559
|
}
|
|
560
|
+
const animationEpisode = profile === "animation"
|
|
561
|
+
? createAnimationEpisodeReadinessReport(manifest, assets, options)
|
|
562
|
+
: undefined;
|
|
563
|
+
if (animationEpisode && options.episode) {
|
|
564
|
+
pushUnique(failures, animationEpisode.failures);
|
|
565
|
+
pushUnique(warnings, animationEpisode.warnings);
|
|
566
|
+
}
|
|
555
567
|
const ok = failures.length === 0;
|
|
556
568
|
const baseMessage = ok
|
|
557
|
-
? `${profile === "game" ? "Game" : "
|
|
569
|
+
? `${profile === "game" ? "Game" : "Animation"} asset readiness report completed.`
|
|
558
570
|
: failures;
|
|
559
571
|
const messages = [
|
|
560
572
|
...(Array.isArray(baseMessage) ? baseMessage : [baseMessage]),
|
|
@@ -571,6 +583,7 @@ function validateAssetReadiness(profile, options) {
|
|
|
571
583
|
manifestPath,
|
|
572
584
|
artifacts,
|
|
573
585
|
contracts: createReadinessValidationContracts(profile),
|
|
586
|
+
...(animationEpisode ? { animationEpisode } : {}),
|
|
574
587
|
summary: {
|
|
575
588
|
totalAssets: manifest.assets.length,
|
|
576
589
|
modelAssets: modelAssets.length,
|
|
@@ -580,6 +593,16 @@ function validateAssetReadiness(profile, options) {
|
|
|
580
593
|
environmentAssets: manifest.assets.filter((asset) => asset.type === "environment").length,
|
|
581
594
|
animationClips,
|
|
582
595
|
humanoidModels,
|
|
596
|
+
...(animationEpisode
|
|
597
|
+
? {
|
|
598
|
+
animationCharacters: animationEpisode.selectedCharacters.length,
|
|
599
|
+
animationSets: animationEpisode.selectedSets.length,
|
|
600
|
+
animationProps: animationEpisode.selectedProps.length,
|
|
601
|
+
episodeReadyCharacters: animationEpisode.readiness.filter((entry) => entry.role === "character" && entry.episodeReady).length,
|
|
602
|
+
mouthReadyCharacters: animationEpisode.readiness.filter((entry) => entry.role === "character" && entry.mouthReady).length,
|
|
603
|
+
animationReadyCharacters: animationEpisode.readiness.filter((entry) => entry.role === "character" && entry.animationReady).length
|
|
604
|
+
}
|
|
605
|
+
: {}),
|
|
583
606
|
...(gameProfile === "fighting-character"
|
|
584
607
|
? {
|
|
585
608
|
profileTargetAssets: profileTargetAssets.length,
|
|
@@ -641,9 +664,9 @@ function createReadinessValidatorEvidence(profile) {
|
|
|
641
664
|
label: "AuraClash game asset validator"
|
|
642
665
|
}
|
|
643
666
|
: {
|
|
644
|
-
id: "aura-voice-
|
|
645
|
-
command: "assets validate-
|
|
646
|
-
label: "AuraVoice
|
|
667
|
+
id: "aura-voice-animation-assets",
|
|
668
|
+
command: "assets validate-animation",
|
|
669
|
+
label: "AuraVoice animation asset validator"
|
|
647
670
|
};
|
|
648
671
|
}
|
|
649
672
|
function createReadinessValidationContracts(profile) {
|
|
@@ -675,11 +698,11 @@ function createReadinessValidationContracts(profile) {
|
|
|
675
698
|
}
|
|
676
699
|
return [
|
|
677
700
|
{
|
|
678
|
-
id: "auravoice-
|
|
679
|
-
label: "AuraVoice
|
|
680
|
-
profile: "
|
|
701
|
+
id: "auravoice-animation-character-asset-validation-contract",
|
|
702
|
+
label: "AuraVoice animation asset validation contract",
|
|
703
|
+
profile: "animation",
|
|
681
704
|
sourceFamily: "AuraVoice",
|
|
682
|
-
intendedUse: "
|
|
705
|
+
intendedUse: "animation-character",
|
|
683
706
|
sourceOnly: true,
|
|
684
707
|
requiredChecks: [
|
|
685
708
|
"typed Aura model, texture, audio, or environment asset entry",
|
|
@@ -687,7 +710,7 @@ function createReadinessValidationContracts(profile) {
|
|
|
687
710
|
"animation or transform-ready character metadata",
|
|
688
711
|
"audio or external AuraVoice manifest references for stronger episode proof"
|
|
689
712
|
],
|
|
690
|
-
evidenceBoundary: "This CLI contract is source-only. It does not prove
|
|
713
|
+
evidenceBoundary: "This CLI contract is source-only. It does not prove animation route readiness until validate-animation output, rendered frames, timing proof, and AuraVoice evidence are archived."
|
|
691
714
|
}
|
|
692
715
|
];
|
|
693
716
|
}
|
|
@@ -725,6 +748,198 @@ function createReadinessAnimationMetadata(animations) {
|
|
|
725
748
|
clips: animations.map((name, index) => ({ index, name }))
|
|
726
749
|
};
|
|
727
750
|
}
|
|
751
|
+
function createAnimationEpisodeReadinessReport(manifest, assets, options) {
|
|
752
|
+
const readiness = assets.map(createAnimationEpisodeAssetReadiness);
|
|
753
|
+
const characters = readiness.filter((entry) => entry.role === "character");
|
|
754
|
+
const sets = readiness.filter((entry) => entry.role === "set");
|
|
755
|
+
const props = readiness.filter((entry) => entry.role === "prop");
|
|
756
|
+
const audio = readiness.filter((entry) => entry.role === "audio");
|
|
757
|
+
const failures = [];
|
|
758
|
+
const warnings = [];
|
|
759
|
+
const distinctCharacterHashes = new Set(characters.map((entry) => entry.distinctHash).filter(Boolean));
|
|
760
|
+
const readyCharacters = characters.filter((entry) => entry.episodeReady);
|
|
761
|
+
const readySets = sets.filter((entry) => entry.episodeReady);
|
|
762
|
+
if (characters.length < 2) {
|
|
763
|
+
failures.push(`animation episode validation requires at least 2 typed animation character assets; found ${characters.length}${characters.length ? `: ${characters.map((entry) => entry.id).join(", ")}` : ""}.`);
|
|
764
|
+
}
|
|
765
|
+
if (characters.length >= 2 && distinctCharacterHashes.size < characters.length) {
|
|
766
|
+
failures.push("animation episode validation requires distinct character files/hashes; duplicated character assets cannot prove a two-character episode cast.");
|
|
767
|
+
}
|
|
768
|
+
if (readyCharacters.length < 2) {
|
|
769
|
+
failures.push(`animation episode validation found only ${readyCharacters.length} episode-ready character asset${readyCharacters.length === 1 ? "" : "s"}; required 2 with license, provenance, animation, and mouth readiness.`);
|
|
770
|
+
}
|
|
771
|
+
if (sets.length < 1) {
|
|
772
|
+
failures.push("animation episode validation requires at least 1 typed animation set/location asset.");
|
|
773
|
+
}
|
|
774
|
+
if (readySets.length < 1) {
|
|
775
|
+
failures.push("animation episode validation requires at least 1 episode-ready set with license, provenance, bounds, readable materials, and walkable scale.");
|
|
776
|
+
}
|
|
777
|
+
for (const entry of readiness) {
|
|
778
|
+
pushUnique(failures, entry.failures);
|
|
779
|
+
pushUnique(warnings, entry.warnings);
|
|
780
|
+
}
|
|
781
|
+
if (audio.length === 0) {
|
|
782
|
+
warnings.push("animation episode validation found no typed audio assets; publish-ready dialogue/audio proof will need registered dialogue, music, or SFX stems.");
|
|
783
|
+
}
|
|
784
|
+
const evidenceDirectory = options.output ? dirname(normalizeRelativePath(options.output)) : "artifacts/aura3d";
|
|
785
|
+
return {
|
|
786
|
+
enabled: Boolean(options.episode),
|
|
787
|
+
ok: failures.length === 0,
|
|
788
|
+
mode: "episode-ready",
|
|
789
|
+
requirements: {
|
|
790
|
+
minDistinctCharacters: 2,
|
|
791
|
+
minSets: 1,
|
|
792
|
+
requireLicense: true,
|
|
793
|
+
noPlaceholders: true,
|
|
794
|
+
requireAnimation: true,
|
|
795
|
+
requireMouthMotion: true,
|
|
796
|
+
requireSetScale: true
|
|
797
|
+
},
|
|
798
|
+
selectedCharacters: characters.map((entry) => entry.id),
|
|
799
|
+
selectedSets: sets.map((entry) => entry.id),
|
|
800
|
+
selectedProps: props.map((entry) => entry.id),
|
|
801
|
+
selectedAudio: audio.map((entry) => entry.id),
|
|
802
|
+
readiness,
|
|
803
|
+
assetProvenanceArtifact: normalizeRelativePath(join(evidenceDirectory, "asset-provenance.json")),
|
|
804
|
+
failures,
|
|
805
|
+
warnings
|
|
806
|
+
};
|
|
807
|
+
}
|
|
808
|
+
function createAnimationEpisodeAssetReadiness(asset) {
|
|
809
|
+
const role = inferAnimationEpisodeAssetRole(asset);
|
|
810
|
+
const failures = [];
|
|
811
|
+
const warnings = [];
|
|
812
|
+
const provenanceReady = Boolean(asset.provenance?.sourceUrl || asset.provenance?.sourceFamily || asset.provenance?.sourcePath);
|
|
813
|
+
const animationReady = role === "character" ? isAnimationCharacterAnimationReady(asset) : asset.animations.length > 0;
|
|
814
|
+
const mouthMode = role === "character" ? inferAnimationMouthMode(asset) : undefined;
|
|
815
|
+
const mouthReady = role === "character" ? mouthMode !== "missing-mouth-motion" : false;
|
|
816
|
+
const setReady = role === "set" ? isAnimationSetReady(asset) : undefined;
|
|
817
|
+
if (role === "character") {
|
|
818
|
+
if (asset.type !== "model")
|
|
819
|
+
failures.push(`${asset.id}: animation character must be a typed model asset, found ${asset.type}.`);
|
|
820
|
+
if (!asset.licenseVerified)
|
|
821
|
+
failures.push(`${asset.id}: animation character requires verified redistributable license evidence.`);
|
|
822
|
+
if (!provenanceReady)
|
|
823
|
+
failures.push(`${asset.id}: animation character requires source provenance for episode packaging.`);
|
|
824
|
+
if (!asset.placeholderFree)
|
|
825
|
+
failures.push(`${asset.id}: animation character is placeholder-tagged and cannot satisfy episode-ready validation.`);
|
|
826
|
+
if (!asset.boundsMetadata && !asset.bounds)
|
|
827
|
+
failures.push(`${asset.id}: animation character requires bounds metadata for framing and motion analysis.`);
|
|
828
|
+
if (!animationReady)
|
|
829
|
+
failures.push(`${asset.id}: animation character requires embedded animation clips or explicit segmented-rig metadata.`);
|
|
830
|
+
if (!mouthReady)
|
|
831
|
+
failures.push(`${asset.id}: animation character requires blendshape, mouth-card, viseme, talk, face, or primitive mouth fallback metadata.`);
|
|
832
|
+
if (asset.materials.length === 0)
|
|
833
|
+
failures.push(`${asset.id}: animation character requires at least one readable material.`);
|
|
834
|
+
if (asset.sizeBytes > 45 * 1024 * 1024)
|
|
835
|
+
failures.push(`${asset.id}: animation character payload is ${asset.sizeBytes} bytes; expected <= 47185920 for browser episode playback.`);
|
|
836
|
+
if (mouthMode === "amplitude-only")
|
|
837
|
+
warnings.push(`${asset.id}: mouth readiness is amplitude-only; add blendshape or mouth-card metadata for stronger lip-sync proof.`);
|
|
838
|
+
}
|
|
839
|
+
else if (role === "set") {
|
|
840
|
+
if (asset.type !== "model")
|
|
841
|
+
failures.push(`${asset.id}: animation set must be a typed model asset, found ${asset.type}.`);
|
|
842
|
+
if (!asset.licenseVerified)
|
|
843
|
+
failures.push(`${asset.id}: animation set requires verified redistributable license evidence.`);
|
|
844
|
+
if (!provenanceReady)
|
|
845
|
+
failures.push(`${asset.id}: animation set requires source provenance for episode packaging.`);
|
|
846
|
+
if (!asset.placeholderFree)
|
|
847
|
+
failures.push(`${asset.id}: animation set is placeholder-tagged and cannot satisfy episode-ready validation.`);
|
|
848
|
+
if (!setReady)
|
|
849
|
+
failures.push(`${asset.id}: animation set requires bounds, readable materials, and at least 1.5m walkable/framing scale.`);
|
|
850
|
+
if (asset.sizeBytes > 90 * 1024 * 1024)
|
|
851
|
+
failures.push(`${asset.id}: animation set payload is ${asset.sizeBytes} bytes; expected <= 94371840 for browser episode playback.`);
|
|
852
|
+
}
|
|
853
|
+
else if (role === "prop" || role === "environment") {
|
|
854
|
+
if (!asset.licenseVerified)
|
|
855
|
+
warnings.push(`${asset.id}: optional animation ${role} lacks verified license evidence; publish packages should include provenance for every visible asset.`);
|
|
856
|
+
if (!provenanceReady)
|
|
857
|
+
warnings.push(`${asset.id}: optional animation ${role} lacks source provenance.`);
|
|
858
|
+
}
|
|
859
|
+
return {
|
|
860
|
+
id: asset.id,
|
|
861
|
+
role,
|
|
862
|
+
episodeReady: role === "character"
|
|
863
|
+
? failures.length === 0 && animationReady && mouthReady
|
|
864
|
+
: role === "set"
|
|
865
|
+
? failures.length === 0 && Boolean(setReady)
|
|
866
|
+
: failures.length === 0,
|
|
867
|
+
distinctHash: role === "character" ? asset.hash : undefined,
|
|
868
|
+
licenseVerified: asset.licenseVerified,
|
|
869
|
+
provenanceReady,
|
|
870
|
+
placeholderFree: asset.placeholderFree,
|
|
871
|
+
animationReady,
|
|
872
|
+
mouthReady,
|
|
873
|
+
...(mouthMode ? { mouthMode } : {}),
|
|
874
|
+
...(typeof setReady === "boolean" ? { setReady } : {}),
|
|
875
|
+
warnings,
|
|
876
|
+
failures
|
|
877
|
+
};
|
|
878
|
+
}
|
|
879
|
+
function inferAnimationEpisodeAssetRole(asset) {
|
|
880
|
+
if (asset.type === "audio")
|
|
881
|
+
return "audio";
|
|
882
|
+
if (asset.type === "texture")
|
|
883
|
+
return "texture";
|
|
884
|
+
const text = animationAssetText(asset);
|
|
885
|
+
if (asset.type === "environment" || /\b(environment|skybox|backdrop|background|world|terrain|horizon)\b/i.test(text))
|
|
886
|
+
return "environment";
|
|
887
|
+
if (/\b(set|stage|room|garden|park|school|street|house|classroom|moon garden|walkable|floor|location)\b/i.test(text))
|
|
888
|
+
return "set";
|
|
889
|
+
if (/\b(character|humanoid|kid|child|hero|sidekick|villain|narrator|avatar|actor|miko|luma|robot|mascot|npc)\b/i.test(text))
|
|
890
|
+
return "character";
|
|
891
|
+
if (asset.humanoid?.humanoid || (asset.skeleton?.jointCount ?? 0) >= 6)
|
|
892
|
+
return "character";
|
|
893
|
+
if (asset.animations.length > 0 && asset.boundsMetadata && asset.boundsMetadata.size[1] >= 0.45 && asset.boundsMetadata.size[1] <= 4.5)
|
|
894
|
+
return "character";
|
|
895
|
+
if (asset.boundsMetadata && Math.max(...asset.boundsMetadata.size) >= 1.5 && asset.animations.length === 0)
|
|
896
|
+
return "set";
|
|
897
|
+
if (asset.type === "model")
|
|
898
|
+
return "prop";
|
|
899
|
+
return "unknown";
|
|
900
|
+
}
|
|
901
|
+
function isAnimationCharacterAnimationReady(asset) {
|
|
902
|
+
if (asset.animations.length > 0)
|
|
903
|
+
return true;
|
|
904
|
+
return /\b(segmented rig|segmented-rig|puppet rig|body parts|armature|skinned|skeleton)\b/i.test(animationAssetText(asset));
|
|
905
|
+
}
|
|
906
|
+
function inferAnimationMouthMode(asset) {
|
|
907
|
+
const morphNames = asset.morphTargets?.targetNames ?? [];
|
|
908
|
+
if (morphNames.some((name) => /\b(aa|oh|ee|mouth|lip|jaw|viseme|smile|frown|blink|expression)\b/i.test(name))) {
|
|
909
|
+
return "blendshape-lip-sync";
|
|
910
|
+
}
|
|
911
|
+
const text = animationAssetText(asset);
|
|
912
|
+
if (/\b(primitive mouth|mouth card|mouth-card|mouth sprite|face card|viseme card|2d mouth)\b/i.test(text)) {
|
|
913
|
+
return "primitive-mouth-card";
|
|
914
|
+
}
|
|
915
|
+
if (/\b(mouth|lip sync|lipsync|viseme|jaw|talk|speak|facial|face|expression|blendshape|blend shape|morph)\b/i.test(text)) {
|
|
916
|
+
return asset.morphTargets && asset.morphTargets.targetCount > 0 ? "blendshape-lip-sync" : "amplitude-only";
|
|
917
|
+
}
|
|
918
|
+
return "missing-mouth-motion";
|
|
919
|
+
}
|
|
920
|
+
function isAnimationSetReady(asset) {
|
|
921
|
+
const size = asset.boundsMetadata?.size ?? asset.bounds;
|
|
922
|
+
if (!size)
|
|
923
|
+
return false;
|
|
924
|
+
const largest = Math.max(...size);
|
|
925
|
+
return largest >= 1.5 && asset.materials.length > 0;
|
|
926
|
+
}
|
|
927
|
+
function animationAssetText(asset) {
|
|
928
|
+
return [
|
|
929
|
+
asset.id,
|
|
930
|
+
asset.source,
|
|
931
|
+
asset.url,
|
|
932
|
+
asset.outputPath,
|
|
933
|
+
asset.provenance?.sourceUrl ?? "",
|
|
934
|
+
asset.provenance?.sourceFamily ?? "",
|
|
935
|
+
asset.provenance?.author ?? "",
|
|
936
|
+
asset.provenance?.attribution ?? "",
|
|
937
|
+
...(asset.provenance?.evidence ?? []),
|
|
938
|
+
...(asset.nodeNames ?? []),
|
|
939
|
+
...asset.materials,
|
|
940
|
+
...asset.animations,
|
|
941
|
+
].join(" ").toLowerCase();
|
|
942
|
+
}
|
|
728
943
|
function createAssetReadinessIssues(profile, asset) {
|
|
729
944
|
if (asset.type !== "model")
|
|
730
945
|
return { failures: [], warnings: [] };
|
|
@@ -1342,10 +1557,35 @@ function createAssetProvenance(projectDir, sourcePath, options, detected) {
|
|
|
1342
1557
|
...(options.author ?? detected?.author ? { author: options.author ?? detected?.author } : {}),
|
|
1343
1558
|
...(options.sourceFamily ?? detected?.sourceFamily ? { sourceFamily: options.sourceFamily ?? detected?.sourceFamily } : {}),
|
|
1344
1559
|
...(options.attribution ?? detected?.attribution ? { attribution: options.attribution ?? detected?.attribution } : {}),
|
|
1560
|
+
...(options.sha256 ?? detected?.sha256 ? { sha256: options.sha256 ?? detected?.sha256 } : {}),
|
|
1561
|
+
...(options.retrievedAt ?? detected?.retrievedAt ? { retrievedAt: options.retrievedAt ?? detected?.retrievedAt } : {}),
|
|
1345
1562
|
...(detected?.evidence && detected.evidence.length > 0 ? { evidence: detected.evidence } : {}),
|
|
1346
1563
|
checkedAt: new Date().toISOString()
|
|
1347
1564
|
};
|
|
1348
1565
|
}
|
|
1566
|
+
/**
|
|
1567
|
+
* Merge a freshly inspected asset's auto-detected provenance over the entry that
|
|
1568
|
+
* already exists in the manifest, so a re-add/re-resolve preserves hand-authored
|
|
1569
|
+
* fields (license, attribution, author, sourceUrl, sourceFamily, evidence,
|
|
1570
|
+
* sha256) that the new pass did not re-detect. Freshly detected values win over
|
|
1571
|
+
* the prior entry; explicit `addAsset` options still win over both (applied in
|
|
1572
|
+
* {@link createAssetProvenance}). (#26)
|
|
1573
|
+
*/
|
|
1574
|
+
function mergeDetectedProvenance(existing, detected) {
|
|
1575
|
+
if (!existing)
|
|
1576
|
+
return detected;
|
|
1577
|
+
const evidence = [...(detected?.evidence ?? []), ...(existing.evidence ?? [])];
|
|
1578
|
+
return {
|
|
1579
|
+
sourceUrl: detected?.sourceUrl ?? existing.sourceUrl,
|
|
1580
|
+
license: detected?.license ?? existing.license,
|
|
1581
|
+
author: detected?.author ?? existing.author,
|
|
1582
|
+
sourceFamily: detected?.sourceFamily ?? existing.sourceFamily,
|
|
1583
|
+
attribution: detected?.attribution ?? existing.attribution,
|
|
1584
|
+
sha256: detected?.sha256 ?? existing.sha256,
|
|
1585
|
+
retrievedAt: detected?.retrievedAt ?? existing.retrievedAt,
|
|
1586
|
+
...(evidence.length > 0 ? { evidence: [...new Set(evidence)] } : {})
|
|
1587
|
+
};
|
|
1588
|
+
}
|
|
1349
1589
|
function readExternalProvenance(projectDir, provenanceFile) {
|
|
1350
1590
|
if (!provenanceFile)
|
|
1351
1591
|
return new Map();
|
|
@@ -1375,6 +1615,8 @@ function readExternalProvenance(projectDir, provenanceFile) {
|
|
|
1375
1615
|
const sourceFamily = stringValue(record.sourceFamily ?? nestedProvenance?.sourceFamily ?? nestedProvenance?.sourcePack);
|
|
1376
1616
|
const author = stringValue(record.author ?? nestedProvenance?.author);
|
|
1377
1617
|
const attribution = stringValue(record.attribution ?? record.credit ?? nestedProvenance?.attribution);
|
|
1618
|
+
const sha256 = stringValue(record.sha256 ?? nestedProvenance?.sha256);
|
|
1619
|
+
const retrievedAt = stringValue(record.retrievedAt ?? nestedProvenance?.retrievedAt);
|
|
1378
1620
|
const evidence = [
|
|
1379
1621
|
...stringArrayValue(record.evidence),
|
|
1380
1622
|
...stringArrayValue(record.intendedRouteUsage),
|
|
@@ -1387,6 +1629,8 @@ function readExternalProvenance(projectDir, provenanceFile) {
|
|
|
1387
1629
|
...(author ? { author } : {}),
|
|
1388
1630
|
...(sourceFamily ? { sourceFamily } : {}),
|
|
1389
1631
|
...(attribution ? { attribution } : {}),
|
|
1632
|
+
...(sha256 ? { sha256 } : {}),
|
|
1633
|
+
...(retrievedAt ? { retrievedAt } : {}),
|
|
1390
1634
|
...(evidence.length > 0 ? { evidence } : {}),
|
|
1391
1635
|
checkedAt
|
|
1392
1636
|
});
|