create-aura3d 1.1.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +6 -4
  4. package/dist/index.js.map +1 -1
  5. package/package.json +11 -9
  6. package/templates/{cartoon-channel → animation-channel}/README.md +20 -10
  7. package/templates/{cartoon-studio → animation-channel}/index.html +1 -1
  8. package/templates/{cartoon-channel → animation-channel}/package.json +2 -2
  9. package/templates/{cartoon-channel → animation-channel}/src/episode.ts +22 -22
  10. package/templates/animation-channel/src/experimental/README.md +24 -0
  11. package/templates/{cartoon-channel/src → animation-channel/src/experimental}/concept-episode-2-5d.css +3 -3
  12. package/templates/{cartoon-channel/src → animation-channel/src/experimental}/concept-episode-2-5d.ts +8 -8
  13. package/templates/{cartoon-channel/src → animation-channel/src/experimental}/image-puppet-episode.css +4 -4
  14. package/templates/{cartoon-channel/src → animation-channel/src/experimental}/image-puppet-episode.ts +7 -7
  15. package/templates/{cartoon-channel/src → animation-channel/src/experimental}/puppet-episode-2d.css +3 -3
  16. package/templates/{cartoon-channel/src → animation-channel/src/experimental}/puppet-episode-2d.ts +8 -8
  17. package/templates/{cartoon-channel → animation-channel}/src/main.ts +32 -32
  18. package/templates/{cartoon-channel → animation-channel}/src/render-plan.ts +13 -13
  19. package/templates/{cartoon-channel → animation-channel}/src/sample-episode-visual.css +34 -34
  20. package/templates/{cartoon-channel → animation-channel}/src/sample-episode-visual.ts +20 -20
  21. package/templates/{cartoon-channel → animation-channel}/tests/concept-2-5d-animation.spec.ts +3 -3
  22. package/templates/{cartoon-channel → animation-channel}/tests/concept-2-5d.spec.ts +6 -6
  23. package/templates/{cartoon-channel → animation-channel}/tests/image-puppet-animation.spec.ts +3 -3
  24. package/templates/{cartoon-channel → animation-channel}/tests/image-puppet.spec.ts +5 -5
  25. package/templates/{cartoon-channel → animation-channel}/tests/puppet-2d-animation.spec.ts +3 -3
  26. package/templates/{cartoon-channel → animation-channel}/tests/puppet-2d.spec.ts +4 -4
  27. package/templates/{prompt-cartoon-channel → animation-channel}/tests/route-health.spec.ts +1 -1
  28. package/templates/{cartoon-channel → animation-channel}/tests/sample-episode-visual.spec.ts +5 -5
  29. package/templates/{cartoon-channel → animation-channel}/tests/storyboard-playback.spec.ts +7 -7
  30. package/templates/animation-studio/AGENTS.md +71 -0
  31. package/templates/animation-studio/ASSET-LICENSES.md +41 -0
  32. package/templates/{cartoon-studio → animation-studio}/README.md +6 -6
  33. package/templates/animation-studio/aura.assets.json +669 -0
  34. package/templates/animation-studio/dist/episodes/scene/episode-3d.webm +0 -0
  35. package/templates/animation-studio/dist/episodes/scene/frames/action.png +0 -0
  36. package/templates/animation-studio/dist/episodes/scene/frames/dialogue.png +0 -0
  37. package/templates/animation-studio/dist/episodes/scene/frames/final.png +0 -0
  38. package/templates/animation-studio/dist/episodes/scene/frames/first.png +0 -0
  39. package/templates/animation-studio/dist/episodes/scene/frames/mouth-closed.png +0 -0
  40. package/templates/animation-studio/dist/episodes/scene/frames/mouth-open.png +0 -0
  41. package/templates/animation-studio/dist/episodes/scene/render-live-summary.json +10284 -0
  42. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/worker-1.png +0 -0
  43. package/templates/animation-studio/dist/episodes/scene/skeleton-overlays/worker-2.png +0 -0
  44. package/templates/animation-studio/dist/generated/second-scene.document.json +1210 -0
  45. package/templates/animation-studio/dist/generated/studio-edited.document.json +1196 -0
  46. package/templates/animation-studio/dist/scene/inshader-accept.document.json +1 -0
  47. package/templates/animation-studio/dist/scene/inshader-test.document.json +1 -0
  48. package/templates/animation-studio/dist/scene/integ.document.json +1 -0
  49. package/templates/animation-studio/dist/scene/working.document.json +723 -0
  50. package/templates/animation-studio/dist/scene/working.history.json +1 -0
  51. package/templates/{cartoon-channel/index.html → animation-studio/live-route.html} +3 -4
  52. package/templates/{cartoon-studio → animation-studio}/package-lock.json +2 -2
  53. package/templates/animation-studio/package.json +32 -0
  54. package/templates/animation-studio/public/aura-assets/cast-a.catalog.glb +0 -0
  55. package/templates/animation-studio/public/aura-assets/cast-b.catalog.glb +0 -0
  56. package/templates/animation-studio/public/aura-assets/luma.catalog.glb +0 -0
  57. package/templates/animation-studio/public/aura-assets/luma2.catalog.glb +0 -0
  58. package/templates/animation-studio/public/aura-assets/miko.catalog.glb +0 -0
  59. package/templates/{cartoon-studio → animation-studio}/public/aura-assets/moonGarden.gltf +1 -1
  60. package/templates/animation-studio/public/aura-assets/mushroom.catalog.glb +0 -0
  61. package/templates/animation-studio/public/aura-assets/rusty.catalog.glb +0 -0
  62. package/templates/animation-studio/public/cast-library/cast-library.json +71 -0
  63. package/templates/animation-studio/public/clip-library/gesture.json +173903 -0
  64. package/templates/animation-studio/public/clip-library/idle.json +23035 -0
  65. package/templates/animation-studio/public/clip-library/manifest.json +154 -0
  66. package/templates/animation-studio/public/clip-library/nod.json +173903 -0
  67. package/templates/animation-studio/public/clip-library/point.json +69879 -0
  68. package/templates/animation-studio/public/clip-library/react.json +66084 -0
  69. package/templates/animation-studio/public/clip-library/run.json +9648 -0
  70. package/templates/animation-studio/public/clip-library/talk.json +69879 -0
  71. package/templates/animation-studio/public/clip-library/walk.json +8283 -0
  72. package/templates/animation-studio/public/hifi-cast/BrainStem.glb +0 -0
  73. package/templates/animation-studio/public/hifi-cast/CesiumMan.glb +0 -0
  74. package/templates/animation-studio/public/hifi-cast/RiggedFigure.glb +0 -0
  75. package/templates/animation-studio/public/hifi-cast/kaykit/Barbarian.glb +0 -0
  76. package/templates/animation-studio/public/hifi-cast/kaykit/Knight.glb +0 -0
  77. package/templates/animation-studio/public/hifi-cast/kaykit/Mage.glb +0 -0
  78. package/templates/animation-studio/public/hifi-cast/kaykit/Rogue.glb +0 -0
  79. package/templates/animation-studio/public/hifi-cast/kaykit/Rogue_Hooded.glb +0 -0
  80. package/templates/animation-studio/public/hifi-cast/khronos-report.json +295 -0
  81. package/templates/animation-studio/public/hifi-cast/quaternius-report.json +449 -0
  82. package/templates/animation-studio/public/hifi-cast/rpm/cesiumman.glb +0 -0
  83. package/templates/animation-studio/public/hifi-cast/rpm/fox.glb +0 -0
  84. package/templates/animation-studio/public/hifi-cast/rpm/riggedfigure.glb +0 -0
  85. package/templates/animation-studio/public/hifi-cast/rpm-report.json +301 -0
  86. package/templates/animation-studio/scripts/anim.ts +103 -0
  87. package/templates/animation-studio/scripts/animation-scene.ts +457 -0
  88. package/templates/animation-studio/scripts/asset-motion-probe.ts +450 -0
  89. package/templates/animation-studio/scripts/asset-render-probe.ts +152 -0
  90. package/templates/animation-studio/scripts/author-office-scene.ts +65 -0
  91. package/templates/animation-studio/scripts/build-cast-library.ts +97 -0
  92. package/templates/animation-studio/scripts/build-characters.ts +1543 -0
  93. package/templates/animation-studio/scripts/build-clip-library.ts +972 -0
  94. package/templates/animation-studio/scripts/clip-decision-cli.ts +51 -0
  95. package/templates/animation-studio/scripts/determinism-check.ts +48 -0
  96. package/templates/animation-studio/scripts/generate-scene.ts +95 -0
  97. package/templates/animation-studio/scripts/hifi-cast-validate.ts +572 -0
  98. package/templates/animation-studio/scripts/motion-evidence-cli.ts +150 -0
  99. package/templates/animation-studio/scripts/motion-evidence.ts +362 -0
  100. package/templates/animation-studio/scripts/preview-server.ts +52 -0
  101. package/templates/animation-studio/scripts/regen-manifest.ts +156 -0
  102. package/templates/animation-studio/scripts/render-core.ts +360 -0
  103. package/templates/animation-studio/scripts/render-live.ts +813 -0
  104. package/templates/animation-studio/scripts/render-parallel.ts +70 -0
  105. package/templates/animation-studio/scripts/render-server.ts +119 -0
  106. package/templates/animation-studio/scripts/resolve-asset.ts +669 -0
  107. package/templates/animation-studio/scripts/skeleton-overlay-cli.ts +82 -0
  108. package/templates/animation-studio/scripts/skeleton-overlay.ts +293 -0
  109. package/templates/animation-studio/scripts/studio-tools-demo.ts +45 -0
  110. package/templates/animation-studio/scripts/texture-bake.ts +297 -0
  111. package/templates/animation-studio/scripts/validate-characters.ts +0 -0
  112. package/templates/animation-studio/scripts/verify-extracted-overlay-cli.ts +264 -0
  113. package/templates/animation-studio/src/animation-episode-validator.ts +97 -0
  114. package/templates/animation-studio/src/animation-performance.ts +556 -0
  115. package/templates/animation-studio/src/aura-assets.ts +71 -0
  116. package/templates/animation-studio/src/character.ts +40 -0
  117. package/templates/animation-studio/src/director/compile-episode-document.ts +45 -0
  118. package/templates/animation-studio/src/director/director-heuristics.ts +697 -0
  119. package/templates/animation-studio/src/director/prompt-to-scene.ts +369 -0
  120. package/templates/animation-studio/src/empty-document.ts +77 -0
  121. package/templates/animation-studio/src/episode-document.ts +442 -0
  122. package/templates/animation-studio/src/examples/moon-garden.example.ts +183 -0
  123. package/templates/animation-studio/src/fidelity.ts +129 -0
  124. package/templates/animation-studio/src/graph.ts +14 -0
  125. package/templates/animation-studio/src/procedural-hdri.ts +243 -0
  126. package/templates/animation-studio/src/profile.ts +97 -0
  127. package/templates/animation-studio/src/render-live-route.ts +42 -0
  128. package/templates/animation-studio/src/render-modes.ts +137 -0
  129. package/templates/animation-studio/src/scene-player.ts +867 -0
  130. package/templates/animation-studio/src/set-templates.ts +361 -0
  131. package/templates/animation-studio/src/studio/episode-document-store.ts +72 -0
  132. package/templates/animation-studio/src/studio/scene-tool-registry.ts +86 -0
  133. package/templates/animation-studio/src/studio/scene-tools.ts +169 -0
  134. package/templates/animation-studio/tests/reports/animation-studio/hifi-cast-validation.json +938 -0
  135. package/templates/animation-studio/tsconfig.json +26 -0
  136. package/templates/animation-studio/vite.config.ts +18 -0
  137. package/templates/character-controller/README.md +33 -0
  138. package/templates/character-controller/index.html +19 -0
  139. package/templates/character-controller/package.json +23 -0
  140. package/templates/character-controller/playwright.config.ts +14 -0
  141. package/templates/character-controller/src/controller.ts +44 -0
  142. package/templates/character-controller/src/main.ts +62 -0
  143. package/templates/character-controller/tests/route-health.spec.ts +26 -0
  144. package/templates/character-controller/tests/screenshot.spec.ts +9 -0
  145. package/templates/character-controller/tsconfig.json +15 -0
  146. package/templates/cinematic-scene/package.json +1 -1
  147. package/templates/episode-builder/README.md +6 -2
  148. package/templates/episode-builder/package.json +1 -1
  149. package/templates/episode-builder/src/aura-assets.ts +1 -1
  150. package/templates/episode-builder/src/builder.ts +4 -4
  151. package/templates/episode-builder/src/episode.ts +21 -21
  152. package/templates/episode-builder/src/main.ts +20 -20
  153. package/templates/episode-builder/src/render-plan.ts +13 -13
  154. package/templates/episode-builder/tests/storyboard-playback.spec.ts +7 -7
  155. package/templates/fighting-game/README.md +16 -0
  156. package/templates/fighting-game/package.json +1 -1
  157. package/templates/mini-game/package.json +1 -1
  158. package/templates/product-viewer/package.json +1 -1
  159. package/templates/{prompt-cartoon-channel → prompt-animation-channel}/README.md +7 -3
  160. package/templates/{prompt-cartoon-channel → prompt-animation-channel}/index.html +1 -1
  161. package/templates/{prompt-cartoon-channel → prompt-animation-channel}/package.json +2 -2
  162. package/templates/{prompt-cartoon-channel → prompt-animation-channel}/src/aura-assets.ts +1 -1
  163. package/templates/{prompt-cartoon-channel → prompt-animation-channel}/src/episode.ts +22 -22
  164. package/templates/{prompt-cartoon-channel → prompt-animation-channel}/src/main.ts +28 -28
  165. package/templates/{prompt-cartoon-channel → prompt-animation-channel}/src/render-plan.ts +13 -13
  166. package/templates/{cartoon-channel → prompt-animation-channel}/tests/route-health.spec.ts +1 -1
  167. package/templates/{prompt-cartoon-channel → prompt-animation-channel}/tests/storyboard-playback.spec.ts +8 -8
  168. package/templates/cartoon-studio/aura.assets.json +0 -157
  169. package/templates/cartoon-studio/package.json +0 -32
  170. package/templates/cartoon-studio/public/aura-assets/luma.047f5e5f.glb +0 -0
  171. package/templates/cartoon-studio/public/aura-assets/luma.humanoid-fixture.glb +0 -0
  172. package/templates/cartoon-studio/public/aura-assets/miko.047f5e5f.glb +0 -0
  173. package/templates/cartoon-studio/scripts/episode.ts +0 -276
  174. package/templates/cartoon-studio/src/aura-assets.ts +0 -61
  175. package/templates/cartoon-studio/src/characters.ts +0 -65
  176. package/templates/cartoon-studio/src/episode-renderer.ts +0 -605
  177. package/templates/cartoon-studio/src/episode.ts +0 -306
  178. package/templates/cartoon-studio/src/main.ts +0 -333
  179. package/templates/cartoon-studio/src/render-plan.ts +0 -567
  180. package/templates/cartoon-studio/src/review.ts +0 -99
  181. package/templates/cartoon-studio/src/studio.ts +0 -101
  182. package/templates/cartoon-studio/test-results/.last-run.json +0 -4
  183. package/templates/cartoon-studio/tests/episode-render.spec.ts +0 -44
  184. package/templates/cartoon-studio/tests/motion-quality.spec.ts +0 -45
  185. package/templates/cartoon-studio/tests/route-health.spec.ts +0 -7
  186. package/templates/cartoon-studio/tests/storyboard-playback.spec.ts +0 -99
  187. package/templates/cartoon-studio/tests/visual-review.spec.ts +0 -21
  188. package/templates/prompt-cartoon-channel/src/sets.ts +0 -14
  189. package/templates/prompt-cartoon-channel/tsconfig.json +0 -12
  190. /package/templates/{cartoon-channel → animation-channel}/aura.assets.json +0 -0
  191. /package/templates/{cartoon-channel → animation-channel}/playwright.config.ts +0 -0
  192. /package/templates/{cartoon-channel → animation-channel}/public/aura-assets/luma.047f5e5f.glb +0 -0
  193. /package/templates/{cartoon-channel → animation-channel}/public/aura-assets/luma.thumb.svg +0 -0
  194. /package/templates/{cartoon-channel → animation-channel}/public/aura-assets/miko.047f5e5f.glb +0 -0
  195. /package/templates/{cartoon-channel → animation-channel}/public/aura-assets/miko.thumb.svg +0 -0
  196. /package/templates/{cartoon-channel → animation-channel}/public/aura-assets/moon-garden-feature-frame.png +0 -0
  197. /package/templates/{cartoon-channel → animation-channel}/src/aura-assets.ts +0 -0
  198. /package/templates/{cartoon-channel → animation-channel}/src/characters.ts +0 -0
  199. /package/templates/{cartoon-channel → animation-channel}/src/contract.ts +0 -0
  200. /package/templates/{cartoon-channel → animation-channel}/src/sets.ts +0 -0
  201. /package/templates/{cartoon-channel → animation-channel}/test-results/.last-run.json +0 -0
  202. /package/templates/{cartoon-channel → animation-channel}/tests/reports/prompt-animation/cartoon-sample-episode.png +0 -0
  203. /package/templates/{cartoon-channel → animation-channel}/tsconfig.json +0 -0
  204. /package/templates/{cartoon-studio → animation-studio}/playwright.config.ts +0 -0
  205. /package/templates/{cartoon-studio → animation-studio}/public/aura-assets/luma.thumb.svg +0 -0
  206. /package/templates/{cartoon-studio → animation-studio}/public/aura-assets/miko.thumb.svg +0 -0
  207. /package/templates/{cartoon-studio → animation-studio}/src/contract.ts +0 -0
  208. /package/templates/{prompt-cartoon-channel → prompt-animation-channel}/playwright.config.ts +0 -0
  209. /package/templates/{prompt-cartoon-channel → prompt-animation-channel}/src/characters.ts +0 -0
  210. /package/templates/{prompt-cartoon-channel → prompt-animation-channel}/src/contract.ts +0 -0
  211. /package/templates/{cartoon-studio → prompt-animation-channel}/src/sets.ts +0 -0
  212. /package/templates/{cartoon-studio → prompt-animation-channel}/tsconfig.json +0 -0
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const CREATE_AURA3D_TEMPLATES: readonly ["product-viewer", "cinematic-scene", "mini-game", "fighting-game", "cartoon-channel", "prompt-cartoon-channel", "cartoon-studio", "episode-builder"];
1
+ export declare const CREATE_AURA3D_TEMPLATES: readonly ["product-viewer", "cinematic-scene", "mini-game", "fighting-game", "animation-channel", "prompt-animation-channel", "animation-studio", "episode-builder", "animation-studio", "character-controller"];
2
2
  export type CreateA3DTemplate = (typeof CREATE_AURA3D_TEMPLATES)[number];
