@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.
Files changed (302) hide show
  1. package/README.md +126 -19
  2. package/dist/animation/library/performanceStateGraph.d.ts +11 -3
  3. package/dist/animation/library/performanceStateGraph.d.ts.map +1 -1
  4. package/dist/animation/library/performanceStateGraph.js +61 -5
  5. package/dist/animation/library/performanceStateGraph.js.map +1 -1
  6. package/dist/animation/library/standardHumanoidClips.d.ts +3 -3
  7. package/dist/animation/library/standardHumanoidClips.d.ts.map +1 -1
  8. package/dist/animation/library/standardHumanoidClips.js +179 -4
  9. package/dist/animation/library/standardHumanoidClips.js.map +1 -1
  10. package/dist/assets/GLTFLoader.js +1 -0
  11. package/dist/assets/GLTFLoader.js.map +1 -1
  12. package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
  13. package/dist/assets/GLTFRenderResources.js +68 -16
  14. package/dist/assets/GLTFRenderResources.js.map +1 -1
  15. package/dist/assets/KTX2BasisTextureTranscoder.js +1 -0
  16. package/dist/assets/KTX2BasisTextureTranscoder.js.map +1 -1
  17. package/dist/aura3d-cli/asset-constants.d.ts +5 -0
  18. package/dist/aura3d-cli/asset-constants.d.ts.map +1 -0
  19. package/dist/aura3d-cli/asset-constants.js +5 -0
  20. package/dist/aura3d-cli/asset-constants.js.map +1 -0
  21. package/dist/aura3d-cli/asset-core-types.d.ts +206 -0
  22. package/dist/aura3d-cli/asset-core-types.d.ts.map +1 -0
  23. package/dist/aura3d-cli/asset-core-types.js +2 -0
  24. package/dist/aura3d-cli/asset-core-types.js.map +1 -0
  25. package/dist/aura3d-cli/asset-inspection-types.d.ts +131 -0
  26. package/dist/aura3d-cli/asset-inspection-types.d.ts.map +1 -0
  27. package/dist/aura3d-cli/asset-inspection-types.js +2 -0
  28. package/dist/aura3d-cli/asset-inspection-types.js.map +1 -0
  29. package/dist/aura3d-cli/asset-manifest.d.ts +8 -0
  30. package/dist/aura3d-cli/asset-manifest.d.ts.map +1 -0
  31. package/dist/aura3d-cli/asset-manifest.js +116 -0
  32. package/dist/aura3d-cli/asset-manifest.js.map +1 -0
  33. package/dist/aura3d-cli/asset-readiness-types.d.ts +164 -0
  34. package/dist/aura3d-cli/asset-readiness-types.d.ts.map +1 -0
  35. package/dist/aura3d-cli/asset-readiness-types.js +2 -0
  36. package/dist/aura3d-cli/asset-readiness-types.js.map +1 -0
  37. package/dist/aura3d-cli/asset-source-ast.d.ts +8 -0
  38. package/dist/aura3d-cli/asset-source-ast.d.ts.map +1 -0
  39. package/dist/aura3d-cli/asset-source-ast.js +241 -0
  40. package/dist/aura3d-cli/asset-source-ast.js.map +1 -0
  41. package/dist/aura3d-cli/asset-source-roles.d.ts +4 -0
  42. package/dist/aura3d-cli/asset-source-roles.d.ts.map +1 -0
  43. package/dist/aura3d-cli/asset-source-roles.js +79 -0
  44. package/dist/aura3d-cli/asset-source-roles.js.map +1 -0
  45. package/dist/aura3d-cli/asset-source-validation.d.ts +4 -0
  46. package/dist/aura3d-cli/asset-source-validation.d.ts.map +1 -0
  47. package/dist/aura3d-cli/asset-source-validation.js +200 -0
  48. package/dist/aura3d-cli/asset-source-validation.js.map +1 -0
  49. package/dist/aura3d-cli/character-assembly-types.d.ts +39 -0
  50. package/dist/aura3d-cli/character-assembly-types.d.ts.map +1 -0
  51. package/dist/aura3d-cli/character-assembly-types.js +2 -0
  52. package/dist/aura3d-cli/character-assembly-types.js.map +1 -0
  53. package/dist/aura3d-cli/cli-help.d.ts +4 -0
  54. package/dist/aura3d-cli/cli-help.d.ts.map +1 -0
  55. package/dist/aura3d-cli/cli-help.js +48 -0
  56. package/dist/aura3d-cli/cli-help.js.map +1 -0
  57. package/dist/aura3d-cli/cli-options.d.ts +66 -0
  58. package/dist/aura3d-cli/cli-options.d.ts.map +1 -0
  59. package/dist/aura3d-cli/cli-options.js +234 -0
  60. package/dist/aura3d-cli/cli-options.js.map +1 -0
  61. package/dist/aura3d-cli/cli.js +20 -177
  62. package/dist/aura3d-cli/cli.js.map +1 -1
  63. package/dist/aura3d-cli/index.d.ts +12 -402
  64. package/dist/aura3d-cli/index.d.ts.map +1 -1
  65. package/dist/aura3d-cli/index.js +948 -90
  66. package/dist/aura3d-cli/index.js.map +1 -1
  67. package/dist/aura3d-cli/pull-bridge/adapters.d.ts +4 -0
  68. package/dist/aura3d-cli/pull-bridge/adapters.d.ts.map +1 -0
  69. package/dist/aura3d-cli/pull-bridge/adapters.js +38 -0
  70. package/dist/aura3d-cli/pull-bridge/adapters.js.map +1 -0
  71. package/dist/aura3d-cli/pull-bridge/download.d.ts +6 -0
  72. package/dist/aura3d-cli/pull-bridge/download.d.ts.map +1 -0
  73. package/dist/aura3d-cli/pull-bridge/download.js +208 -0
  74. package/dist/aura3d-cli/pull-bridge/download.js.map +1 -0
  75. package/dist/aura3d-cli/pull-bridge/profiles.d.ts +14 -0
  76. package/dist/aura3d-cli/pull-bridge/profiles.d.ts.map +1 -0
  77. package/dist/aura3d-cli/pull-bridge/profiles.js +63 -0
  78. package/dist/aura3d-cli/pull-bridge/profiles.js.map +1 -0
  79. package/dist/aura3d-cli/pull-bridge/provenance.d.ts +9 -0
  80. package/dist/aura3d-cli/pull-bridge/provenance.d.ts.map +1 -0
  81. package/dist/aura3d-cli/pull-bridge/provenance.js +99 -0
  82. package/dist/aura3d-cli/pull-bridge/provenance.js.map +1 -0
  83. package/dist/aura3d-cli/pull-bridge/pullable.d.ts +14 -0
  84. package/dist/aura3d-cli/pull-bridge/pullable.d.ts.map +1 -0
  85. package/dist/aura3d-cli/pull-bridge/pullable.js +58 -0
  86. package/dist/aura3d-cli/pull-bridge/pullable.js.map +1 -0
  87. package/dist/aura3d-cli/pull-bridge/scoring.d.ts +21 -0
  88. package/dist/aura3d-cli/pull-bridge/scoring.d.ts.map +1 -0
  89. package/dist/aura3d-cli/pull-bridge/scoring.js +177 -0
  90. package/dist/aura3d-cli/pull-bridge/scoring.js.map +1 -0
  91. package/dist/aura3d-cli/pull-bridge/search.d.ts +39 -0
  92. package/dist/aura3d-cli/pull-bridge/search.d.ts.map +1 -0
  93. package/dist/aura3d-cli/pull-bridge/search.js +114 -0
  94. package/dist/aura3d-cli/pull-bridge/search.js.map +1 -0
  95. package/dist/aura3d-cli/pull-bridge/types.d.ts +9 -0
  96. package/dist/aura3d-cli/pull-bridge/types.d.ts.map +1 -0
  97. package/dist/aura3d-cli/pull-bridge/types.js +2 -0
  98. package/dist/aura3d-cli/pull-bridge/types.js.map +1 -0
  99. package/dist/aura3d-cli/pull-bridge/vector3.d.ts +2 -0
  100. package/dist/aura3d-cli/pull-bridge/vector3.d.ts.map +1 -0
  101. package/dist/aura3d-cli/pull-bridge/vector3.js +4 -0
  102. package/dist/aura3d-cli/pull-bridge/vector3.js.map +1 -0
  103. package/dist/aura3d-cli/pull-bridge.d.ts +18 -100
  104. package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
  105. package/dist/aura3d-cli/pull-bridge.js +59 -526
  106. package/dist/aura3d-cli/pull-bridge.js.map +1 -1
  107. package/dist/create-aura3d/cli.js +10 -0
  108. package/dist/create-aura3d/cli.js.map +1 -1
  109. package/dist/create-aura3d/index.d.ts +1 -1
  110. package/dist/create-aura3d/index.d.ts.map +1 -1
  111. package/dist/create-aura3d/index.js +11 -2
  112. package/dist/create-aura3d/index.js.map +1 -1
  113. package/dist/create-aura3d/showcase-spec-artifacts.d.ts +104 -0
  114. package/dist/create-aura3d/showcase-spec-artifacts.d.ts.map +1 -0
  115. package/dist/create-aura3d/showcase-spec-artifacts.js +142 -0
  116. package/dist/create-aura3d/showcase-spec-artifacts.js.map +1 -0
  117. package/dist/create-aura3d/showcase-spec-category-plan.d.ts +15 -0
  118. package/dist/create-aura3d/showcase-spec-category-plan.d.ts.map +1 -0
  119. package/dist/create-aura3d/showcase-spec-category-plan.js +45 -0
  120. package/dist/create-aura3d/showcase-spec-category-plan.js.map +1 -0
  121. package/dist/create-aura3d/showcase-spec-compiler.d.ts +5 -0
  122. package/dist/create-aura3d/showcase-spec-compiler.d.ts.map +1 -0
  123. package/dist/create-aura3d/showcase-spec-compiler.js +240 -0
  124. package/dist/create-aura3d/showcase-spec-compiler.js.map +1 -0
  125. package/dist/create-aura3d/showcase-spec-evidence.d.ts +7 -0
  126. package/dist/create-aura3d/showcase-spec-evidence.d.ts.map +1 -0
  127. package/dist/create-aura3d/showcase-spec-evidence.js +815 -0
  128. package/dist/create-aura3d/showcase-spec-evidence.js.map +1 -0
  129. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts +21 -0
  130. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts.map +1 -0
  131. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js +725 -0
  132. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js.map +1 -0
  133. package/dist/create-aura3d/showcase-spec-game-replacement-evidence.d.ts +14 -0
  134. package/dist/create-aura3d/showcase-spec-game-replacement-evidence.d.ts.map +1 -0
  135. package/dist/create-aura3d/showcase-spec-game-replacement-evidence.js +219 -0
  136. package/dist/create-aura3d/showcase-spec-game-replacement-evidence.js.map +1 -0
  137. package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts +72 -0
  138. package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts.map +1 -0
  139. package/dist/create-aura3d/showcase-spec-game-template-evidence.js +435 -0
  140. package/dist/create-aura3d/showcase-spec-game-template-evidence.js.map +1 -0
  141. package/dist/create-aura3d/showcase-spec-gameplay-evidence.d.ts +3 -0
  142. package/dist/create-aura3d/showcase-spec-gameplay-evidence.d.ts.map +1 -0
  143. package/dist/create-aura3d/showcase-spec-gameplay-evidence.js +108 -0
  144. package/dist/create-aura3d/showcase-spec-gameplay-evidence.js.map +1 -0
  145. package/dist/create-aura3d/showcase-spec-parser.d.ts +3 -0
  146. package/dist/create-aura3d/showcase-spec-parser.d.ts.map +1 -0
  147. package/dist/create-aura3d/showcase-spec-parser.js +662 -0
  148. package/dist/create-aura3d/showcase-spec-parser.js.map +1 -0
  149. package/dist/create-aura3d/showcase-spec-platformer-artifacts.d.ts +3 -0
  150. package/dist/create-aura3d/showcase-spec-platformer-artifacts.d.ts.map +1 -0
  151. package/dist/create-aura3d/showcase-spec-platformer-artifacts.js +276 -0
  152. package/dist/create-aura3d/showcase-spec-platformer-artifacts.js.map +1 -0
  153. package/dist/create-aura3d/showcase-spec-racing-artifacts.d.ts +3 -0
  154. package/dist/create-aura3d/showcase-spec-racing-artifacts.d.ts.map +1 -0
  155. package/dist/create-aura3d/showcase-spec-racing-artifacts.js +273 -0
  156. package/dist/create-aura3d/showcase-spec-racing-artifacts.js.map +1 -0
  157. package/dist/create-aura3d/showcase-spec-replacement-apply.d.ts +10 -0
  158. package/dist/create-aura3d/showcase-spec-replacement-apply.d.ts.map +1 -0
  159. package/dist/create-aura3d/showcase-spec-replacement-apply.js +166 -0
  160. package/dist/create-aura3d/showcase-spec-replacement-apply.js.map +1 -0
  161. package/dist/create-aura3d/showcase-spec-replacement-candidates.d.ts +16 -0
  162. package/dist/create-aura3d/showcase-spec-replacement-candidates.d.ts.map +1 -0
  163. package/dist/create-aura3d/showcase-spec-replacement-candidates.js +244 -0
  164. package/dist/create-aura3d/showcase-spec-replacement-candidates.js.map +1 -0
  165. package/dist/create-aura3d/showcase-spec-replacement-game-geometry.d.ts +4 -0
  166. package/dist/create-aura3d/showcase-spec-replacement-game-geometry.d.ts.map +1 -0
  167. package/dist/create-aura3d/showcase-spec-replacement-game-geometry.js +175 -0
  168. package/dist/create-aura3d/showcase-spec-replacement-game-geometry.js.map +1 -0
  169. package/dist/create-aura3d/showcase-spec-replacement-manifest.d.ts +41 -0
  170. package/dist/create-aura3d/showcase-spec-replacement-manifest.d.ts.map +1 -0
  171. package/dist/create-aura3d/showcase-spec-replacement-manifest.js +62 -0
  172. package/dist/create-aura3d/showcase-spec-replacement-manifest.js.map +1 -0
  173. package/dist/create-aura3d/showcase-spec-replacement-values.d.ts +9 -0
  174. package/dist/create-aura3d/showcase-spec-replacement-values.d.ts.map +1 -0
  175. package/dist/create-aura3d/showcase-spec-replacement-values.js +41 -0
  176. package/dist/create-aura3d/showcase-spec-replacement-values.js.map +1 -0
  177. package/dist/create-aura3d/showcase-spec-replacement.d.ts +13 -0
  178. package/dist/create-aura3d/showcase-spec-replacement.d.ts.map +1 -0
  179. package/dist/create-aura3d/showcase-spec-replacement.js +144 -0
  180. package/dist/create-aura3d/showcase-spec-replacement.js.map +1 -0
  181. package/dist/create-aura3d/showcase-spec-types.d.ts +304 -0
  182. package/dist/create-aura3d/showcase-spec-types.d.ts.map +1 -0
  183. package/dist/create-aura3d/showcase-spec-types.js +2 -0
  184. package/dist/create-aura3d/showcase-spec-types.js.map +1 -0
  185. package/dist/ecs/SystemScheduler.js +5 -4
  186. package/dist/ecs/SystemScheduler.js.map +1 -1
  187. package/dist/ecs/components/CameraComponent.d.ts +30 -0
  188. package/dist/ecs/components/CameraComponent.d.ts.map +1 -0
  189. package/dist/ecs/components/CameraComponent.js +27 -0
  190. package/dist/ecs/components/CameraComponent.js.map +1 -0
  191. package/dist/ecs/components/HierarchyComponent.d.ts +10 -0
  192. package/dist/ecs/components/HierarchyComponent.d.ts.map +1 -1
  193. package/dist/ecs/components/HierarchyComponent.js +10 -0
  194. package/dist/ecs/components/HierarchyComponent.js.map +1 -1
  195. package/dist/ecs/components/LightComponent.d.ts +18 -0
  196. package/dist/ecs/components/LightComponent.d.ts.map +1 -0
  197. package/dist/ecs/components/LightComponent.js +17 -0
  198. package/dist/ecs/components/LightComponent.js.map +1 -0
  199. package/dist/ecs/components/MeshComponent.d.ts +19 -0
  200. package/dist/ecs/components/MeshComponent.d.ts.map +1 -0
  201. package/dist/ecs/components/MeshComponent.js +21 -0
  202. package/dist/ecs/components/MeshComponent.js.map +1 -0
  203. package/dist/ecs/components/WorldTransformComponent.d.ts +12 -0
  204. package/dist/ecs/components/WorldTransformComponent.d.ts.map +1 -0
  205. package/dist/ecs/components/WorldTransformComponent.js +22 -0
  206. package/dist/ecs/components/WorldTransformComponent.js.map +1 -0
  207. package/dist/ecs/index.d.ts +4 -0
  208. package/dist/ecs/index.d.ts.map +1 -1
  209. package/dist/ecs/index.js +4 -0
  210. package/dist/ecs/index.js.map +1 -1
  211. package/dist/ecs/systems/CameraSystem.d.ts +17 -0
  212. package/dist/ecs/systems/CameraSystem.d.ts.map +1 -0
  213. package/dist/ecs/systems/CameraSystem.js +38 -0
  214. package/dist/ecs/systems/CameraSystem.js.map +1 -0
  215. package/dist/ecs/systems/TransformSystem.d.ts +16 -0
  216. package/dist/ecs/systems/TransformSystem.d.ts.map +1 -0
  217. package/dist/ecs/systems/TransformSystem.js +99 -0
  218. package/dist/ecs/systems/TransformSystem.js.map +1 -0
  219. package/dist/ecs/systems/index.d.ts +2 -0
  220. package/dist/ecs/systems/index.d.ts.map +1 -1
  221. package/dist/ecs/systems/index.js +2 -0
  222. package/dist/ecs/systems/index.js.map +1 -1
  223. package/dist/engine/agent-api/GameAssetValidation.d.ts +5 -0
  224. package/dist/engine/agent-api/GameAssetValidation.d.ts.map +1 -1
  225. package/dist/engine/agent-api/GameAssetValidation.js +103 -0
  226. package/dist/engine/agent-api/GameAssetValidation.js.map +1 -1
  227. package/dist/engine/agent-api/GameEvidence.d.ts +14 -1
  228. package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -1
  229. package/dist/engine/agent-api/GameEvidence.js +77 -6
  230. package/dist/engine/agent-api/GameEvidence.js.map +1 -1
  231. package/dist/engine/agent-api/GameGenreKits.d.ts +473 -0
  232. package/dist/engine/agent-api/GameGenreKits.d.ts.map +1 -0
  233. package/dist/engine/agent-api/GameGenreKits.js +1269 -0
  234. package/dist/engine/agent-api/GameGenreKits.js.map +1 -0
  235. package/dist/engine/agent-api/GameRuntime.d.ts +190 -3
  236. package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -1
  237. package/dist/engine/agent-api/GameRuntime.js +431 -2
  238. package/dist/engine/agent-api/GameRuntime.js.map +1 -1
  239. package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts +181 -0
  240. package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts.map +1 -0
  241. package/dist/engine/agent-api/GameSceneGeometryBindings.js +488 -0
  242. package/dist/engine/agent-api/GameSceneGeometryBindings.js.map +1 -0
  243. package/dist/engine/agent-api/GameSceneGeometryMath.d.ts +39 -0
  244. package/dist/engine/agent-api/GameSceneGeometryMath.d.ts.map +1 -0
  245. package/dist/engine/agent-api/GameSceneGeometryMath.js +89 -0
  246. package/dist/engine/agent-api/GameSceneGeometryMath.js.map +1 -0
  247. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts +4 -0
  248. package/dist/engine/agent-api/RuntimeNodeHandle.d.ts.map +1 -1
  249. package/dist/engine/agent-api/RuntimeNodeHandle.js +2 -0
  250. package/dist/engine/agent-api/RuntimeNodeHandle.js.map +1 -1
  251. package/dist/engine/agent-api/SceneGroundingUtils.d.ts +86 -0
  252. package/dist/engine/agent-api/SceneGroundingUtils.d.ts.map +1 -1
  253. package/dist/engine/agent-api/SceneGroundingUtils.js +116 -0
  254. package/dist/engine/agent-api/SceneGroundingUtils.js.map +1 -1
  255. package/dist/engine/agent-api/index.d.ts +149 -5
  256. package/dist/engine/agent-api/index.d.ts.map +1 -1
  257. package/dist/engine/agent-api/index.js +1964 -141
  258. package/dist/engine/agent-api/index.js.map +1 -1
  259. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  260. package/dist/engine/ecs/ECSRenderSource.d.ts +29 -0
  261. package/dist/engine/ecs/ECSRenderSource.d.ts.map +1 -0
  262. package/dist/engine/ecs/ECSRenderSource.js +189 -0
  263. package/dist/engine/ecs/ECSRenderSource.js.map +1 -0
  264. package/dist/engine/index.d.ts +1 -0
  265. package/dist/engine/index.d.ts.map +1 -1
  266. package/dist/engine/index.js +1 -0
  267. package/dist/engine/index.js.map +1 -1
  268. package/dist/engine/production-runtime/TypedGLBActor.d.ts +14 -2
  269. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  270. package/dist/engine/production-runtime/TypedGLBActor.js +95 -4
  271. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  272. package/dist/physics/Constraint.d.ts.map +1 -1
  273. package/dist/physics/Constraint.js +3 -3
  274. package/dist/physics/Constraint.js.map +1 -1
  275. package/dist/physics/Shape.d.ts +1 -0
  276. package/dist/physics/Shape.d.ts.map +1 -1
  277. package/dist/physics/Shape.js +12 -0
  278. package/dist/physics/Shape.js.map +1 -1
  279. package/dist/rendering/ForwardPass.d.ts +1 -0
  280. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  281. package/dist/rendering/ForwardPass.js +29 -6
  282. package/dist/rendering/ForwardPass.js.map +1 -1
  283. package/dist/rendering/MorphTarget.d.ts +1 -0
  284. package/dist/rendering/MorphTarget.d.ts.map +1 -1
  285. package/dist/rendering/MorphTarget.js.map +1 -1
  286. package/dist/rendering/Renderer.js +7 -1
  287. package/dist/rendering/Renderer.js.map +1 -1
  288. package/dist/rendering/SkinnedLitMaterial.d.ts +9 -0
  289. package/dist/rendering/SkinnedLitMaterial.d.ts.map +1 -1
  290. package/dist/rendering/SkinnedLitMaterial.js +20 -1
  291. package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
  292. package/dist/rendering/performance/RenderItemSorting.d.ts +2 -1
  293. package/dist/rendering/performance/RenderItemSorting.d.ts.map +1 -1
  294. package/dist/rendering/performance/RenderItemSorting.js +5 -2
  295. package/dist/rendering/performance/RenderItemSorting.js.map +1 -1
  296. package/package.json +24 -24
  297. package/templates/mini-game/README.md +13 -0
  298. package/templates/mini-game/index.html +1 -1
  299. package/templates/mini-game/package.json +1 -1
  300. package/templates/mini-game/src/main.ts +251 -21
  301. package/templates/mini-game/tests/playable.spec.ts +49 -0
  302. package/templates/mini-game/tests/screenshot.spec.ts +37 -32
