@aura3d/engine 1.3.2 → 1.4.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 +126 -19
- package/dist/animation/library/performanceStateGraph.d.ts +11 -3
- package/dist/animation/library/performanceStateGraph.d.ts.map +1 -1
- package/dist/animation/library/performanceStateGraph.js +61 -5
- package/dist/animation/library/performanceStateGraph.js.map +1 -1
- package/dist/animation/library/standardHumanoidClips.d.ts +3 -3
- package/dist/animation/library/standardHumanoidClips.d.ts.map +1 -1
- package/dist/animation/library/standardHumanoidClips.js +179 -4
- package/dist/animation/library/standardHumanoidClips.js.map +1 -1
- package/dist/assets/GLTFLoader.js +1 -0
- package/dist/assets/GLTFLoader.js.map +1 -1
- package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
- package/dist/assets/GLTFRenderResources.js +68 -16
- package/dist/assets/GLTFRenderResources.js.map +1 -1
- package/dist/assets/KTX2BasisTextureTranscoder.js +1 -0
- package/dist/assets/KTX2BasisTextureTranscoder.js.map +1 -1
- package/dist/aura3d-cli/asset-constants.d.ts +5 -0
- package/dist/aura3d-cli/asset-constants.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-constants.js +5 -0
- package/dist/aura3d-cli/asset-constants.js.map +1 -0
- package/dist/aura3d-cli/asset-core-types.d.ts +206 -0
- package/dist/aura3d-cli/asset-core-types.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-core-types.js +2 -0
- package/dist/aura3d-cli/asset-core-types.js.map +1 -0
- package/dist/aura3d-cli/asset-inspection-types.d.ts +131 -0
- package/dist/aura3d-cli/asset-inspection-types.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-inspection-types.js +2 -0
- package/dist/aura3d-cli/asset-inspection-types.js.map +1 -0
- package/dist/aura3d-cli/asset-manifest.d.ts +8 -0
- package/dist/aura3d-cli/asset-manifest.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-manifest.js +116 -0
- package/dist/aura3d-cli/asset-manifest.js.map +1 -0
- package/dist/aura3d-cli/asset-readiness-types.d.ts +164 -0
- package/dist/aura3d-cli/asset-readiness-types.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-readiness-types.js +2 -0
- package/dist/aura3d-cli/asset-readiness-types.js.map +1 -0
- package/dist/aura3d-cli/asset-source-ast.d.ts +8 -0
- package/dist/aura3d-cli/asset-source-ast.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-source-ast.js +241 -0
- package/dist/aura3d-cli/asset-source-ast.js.map +1 -0
- package/dist/aura3d-cli/asset-source-roles.d.ts +4 -0
- package/dist/aura3d-cli/asset-source-roles.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-source-roles.js +79 -0
- package/dist/aura3d-cli/asset-source-roles.js.map +1 -0
- package/dist/aura3d-cli/asset-source-validation.d.ts +4 -0
- package/dist/aura3d-cli/asset-source-validation.d.ts.map +1 -0
- package/dist/aura3d-cli/asset-source-validation.js +200 -0
- package/dist/aura3d-cli/asset-source-validation.js.map +1 -0
- package/dist/aura3d-cli/character-assembly-types.d.ts +39 -0
- package/dist/aura3d-cli/character-assembly-types.d.ts.map +1 -0
- package/dist/aura3d-cli/character-assembly-types.js +2 -0
- package/dist/aura3d-cli/character-assembly-types.js.map +1 -0
- package/dist/aura3d-cli/cli-help.d.ts +4 -0
- package/dist/aura3d-cli/cli-help.d.ts.map +1 -0
- package/dist/aura3d-cli/cli-help.js +48 -0
- package/dist/aura3d-cli/cli-help.js.map +1 -0
- package/dist/aura3d-cli/cli-options.d.ts +66 -0
- package/dist/aura3d-cli/cli-options.d.ts.map +1 -0
- package/dist/aura3d-cli/cli-options.js +234 -0
- package/dist/aura3d-cli/cli-options.js.map +1 -0
- package/dist/aura3d-cli/cli.js +20 -177
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts +12 -402
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +948 -90
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/aura3d-cli/pull-bridge/adapters.d.ts +4 -0
- package/dist/aura3d-cli/pull-bridge/adapters.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/adapters.js +38 -0
- package/dist/aura3d-cli/pull-bridge/adapters.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/download.d.ts +6 -0
- package/dist/aura3d-cli/pull-bridge/download.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/download.js +208 -0
- package/dist/aura3d-cli/pull-bridge/download.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/profiles.d.ts +14 -0
- package/dist/aura3d-cli/pull-bridge/profiles.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/profiles.js +63 -0
- package/dist/aura3d-cli/pull-bridge/profiles.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/provenance.d.ts +9 -0
- package/dist/aura3d-cli/pull-bridge/provenance.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/provenance.js +99 -0
- package/dist/aura3d-cli/pull-bridge/provenance.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/pullable.d.ts +14 -0
- package/dist/aura3d-cli/pull-bridge/pullable.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/pullable.js +58 -0
- package/dist/aura3d-cli/pull-bridge/pullable.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/scoring.d.ts +21 -0
- package/dist/aura3d-cli/pull-bridge/scoring.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/scoring.js +177 -0
- package/dist/aura3d-cli/pull-bridge/scoring.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/search.d.ts +39 -0
- package/dist/aura3d-cli/pull-bridge/search.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/search.js +114 -0
- package/dist/aura3d-cli/pull-bridge/search.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/types.d.ts +9 -0
- package/dist/aura3d-cli/pull-bridge/types.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/types.js +2 -0
- package/dist/aura3d-cli/pull-bridge/types.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge/vector3.d.ts +2 -0
- package/dist/aura3d-cli/pull-bridge/vector3.d.ts.map +1 -0
- package/dist/aura3d-cli/pull-bridge/vector3.js +4 -0
- package/dist/aura3d-cli/pull-bridge/vector3.js.map +1 -0
- package/dist/aura3d-cli/pull-bridge.d.ts +18 -100
- package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
- package/dist/aura3d-cli/pull-bridge.js +59 -526
- package/dist/aura3d-cli/pull-bridge.js.map +1 -1
- package/dist/create-aura3d/cli.js +10 -0
- package/dist/create-aura3d/cli.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 +11 -2
- package/dist/create-aura3d/index.js.map +1 -1
- package/dist/create-aura3d/showcase-spec-artifacts.d.ts +104 -0
- package/dist/create-aura3d/showcase-spec-artifacts.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-artifacts.js +142 -0
- package/dist/create-aura3d/showcase-spec-artifacts.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-category-plan.d.ts +15 -0
- package/dist/create-aura3d/showcase-spec-category-plan.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-category-plan.js +45 -0
- package/dist/create-aura3d/showcase-spec-category-plan.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-compiler.d.ts +5 -0
- package/dist/create-aura3d/showcase-spec-compiler.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-compiler.js +240 -0
- package/dist/create-aura3d/showcase-spec-compiler.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-evidence.d.ts +7 -0
- package/dist/create-aura3d/showcase-spec-evidence.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-evidence.js +815 -0
- package/dist/create-aura3d/showcase-spec-evidence.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts +21 -0
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js +725 -0
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-replacement-evidence.d.ts +14 -0
- package/dist/create-aura3d/showcase-spec-game-replacement-evidence.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-replacement-evidence.js +219 -0
- package/dist/create-aura3d/showcase-spec-game-replacement-evidence.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts +72 -0
- package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-game-template-evidence.js +435 -0
- package/dist/create-aura3d/showcase-spec-game-template-evidence.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-gameplay-evidence.d.ts +3 -0
- package/dist/create-aura3d/showcase-spec-gameplay-evidence.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-gameplay-evidence.js +108 -0
- package/dist/create-aura3d/showcase-spec-gameplay-evidence.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-parser.d.ts +3 -0
- package/dist/create-aura3d/showcase-spec-parser.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-parser.js +662 -0
- package/dist/create-aura3d/showcase-spec-parser.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-platformer-artifacts.d.ts +3 -0
- package/dist/create-aura3d/showcase-spec-platformer-artifacts.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-platformer-artifacts.js +276 -0
- package/dist/create-aura3d/showcase-spec-platformer-artifacts.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-racing-artifacts.d.ts +3 -0
- package/dist/create-aura3d/showcase-spec-racing-artifacts.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-racing-artifacts.js +273 -0
- package/dist/create-aura3d/showcase-spec-racing-artifacts.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-apply.d.ts +10 -0
- package/dist/create-aura3d/showcase-spec-replacement-apply.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-apply.js +166 -0
- package/dist/create-aura3d/showcase-spec-replacement-apply.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-candidates.d.ts +16 -0
- package/dist/create-aura3d/showcase-spec-replacement-candidates.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-candidates.js +244 -0
- package/dist/create-aura3d/showcase-spec-replacement-candidates.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-game-geometry.d.ts +4 -0
- package/dist/create-aura3d/showcase-spec-replacement-game-geometry.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-game-geometry.js +175 -0
- package/dist/create-aura3d/showcase-spec-replacement-game-geometry.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-manifest.d.ts +41 -0
- package/dist/create-aura3d/showcase-spec-replacement-manifest.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-manifest.js +62 -0
- package/dist/create-aura3d/showcase-spec-replacement-manifest.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-values.d.ts +9 -0
- package/dist/create-aura3d/showcase-spec-replacement-values.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement-values.js +41 -0
- package/dist/create-aura3d/showcase-spec-replacement-values.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement.d.ts +13 -0
- package/dist/create-aura3d/showcase-spec-replacement.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-replacement.js +144 -0
- package/dist/create-aura3d/showcase-spec-replacement.js.map +1 -0
- package/dist/create-aura3d/showcase-spec-types.d.ts +304 -0
- package/dist/create-aura3d/showcase-spec-types.d.ts.map +1 -0
- package/dist/create-aura3d/showcase-spec-types.js +2 -0
- package/dist/create-aura3d/showcase-spec-types.js.map +1 -0
- package/dist/ecs/SystemScheduler.js +5 -4
- package/dist/ecs/SystemScheduler.js.map +1 -1
- package/dist/ecs/components/CameraComponent.d.ts +30 -0
- package/dist/ecs/components/CameraComponent.d.ts.map +1 -0
- package/dist/ecs/components/CameraComponent.js +27 -0
- package/dist/ecs/components/CameraComponent.js.map +1 -0
- package/dist/ecs/components/HierarchyComponent.d.ts +10 -0
- package/dist/ecs/components/HierarchyComponent.d.ts.map +1 -1
- package/dist/ecs/components/HierarchyComponent.js +10 -0
- package/dist/ecs/components/HierarchyComponent.js.map +1 -1
- package/dist/ecs/components/LightComponent.d.ts +18 -0
- package/dist/ecs/components/LightComponent.d.ts.map +1 -0
- package/dist/ecs/components/LightComponent.js +17 -0
- package/dist/ecs/components/LightComponent.js.map +1 -0
- package/dist/ecs/components/MeshComponent.d.ts +19 -0
- package/dist/ecs/components/MeshComponent.d.ts.map +1 -0
- package/dist/ecs/components/MeshComponent.js +21 -0
- package/dist/ecs/components/MeshComponent.js.map +1 -0
- package/dist/ecs/components/WorldTransformComponent.d.ts +12 -0
- package/dist/ecs/components/WorldTransformComponent.d.ts.map +1 -0
- package/dist/ecs/components/WorldTransformComponent.js +22 -0
- package/dist/ecs/components/WorldTransformComponent.js.map +1 -0
- package/dist/ecs/index.d.ts +4 -0
- package/dist/ecs/index.d.ts.map +1 -1
- package/dist/ecs/index.js +4 -0
- package/dist/ecs/index.js.map +1 -1
- package/dist/ecs/systems/CameraSystem.d.ts +17 -0
- package/dist/ecs/systems/CameraSystem.d.ts.map +1 -0
- package/dist/ecs/systems/CameraSystem.js +38 -0
- package/dist/ecs/systems/CameraSystem.js.map +1 -0
- package/dist/ecs/systems/TransformSystem.d.ts +16 -0
- package/dist/ecs/systems/TransformSystem.d.ts.map +1 -0
- package/dist/ecs/systems/TransformSystem.js +99 -0
- package/dist/ecs/systems/TransformSystem.js.map +1 -0
- package/dist/ecs/systems/index.d.ts +2 -0
- package/dist/ecs/systems/index.d.ts.map +1 -1
- package/dist/ecs/systems/index.js +2 -0
- package/dist/ecs/systems/index.js.map +1 -1
- package/dist/engine/agent-api/GameAssetValidation.d.ts +5 -0
- package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -1
- package/dist/engine/agent-api/GameAssetValidation.js +103 -0
- package/dist/engine/agent-api/GameAssetValidation.js.map +1 -1
- package/dist/engine/agent-api/GameEvidence.d.ts +14 -1
- package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -1
- package/dist/engine/agent-api/GameEvidence.js +77 -6
- package/dist/engine/agent-api/GameEvidence.js.map +1 -1
- package/dist/engine/agent-api/GameGenreKits.d.ts +473 -0
- package/dist/engine/agent-api/GameGenreKits.d.ts.map +1 -0
- package/dist/engine/agent-api/GameGenreKits.js +1269 -0
- package/dist/engine/agent-api/GameGenreKits.js.map +1 -0
- package/dist/engine/agent-api/GameRuntime.d.ts +190 -3
- package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -1
- package/dist/engine/agent-api/GameRuntime.js +431 -2
- package/dist/engine/agent-api/GameRuntime.js.map +1 -1
- package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts +181 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts.map +1 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.js +488 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.js.map +1 -0
- package/dist/engine/agent-api/GameSceneGeometryMath.d.ts +39 -0
- package/dist/engine/agent-api/GameSceneGeometryMath.d.ts.map +1 -0
- package/dist/engine/agent-api/GameSceneGeometryMath.js +89 -0
- package/dist/engine/agent-api/GameSceneGeometryMath.js.map +1 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +4 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -1
- package/dist/engine/agent-api/RuntimeNodeHandle.js +2 -0
- package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -1
- package/dist/engine/agent-api/SceneGroundingUtils.d.ts +86 -0
- package/dist/engine/agent-api/SceneGroundingUtils.d.ts.map +1 -1
- package/dist/engine/agent-api/SceneGroundingUtils.js +116 -0
- package/dist/engine/agent-api/SceneGroundingUtils.js.map +1 -1
- package/dist/engine/agent-api/index.d.ts +149 -5
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +1964 -141
- 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/ecs/ECSRenderSource.d.ts +29 -0
- package/dist/engine/ecs/ECSRenderSource.d.ts.map +1 -0
- package/dist/engine/ecs/ECSRenderSource.js +189 -0
- package/dist/engine/ecs/ECSRenderSource.js.map +1 -0
- package/dist/engine/index.d.ts +1 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +1 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts +14 -2
- package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.js +95 -4
- package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
- package/dist/physics/Constraint.d.ts.map +1 -1
- package/dist/physics/Constraint.js +3 -3
- package/dist/physics/Constraint.js.map +1 -1
- package/dist/physics/Shape.d.ts +1 -0
- package/dist/physics/Shape.d.ts.map +1 -1
- package/dist/physics/Shape.js +12 -0
- package/dist/physics/Shape.js.map +1 -1
- package/dist/rendering/ForwardPass.d.ts +1 -0
- package/dist/rendering/ForwardPass.d.ts.map +1 -1
- package/dist/rendering/ForwardPass.js +29 -6
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/MorphTarget.d.ts +1 -0
- package/dist/rendering/MorphTarget.d.ts.map +1 -1
- package/dist/rendering/MorphTarget.js.map +1 -1
- package/dist/rendering/Renderer.js +7 -1
- package/dist/rendering/Renderer.js.map +1 -1
- package/dist/rendering/SkinnedLitMaterial.d.ts +9 -0
- package/dist/rendering/SkinnedLitMaterial.d.ts.map +1 -1
- package/dist/rendering/SkinnedLitMaterial.js +20 -1
- package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
- package/dist/rendering/performance/RenderItemSorting.d.ts +2 -1
- package/dist/rendering/performance/RenderItemSorting.d.ts.map +1 -1
- package/dist/rendering/performance/RenderItemSorting.js +5 -2
- package/dist/rendering/performance/RenderItemSorting.js.map +1 -1
- package/package.json +24 -24
- package/templates/mini-game/README.md +13 -0
- package/templates/mini-game/index.html +1 -1
- package/templates/mini-game/package.json +1 -1
- package/templates/mini-game/src/main.ts +251 -21
- package/templates/mini-game/tests/playable.spec.ts +49 -0
- package/templates/mini-game/tests/screenshot.spec.ts +37 -32
package/README.md
CHANGED
|
@@ -5,27 +5,134 @@
|
|
|
5
5
|
[](./LICENSE)
|
|
6
6
|
[](https://www.typescriptlang.org/)
|
|
7
7
|
|
|
8
|
-
Aura3D is an AI-native TypeScript 3D SDK for browser 3D apps, prompt-to-code scenes, GLB/glTF product viewers, browser-native game
|
|
8
|
+
Aura3D is an AI-native TypeScript 3D SDK for browser 3D apps, prompt-to-code scenes, GLB/glTF product viewers, browser-native game prototypes, Vite templates, typed asset workflows, diagnostics, screenshots, and static deployment checks.
|
|
9
9
|
|
|
10
10
|
Describe the scene. Keep the TypeScript. Ship the browser app.
|
|
11
11
|
|
|
12
|
-
Aura3D is built for developers and AI coding agents that need real 3D software, not a blank canvas and renderer glue. It gives agents maintained scene kits, typed GLB/glTF assets, product-viewer workflows,
|
|
13
|
-
|
|
14
|
-
Use Aura3D when you are building agent-written browser 3D apps, prompt-authored scenes, product configurators, GLB viewers, browser-native game-route
|
|
15
|
-
|
|
16
|
-
##
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
12
|
+
Aura3D is built for developers and AI coding agents that need real 3D software, not a blank canvas and renderer glue. It gives agents maintained scene kits, typed GLB/glTF assets, product-viewer workflows, source-level game prototype workflows, route-health diagnostics, screenshot evidence, and deployment checks through a public TypeScript API.
|
|
13
|
+
|
|
14
|
+
Use Aura3D when you are building agent-written browser 3D apps, prompt-authored scenes, product configurators, GLB viewers, browser-native game-route prototypes, static-deployed interactive websites, or AI-generated 3D scene tooling.
|
|
15
|
+
|
|
16
|
+
## Public claim boundary
|
|
17
|
+
|
|
18
|
+
Aura3D has multiple capability paths. Public claims must name the path they are
|
|
19
|
+
proving:
|
|
20
|
+
|
|
21
|
+
- root safe API: `@aura3d/engine` through `createAuraApp`;
|
|
22
|
+
- production runtime: `@aura3d/engine/production-runtime`;
|
|
23
|
+
- rendering internals: `@aura3d/rendering` and explicit renderer packages;
|
|
24
|
+
- CLI asset pipeline: `@aura3d/cli` typed asset acquisition and validation;
|
|
25
|
+
- templates and showcase routes.
|
|
26
|
+
|
|
27
|
+
The root `createAuraApp` path is the API that AI coding agents should use for
|
|
28
|
+
browser examples. A feature is not public-route proof just because a lower-level
|
|
29
|
+
package exports it. For release-facing docs, screenshots, or marketing pages,
|
|
30
|
+
claim only what the mounted route proves with typed assets, browser evidence,
|
|
31
|
+
and route-health output. Unsupported capabilities must be labeled as
|
|
32
|
+
`production-runtime`, `internal`, `prototype`, or `planned`.
|
|
33
|
+
|
|
34
|
+
Do not use primitives as the primary subject for named real-world objects,
|
|
35
|
+
characters, vehicles, worlds, products, or game environments. Resolve real
|
|
36
|
+
GLB/glTF assets through the Aura3D CLI, import generated `assets` from
|
|
37
|
+
`src/aura-assets.ts`, and render with `model(assets.x)`. Do not use raw string
|
|
38
|
+
asset ids, invented URLs, `GLTFLoader`, direct `three` imports, CSS particles,
|
|
39
|
+
DOM scene effects, or route-local hacks to make a public example appear more
|
|
40
|
+
capable than the Aura3D API path actually is.
|
|
41
|
+
|
|
42
|
+
## Showcase integrity
|
|
43
|
+
|
|
44
|
+
The showcase routes must use Aura3D for scene content. CSS and DOM are allowed
|
|
45
|
+
for layout, HUDs, buttons, panels, responsive sizing, and accessibility text
|
|
46
|
+
only. They must not be used as a substitute for 3D content, particles, motion,
|
|
47
|
+
track scenery, city scenery, data visuals, robots, vehicles, beams, scanlines,
|
|
48
|
+
vignettes, or other effects that are claimed as part of the 3D scene.
|
|
49
|
+
|
|
50
|
+
The current release-candidate showcase classification is:
|
|
51
|
+
|
|
52
|
+
- Public release candidates: `apps/showcase-product-configurator/`,
|
|
53
|
+
`apps/showcase-material-asset-inspector/`,
|
|
54
|
+
`apps/showcase-smart-city-control/`,
|
|
55
|
+
`apps/showcase-cinematic-architecture/`,
|
|
56
|
+
`apps/showcase-digital-twin-ops/`, and
|
|
57
|
+
`apps/showcase-blockfall-reactor/`.
|
|
58
|
+
- Internal diagnostics retained for evidence only:
|
|
59
|
+
`apps/showcase-data-galaxy/` and
|
|
60
|
+
`apps/showcase-webgpu-particle-lab/`.
|
|
61
|
+
- Prototype-blocked game diagnostics, intentionally removed from public
|
|
62
|
+
examples: `apps/showcase-turbo-drift-circuit/` and
|
|
63
|
+
`apps/showcase-skyline-runner/`.
|
|
64
|
+
|
|
65
|
+
`node tools/showcase-library/build-and-check.mjs` is the release gate for this
|
|
66
|
+
classification. The current public release status is 6/6 public candidates
|
|
67
|
+
passing, with two internal diagnostics and two prototype-blocked game routes
|
|
68
|
+
retained outside the public showcase path.
|
|
69
|
+
|
|
70
|
+
For those routes, the implementation boundary is:
|
|
71
|
+
|
|
72
|
+
- Use public `@aura3d/engine` APIs such as `createAuraApp`,
|
|
73
|
+
`createGameApp`, `scene`, `sceneKits`, `model`, `camera`, `lights`,
|
|
74
|
+
`material`, `primitives`, `effects`, `particles`, `labels`, `charts`,
|
|
75
|
+
`game`, `interactions`, and `timeline`.
|
|
76
|
+
- Use typed assets from `src/aura-assets.ts` with `model(assets.x)`.
|
|
77
|
+
Do not write string asset ids such as `model("asset")`, invented URLs, raw
|
|
78
|
+
GLB URLs, or direct loader code.
|
|
79
|
+
- Use Aura3D particles through `effects.particles(...)`,
|
|
80
|
+
`particles.fountain(...)`, or the explicit WebGPU rendering path when it is
|
|
81
|
+
actually supported. Do not create particle clouds with DOM nodes, CSS
|
|
82
|
+
animations, pseudo-elements, or background gradients.
|
|
83
|
+
- Use Aura3D runtime movement through `app.onFrame(...)`,
|
|
84
|
+
`.runtime(game.runtimeNode("id"))`, and runtime node mutation. Do not fake
|
|
85
|
+
scene motion with CSS keyframes or DOM transforms.
|
|
86
|
+
- Use CSS only for UI chrome and layout. A screenshot should still show the
|
|
87
|
+
3D scene, particles, motion targets, and typed assets when CSS decorative
|
|
88
|
+
backgrounds are removed.
|
|
89
|
+
- Keep claims honest: native WebGPU, typed asset usage, game runtime,
|
|
90
|
+
animation, particles, screenshots, and deployment readiness must each map to
|
|
91
|
+
a named API, route evidence global, test, screenshot, or report.
|
|
92
|
+
|
|
93
|
+
Current renderer boundary: the `createAuraApp` WebGL2 agent runtime used by the
|
|
94
|
+
showcase routes renders typed GLB meshes, glTF base-color textures, non-skinned
|
|
95
|
+
glTF node animation clips, Aura primitives, Aura particle effects,
|
|
96
|
+
runtime-node transforms, and basic scene effects. It is still not the full
|
|
97
|
+
production renderer path: it does not yet render skinned GLB animation mixer
|
|
98
|
+
playback, full PBR material stacks, image-based lighting, shadow maps, or
|
|
99
|
+
postprocess passes in pixels on that route. Do not claim visible skinned
|
|
100
|
+
character animation or Three.js-grade production material parity from a
|
|
101
|
+
`createAuraApp` screenshot until the agent renderer adapter is wired to the
|
|
102
|
+
production animation/skinning and material runtime; publish unsupported
|
|
103
|
+
capabilities as metadata only.
|
|
104
|
+
|
|
105
|
+
Release-facing showcase PRs must pass `assets validate --source --release`,
|
|
106
|
+
route-health collection, browser screenshots, visual review, and game input
|
|
107
|
+
tests where applicable. If any route uses primitive-only primary subjects, fake
|
|
108
|
+
CSS/DOM particles, unsupported WebGPU/PBR/skinning claims, or screenshots where
|
|
109
|
+
the primary subject is hidden, tiny, clipped, or unreadable, the route must be
|
|
110
|
+
classified as prototype, internal diagnostic, or blocked instead of public.
|
|
111
|
+
|
|
112
|
+
## Current Release And Release Candidate
|
|
113
|
+
|
|
114
|
+
`@aura3d/engine@1.3.3` is the published release, live on npm `latest`. It carries everything from 1.1.0 -- browser-native game-route foundations, GLB animation/runtime evidence where renderer-backed, prompt-animation playback, AuraVoice timing packages, typed assets, diagnostics, screenshots, and readiness evidence -- and adds the **Animation Engine**, the **Believable-Motion** track, and the **Animation Studio** (all below). Public examples still need to distinguish root `createAuraApp` proof from production-runtime or rendering-internal capability. Migrating an existing project is covered by the separately installed `@aura3d/three-compat` package.
|
|
115
|
+
|
|
116
|
+
The next release candidate is being prepared from the current repository state.
|
|
117
|
+
Its release-facing scope is the corrected showcase and asset-evidence pipeline:
|
|
118
|
+
role-aware release asset validation, rendered-probe rejection for fake/stale
|
|
119
|
+
proof, AST source validation, package/dist parity checks, resolver-backed
|
|
120
|
+
showcase-spec repair, route-primary probes, gameplay proof where appropriate,
|
|
121
|
+
and visual review as a hard public-release gate. The public showcase path now
|
|
122
|
+
contains six bounded, visually accepted release candidates. Data Galaxy and
|
|
123
|
+
WebGPU Particle Lab stay internal diagnostics. Turbo Drift Circuit and Skyline
|
|
124
|
+
Runner stay prototype-blocked until the game layer has certified racing
|
|
125
|
+
topology and platformer playable-surface support.
|
|
126
|
+
|
|
127
|
+
Animation Engine (in 1.3.3): `@aura3d/animation` gains a locomotion state-graph + kit (`createLocomotionAnimationStateGraph`, `createLocomotionKit`), a generic `validateAnimationClipMap`, a shared fighter-animation adapter, and per-clip bone-mask blending in `applyClips` (layered playback). New CLI: `aura3d assets validate-animation`. New starter templates: `animation-studio` (typed character → plan/preview/profile/package/verify + kit-driven skinned preview render) and `character-controller` (input → locomotion kit), plus a browser visual editor wired to the headless editor-runtime controllers. The deployed **Aura Clash** arena gained a real motion upgrade — crossfaded state transitions, hit reactions that vary by attack weight and grounded/airborne state, and attacks layered on an upper-body bone mask over a walking lower body — all browser-verified with deterministic combat replay stable.
|
|
128
|
+
|
|
129
|
+
Believable-Motion (in 1.3.3): `@aura3d/animation` adds **critically-damped, momentum-preserving state transitions** (a drop-in replacement for the linear crossfade across the mixer, state machine, locomotion kit, and Aura Clash move swaps — motion carries through instead of dissolving), runtime two-bone **foot IK with a foot-lock** that grounds feet on uneven terrain and keeps a planted foot from sliding, **spring-bone secondary dynamics** for weighty body/accessory motion, and **animation event tracks** (named lanes of typed markers — hitbox active-frames, footsteps, VFX — with a browser editor authoring lane). `@aura3d/rendering` gains a **texture-backed morph-target path** that lifts the old 4-target/64-vertex GPU cap for real facial blendshape rigs, **morphs normals so lighting follows the deformation**, and a first-class `node.morphInfluence(name, weight)` API with **viseme-driven lip-sync**, plus **WebGPU character skinning at 96-joint parity** with WebGL2. The deployed **Aura Clash** arena now runs these live — critically-damped move transitions, foot-IK foot-lock with footsteps, spring body-sway, and authored clip-event hit/footstep/VFX frames — with deterministic combat replay still stable. Each feature is gate-backed (`pnpm animation-engine:believable-motion`) and documented in `docs/animation/believable-motion.md`.
|
|
23
130
|
|
|
24
131
|
The **Animation Studio** turns a natural-language prompt into a deterministic, rendered animated short: a generated **EpisodeDocument** (cast/set/dialogue/blocking/camera) played by a generic renderer, directed by your own coding agent through a validated Scene-Tool CLI (no bundled LLM), with a shared retargeted motion library, speech-duration caption timing, a 10-gate quality suite, a web studio app, and silent WebM export (AuraVoice owns the voice). Scaffold it with `npx create-aura3d@latest my-app --template animation-studio`; full docs in [`docs/animation-studio/`](docs/animation-studio/README.md).
|
|
25
132
|
|
|
26
133
|
Aura3D ships a real animation engine: critically-damped, momentum-preserving transitions, two-bone foot IK with a foot-lock, spring-bone secondary dynamics, animation event tracks, texture-backed facial morph targets with viseme lip-sync, and 96-joint character skinning on both WebGL2 and WebGPU — each gate-backed and running live in Aura Clash. Aura Clash uses starter-grade fighter assets with **no new fighter art this release** (the rigs carry no facial blendshapes, so the morph/viseme work is showcased in Animation Studio and the morph proofs), so it stays a development showcase of the engine rather than a finished commercial game.
|
|
27
134
|
|
|
28
|
-
Registry status: npm `latest` serves `1.3.
|
|
135
|
+
Registry status: npm `latest` still serves `1.3.3` across all 26 packages (`@aura3d/engine`, `@aura3d/asset-index`, `@aura3d/cli`, `create-aura3d`, …) until the next package publication completes. The `animation-studio` / `character-controller` templates and the 1.3.3 APIs above are live for `npx ...@latest` users, and the showcase is deployed at https://aura3d.auraone.ai.
|
|
29
136
|
|
|
30
137
|
## Aura3D 1.1.0 asset catalog
|
|
31
138
|
|
|
@@ -49,9 +156,9 @@ npx @aura3d/cli@latest assets validate-game --profile fighting-character --asset
|
|
|
49
156
|
`--profile fighting-character` requires animated GLB candidates from verified CC0/CC-BY sources, applies a browser-sized triangle budget, and writes source URL, license, author/attribution, and source family into `aura.assets.json` during `assets resolve`.
|
|
50
157
|
## Aura3D 1.1.0 runtime launch track
|
|
51
158
|
|
|
52
|
-
Aura3D 1.1.0
|
|
159
|
+
Aura3D 1.1.0 introduced the runtime and animation evidence foundation; 1.3.3 is the current published release that carries it forward:
|
|
53
160
|
|
|
54
|
-
- `game runtime`: mutable runtime nodes, app-owned frame loops, input, kinematic bodies, hitboxes, combat events, camera direction, effects, and evidence for browser-native game
|
|
161
|
+
- `game runtime`: mutable runtime nodes, app-owned frame loops, input, kinematic bodies, hitboxes, combat events, camera direction, effects, and evidence for browser-native game prototypes.
|
|
55
162
|
- `fighting-game template`: `npx create-aura3d@latest my-fighter --template fighting-game` scaffolds a public-API playable starter using typed assets, `app.input(...)`, `app.onFrame(...)`, `game.kinematicBody(...)`, `game.combatWorld(...)`, and `app.evidence(...)`.
|
|
56
163
|
- `prompt animation`: `npx create-aura3d@latest my-episode --template prompt-animation-channel` scaffolds structured episode plans, storyboards, shot timelines, captions, visemes, render queues, and evidence for prompt-authored animation/video workflows. The shorter `animation-channel` template name remains supported.
|
|
57
164
|
- `AuraVoice bridge`: AuraVoice owns script/audio/caption/viseme timing; Aura3D owns typed scene generation, character performance, camera choreography, rendering, screenshots, and visual evidence.
|
|
@@ -91,7 +198,7 @@ import { createAuraApp, sceneKits } from "@aura3d/engine";
|
|
|
91
198
|
- AI-generated 3D scenes that remain editable TypeScript.
|
|
92
199
|
- Browser 3D apps built with a stable SDK instead of improvised renderer glue.
|
|
93
200
|
- Typed GLB/glTF product viewers, product configurators, and model showcases.
|
|
94
|
-
- Browser-native
|
|
201
|
+
- Browser-native game prototypes with playable routes, HUDs, input, evidence, tests, and deploy-ready output. Public racing/platformer examples require the certified game-geometry layer described in `docs/project/aura3d-game-layer-rebuild-plan.md`.
|
|
95
202
|
- Prompt-to-3D workflows for AI coding agents, Cursor, Claude, Codex, and other assistants.
|
|
96
203
|
- WebGL/WebGPU-ready examples with maintained scene kits and diagnostics.
|
|
97
204
|
- Vite 3D starter apps with route health, screenshot tests, and deploy checks.
|
|
@@ -453,9 +560,9 @@ Maintained scene-kit families include physics playgrounds, particle fountains, s
|
|
|
453
560
|
|
|
454
561
|
## Production browser 3D workflow
|
|
455
562
|
|
|
456
|
-
Aura3D is built for the AI-assisted browser 3D era. It gives teams a source-code-first TypeScript workflow where agents generate maintainable scenes, game
|
|
563
|
+
Aura3D is built for the AI-assisted browser 3D era. It gives teams a source-code-first TypeScript workflow where agents generate maintainable scenes, game prototypes, product viewers, and deployable interactive websites.
|
|
457
564
|
|
|
458
|
-
Aura3D combines scene kits, GLB/glTF asset typing, product viewers, browser-game runtime helpers, a believable-motion animation engine, physics scenes, particles, material labs, data worlds, route diagnostics, screenshot workflows, and static deployment into one agent-ready SDK.
|
|
565
|
+
Aura3D combines scene kits, GLB/glTF asset typing, product viewers, browser-game runtime helpers, a believable-motion animation engine, physics scenes, particles, material labs, data worlds, route diagnostics, screenshot workflows, and static deployment into one agent-ready SDK. Route-level game proofs are not public-quality game examples until visual review and game-geometry evidence pass.
|
|
459
566
|
|
|
460
567
|
## Documentation
|
|
461
568
|
|
|
@@ -501,7 +608,7 @@ Aura3D 1.1.0 game-engine/showcase readiness is stricter:
|
|
|
501
608
|
pnpm aura3d110:readiness
|
|
502
609
|
```
|
|
503
610
|
|
|
504
|
-
Expected current state — The scoped 1.3.
|
|
611
|
+
Expected current state — The scoped package gates pass for the published 1.3.3 baseline, and the release-candidate showcase gate passes for six public examples while retaining two internal diagnostics and two prototype-blocked game routes outside the public path.
|
|
505
612
|
|
|
506
613
|
## Contributing
|
|
507
614
|
|
|
@@ -18,20 +18,28 @@ export declare const PERFORMANCE_GRAPH_PARAMETERS: {
|
|
|
18
18
|
readonly gesture: "gesture";
|
|
19
19
|
readonly point: "point";
|
|
20
20
|
readonly nod: "nod";
|
|
21
|
+
readonly wave: "wave";
|
|
21
22
|
readonly react: "react";
|
|
22
23
|
readonly walk: "isMoving";
|
|
23
24
|
readonly run: "isRunning";
|
|
25
|
+
readonly sit: "sit";
|
|
26
|
+
readonly shrug: "shrug";
|
|
27
|
+
readonly cross_arms: "crossArms";
|
|
28
|
+
readonly salute: "salute";
|
|
29
|
+
readonly shake_head: "shakeHead";
|
|
24
30
|
};
|
|
25
31
|
/**
|
|
26
|
-
* State graph over the
|
|
32
|
+
* State graph over the 14 standard performance clip ids ({@link STANDARD_CLIP_IDS}) with `idle` as the
|
|
27
33
|
* default state. The studio requests a state per beat and the machine crossfades via the inertialized
|
|
28
34
|
* {@link AnimationStateMachine.stateBlend}.
|
|
29
35
|
*
|
|
30
36
|
* Topology:
|
|
31
|
-
* - `idle` (default) can go to
|
|
37
|
+
* - `idle` (default) can go to any performance or locomotion state.
|
|
32
38
|
* - `talk` is a held loop (while `isSpeaking`) that returns to idle when the flag clears; from talk
|
|
33
39
|
* you can still fire one-shots and start moving.
|
|
34
|
-
* - `gesture` / `point` / `nod` / `react`
|
|
40
|
+
* - `gesture` / `point` / `nod` / `wave` / `react` / `shrug` / `salute` / `shake_head` are one-shots
|
|
41
|
+
* that auto-return to idle on completion.
|
|
42
|
+
* - `sit` and `cross_arms` are held loops that return to idle when their flag clears.
|
|
35
43
|
* - `walk` <-> `run` <-> `idle` form the locomotion blend (`isMoving` / `isRunning`).
|
|
36
44
|
*
|
|
37
45
|
* Priorities: locomotion-stop/one-shots take precedence so a requested beat wins over the held loop.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performanceStateGraph.d.ts","sourceRoot":"","sources":["../../../../../packages/animation/src/library/performanceStateGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA6C,MAAM,6BAA6B,CAAC;AAC/G,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEpF,MAAM,WAAW,4BAA4B;IAC3C,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;IACpC,6FAA6F;IAC7F,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B
|
|
1
|
+
{"version":3,"file":"performanceStateGraph.d.ts","sourceRoot":"","sources":["../../../../../packages/animation/src/library/performanceStateGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA6C,MAAM,6BAA6B,CAAC;AAC/G,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEpF,MAAM,WAAW,4BAA4B;IAC3C,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC;IACpC,6FAA6F;IAC7F,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;CAcmB,CAAC;AA6B7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,4BAAiC,GAAG,qBAAqB,CA6F7G;AAED,uGAAuG;AACvG,eAAO,MAAM,wBAAwB,EAAE,SAAS,cAAc,EAAsB,CAAC"}
|
|
@@ -12,9 +12,15 @@ export const PERFORMANCE_GRAPH_PARAMETERS = {
|
|
|
12
12
|
gesture: "gesture",
|
|
13
13
|
point: "point",
|
|
14
14
|
nod: "nod",
|
|
15
|
+
wave: "wave",
|
|
15
16
|
react: "react",
|
|
16
17
|
walk: "isMoving",
|
|
17
|
-
run: "isRunning"
|
|
18
|
+
run: "isRunning",
|
|
19
|
+
sit: "sit",
|
|
20
|
+
shrug: "shrug",
|
|
21
|
+
cross_arms: "crossArms",
|
|
22
|
+
salute: "salute",
|
|
23
|
+
shake_head: "shakeHead"
|
|
18
24
|
};
|
|
19
25
|
function trigger(to, parameter, priority, consume = false, expected = true) {
|
|
20
26
|
return {
|
|
@@ -40,15 +46,17 @@ function truthy(value) {
|
|
|
40
46
|
return false;
|
|
41
47
|
}
|
|
42
48
|
/**
|
|
43
|
-
* State graph over the
|
|
49
|
+
* State graph over the 14 standard performance clip ids ({@link STANDARD_CLIP_IDS}) with `idle` as the
|
|
44
50
|
* default state. The studio requests a state per beat and the machine crossfades via the inertialized
|
|
45
51
|
* {@link AnimationStateMachine.stateBlend}.
|
|
46
52
|
*
|
|
47
53
|
* Topology:
|
|
48
|
-
* - `idle` (default) can go to
|
|
54
|
+
* - `idle` (default) can go to any performance or locomotion state.
|
|
49
55
|
* - `talk` is a held loop (while `isSpeaking`) that returns to idle when the flag clears; from talk
|
|
50
56
|
* you can still fire one-shots and start moving.
|
|
51
|
-
* - `gesture` / `point` / `nod` / `react`
|
|
57
|
+
* - `gesture` / `point` / `nod` / `wave` / `react` / `shrug` / `salute` / `shake_head` are one-shots
|
|
58
|
+
* that auto-return to idle on completion.
|
|
59
|
+
* - `sit` and `cross_arms` are held loops that return to idle when their flag clears.
|
|
52
60
|
* - `walk` <-> `run` <-> `idle` form the locomotion blend (`isMoving` / `isRunning`).
|
|
53
61
|
*
|
|
54
62
|
* Priorities: locomotion-stop/one-shots take precedence so a requested beat wins over the held loop.
|
|
@@ -63,19 +71,29 @@ export function createPerformanceStateGraph(options = {}) {
|
|
|
63
71
|
const toGesture = trigger("gesture", P.gesture, 80, true);
|
|
64
72
|
const toPoint = trigger("point", P.point, 80, true);
|
|
65
73
|
const toNod = trigger("nod", P.nod, 80, true);
|
|
74
|
+
const toWave = trigger("wave", P.wave, 80, true);
|
|
66
75
|
const toReact = trigger("react", P.react, 90, true);
|
|
76
|
+
const toShrug = trigger("shrug", P.shrug, 80, true);
|
|
77
|
+
const toSalute = trigger("salute", P.salute, 80, true);
|
|
78
|
+
const toShakeHead = trigger("shake_head", P.shake_head, 80, true);
|
|
79
|
+
const toSit = trigger("sit", P.sit, 35);
|
|
80
|
+
const toCrossArms = trigger("cross_arms", P.cross_arms, 35);
|
|
67
81
|
const states = [
|
|
68
82
|
{
|
|
69
83
|
name: idle,
|
|
70
|
-
transitions: [toReact, toGesture, toPoint, toNod, toRun, toWalk, toTalk]
|
|
84
|
+
transitions: [toReact, toShakeHead, toSalute, toShrug, toGesture, toPoint, toNod, toWave, toCrossArms, toSit, toRun, toWalk, toTalk]
|
|
71
85
|
},
|
|
72
86
|
{
|
|
73
87
|
name: "talk",
|
|
74
88
|
transitions: [
|
|
75
89
|
toReact,
|
|
90
|
+
toShakeHead,
|
|
91
|
+
toSalute,
|
|
92
|
+
toShrug,
|
|
76
93
|
toGesture,
|
|
77
94
|
toPoint,
|
|
78
95
|
toNod,
|
|
96
|
+
toWave,
|
|
79
97
|
toRun,
|
|
80
98
|
toWalk,
|
|
81
99
|
trigger(idle, P.talk, 0, false, false)
|
|
@@ -84,7 +102,45 @@ export function createPerformanceStateGraph(options = {}) {
|
|
|
84
102
|
{ name: "gesture", duration: oneShot, oneShot: true, onComplete: idle },
|
|
85
103
|
{ name: "point", duration: oneShot, oneShot: true, onComplete: idle },
|
|
86
104
|
{ name: "nod", duration: oneShot, oneShot: true, onComplete: idle },
|
|
105
|
+
{ name: "wave", duration: oneShot, oneShot: true, onComplete: idle },
|
|
87
106
|
{ name: "react", duration: oneShot, oneShot: true, onComplete: idle },
|
|
107
|
+
{ name: "shrug", duration: oneShot, oneShot: true, onComplete: idle },
|
|
108
|
+
{ name: "salute", duration: oneShot, oneShot: true, onComplete: idle },
|
|
109
|
+
{ name: "shake_head", duration: oneShot, oneShot: true, onComplete: idle },
|
|
110
|
+
// Held loops: stay in the state while the flag is truthy, return to idle when it
|
|
111
|
+
// clears. One-shots/locomotion keep higher priority so a requested beat wins.
|
|
112
|
+
{
|
|
113
|
+
name: "sit",
|
|
114
|
+
transitions: [
|
|
115
|
+
toReact,
|
|
116
|
+
toShakeHead,
|
|
117
|
+
toSalute,
|
|
118
|
+
toShrug,
|
|
119
|
+
toGesture,
|
|
120
|
+
toPoint,
|
|
121
|
+
toNod,
|
|
122
|
+
toWave,
|
|
123
|
+
toRun,
|
|
124
|
+
toWalk,
|
|
125
|
+
trigger(idle, P.sit, 0, false, false)
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: "cross_arms",
|
|
130
|
+
transitions: [
|
|
131
|
+
toReact,
|
|
132
|
+
toShakeHead,
|
|
133
|
+
toSalute,
|
|
134
|
+
toShrug,
|
|
135
|
+
toGesture,
|
|
136
|
+
toPoint,
|
|
137
|
+
toNod,
|
|
138
|
+
toWave,
|
|
139
|
+
toRun,
|
|
140
|
+
toWalk,
|
|
141
|
+
trigger(idle, P.cross_arms, 0, false, false)
|
|
142
|
+
]
|
|
143
|
+
},
|
|
88
144
|
{
|
|
89
145
|
name: "walk",
|
|
90
146
|
transitions: [toRun, trigger(idle, P.walk, 0, false, false)]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"performanceStateGraph.js","sourceRoot":"","sources":["../../../../../packages/animation/src/library/performanceStateGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA6C,MAAM,6BAA6B,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAuB,MAAM,4BAA4B,CAAC;AASpF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,IAAI,EAAE,YAAY;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,WAAW;
|
|
1
|
+
{"version":3,"file":"performanceStateGraph.js","sourceRoot":"","sources":["../../../../../packages/animation/src/library/performanceStateGraph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AnimationClipRegistry, type AnimationClipDefinition } from "../AnimationClipRegistry.js";
|
|
2
2
|
import { type HumanoidRigDefinition } from "../HumanoidRetargeting.js";
|
|
3
3
|
/**
|
|
4
|
-
* The STANDARD performance vocabulary (Phase 2.4). These
|
|
4
|
+
* The STANDARD performance vocabulary (Phase 2.4). These 14 ids are the contract the Animation
|
|
5
5
|
* Studio drives — every shared library, retarget target, and state graph speaks exactly these.
|
|
6
6
|
*/
|
|
7
|
-
export declare const STANDARD_CLIP_IDS: readonly ["idle", "talk", "gesture", "point", "nod", "walk", "run", "react"];
|
|
7
|
+
export declare const STANDARD_CLIP_IDS: readonly ["idle", "talk", "gesture", "point", "nod", "wave", "walk", "run", "react", "sit", "shrug", "cross_arms", "salute", "shake_head"];
|
|
8
8
|
export type StandardClipId = typeof STANDARD_CLIP_IDS[number];
|
|
9
9
|
/** Locomotion subset of the vocabulary (used by the locomotion blend / studio clip-map check). */
|
|
10
10
|
export declare const STANDARD_LOCOMOTION_CLIP_IDS: readonly ["idle", "walk", "run"];
|
|
@@ -17,7 +17,7 @@ export declare const STANDARD_LIBRARY_RIG: HumanoidRigDefinition;
|
|
|
17
17
|
/** Ordered list of all standard library clip definitions (idle first). */
|
|
18
18
|
export declare function createStandardHumanoidClipDefinitions(): readonly AnimationClipDefinition<StandardClipId>[];
|
|
19
19
|
/**
|
|
20
|
-
* Shared, rig-neutral {@link AnimationClipRegistry} populated with the
|
|
20
|
+
* Shared, rig-neutral {@link AnimationClipRegistry} populated with the 14 standard performance clips
|
|
21
21
|
* authored on {@link STANDARD_LIBRARY_RIG} (canonical {@link HUMANOID_BONES}). The clips are COMPACT
|
|
22
22
|
* procedural keyframe loops/one-shots — real, samplable {@link AnimationTrack} data, not mocap and
|
|
23
23
|
* not placeholders. They give the studio a guaranteed, retargetable performance vocabulary even when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standardHumanoidClips.d.ts","sourceRoot":"","sources":["../../../../../packages/animation/src/library/standardHumanoidClips.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EAErB,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAyC,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAE9G;;;GAGG;AACH,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"standardHumanoidClips.d.ts","sourceRoot":"","sources":["../../../../../packages/animation/src/library/standardHumanoidClips.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EAErB,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAyC,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAE9G;;;GAGG;AACH,eAAO,MAAM,iBAAiB,4IAIpB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAE9D,kGAAkG;AAClG,eAAO,MAAM,4BAA4B,kCAAmC,CAAC;AAO7E;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,qBAalC,CAAC;AAwkBF,0EAA0E;AAC1E,wBAAgB,qCAAqC,IAAI,SAAS,uBAAuB,CAAC,cAAc,CAAC,EAAE,CAiB1G;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,IAAI,qBAAqB,CAAC,cAAc,CAAC,CAE1F"}
|
|
@@ -2,10 +2,14 @@ import { AnimationTrack } from "../AnimationTrack.js";
|
|
|
2
2
|
import { AnimationClipRegistry, createAnimationClipRegistry } from "../AnimationClipRegistry.js";
|
|
3
3
|
import { HUMANOID_BONES } from "../HumanoidRetargeting.js";
|
|
4
4
|
/**
|
|
5
|
-
* The STANDARD performance vocabulary (Phase 2.4). These
|
|
5
|
+
* The STANDARD performance vocabulary (Phase 2.4). These 14 ids are the contract the Animation
|
|
6
6
|
* Studio drives — every shared library, retarget target, and state graph speaks exactly these.
|
|
7
7
|
*/
|
|
8
|
-
export const STANDARD_CLIP_IDS = [
|
|
8
|
+
export const STANDARD_CLIP_IDS = [
|
|
9
|
+
"idle", "talk", "gesture", "point", "nod", "wave",
|
|
10
|
+
"walk", "run", "react",
|
|
11
|
+
"sit", "shrug", "cross_arms", "salute", "shake_head"
|
|
12
|
+
];
|
|
9
13
|
/** Locomotion subset of the vocabulary (used by the locomotion blend / studio clip-map check). */
|
|
10
14
|
export const STANDARD_LOCOMOTION_CLIP_IDS = ["idle", "walk", "run"];
|
|
11
15
|
const FRAME_RATE = 30;
|
|
@@ -331,6 +335,171 @@ function walkClip() {
|
|
|
331
335
|
function runClip() {
|
|
332
336
|
return legCycle("run", 0.6, 0.9, 1.1, 0.07);
|
|
333
337
|
}
|
|
338
|
+
// --- wave: one-shot greeting wave (right arm) ---------------------------------------------------
|
|
339
|
+
function waveClip() {
|
|
340
|
+
const d = 1.2;
|
|
341
|
+
return clip("wave", d, [
|
|
342
|
+
rotationTrack("rightUpperArm", d, [
|
|
343
|
+
{ t: 0, e: [0, 0, -0.2] },
|
|
344
|
+
{ t: 0.3, e: [0.5, -0.2, -1.4] },
|
|
345
|
+
{ t: 0.5, e: [0.6, -0.1, -1.55] },
|
|
346
|
+
{ t: 0.7, e: [0.5, -0.2, -1.4] },
|
|
347
|
+
{ t: 0.9, e: [0.6, -0.1, -1.55] },
|
|
348
|
+
{ t: 1.1, e: [0.4, -0.15, -1.3] }
|
|
349
|
+
]),
|
|
350
|
+
rotationTrack("rightLowerArm", d, [
|
|
351
|
+
{ t: 0, e: [0, 0, -0.3] },
|
|
352
|
+
{ t: 0.3, e: [0, -0.3, -0.8] },
|
|
353
|
+
{ t: 0.5, e: [0, -0.2, -0.9] },
|
|
354
|
+
{ t: 0.7, e: [0, -0.3, -0.8] },
|
|
355
|
+
{ t: 0.9, e: [0, -0.2, -0.9] },
|
|
356
|
+
{ t: 1.1, e: [0, -0.25, -0.7] }
|
|
357
|
+
]),
|
|
358
|
+
rotationTrack("head", d, [
|
|
359
|
+
{ t: 0, e: [0, 0, 0] },
|
|
360
|
+
{ t: 0.3, e: [0.05, 0.12, 0] },
|
|
361
|
+
{ t: 1.1, e: [0, 0.08, 0] }
|
|
362
|
+
])
|
|
363
|
+
], false, ["wave", "performance", "one-shot", "upper-body"]);
|
|
364
|
+
}
|
|
365
|
+
// --- sit: seated resting pose loop ---------------------------------------------------------------
|
|
366
|
+
function sitClip() {
|
|
367
|
+
const d = 3;
|
|
368
|
+
return clip("sit", d, [
|
|
369
|
+
translationTrack("hips", d, [
|
|
370
|
+
{ t: 0, p: [0, -0.45, 0] },
|
|
371
|
+
{ t: 1.5, p: [0, -0.42, 0] },
|
|
372
|
+
{ t: 3, p: [0, -0.45, 0] }
|
|
373
|
+
]),
|
|
374
|
+
rotationTrack("hips", d, [
|
|
375
|
+
{ t: 0, e: [0.35, 0, 0] },
|
|
376
|
+
{ t: 1.5, e: [0.38, 0, 0] },
|
|
377
|
+
{ t: 3, e: [0.35, 0, 0] }
|
|
378
|
+
]),
|
|
379
|
+
rotationTrack("leftUpperLeg", d, [
|
|
380
|
+
{ t: 0, e: [-1.1, 0, 0] },
|
|
381
|
+
{ t: 1.5, e: [-1.05, 0, 0] },
|
|
382
|
+
{ t: 3, e: [-1.1, 0, 0] }
|
|
383
|
+
]),
|
|
384
|
+
rotationTrack("rightUpperLeg", d, [
|
|
385
|
+
{ t: 0, e: [-1.1, 0, 0] },
|
|
386
|
+
{ t: 1.5, e: [-1.15, 0, 0] },
|
|
387
|
+
{ t: 3, e: [-1.1, 0, 0] }
|
|
388
|
+
]),
|
|
389
|
+
rotationTrack("leftLowerLeg", d, [
|
|
390
|
+
{ t: 0, e: [1.6, 0, 0] },
|
|
391
|
+
{ t: 1.5, e: [1.55, 0, 0] },
|
|
392
|
+
{ t: 3, e: [1.6, 0, 0] }
|
|
393
|
+
]),
|
|
394
|
+
rotationTrack("rightLowerLeg", d, [
|
|
395
|
+
{ t: 0, e: [1.6, 0, 0] },
|
|
396
|
+
{ t: 1.5, e: [1.65, 0, 0] },
|
|
397
|
+
{ t: 3, e: [1.6, 0, 0] }
|
|
398
|
+
]),
|
|
399
|
+
rotationTrack("spine", d, [
|
|
400
|
+
{ t: 0, e: [0.18, 0, 0] },
|
|
401
|
+
{ t: 1.5, e: [0.0, 0, 0] },
|
|
402
|
+
{ t: 3, e: [0.18, 0, 0] }
|
|
403
|
+
]),
|
|
404
|
+
rotationTrack("leftUpperArm", d, [
|
|
405
|
+
{ t: 0, e: [0.15, 0, 0.1] },
|
|
406
|
+
{ t: 1.5, e: [0.12, 0, 0.08] },
|
|
407
|
+
{ t: 3, e: [0.15, 0, 0.1] }
|
|
408
|
+
])
|
|
409
|
+
], true, ["sit", "performance", "loop", "full-body"]);
|
|
410
|
+
}
|
|
411
|
+
// --- shrug: one-shot shoulder shrug -------------------------------------------------------------
|
|
412
|
+
function shrugClip() {
|
|
413
|
+
const d = 0.9;
|
|
414
|
+
return clip("shrug", d, [
|
|
415
|
+
rotationTrack("leftUpperArm", d, [
|
|
416
|
+
{ t: 0, e: [0, 0, 0.2] },
|
|
417
|
+
{ t: 0.3, e: [0, 0, 0.9] },
|
|
418
|
+
{ t: 0.6, e: [0, 0, 0.3] }
|
|
419
|
+
]),
|
|
420
|
+
rotationTrack("rightUpperArm", d, [
|
|
421
|
+
{ t: 0, e: [0, 0, -0.2] },
|
|
422
|
+
{ t: 0.3, e: [0, 0, -0.9] },
|
|
423
|
+
{ t: 0.6, e: [0, 0, -0.3] }
|
|
424
|
+
]),
|
|
425
|
+
rotationTrack("spine", d, [
|
|
426
|
+
{ t: 0, e: [0, 0, 0] },
|
|
427
|
+
{ t: 0.3, e: [0.06, 0, 0] },
|
|
428
|
+
{ t: 0.6, e: [0, 0, 0] }
|
|
429
|
+
])
|
|
430
|
+
], false, ["shrug", "performance", "one-shot", "upper-body"]);
|
|
431
|
+
}
|
|
432
|
+
// --- cross_arms: standing arms-crossed pose loop ------------------------------------------------
|
|
433
|
+
function crossArmsClip() {
|
|
434
|
+
const d = 3;
|
|
435
|
+
return clip("cross_arms", d, [
|
|
436
|
+
rotationTrack("leftUpperArm", d, [
|
|
437
|
+
{ t: 0, e: [0, 0, 0.5] },
|
|
438
|
+
{ t: 1.5, e: [0, 0, 0.7] },
|
|
439
|
+
{ t: 3, e: [0, 0, 0.5] }
|
|
440
|
+
]),
|
|
441
|
+
rotationTrack("leftLowerArm", d, [
|
|
442
|
+
{ t: 0, e: [0, 0, 1.35] },
|
|
443
|
+
{ t: 1.5, e: [0, 0, 1.6] },
|
|
444
|
+
{ t: 3, e: [0, 0, 1.35] }
|
|
445
|
+
]),
|
|
446
|
+
rotationTrack("rightUpperArm", d, [
|
|
447
|
+
{ t: 0, e: [0, 0, -0.5] },
|
|
448
|
+
{ t: 1.5, e: [0, 0, -0.7] },
|
|
449
|
+
{ t: 3, e: [0, 0, -0.5] }
|
|
450
|
+
]),
|
|
451
|
+
rotationTrack("rightLowerArm", d, [
|
|
452
|
+
{ t: 0, e: [0, 0, -1.35] },
|
|
453
|
+
{ t: 1.5, e: [0, 0, -1.6] },
|
|
454
|
+
{ t: 3, e: [0, 0, -1.35] }
|
|
455
|
+
])
|
|
456
|
+
], true, ["cross_arms", "performance", "loop", "upper-body"]);
|
|
457
|
+
}
|
|
458
|
+
// --- salute: one-shot hand-to-forehead ----------------------------------------------------------
|
|
459
|
+
function saluteClip() {
|
|
460
|
+
const d = 1;
|
|
461
|
+
return clip("salute", d, [
|
|
462
|
+
rotationTrack("rightUpperArm", d, [
|
|
463
|
+
{ t: 0, e: [0, 0, -0.2] },
|
|
464
|
+
{ t: 0.35, e: [1.3, -0.5, -1.2] },
|
|
465
|
+
{ t: 0.7, e: [1.3, -0.5, -1.2] },
|
|
466
|
+
{ t: 1, e: [0.4, -0.2, -0.8] }
|
|
467
|
+
]),
|
|
468
|
+
rotationTrack("rightLowerArm", d, [
|
|
469
|
+
{ t: 0, e: [0, 0, -0.3] },
|
|
470
|
+
{ t: 0.35, e: [0, -0.4, -1.3] },
|
|
471
|
+
{ t: 0.7, e: [0, -0.4, -1.3] },
|
|
472
|
+
{ t: 1, e: [0, -0.2, -0.7] }
|
|
473
|
+
]),
|
|
474
|
+
rotationTrack("head", d, [
|
|
475
|
+
{ t: 0, e: [0, 0, 0] },
|
|
476
|
+
{ t: 0.35, e: [0.08, -0.1, 0] },
|
|
477
|
+
{ t: 1, e: [0, 0, 0] }
|
|
478
|
+
])
|
|
479
|
+
], false, ["salute", "performance", "one-shot", "upper-body"]);
|
|
480
|
+
}
|
|
481
|
+
// --- shake_head: one-shot side-to-side "no" -----------------------------------------------------
|
|
482
|
+
function shakeHeadClip() {
|
|
483
|
+
const d = 0.8;
|
|
484
|
+
return clip("shake_head", d, [
|
|
485
|
+
rotationTrack("head", d, [
|
|
486
|
+
{ t: 0, e: [0, 0, 0] },
|
|
487
|
+
{ t: 0.15, e: [0, -0.45, 0] },
|
|
488
|
+
{ t: 0.3, e: [0, 0.45, 0] },
|
|
489
|
+
{ t: 0.45, e: [0, -0.45, 0] },
|
|
490
|
+
{ t: 0.6, e: [0, 0.45, 0] },
|
|
491
|
+
{ t: 0.75, e: [0, 0, 0] }
|
|
492
|
+
]),
|
|
493
|
+
rotationTrack("neck", d, [
|
|
494
|
+
{ t: 0, e: [0, 0, 0] },
|
|
495
|
+
{ t: 0.15, e: [0, -0.25, 0] },
|
|
496
|
+
{ t: 0.3, e: [0, 0.25, 0] },
|
|
497
|
+
{ t: 0.45, e: [0, -0.25, 0] },
|
|
498
|
+
{ t: 0.6, e: [0, 0.25, 0] },
|
|
499
|
+
{ t: 0.75, e: [0, 0, 0] }
|
|
500
|
+
])
|
|
501
|
+
], false, ["shake_head", "performance", "one-shot"]);
|
|
502
|
+
}
|
|
334
503
|
/** Ordered list of all standard library clip definitions (idle first). */
|
|
335
504
|
export function createStandardHumanoidClipDefinitions() {
|
|
336
505
|
return [
|
|
@@ -339,13 +508,19 @@ export function createStandardHumanoidClipDefinitions() {
|
|
|
339
508
|
gestureClip(),
|
|
340
509
|
pointClip(),
|
|
341
510
|
nodClip(),
|
|
511
|
+
waveClip(),
|
|
342
512
|
walkClip(),
|
|
343
513
|
runClip(),
|
|
344
|
-
reactClip()
|
|
514
|
+
reactClip(),
|
|
515
|
+
sitClip(),
|
|
516
|
+
shrugClip(),
|
|
517
|
+
crossArmsClip(),
|
|
518
|
+
saluteClip(),
|
|
519
|
+
shakeHeadClip()
|
|
345
520
|
];
|
|
346
521
|
}
|
|
347
522
|
/**
|
|
348
|
-
* Shared, rig-neutral {@link AnimationClipRegistry} populated with the
|
|
523
|
+
* Shared, rig-neutral {@link AnimationClipRegistry} populated with the 14 standard performance clips
|
|
349
524
|
* authored on {@link STANDARD_LIBRARY_RIG} (canonical {@link HUMANOID_BONES}). The clips are COMPACT
|
|
350
525
|
* procedural keyframe loops/one-shots — real, samplable {@link AnimationTrack} data, not mocap and
|
|
351
526
|
* not placeholders. They give the studio a guaranteed, retargetable performance vocabulary even when
|