3
3
  export interface CreateA3DProjectOptions {
4
4
  readonly targetDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,gKAS1B,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CA6BzF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAGvF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,kNAW1B,CAAC;AACX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CA6BzF;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAGvF"}
package/dist/index.js CHANGED
@@ -6,10 +6,12 @@ export const CREATE_AURA3D_TEMPLATES = [
6
6
  "cinematic-scene",
7
7
  "mini-game",
8
8
  "fighting-game",
9
- "cartoon-channel",
10
- "prompt-cartoon-channel",
11
- "cartoon-studio",
12
- "episode-builder"
9
+ "animation-channel",
10
+ "prompt-animation-channel",
11
+ "animation-studio",
12
+ "episode-builder",
13
+ "animation-studio",
14
+ "character-controller",
13
15
  ];
14
16
  export function createA3DProject(options) {
15
17
  const template = options.template ?? "product-viewer";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/create-aura3d/src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-aura3d",
3
- "version": "1.1.1",
3
+ "version": "1.3.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "create-aura3d": "dist/cli.js"
@@ -11,10 +11,12 @@
11
11
  "templates/cinematic-scene",
12
12
  "templates/mini-game",
13
13
  "templates/fighting-game",
14
- "templates/cartoon-channel",
15
- "templates/prompt-cartoon-channel",
16
- "templates/cartoon-studio",
17
- "templates/episode-builder"
14
+ "templates/animation-channel",
15
+ "templates/prompt-animation-channel",
16
+ "templates/animation-studio",
17
+ "templates/episode-builder",
18
+ "templates/animation-studio",
19
+ "templates/character-controller"
18
20
  ],
19
21
  "publishConfig": {
20
22
  "access": "public"
@@ -27,7 +29,7 @@
27
29
  },
28
30
  "main": "./dist/index.js",
29
31
  "types": "./dist/index.d.ts",
30
- "description": "Scaffold Aura3D browser 3D apps for product viewers, cinematic scenes, mini-games, fighting-game runtimes, prompt-driven cartoon channels, cartoon studios, and episode builders.",
32
+ "description": "Scaffold Aura3D browser 3D apps for product viewers, cinematic scenes, mini-games, fighting-game runtimes, prompt-driven animation channels, animation studios, and episode builders.",
31
33
  "keywords": [
32
34
  "create-aura3d",
33
35
  "vite",
@@ -35,10 +37,10 @@
35
37
  "browser-3d",
36
38
  "product-viewer",
37
39
  "fighting-game",
38
- "prompt-cartoon-channel",
39
- "cartoon-studio",
40
+ "prompt-animation-channel",
41
+ "animation-studio",
40
42
  "episode-builder",
41
- "cartoon-animation",
43
+ "animation-animation",
42
44
  "prompt-to-video",
43
45
  "game-runtime",
44
46
  "gltf",
@@ -1,4 +1,12 @@
1
- # Aura3D Cartoon Channel Template
1
+ # Aura3D Animation Channel Template
2
+
3
+ > **Status: example / experimental.** The flagship animation pipeline is the
4
+ > [`animation-studio`](../animation-studio) template. This `animation-channel`
5
+ > template is a contract/example demonstrating the AuraVoice-to-Aura3D handoff.
6
+ > Its release-facing route is `src/sample-episode-visual.ts`. The rejected
7
+ > `notTrue3D` puppet/parallax experiments are quarantined under
8
+ > [`src/experimental/`](./src/experimental) as negative-regression fixtures
9
+ > only and are not wired into any release-facing route or script.
2
10
 
3
11
  This template demonstrates the AuraVoice-to-Aura3D prompt-animation contract.
4
12
 
@@ -14,14 +22,14 @@ It uses:
14
22
  - Primitive-mouth and typed-GLB viseme examples.
15
23
  - Phoneme/viseme/dub source proof metadata for stable shot, storyboard, caption, line, and word timing ids.
16
24
  - A deterministic sample episode visual layer at `/?sampleTime=24` so reviewers
17
- can see a clean cartoon frame sourced from the same shot/caption contract.
18
- - An Aura3D-rendered cartoon scene graph for visual review: moon garden,
25
+ can see a clean animation frame sourced from the same shot/caption contract.
26
+ - An Aura3D-rendered animation scene graph for visual review: moon garden,
19
27
  stylized robot characters, props, lights, camera, captions, and typed GLB
20
28
  character asset evidence through `src/aura-assets.ts`.
21
29
  - A release-facing route that deliberately ignores the rejected
22
30
  `concept-2-5d`, `puppet-2d`, and `image-puppet` query views. Those earlier
23
31
  experiments remain only as negative evidence: still-image parallax, flat
24
- cutout motion, and `notTrue3D` proof are not accepted as Aura3D 1.1 cartoon
32
+ cutout motion, and `notTrue3D` proof are not accepted as Aura3D 1.1 animation
25
33
  animation readiness.
26
34
 
27
35
  Replace primitive characters with typed GLB assets by running:
@@ -29,7 +37,7 @@ Replace primitive characters with typed GLB assets by running:
29
37
  ```bash
30
38
  npx @aura3d/cli@latest assets add ./assets/miko.glb --name miko
31
39
  npx @aura3d/cli@latest assets add ./assets/luma.glb --name luma
32
- npx @aura3d/cli@latest assets validate-cartoon
40
+ npx @aura3d/cli@latest assets validate-animation
33
41
  ```
34
42
 
35
43
  Then import `assets.miko` and `assets.luma` from `src/aura-assets.ts` and pass them to `model(assets.miko)` and `model(assets.luma)`.
@@ -54,7 +62,7 @@ npm test
54
62
  The visual test captures a review frame at:
55
63
 
56
64
  ```text
57
- tests/reports/prompt-animation/cartoon-sample-episode.png
65
+ tests/reports/prompt-animation/animation-sample-episode.png
58
66
  ```
59
67
 
60
68
  Run the failed-puppet negative gate:
@@ -65,16 +73,18 @@ npm run test:negative-failed-puppets
65
73
 
66
74
  That gate proves the old `?view=concept-2-5d`, `?view=puppet-2d`, and
67
75
  `?view=image-puppet` query strings fall back to the supported sample episode
68
- route and do not expose release-facing puppet/parallax proof objects.
76
+ route and do not expose release-facing puppet/parallax proof objects. The
77
+ rejected experiment modules themselves live under `src/experimental/` (see
78
+ `src/experimental/README.md`) and are never imported by the app.
69
79
 
70
- Do not use `tests/reports/prompt-animation/cartoon-image-puppet-animation.webm`
71
- or the old 2.5D/cutout routes as product evidence. Aura3D's accepted cartoon
80
+ Do not use `tests/reports/prompt-animation/animation-image-puppet-animation.webm`
81
+ or the old 2.5D/cutout routes as product evidence. Aura3D's accepted animation
72
82
  animation proof must come from typed assets or explicitly segmented rigs with
73
83
  independent body-region motion, caption timing, visible mouth movement, and
74
84
  render/package evidence.
75
85
 
76
86
  This scaffold intentionally does not claim publish readiness from source alone.
77
87
  Before closing build, route, asset, screenshot, render, or visual-quality gates,
78
- archive the matching `npm run build`, `assets validate-cartoon`, browser
88
+ archive the matching `npm run build`, `assets validate-animation`, browser
79
89
  evidence, screenshot hashes, render outputs, and human or automated review
80
90
  artifacts.
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>Aura3D Cartoon Studio</title>
6
+ <title>Aura3D Animation Channel</title>
7
7
  </head>
8
8
  <body>
9
9
  <div id="app"></div>
@@ -1,5 +1,5 @@
1
1
  {
2
- "name": "aura3d-cartoon-channel",
2
+ "name": "aura3d-animation-channel",
3
3
  "version": "0.1.0",
4
4
  "private": true,
5
5
  "type": "module",
@@ -12,7 +12,7 @@
12
12
  "test:negative-failed-puppets": "playwright test tests/concept-2-5d.spec.ts tests/puppet-2d.spec.ts tests/image-puppet.spec.ts tests/concept-2-5d-animation.spec.ts tests/puppet-2d-animation.spec.ts tests/image-puppet-animation.spec.ts --workers=1"
13
13
  },
14
14
  "dependencies": {
15
- "@aura3d/engine": "1.1.0"
15
+ "@aura3d/engine": "1.3.0"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@playwright/test": "^1.52.0",
@@ -4,37 +4,37 @@ import { AURAVOICE_AURA3D_PROMPT_ANIMATION_CONTRACT_ID } from "./contract";
4
4
 
5
5
  export const episodeContractId = AURAVOICE_AURA3D_PROMPT_ANIMATION_CONTRACT_ID;
6
6
 
7
- export type CartoonAssetKey = "miko" | "luma" | "glowBroom" | "glowStones" | "moonLilies";
7
+ export type AnimationAssetKey = "miko" | "luma" | "glowBroom" | "glowStones" | "moonLilies";
8
8
 
9
- type TypedCartoonAssets = Partial<Record<CartoonAssetKey, AuraAssetRef<"model">>>;
9
+ type TypedAnimationAssets = Partial<Record<AnimationAssetKey, AuraAssetRef<"model">>>;
10
10
 
11
- const typedCartoonAssets = assets as TypedCartoonAssets;
11
+ const typedAnimationAssets = assets as TypedAnimationAssets;
12
12
 
13
- export const requiredCartoonCharacterAssets = ["miko", "luma"] as const;
14
- export const optionalCartoonPropAssets = ["glowBroom", "glowStones", "moonLilies"] as const;
15
- export const publicCartoonAssetInstructions = [
13
+ export const requiredAnimationCharacterAssets = ["miko", "luma"] as const;
14
+ export const optionalAnimationPropAssets = ["glowBroom", "glowStones", "moonLilies"] as const;
15
+ export const publicAnimationAssetInstructions = [
16
16
  "npx @aura3d/cli@latest assets add ./assets/miko.glb --name miko",
17
17
  "npx @aura3d/cli@latest assets add ./assets/luma.glb --name luma",
18
- "npx @aura3d/cli@latest assets validate-cartoon"
18
+ "npx @aura3d/cli@latest assets validate-animation"
19
19
  ] as const;
20
20
 
21
- export const missingCartoonCharacterAssets = requiredCartoonCharacterAssets.filter((key) => !typedCartoonAssets[key]);
22
- export const typedCartoonAssetSummary = {
23
- requiredCharacterAssets: requiredCartoonCharacterAssets,
24
- optionalPropAssets: optionalCartoonPropAssets,
25
- typedCharacterAssetCount: requiredCartoonCharacterAssets.length - missingCartoonCharacterAssets.length,
26
- missingCharacterAssets: missingCartoonCharacterAssets
21
+ export const missingAnimationCharacterAssets = requiredAnimationCharacterAssets.filter((key) => !typedAnimationAssets[key]);
22
+ export const typedAnimationAssetSummary = {
23
+ requiredCharacterAssets: requiredAnimationCharacterAssets,
24
+ optionalPropAssets: optionalAnimationPropAssets,
25
+ typedCharacterAssetCount: requiredAnimationCharacterAssets.length - missingAnimationCharacterAssets.length,
26
+ missingCharacterAssets: missingAnimationCharacterAssets
27
27
  } as const;
28
28
 
29
- function typedAsset(key: CartoonAssetKey): AuraAssetRef<"model"> | undefined {
30
- return typedCartoonAssets[key];
29
+ function typedAsset(key: AnimationAssetKey): AuraAssetRef<"model"> | undefined {
30
+ return typedAnimationAssets[key];
31
31
  }
32
32
 
33
33
  export const youtubeDraftMetadata = {
34
34
  contractId: episodeContractId,
35
- title: "Moon Garden Cleanup | Aura3D Cartoon Channel",
35
+ title: "Moon Garden Cleanup | Aura3D Animation Channel",
36
36
  description: "Two tiny robots clean a glowing moon garden with soft captions and reduced-flash visuals.",
37
- tags: ["Aura3D", "kids cartoon", "moon garden", "robots"],
37
+ tags: ["Aura3D", "kids animation", "moon garden", "robots"],
38
38
  madeForKids: true,
39
39
  thumbnailCaptureTime: 10,
40
40
  defaultLanguage: "en",
@@ -77,15 +77,15 @@ export const episodeSampleDescription = {
77
77
  shotCount: 3,
78
78
  speakingCharacters: ["miko", "luma"],
79
79
  captionSource: "captions are derived one-to-one from the AuraVoice dialogue track",
80
- performanceSource: "body, facial, gesture, blocking, and gaze cues are generated from the cartoon director",
80
+ performanceSource: "body, facial, gesture, blocking, and gaze cues are generated from the animation director",
81
81
  musicAmbience: ["music:moon-garden-lullaby", "ambience:moon-garden-night"],
82
82
  sfxCue: "sfx:glow-stone-chime",
83
83
  thumbnailCaptureTime: youtubeDraftMetadata.thumbnailCaptureTime,
84
84
  thumbnailSource: "same Aura3D scene state and AuraVoice timestamp as the render queue capture",
85
85
  typedAssetSource: "./src/aura-assets",
86
- requiredTypedAssets: requiredCartoonCharacterAssets,
87
- missingTypedAssets: missingCartoonCharacterAssets,
88
- assetCommands: publicCartoonAssetInstructions,
86
+ requiredTypedAssets: requiredAnimationCharacterAssets,
87
+ missingTypedAssets: missingAnimationCharacterAssets,
88
+ assetCommands: publicAnimationAssetInstructions,
89
89
  reviewPackageRequiredPaths: ["video", "captions", "thumbnail", "timeline", "audio-stems", "evidence-json", "youtube-draft-metadata"],
90
90
  accessibilityProof: ["captions", "reduced motion", "high contrast"]
91
91
  } as const;
@@ -167,7 +167,7 @@ export const episode = compilePromptEpisodePlan({
167
167
  }
168
168
  ],
169
169
  styleGuide: {
170
- visualStyle: "rounded bedtime sci-fi cartoon with toy-like robot silhouettes",
170
+ visualStyle: "rounded bedtime sci-fi animation with toy-like robot silhouettes",
171
171
  palette: ["#081b2a", "#7de2ff", "#ffe18e", "#40ffbf", "#f8fff2"],
172
172
  shapeLanguage: "circles, capsules, crescent props, and chunky moon-garden forms",
173
173
  lighting: "soft blue night key, warm prop glows, no hard flashes",
@@ -0,0 +1,24 @@
1
+ # Quarantined experiments (negative-regression fixtures only)
2
+
3
+ These three modules are **rejected** Aura3D 1.0.10 animation experiments. They are
4
+ kept here as historical / negative evidence only. They are **NOT** imported by
5
+ `src/main.ts`, `index.html`, or any release-facing route, and they are **NOT**
6
+ referenced by any release-facing npm script.
7
+
8
+ | File | Rejected approach | Why it was rejected |
9
+ |---|---|---|
10
+ | `concept-episode-2-5d.ts` | 2.5D still-image parallax | `notTrue3D: true` — parallax over a flat image is not real 3D animation animation |
11
+ | `puppet-episode-2d.ts` | Flat 2D cutout puppet motion | `notTrue3D: true` — flat cutout motion is not real 3D animation animation |
12
+ | `image-puppet-episode.ts` | Image-derived cutout puppet | `notTrue3D: true` — still-image cutout proof is not accepted readiness |
13
+
14
+ The flagship/production animation pipeline is the **`animation-studio`** template.
15
+ This `animation-channel` template is an example; its release-facing route is
16
+ `src/sample-episode-visual.ts`.
17
+
18
+ The negative-regression Playwright specs
19
+ (`tests/{concept-2-5d,puppet-2d,image-puppet}*.spec.ts`) prove that the old
20
+ `?view=concept-2-5d`, `?view=puppet-2d`, and `?view=image-puppet` query strings
21
+ fall back to the supported sample-episode route and never mount these views or
22
+ expose their proof objects. Those specs do **not** import the modules in this
23
+ folder — they assert the views are absent. Do not wire these modules back into
24
+ the app.
@@ -1,14 +1,14 @@
1
- body[data-cartoon-view="concept-2-5d"] {
1
+ body[data-animation-view="concept-2-5d"] {
2
2
  background:
3
3
  radial-gradient(circle at 50% 22%, rgba(169, 255, 225, 0.16), transparent 34%),
4
4
  linear-gradient(180deg, #081118 0%, #11241f 56%, #081216 100%);
5
5
  }
6
6
 
7
- body[data-cartoon-view="concept-2-5d"] #caption-overlay {
7
+ body[data-animation-view="concept-2-5d"] #caption-overlay {
8
8
  display: none !important;
9
9
  }
10
10
 
11
- body[data-cartoon-view="concept-2-5d"] #app {
11
+ body[data-animation-view="concept-2-5d"] #app {
12
12
  opacity: 0;
13
13
  }
14
14
 
@@ -1,9 +1,9 @@
1
- import { episode, episodeSampleDescription, youtubeDraftMetadata } from "./episode";
2
- import type { CartoonRouteSampleForVisual } from "./sample-episode-visual";
1
+ import { episode, episodeSampleDescription, youtubeDraftMetadata } from "../episode";
2
+ import type { AnimationRouteSampleForVisual } from "../sample-episode-visual";
3
3
  import "./concept-episode-2-5d.css";
4
4
 
5
5
  export interface ConceptEpisode2_5DOptions {
6
- readonly sampleAt: (time: number) => CartoonRouteSampleForVisual;
6
+ readonly sampleAt: (time: number) => AnimationRouteSampleForVisual;
7
7
  readonly duration: number;
8
8
  readonly fixedTime?: number;
9
9
  }
@@ -17,7 +17,7 @@ export interface ConceptEpisode2_5DProof {
17
17
  readonly sourceImage: string;
18
18
  readonly notTrue3D: true;
19
19
  readonly screenshotTarget: "#concept-episode-2-5d";
20
- readonly sample: CartoonRouteSampleForVisual;
20
+ readonly sample: AnimationRouteSampleForVisual;
21
21
  readonly parallax: number;
22
22
  readonly layers: readonly {
23
23
  readonly id: string;
@@ -38,11 +38,11 @@ const layers = [
38
38
  ] as const;
39
39
 
40
40
  export function installConceptEpisode2_5D(options: ConceptEpisode2_5DOptions) {
41
- document.body.dataset.cartoonView = "concept-2-5d";
41
+ document.body.dataset.animationView = "concept-2-5d";
42
42
  const root = document.createElement("section");
43
43
  root.id = "concept-episode-2-5d";
44
44
  root.className = "concept-2-5d";
45
- root.setAttribute("aria-label", "Aura3D 2.5D cartoon concept episode preview");
45
+ root.setAttribute("aria-label", "Aura3D 2.5D animation concept episode preview");
46
46
  root.innerHTML = `
47
47
  <div class="concept-2-5d__frame">
48
48
  <div class="concept-2-5d__layer concept-2-5d__layer--far" data-layer-id="far-background" aria-hidden="true"></div>
@@ -101,7 +101,7 @@ export function installConceptEpisode2_5D(options: ConceptEpisode2_5DOptions) {
101
101
  progress.style.setProperty("--progress", `${progressPercent}%`);
102
102
  }
103
103
 
104
- window.__AURA3D_CARTOON_2_5D_PROOF__ = {
104
+ window.__AURA3D_ANIMATION_2_5D_PROOF__ = {
105
105
  contractId: episodeSampleDescription.contractId,
106
106
  episodeId: episode.episodePlan.episodeId,
107
107
  title: episode.episodePlan.title,
@@ -145,7 +145,7 @@ export function installConceptEpisode2_5D(options: ConceptEpisode2_5DOptions) {
145
145
 
146
146
  declare global {
147
147
  interface Window {
148
- __AURA3D_CARTOON_2_5D_PROOF__?: ConceptEpisode2_5DProof;
148
+ __AURA3D_ANIMATION_2_5D_PROOF__?: ConceptEpisode2_5DProof;
149
149
  }
150
150
  }
151
151
 
@@ -1,15 +1,15 @@
1
- body[data-cartoon-view="image-puppet"] {
1
+ body[data-animation-view="image-puppet"] {
2
2
  background:
3
3
  radial-gradient(circle at 50% 20%, rgba(115, 225, 255, 0.12), transparent 34%),
4
4
  linear-gradient(180deg, #06101d 0%, #102820 58%, #07100f 100%);
5
5
  }
6
6
 
7
- body[data-cartoon-view="image-puppet"] #caption-overlay,
8
- body[data-cartoon-view="image-puppet"] .aura-diagnostics-overlay {
7
+ body[data-animation-view="image-puppet"] #caption-overlay,
8
+ body[data-animation-view="image-puppet"] .aura-diagnostics-overlay {
9
9
  display: none !important;
10
10
  }
11
11
 
12
- body[data-cartoon-view="image-puppet"] #app {
12
+ body[data-animation-view="image-puppet"] #app {
13
13
  opacity: 0;
14
14
  }
15
15
 
@@ -1,9 +1,9 @@
1
- import { episode, episodeSampleDescription } from "./episode";
2
- import type { CartoonRouteSampleForVisual } from "./sample-episode-visual";
1
+ import { episode, episodeSampleDescription } from "../episode";
2
+ import type { AnimationRouteSampleForVisual } from "../sample-episode-visual";
3
3
  import "./image-puppet-episode.css";
4
4
 
5
5
  export interface ImagePuppetEpisodeOptions {
6
- readonly sampleAt: (time: number) => CartoonRouteSampleForVisual;
6
+ readonly sampleAt: (time: number) => AnimationRouteSampleForVisual;
7
7
  readonly duration: number;
8
8
  readonly fixedTime?: number;
9
9
  }
@@ -18,7 +18,7 @@ export interface ImagePuppetEpisodeProof {
18
18
  readonly sourcePixelsAnimated: true;
19
19
  readonly notTrue3D: true;
20
20
  readonly screenshotTarget: "#image-puppet-episode";
21
- readonly sample: CartoonRouteSampleForVisual;
21
+ readonly sample: AnimationRouteSampleForVisual;
22
22
  readonly movingCutouts: readonly string[];
23
23
  readonly limitations: readonly string[];
24
24
  }
@@ -35,7 +35,7 @@ const movingCutouts = [
35
35
  ] as const;
36
36
 
37
37
  export function installImagePuppetEpisode(options: ImagePuppetEpisodeOptions) {
38
- document.body.dataset.cartoonView = "image-puppet";
38
+ document.body.dataset.animationView = "image-puppet";
39
39
  const root = document.createElement("section");
40
40
  root.id = "image-puppet-episode";
41
41
  root.className = "image-puppet";
@@ -96,7 +96,7 @@ export function installImagePuppetEpisode(options: ImagePuppetEpisodeOptions) {
96
96
  progress.style.setProperty("--progress", `${progressPercent}%`);
97
97
  }
98
98
 
99
- window.__AURA3D_CARTOON_IMAGE_PUPPET_PROOF__ = {
99
+ window.__AURA3D_ANIMATION_IMAGE_PUPPET_PROOF__ = {
100
100
  contractId: episodeSampleDescription.contractId,
101
101
  episodeId: episode.episodePlan.episodeId,
102
102
  title: episode.episodePlan.title,
@@ -129,7 +129,7 @@ export function installImagePuppetEpisode(options: ImagePuppetEpisodeOptions) {
129
129
 
130
130
  declare global {
131
131
  interface Window {
132
- __AURA3D_CARTOON_IMAGE_PUPPET_PROOF__?: ImagePuppetEpisodeProof;
132
+ __AURA3D_ANIMATION_IMAGE_PUPPET_PROOF__?: ImagePuppetEpisodeProof;
133
133
  }
134
134
  }
135
135
 
@@ -1,14 +1,14 @@
1
- body[data-cartoon-view="puppet-2d"] {
1
+ body[data-animation-view="puppet-2d"] {
2
2
  background:
3
3
  radial-gradient(circle at 50% 20%, rgba(115, 225, 255, 0.14), transparent 34%),
4
4
  linear-gradient(180deg, #06101d 0%, #102820 58%, #07100f 100%);
5
5
  }
6
6
 
7
- body[data-cartoon-view="puppet-2d"] #caption-overlay {
7
+ body[data-animation-view="puppet-2d"] #caption-overlay {
8
8
  display: none !important;
9
9
  }
10
10
 
11
- body[data-cartoon-view="puppet-2d"] #app {
11
+ body[data-animation-view="puppet-2d"] #app {
12
12
  opacity: 0;
13
13
  }
14
14
 
@@ -1,9 +1,9 @@
1
- import { episode, episodeSampleDescription, youtubeDraftMetadata } from "./episode";
2
- import type { CartoonRouteSampleForVisual } from "./sample-episode-visual";
1
+ import { episode, episodeSampleDescription, youtubeDraftMetadata } from "../episode";
2
+ import type { AnimationRouteSampleForVisual } from "../sample-episode-visual";
3
3
  import "./puppet-episode-2d.css";
4
4
 
5
5
  export interface PuppetEpisode2DOptions {
6
- readonly sampleAt: (time: number) => CartoonRouteSampleForVisual;
6
+ readonly sampleAt: (time: number) => AnimationRouteSampleForVisual;
7
7
  readonly duration: number;
8
8
  readonly fixedTime?: number;
9
9
  }
@@ -17,7 +17,7 @@ export interface PuppetEpisode2DProof {
17
17
  readonly sourceImage: string;
18
18
  readonly notTrue3D: true;
19
19
  readonly screenshotTarget: "#puppet-episode-2d";
20
- readonly sample: CartoonRouteSampleForVisual;
20
+ readonly sample: AnimationRouteSampleForVisual;
21
21
  readonly animatedParts: readonly string[];
22
22
  readonly aura3dRole: readonly string[];
23
23
  readonly limitations: readonly string[];
@@ -39,11 +39,11 @@ const animatedParts = [
39
39
  ] as const;
40
40
 
41
41
  export function installPuppetEpisode2D(options: PuppetEpisode2DOptions) {
42
- document.body.dataset.cartoonView = "puppet-2d";
42
+ document.body.dataset.animationView = "puppet-2d";
43
43
  const root = document.createElement("section");
44
44
  root.id = "puppet-episode-2d";
45
45
  root.className = "puppet-episode";
46
- root.setAttribute("aria-label", "Aura3D 2D puppet cartoon animation over moon garden concept art");
46
+ root.setAttribute("aria-label", "Aura3D 2D puppet animation animation over moon garden concept art");
47
47
  root.innerHTML = `
48
48
  <div class="puppet-episode__frame">
49
49
  <div class="puppet-episode__backdrop" aria-hidden="true"></div>
@@ -135,7 +135,7 @@ export function installPuppetEpisode2D(options: PuppetEpisode2DOptions) {
135
135
  progress.style.setProperty("--progress", `${progressPercent}%`);
136
136
  }
137
137
 
138
- window.__AURA3D_CARTOON_2D_PUPPET_PROOF__ = {
138
+ window.__AURA3D_ANIMATION_2D_PUPPET_PROOF__ = {
139
139
  contractId: episodeSampleDescription.contractId,
140
140
  episodeId: episode.episodePlan.episodeId,
141
141
  title: episode.episodePlan.title,
@@ -179,7 +179,7 @@ export function installPuppetEpisode2D(options: PuppetEpisode2DOptions) {
179
179
 
180
180
  declare global {
181
181
  interface Window {
182
- __AURA3D_CARTOON_2D_PUPPET_PROOF__?: PuppetEpisode2DProof;
182
+ __AURA3D_ANIMATION_2D_PUPPET_PROOF__?: PuppetEpisode2DProof;
183
183
  }
184
184
  }
185
185