package/README.md CHANGED
@@ -5,27 +5,134 @@
5
5
  [![license: MIT](https://img.shields.io/badge/license-MIT-green.svg)](./LICENSE)
6
6
  [![TypeScript](https://img.shields.io/badge/TypeScript-browser%203D-3178c6.svg)](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 routes, Vite templates, typed asset workflows, diagnostics, screenshots, and static deployment checks.
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, browser-game 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 proofs, static-deployed interactive websites, or AI-generated 3D scene tooling.
15
-
16
- ## Current release
17
-
18
- `@aura3d/engine@1.3.2` is the prepared release. It carries everything from 1.1.0 — browser-native game routes, visible GLB animation runtime evidence, 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). It runs on Aura's own WebGL2 + WebGPU renderer; migrating an existing project is covered by the separately installed `@aura3d/three-compat` package.
19
-
20
- Animation Engine (in 1.3.2): `@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.
21
-
22
- Believable-Motion (in 1.3.2): `@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`.
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.2` across all 26 packages (`@aura3d/engine`, `@aura3d/asset-index`, `@aura3d/cli`, `create-aura3d`, …). The `animation-studio` / `character-controller` templates and the new APIs above are live for `npx ...@latest` users, and the showcase is deployed at https://aura3d.auraone.ai.
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 is the active runtime and animation evidence foundation for the next public showcase wave:
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 routes.
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 games with playable routes, HUDs, input, evidence, tests, and deploy-ready output.
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 routes, product viewers, and deployable interactive websites.
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.2 gates pass.
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 8 standard performance clip ids ({@link STANDARD_CLIP_IDS}) with `idle` as 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 `talk`, `gesture`, `point`, `nod`, `react`, `walk`, `run`.
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` are one-shots that auto-return to idle on completion.
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;;;;;;;;CAQmB,CAAC;AA6B7D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,4BAAiC,GAAG,qBAAqB,CA6C7G;AAED,uGAAuG;AACvG,eAAO,MAAM,wBAAwB,EAAE,SAAS,cAAc,EAAsB,CAAC"}
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 8 standard performance clip ids ({@link STANDARD_CLIP_IDS}) with `idle` as 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 `talk`, `gesture`, `point`, `nod`, `react`, `walk`, `run`.
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` are one-shots that auto-return to idle on completion.
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":"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"}
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 8 ids are the contract the Animation
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 8 standard performance clips
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,8EAA+E,CAAC;AAC9G,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;AAyXF,0EAA0E;AAC1E,wBAAgB,qCAAqC,IAAI,SAAS,uBAAuB,CAAC,cAAc,CAAC,EAAE,CAW1G;AAED;;;;;;GAMG;AACH,wBAAgB,kCAAkC,IAAI,qBAAqB,CAAC,cAAc,CAAC,CAE1F"}
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 8 ids are the contract the Animation
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 = ["idle", "talk", "gesture", "point", "nod", "walk", "run", "react"];
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 8 standard performance clips
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