create-aura3d 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +0 -0
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/templates/cartoon-channel/README.md +11 -1
- package/templates/cartoon-channel/package.json +1 -1
- package/templates/cartoon-channel/src/experimental/README.md +24 -0
- package/templates/cartoon-channel/src/{concept-episode-2-5d.ts → experimental/concept-episode-2-5d.ts} +2 -2
- package/templates/cartoon-channel/src/{image-puppet-episode.ts → experimental/image-puppet-episode.ts} +2 -2
- package/templates/cartoon-channel/src/{puppet-episode-2d.ts → experimental/puppet-episode-2d.ts} +2 -2
- package/templates/cartoon-studio/ASSET-LICENSES.md +41 -0
- package/templates/cartoon-studio/aura.assets.json +321 -78
- package/templates/cartoon-studio/live-route.html +12 -0
- package/templates/cartoon-studio/package-lock.json +2251 -0
- package/templates/cartoon-studio/package.json +6 -5
- package/templates/cartoon-studio/public/aura-assets/luma.authored.glb +0 -0
- package/templates/cartoon-studio/public/aura-assets/miko.authored.glb +0 -0
- package/templates/cartoon-studio/scripts/build-characters.ts +738 -0
- package/templates/cartoon-studio/scripts/build-dialogue-audio.ts +262 -0
- package/templates/cartoon-studio/scripts/episode.ts +48 -1
- package/templates/cartoon-studio/scripts/render-live.ts +873 -0
- package/templates/cartoon-studio/scripts/validate-characters.ts +0 -0
- package/templates/cartoon-studio/src/aura-assets.ts +15 -12
- package/templates/cartoon-studio/src/main.ts +84 -17
- package/templates/cartoon-studio/src/render-live-route.ts +913 -0
- package/templates/cartoon-studio/tsconfig.json +3 -1
- package/templates/cartoon-studio/vite.config.ts +13 -0
- package/templates/cinematic-scene/package.json +1 -1
- package/templates/episode-builder/README.md +4 -0
- package/templates/episode-builder/package.json +1 -1
- package/templates/fighting-game/README.md +16 -0
- package/templates/fighting-game/package.json +1 -1
- package/templates/mini-game/package.json +1 -1
- package/templates/product-viewer/package.json +1 -1
- package/templates/prompt-cartoon-channel/README.md +4 -0
- package/templates/prompt-cartoon-channel/package.json +1 -1
- package/templates/cartoon-studio/public/aura-assets/luma.047f5e5f.glb +0 -0
- package/templates/cartoon-studio/public/aura-assets/luma.humanoid-fixture.glb +0 -0
- package/templates/cartoon-studio/public/aura-assets/miko.047f5e5f.glb +0 -0
- /package/templates/cartoon-channel/src/{concept-episode-2-5d.css → experimental/concept-episode-2-5d.css} +0 -0
- /package/templates/cartoon-channel/src/{image-puppet-episode.css → experimental/image-puppet-episode.css} +0 -0
- /package/templates/cartoon-channel/src/{puppet-episode-2d.css → experimental/puppet-episode-2d.css} +0 -0
package/dist/cli.js
CHANGED
|
File without changes
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,7 @@ export const CREATE_AURA3D_TEMPLATES = [
|
|
|
9
9
|
"cartoon-channel",
|
|
10
10
|
"prompt-cartoon-channel",
|
|
11
11
|
"cartoon-studio",
|
|
12
|
-
"episode-builder"
|
|
12
|
+
"episode-builder",
|
|
13
13
|
];
|
|
14
14
|
export function createA3DProject(options) {
|
|
15
15
|
const template = options.template ?? "product-viewer";
|
package/package.json
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Aura3D Cartoon Channel Template
|
|
2
2
|
|
|
3
|
+
> **Status: example / experimental.** The flagship cartoon pipeline is the
|
|
4
|
+
> [`cartoon-studio`](../cartoon-studio) template. This `cartoon-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.
|
|
10
|
+
|
|
3
11
|
This template demonstrates the AuraVoice-to-Aura3D prompt-animation contract.
|
|
4
12
|
|
|
5
13
|
It uses:
|
|
@@ -65,7 +73,9 @@ 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
80
|
Do not use `tests/reports/prompt-animation/cartoon-image-puppet-animation.webm`
|
|
71
81
|
or the old 2.5D/cutout routes as product evidence. Aura3D's accepted cartoon
|
|
@@ -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.0
|
|
15
|
+
"@aura3d/engine": "1.1.0"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"@playwright/test": "^1.52.0",
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Quarantined experiments (negative-regression fixtures only)
|
|
2
|
+
|
|
3
|
+
These three modules are **rejected** Aura3D 1.0.10 cartoon 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 cartoon animation |
|
|
11
|
+
| `puppet-episode-2d.ts` | Flat 2D cutout puppet motion | `notTrue3D: true` — flat cutout motion is not real 3D cartoon 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 cartoon pipeline is the **`cartoon-studio`** template.
|
|
15
|
+
This `cartoon-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,5 +1,5 @@
|
|
|
1
|
-
import { episode, episodeSampleDescription, youtubeDraftMetadata } from "
|
|
2
|
-
import type { CartoonRouteSampleForVisual } from "
|
|
1
|
+
import { episode, episodeSampleDescription, youtubeDraftMetadata } from "../episode";
|
|
2
|
+
import type { CartoonRouteSampleForVisual } from "../sample-episode-visual";
|
|
3
3
|
import "./concept-episode-2-5d.css";
|
|
4
4
|
|
|
5
5
|
export interface ConceptEpisode2_5DOptions {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { episode, episodeSampleDescription } from "
|
|
2
|
-
import type { CartoonRouteSampleForVisual } from "
|
|
1
|
+
import { episode, episodeSampleDescription } from "../episode";
|
|
2
|
+
import type { CartoonRouteSampleForVisual } from "../sample-episode-visual";
|
|
3
3
|
import "./image-puppet-episode.css";
|
|
4
4
|
|
|
5
5
|
export interface ImagePuppetEpisodeOptions {
|
package/templates/cartoon-channel/src/{puppet-episode-2d.ts → experimental/puppet-episode-2d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { episode, episodeSampleDescription, youtubeDraftMetadata } from "
|
|
2
|
-
import type { CartoonRouteSampleForVisual } from "
|
|
1
|
+
import { episode, episodeSampleDescription, youtubeDraftMetadata } from "../episode";
|
|
2
|
+
import type { CartoonRouteSampleForVisual } from "../sample-episode-visual";
|
|
3
3
|
import "./puppet-episode-2d.css";
|
|
4
4
|
|
|
5
5
|
export interface PuppetEpisode2DOptions {
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Cartoon Studio — Asset Licenses & Provenance
|
|
2
|
+
|
|
3
|
+
> **Honesty note:** the two character assets (`miko`, `luma`) are now **Aura3D-authored,
|
|
4
|
+
> procedurally generated CC0 cartoon characters** — genuine authored rigged GLBs with a
|
|
5
|
+
> real face blendshape — that REPLACE the former reused three.js RobotExpressive + Mixamo
|
|
6
|
+
> Soldier placeholders. They are simple, low-poly, stylized helper robots (not finished
|
|
7
|
+
> production hero art); a commercial release would still benefit from art-directed
|
|
8
|
+
> modeling/texturing. The **set/prop** assets remain development placeholders.
|
|
9
|
+
|
|
10
|
+
## Bundled assets (`public/aura-assets/`)
|
|
11
|
+
|
|
12
|
+
| Asset | File | What it actually is | License / provenance | Status |
|
|
13
|
+
|---|---|---|---|---|
|
|
14
|
+
| `miko` | `miko.authored.glb` | **Aura3D-authored procedural** cartoon helper robot (rounded, cyan). Skinned low-poly mesh, 7-joint skeleton (root/spine/head + 2 arms + 2 legs), clips `Idle/Wave/Walk`, and ONE real `mouthOpen` face blendshape (lower-lip drop) that drives lip-sync in pixels. Generated by `scripts/build-characters.ts`; verified to load through the engine GLTF loader by `scripts/validate-characters.ts`. | **CC0-1.0**, authored by Aura3D (no third-party source) | Authored — distinct stylized "Miko" |
|
|
15
|
+
| `luma` | `luma.authored.glb` | **Aura3D-authored procedural** cartoon helper robot (taller, warm-gold). Same rig/clip/morph structure as Miko, visibly different proportions + color. | **CC0-1.0**, authored by Aura3D (no third-party source) | Authored — distinct stylized "Luma" |
|
|
16
|
+
| `moonGarden` | `moonGarden.gltf` | 3-quad anchor stub (floor / glow-stone / skyline markers) — not real garden geometry | Aura3D starter stub, **MIT** | Placeholder — the live-3D route builds a primitive garden instead |
|
|
17
|
+
|
|
18
|
+
> The previous placeholders `miko.047f5e5f.glb` (three.js RobotExpressive, CC0) and
|
|
19
|
+
> `luma.humanoid-fixture.glb` (Mixamo Vanguard) are no longer referenced by the live route
|
|
20
|
+
> or `aura.assets.json`.
|
|
21
|
+
|
|
22
|
+
## Catalog / starter pack
|
|
23
|
+
The `@aura3d/asset-index` cartoon starter pack maps to **Kenney CC0** game-kit GLBs
|
|
24
|
+
(`cdn.jsdelivr.net/gh/gchahal1982/aura3d-cc0-assets`). These are generic blocks (e.g.
|
|
25
|
+
"moon-garden" → a grass cube), suitable as license-clean filler, not art-directed cartoon assets.
|
|
26
|
+
|
|
27
|
+
## Live-3D render path (`episode:render-3d`)
|
|
28
|
+
The real-3D path (`src/render-live-route.ts`) loads the two **Aura3D-authored** rigged GLBs
|
|
29
|
+
above, skins + animates them, and drives the `mouthOpen` blendshape from the sampled viseme
|
|
30
|
+
mouthOpenness for real geometric lip-sync (the former primitive mouth-card is gone). The
|
|
31
|
+
garden set around them is still engine-built **primitive** geometry (moon orb, glow stones,
|
|
32
|
+
lilies, broom) — procedural primitives/emissive materials, no third-party art.
|
|
33
|
+
|
|
34
|
+
## What "production-licensed" requires
|
|
35
|
+
1. ~~Author/commission rigged **Miko** + **Luma**~~ ✅ **Done** — `miko.authored.glb` /
|
|
36
|
+
`luma.authored.glb` are Aura3D-authored CC0 rigged characters with a `mouthOpen` face
|
|
37
|
+
blendshape for real lip-sync. (Optional polish: upgrade these simple low-poly robots to
|
|
38
|
+
art-directed hero models with textures.)
|
|
39
|
+
2. Author a real **moon-garden set** + props (broom, glow-stones, lilies) or source license-clean equivalents.
|
|
40
|
+
3. Record/synthesize **dialogue audio** (none ships; AuraVoice is timing metadata only).
|
|
41
|
+
4. Re-run `assets validate-cartoon --require-license --no-placeholders` against the new assets and update this file.
|
|
@@ -8,51 +8,147 @@
|
|
|
8
8
|
"id": "luma",
|
|
9
9
|
"type": "model",
|
|
10
10
|
"format": "glb",
|
|
11
|
-
"source": "public/aura-assets/luma.
|
|
12
|
-
"outputPath": "public/aura-assets/luma.
|
|
13
|
-
"url": "/aura-assets/luma.
|
|
14
|
-
"hash": "sha256-
|
|
15
|
-
"sizeBytes":
|
|
16
|
-
"bounds": [
|
|
11
|
+
"source": "public/aura-assets/luma.authored.glb",
|
|
12
|
+
"outputPath": "public/aura-assets/luma.authored.glb",
|
|
13
|
+
"url": "/aura-assets/luma.authored.glb",
|
|
14
|
+
"hash": "sha256-ccfcb4accdf58127337bd0b8f9ae10a160b6365b3a92f85b777476c524c92989",
|
|
15
|
+
"sizeBytes": 20048,
|
|
16
|
+
"bounds": [
|
|
17
|
+
0.62,
|
|
18
|
+
1.94,
|
|
19
|
+
0.34
|
|
20
|
+
],
|
|
17
21
|
"boundsMetadata": {
|
|
18
|
-
"min": [
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
"
|
|
22
|
+
"min": [
|
|
23
|
+
-0.31,
|
|
24
|
+
-0.45,
|
|
25
|
+
-0.17
|
|
26
|
+
],
|
|
27
|
+
"max": [
|
|
28
|
+
0.31,
|
|
29
|
+
1.49,
|
|
30
|
+
0.17
|
|
31
|
+
],
|
|
32
|
+
"size": [
|
|
33
|
+
0.62,
|
|
34
|
+
1.94,
|
|
35
|
+
0.34
|
|
36
|
+
],
|
|
37
|
+
"center": [
|
|
38
|
+
0,
|
|
39
|
+
0.52,
|
|
40
|
+
0
|
|
41
|
+
],
|
|
42
|
+
"maxDimension": 1.94,
|
|
43
|
+
"grounded": false
|
|
24
44
|
},
|
|
25
|
-
"materials": [
|
|
45
|
+
"materials": [
|
|
46
|
+
"luma_body_mat"
|
|
47
|
+
],
|
|
26
48
|
"materialMetadata": [
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
-
|
|
49
|
+
{
|
|
50
|
+
"name": "luma_body_mat",
|
|
51
|
+
"visible": true,
|
|
52
|
+
"readable": true,
|
|
53
|
+
"opacity": 1,
|
|
54
|
+
"alphaMode": "OPAQUE",
|
|
55
|
+
"reasons": []
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"animations": [
|
|
59
|
+
"Idle",
|
|
60
|
+
"Wave",
|
|
61
|
+
"Walk"
|
|
30
62
|
],
|
|
31
|
-
"animations": ["Idle", "Walking", "Wave", "Punch", "Jump"],
|
|
32
63
|
"animationMetadata": {
|
|
33
|
-
"clipCount":
|
|
64
|
+
"clipCount": 3,
|
|
34
65
|
"clips": [
|
|
35
|
-
{
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
66
|
+
{
|
|
67
|
+
"index": 0,
|
|
68
|
+
"name": "Idle",
|
|
69
|
+
"channelCount": 2,
|
|
70
|
+
"samplerCount": 2,
|
|
71
|
+
"targetPaths": [
|
|
72
|
+
"rotation"
|
|
73
|
+
],
|
|
74
|
+
"targetNodes": [
|
|
75
|
+
"spine",
|
|
76
|
+
"head"
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"index": 1,
|
|
81
|
+
"name": "Wave",
|
|
82
|
+
"channelCount": 2,
|
|
83
|
+
"samplerCount": 2,
|
|
84
|
+
"targetPaths": [
|
|
85
|
+
"rotation"
|
|
86
|
+
],
|
|
87
|
+
"targetNodes": [
|
|
88
|
+
"armR",
|
|
89
|
+
"spine"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"index": 2,
|
|
94
|
+
"name": "Walk",
|
|
95
|
+
"channelCount": 5,
|
|
96
|
+
"samplerCount": 5,
|
|
97
|
+
"targetPaths": [
|
|
98
|
+
"rotation",
|
|
99
|
+
"translation"
|
|
100
|
+
],
|
|
101
|
+
"targetNodes": [
|
|
102
|
+
"legL",
|
|
103
|
+
"legR",
|
|
104
|
+
"armL",
|
|
105
|
+
"armR",
|
|
106
|
+
"root"
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
]
|
|
110
|
+
},
|
|
111
|
+
"humanoid": {
|
|
112
|
+
"status": "authored",
|
|
113
|
+
"humanoid": true,
|
|
114
|
+
"boneCount": 7
|
|
115
|
+
},
|
|
116
|
+
"skeleton": {
|
|
117
|
+
"jointCount": 7,
|
|
118
|
+
"skinnedMeshCount": 1
|
|
119
|
+
},
|
|
120
|
+
"morphTargets": {
|
|
121
|
+
"targetCount": 1,
|
|
122
|
+
"targetNames": [
|
|
123
|
+
"mouthOpen"
|
|
40
124
|
]
|
|
41
125
|
},
|
|
42
|
-
"humanoid": { "status": "candidate", "humanoid": true, "boneCount": 10 },
|
|
43
|
-
"skeleton": { "jointCount": 10, "skinnedMeshCount": 1 },
|
|
44
|
-
"morphTargets": { "targetCount": 0, "targetNames": [] },
|
|
45
126
|
"textures": [],
|
|
46
127
|
"dependencies": [],
|
|
47
|
-
"nodeNames": [
|
|
128
|
+
"nodeNames": [
|
|
129
|
+
"luma_mesh",
|
|
130
|
+
"root",
|
|
131
|
+
"spine",
|
|
132
|
+
"head",
|
|
133
|
+
"armL",
|
|
134
|
+
"armR",
|
|
135
|
+
"legL",
|
|
136
|
+
"legR"
|
|
137
|
+
],
|
|
48
138
|
"provenance": {
|
|
49
139
|
"license": "CC0-1.0",
|
|
50
140
|
"author": "Aura3D",
|
|
51
|
-
"sourceFamily": "Aura3D
|
|
52
|
-
"sourcePath": "public/aura-assets/luma.
|
|
53
|
-
"sourceUrl": "https://aura3d.auraone.ai/aura-assets/luma.
|
|
54
|
-
"attribution": "
|
|
55
|
-
"evidence": [
|
|
141
|
+
"sourceFamily": "Aura3D-authored procedural cartoon characters",
|
|
142
|
+
"sourcePath": "public/aura-assets/luma.authored.glb",
|
|
143
|
+
"sourceUrl": "https://aura3d.auraone.ai/aura-assets/luma.authored.glb",
|
|
144
|
+
"attribution": "Aura3D-authored CC0 cartoon helper robot 'Luma' (taller, warm-gold), generated procedurally by scripts/build-characters.ts.",
|
|
145
|
+
"evidence": [
|
|
146
|
+
"cartoon-character",
|
|
147
|
+
"Aura3D-authored procedural GLB (CC0)",
|
|
148
|
+
"rigged skeleton: root/spine/head + 2 arms + 2 legs",
|
|
149
|
+
"Idle/Wave/Walk animation clips",
|
|
150
|
+
"mouthOpen face blendshape (real lip-sync morph)"
|
|
151
|
+
]
|
|
56
152
|
},
|
|
57
153
|
"thumbnailUrl": "/aura-assets/luma.thumb.svg",
|
|
58
154
|
"warnings": []
|
|
@@ -61,54 +157,147 @@
|
|
|
61
157
|
"id": "miko",
|
|
62
158
|
"type": "model",
|
|
63
159
|
"format": "glb",
|
|
64
|
-
"source": "public/aura-assets/miko.
|
|
65
|
-
"outputPath": "public/aura-assets/miko.
|
|
66
|
-
"url": "/aura-assets/miko.
|
|
67
|
-
"hash": "sha256-
|
|
68
|
-
"sizeBytes":
|
|
69
|
-
"bounds": [
|
|
160
|
+
"source": "public/aura-assets/miko.authored.glb",
|
|
161
|
+
"outputPath": "public/aura-assets/miko.authored.glb",
|
|
162
|
+
"url": "/aura-assets/miko.authored.glb",
|
|
163
|
+
"hash": "sha256-15d37c49f79d3f0e7d70f199e058935605802dcb61434cc458684e512486f705",
|
|
164
|
+
"sizeBytes": 20044,
|
|
165
|
+
"bounds": [
|
|
166
|
+
0.66,
|
|
167
|
+
1.47,
|
|
168
|
+
0.43
|
|
169
|
+
],
|
|
70
170
|
"boundsMetadata": {
|
|
71
|
-
"min": [
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"
|
|
171
|
+
"min": [
|
|
172
|
+
-0.33,
|
|
173
|
+
-0.34,
|
|
174
|
+
-0.21
|
|
175
|
+
],
|
|
176
|
+
"max": [
|
|
177
|
+
0.33,
|
|
178
|
+
1.13,
|
|
179
|
+
0.22
|
|
180
|
+
],
|
|
181
|
+
"size": [
|
|
182
|
+
0.66,
|
|
183
|
+
1.47,
|
|
184
|
+
0.43
|
|
185
|
+
],
|
|
186
|
+
"center": [
|
|
187
|
+
0,
|
|
188
|
+
0.39,
|
|
189
|
+
0
|
|
190
|
+
],
|
|
191
|
+
"maxDimension": 1.47,
|
|
192
|
+
"grounded": false
|
|
77
193
|
},
|
|
78
|
-
"materials": [
|
|
194
|
+
"materials": [
|
|
195
|
+
"miko_body_mat"
|
|
196
|
+
],
|
|
79
197
|
"materialMetadata": [
|
|
80
|
-
{
|
|
81
|
-
|
|
82
|
-
|
|
198
|
+
{
|
|
199
|
+
"name": "miko_body_mat",
|
|
200
|
+
"visible": true,
|
|
201
|
+
"readable": true,
|
|
202
|
+
"opacity": 1,
|
|
203
|
+
"alphaMode": "OPAQUE",
|
|
204
|
+
"reasons": []
|
|
205
|
+
}
|
|
206
|
+
],
|
|
207
|
+
"animations": [
|
|
208
|
+
"Idle",
|
|
209
|
+
"Wave",
|
|
210
|
+
"Walk"
|
|
83
211
|
],
|
|
84
|
-
"animations": ["Dance", "Death", "Idle", "Jump", "Punch", "Running", "Walking", "Wave"],
|
|
85
212
|
"animationMetadata": {
|
|
86
|
-
"clipCount":
|
|
213
|
+
"clipCount": 3,
|
|
87
214
|
"clips": [
|
|
88
|
-
{
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
215
|
+
{
|
|
216
|
+
"index": 0,
|
|
217
|
+
"name": "Idle",
|
|
218
|
+
"channelCount": 2,
|
|
219
|
+
"samplerCount": 2,
|
|
220
|
+
"targetPaths": [
|
|
221
|
+
"rotation"
|
|
222
|
+
],
|
|
223
|
+
"targetNodes": [
|
|
224
|
+
"spine",
|
|
225
|
+
"head"
|
|
226
|
+
]
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"index": 1,
|
|
230
|
+
"name": "Wave",
|
|
231
|
+
"channelCount": 2,
|
|
232
|
+
"samplerCount": 2,
|
|
233
|
+
"targetPaths": [
|
|
234
|
+
"rotation"
|
|
235
|
+
],
|
|
236
|
+
"targetNodes": [
|
|
237
|
+
"armR",
|
|
238
|
+
"spine"
|
|
239
|
+
]
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"index": 2,
|
|
243
|
+
"name": "Walk",
|
|
244
|
+
"channelCount": 5,
|
|
245
|
+
"samplerCount": 5,
|
|
246
|
+
"targetPaths": [
|
|
247
|
+
"rotation",
|
|
248
|
+
"translation"
|
|
249
|
+
],
|
|
250
|
+
"targetNodes": [
|
|
251
|
+
"legL",
|
|
252
|
+
"legR",
|
|
253
|
+
"armL",
|
|
254
|
+
"armR",
|
|
255
|
+
"root"
|
|
256
|
+
]
|
|
257
|
+
}
|
|
258
|
+
]
|
|
259
|
+
},
|
|
260
|
+
"humanoid": {
|
|
261
|
+
"status": "authored",
|
|
262
|
+
"humanoid": true,
|
|
263
|
+
"boneCount": 7
|
|
264
|
+
},
|
|
265
|
+
"skeleton": {
|
|
266
|
+
"jointCount": 7,
|
|
267
|
+
"skinnedMeshCount": 1
|
|
268
|
+
},
|
|
269
|
+
"morphTargets": {
|
|
270
|
+
"targetCount": 1,
|
|
271
|
+
"targetNames": [
|
|
272
|
+
"mouthOpen"
|
|
96
273
|
]
|
|
97
274
|
},
|
|
98
|
-
"humanoid": { "status": "candidate", "humanoid": true, "boneCount": 10 },
|
|
99
|
-
"skeleton": { "jointCount": 10, "skinnedMeshCount": 1 },
|
|
100
|
-
"morphTargets": { "targetCount": 1, "targetNames": ["mouthSmile"] },
|
|
101
275
|
"textures": [],
|
|
102
276
|
"dependencies": [],
|
|
103
|
-
"nodeNames": [
|
|
277
|
+
"nodeNames": [
|
|
278
|
+
"miko_mesh",
|
|
279
|
+
"root",
|
|
280
|
+
"spine",
|
|
281
|
+
"head",
|
|
282
|
+
"armL",
|
|
283
|
+
"armR",
|
|
284
|
+
"legL",
|
|
285
|
+
"legR"
|
|
286
|
+
],
|
|
104
287
|
"provenance": {
|
|
105
288
|
"license": "CC0-1.0",
|
|
106
289
|
"author": "Aura3D",
|
|
107
|
-
"sourceFamily": "Aura3D
|
|
108
|
-
"sourcePath": "public/aura-assets/miko.
|
|
109
|
-
"sourceUrl": "https://aura3d.auraone.ai/aura-assets/miko.
|
|
110
|
-
"attribution": "
|
|
111
|
-
"evidence": [
|
|
290
|
+
"sourceFamily": "Aura3D-authored procedural cartoon characters",
|
|
291
|
+
"sourcePath": "public/aura-assets/miko.authored.glb",
|
|
292
|
+
"sourceUrl": "https://aura3d.auraone.ai/aura-assets/miko.authored.glb",
|
|
293
|
+
"attribution": "Aura3D-authored CC0 cartoon helper robot 'Miko' (rounded, cyan), generated procedurally by scripts/build-characters.ts.",
|
|
294
|
+
"evidence": [
|
|
295
|
+
"cartoon-character",
|
|
296
|
+
"Aura3D-authored procedural GLB (CC0)",
|
|
297
|
+
"rigged skeleton: root/spine/head + 2 arms + 2 legs",
|
|
298
|
+
"Idle/Wave/Walk animation clips",
|
|
299
|
+
"mouthOpen face blendshape (real lip-sync morph)"
|
|
300
|
+
]
|
|
112
301
|
},
|
|
113
302
|
"thumbnailUrl": "/aura-assets/miko.thumb.svg",
|
|
114
303
|
"warnings": []
|
|
@@ -122,25 +311,74 @@
|
|
|
122
311
|
"url": "/aura-assets/moonGarden.gltf",
|
|
123
312
|
"hash": "sha256-85a288d6d434cc5c56ac154c3e996c2ad7612791622fc20a339fb647a6d426bd",
|
|
124
313
|
"sizeBytes": 3744,
|
|
125
|
-
"bounds": [
|
|
314
|
+
"bounds": [
|
|
315
|
+
3.2,
|
|
316
|
+
0.6,
|
|
317
|
+
1.2
|
|
318
|
+
],
|
|
126
319
|
"boundsMetadata": {
|
|
127
|
-
"min": [
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
320
|
+
"min": [
|
|
321
|
+
-1.6,
|
|
322
|
+
0,
|
|
323
|
+
-0.6
|
|
324
|
+
],
|
|
325
|
+
"max": [
|
|
326
|
+
1.6,
|
|
327
|
+
0.6,
|
|
328
|
+
0.6
|
|
329
|
+
],
|
|
330
|
+
"size": [
|
|
331
|
+
3.2,
|
|
332
|
+
0.6,
|
|
333
|
+
1.2
|
|
334
|
+
],
|
|
335
|
+
"center": [
|
|
336
|
+
0,
|
|
337
|
+
0.3,
|
|
338
|
+
0
|
|
339
|
+
],
|
|
131
340
|
"maxDimension": 3.2,
|
|
132
341
|
"grounded": true
|
|
133
342
|
},
|
|
134
|
-
"materials": [
|
|
343
|
+
"materials": [
|
|
344
|
+
"soft blue moon path",
|
|
345
|
+
"warm glow stone",
|
|
346
|
+
"distant teal skyline"
|
|
347
|
+
],
|
|
135
348
|
"materialMetadata": [
|
|
136
|
-
{
|
|
137
|
-
|
|
138
|
-
|
|
349
|
+
{
|
|
350
|
+
"name": "soft blue moon path",
|
|
351
|
+
"visible": true,
|
|
352
|
+
"readable": true,
|
|
353
|
+
"opacity": 1,
|
|
354
|
+
"alphaMode": "OPAQUE",
|
|
355
|
+
"reasons": []
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"name": "warm glow stone",
|
|
359
|
+
"visible": true,
|
|
360
|
+
"readable": true,
|
|
361
|
+
"opacity": 1,
|
|
362
|
+
"alphaMode": "OPAQUE",
|
|
363
|
+
"reasons": []
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
"name": "distant teal skyline",
|
|
367
|
+
"visible": true,
|
|
368
|
+
"readable": true,
|
|
369
|
+
"opacity": 1,
|
|
370
|
+
"alphaMode": "OPAQUE",
|
|
371
|
+
"reasons": []
|
|
372
|
+
}
|
|
139
373
|
],
|
|
140
374
|
"animations": [],
|
|
141
375
|
"textures": [],
|
|
142
376
|
"dependencies": [],
|
|
143
|
-
"nodeNames": [
|
|
377
|
+
"nodeNames": [
|
|
378
|
+
"moon garden floor anchor",
|
|
379
|
+
"moon garden glow stone anchor",
|
|
380
|
+
"moon garden skyline anchor"
|
|
381
|
+
],
|
|
144
382
|
"provenance": {
|
|
145
383
|
"license": "MIT",
|
|
146
384
|
"author": "Aura3D",
|
|
@@ -148,7 +386,12 @@
|
|
|
148
386
|
"sourcePath": "public/aura-assets/moonGarden.gltf",
|
|
149
387
|
"sourceUrl": "https://aura3d.auraone.ai/aura-assets/moonGarden.gltf",
|
|
150
388
|
"attribution": "Bundled Aura3D Moon Garden starter set for local cartoon-studio validation.",
|
|
151
|
-
"evidence": [
|
|
389
|
+
"evidence": [
|
|
390
|
+
"cartoon-set",
|
|
391
|
+
"moon garden",
|
|
392
|
+
"walkable set",
|
|
393
|
+
"framing ready"
|
|
394
|
+
]
|
|
152
395
|
},
|
|
153
396
|
"thumbnailUrl": "/aura-assets/moonGarden.thumb.svg",
|
|
154
397
|
"warnings": []
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Aura3D Cartoon Studio — Live 3D Render Route</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body style="margin:0;background:#0b0f1a;">
|
|
9
|
+
<div id="app"></div>
|
|
10
|
+
<script type="module" src="/src/render-live-route.ts"></script>
|
|
11
|
+
</body>
|
|
12
|
+
</html>
|