@bitmagic/cli 0.1.66-dev.1 → 0.1.66-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -1
- package/assets/blender-level/find_blender.py +3 -1
- package/assets/character-rigging/SKILL.md +80 -0
- package/assets/character-rigging/references/articulation.md +55 -0
- package/assets/character-rigging/references/new-rig.md +51 -0
- package/assets/character-rigging/references/repairs.md +44 -0
- package/assets/character-rigging/references/verification.md +49 -0
- package/assets/character-rigging/scripts/rig_tool.py +197 -0
- package/assets/character-skin-authoring/SKILL.md +43 -0
- package/assets/character-skin-authoring/references/exporters.md +134 -0
- package/assets/character-skin-authoring/references/eyes.md +215 -0
- package/assets/character-skin-authoring/references/materials.md +115 -0
- package/assets/character-skin-authoring/references/playground.md +78 -0
- package/assets/character-skin-authoring/references/profiles.md +97 -0
- package/assets/character-skin-authoring/references/projection.md +190 -0
- package/assets/character-skin-authoring/references/regional-detail.md +72 -0
- package/assets/character-skin-authoring/scripts/assemble_character.py +205 -0
- package/assets/character-skin-authoring/scripts/authored_detail.py +47 -0
- package/assets/character-skin-authoring/scripts/authored_surface_patch.py +83 -0
- package/assets/character-skin-authoring/scripts/brow_groom.py +62 -0
- package/assets/character-skin-authoring/scripts/build_face_detail.py +107 -0
- package/assets/character-skin-authoring/scripts/build_surface_candidate.py +28 -0
- package/assets/character-skin-authoring/scripts/canthus_wall.py +57 -0
- package/assets/character-skin-authoring/scripts/character_build.py +54 -0
- package/assets/character-skin-authoring/scripts/eye_assets.py +333 -0
- package/assets/character-skin-authoring/scripts/eye_opening.py +114 -0
- package/assets/character-skin-authoring/scripts/eye_texture.py +35 -0
- package/assets/character-skin-authoring/scripts/eyelid_detail.py +34 -0
- package/assets/character-skin-authoring/scripts/eyelid_morph.py +171 -0
- package/assets/character-skin-authoring/scripts/eyelid_patch.py +173 -0
- package/assets/character-skin-authoring/scripts/face_atlas.py +51 -0
- package/assets/character-skin-authoring/scripts/geometry_repair.py +112 -0
- package/assets/character-skin-authoring/scripts/glb_arrays.py +13 -0
- package/assets/character-skin-authoring/scripts/glb_output.py +21 -0
- package/assets/character-skin-authoring/scripts/inspect_skin_point.py +66 -0
- package/assets/character-skin-authoring/scripts/normal_patch_height.py +38 -0
- package/assets/character-skin-authoring/scripts/prepare_face_reference.py +23 -0
- package/assets/character-skin-authoring/scripts/regional_atlas.py +51 -0
- package/assets/character-skin-authoring/scripts/select_preview.py +90 -0
- package/assets/character-skin-authoring/scripts/skin_views.py +267 -0
- package/assets/character-skin-authoring/scripts/surface_pbr_maps.py +46 -0
- package/assets/character-skin-authoring/scripts/texture_repair.py +98 -0
- package/assets/character-skin-authoring/scripts/vertex_detail_support.py +80 -0
- package/assets/character-skin-authoring/scripts/vision_blend_materials.py +74 -0
- package/assets/character-skin-authoring/scripts/vision_materials.py +276 -0
- package/assets/character-skin-authoring/scripts/workspace_paths.py +18 -0
- package/assets/metahuman/src/work/metahuman/MetaHumanActor.ts +580 -0
- package/assets/metahuman/src/work/metahuman/MetaHumanLabHooks.ts +122 -0
- package/assets/metahuman/src/work/metahuman/MetaHumanMaterials.ts +500 -0
- package/assets/metahuman/src/work/metahuman/MetaHumanSpeech.ts +242 -0
- package/assets/metahuman/src/work/metahuman/StudioEnvironment.ts +142 -0
- package/assets/metahuman/tools/lipsync/make_line.py +181 -0
- package/assets/metahuman/tools/metahuman/README.md +21 -0
- package/assets/metahuman/tools/metahuman/e2e/eval.mjs +34 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/arm-pose-check.js +32 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/bone-displacement.js +26 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/clip-shoulder.js +41 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/grafted-bones.js +11 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/helper-follow-descent.js +38 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/helper-follow-sweep.js +31 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/helper-joints-inspect.js +10 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/outfit-bad-vertices.js +26 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/outfit-body-material.js +7 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/outfit-own-skeleton.js +8 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/shirt-bone-ownership.js +25 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/shirt-edge-stretch.js +26 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/shirt-long-edges.js +23 -0
- package/assets/metahuman/tools/metahuman/e2e/probes/walk-sampler.js +105 -0
- package/assets/metahuman/tools/metahuman/e2e/shot.mjs +125 -0
- package/assets/metahuman/tools/metahuman/e2e/walk-probe.mjs +43 -0
- package/assets/metahuman/tools/metahuman/merge-skeletons.mjs +69 -0
- package/assets/metahuman/tools/metahuman/package.json +13 -0
- package/assets/metahuman/tools/metahuman/prepare.sh +25 -0
- package/assets/metahuman/tools/metahuman/reorder-body-first.mjs +20 -0
- package/assets/metahuman/tools/metahuman/smooth-outfit-weights.mjs +48 -0
- package/assets/metahuman/tools/metahuman/strip-draco.mjs +32 -0
- package/assets/metahuman/tools/metahuman/transfer-skin-weights.mjs +90 -0
- package/dist/assets/voxelize-glb.d.ts +5 -1
- package/dist/assets/voxelize-glb.js +1 -0
- package/dist/assets/voxelize-glb.js.map +1 -1
- package/dist/assets/vxl-summary.js +2 -2
- package/dist/commands/forge.js +3 -1
- package/dist/commands/forge.js.map +1 -1
- package/dist/commands/generate.d.ts +62 -0
- package/dist/commands/generate.js +241 -2
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.js +2 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/judge.js +5 -0
- package/dist/commands/judge.js.map +1 -1
- package/dist/commands/verify.js +7 -0
- package/dist/commands/verify.js.map +1 -1
- package/dist/editor/asset-viewer.js +10 -5
- package/dist/editor/asset-viewer.js.map +1 -1
- package/dist/generate/audio-file.d.ts +6 -0
- package/dist/generate/audio-file.js +42 -0
- package/dist/generate/audio-file.js.map +1 -0
- package/dist/generate/model.js +3 -3
- package/dist/generate/model.js.map +1 -1
- package/dist/generate/music.d.ts +4 -3
- package/dist/generate/music.js +6 -23
- package/dist/generate/music.js.map +1 -1
- package/dist/generate/prop.d.ts +19 -1
- package/dist/generate/prop.js +34 -6
- package/dist/generate/prop.js.map +1 -1
- package/dist/generate/stream.d.ts +20 -0
- package/dist/generate/stream.js +15 -1
- package/dist/generate/stream.js.map +1 -1
- package/dist/scaffold/asset-pipeline-skill-files.js +6 -1
- package/dist/scaffold/asset-pipeline-skill-files.js.map +1 -1
- package/dist/scaffold/character-rigging-skill-files.d.ts +2 -0
- package/dist/scaffold/character-rigging-skill-files.js +17 -0
- package/dist/scaffold/character-rigging-skill-files.js.map +1 -0
- package/dist/scaffold/character-skin-skill-files.d.ts +2 -0
- package/dist/scaffold/character-skin-skill-files.js +49 -0
- package/dist/scaffold/character-skin-skill-files.js.map +1 -0
- package/dist/scaffold/metahuman-skill-files.d.ts +21 -0
- package/dist/scaffold/metahuman-skill-files.js +306 -0
- package/dist/scaffold/metahuman-skill-files.js.map +1 -0
- package/dist/scaffold/project-files.js +28 -19
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/project.js +6 -0
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/skill-files.js +5 -2
- package/dist/scaffold/skill-files.js.map +1 -1
- package/dist/telemetry/command-context.d.ts +23 -0
- package/dist/telemetry/command-context.js +11 -0
- package/dist/telemetry/command-context.js.map +1 -1
- package/dist/telemetry/report.d.ts +1 -0
- package/dist/telemetry/report.js +4 -1
- package/dist/telemetry/report.js.map +1 -1
- package/dist/tools/bundles.js +8 -0
- package/dist/tools/bundles.js.map +1 -1
- package/dist/verify/browser.js +25 -0
- package/dist/verify/browser.js.map +1 -1
- package/dist/verify/categories.d.ts +16 -0
- package/dist/verify/categories.js +51 -0
- package/dist/verify/categories.js.map +1 -0
- package/package.json +10 -7
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `importing-metahumans` skill: an Epic MetaHuman glTF export (UE 5.7, the smorchj/metahuman-to-glb
|
|
3
|
+
* pipeline) brought in as the engine's high-res player — the GLB preparation, the retarget and
|
|
4
|
+
* helper-joint fixes, the material upgrades, lip-sync, and the numeric verification. Distilled from a
|
|
5
|
+
* lab game (Epic's "Bo" preset, September 2026) whose agent met every failure the skill now names by
|
|
6
|
+
* symptom: a model that loads as nothing (Draco), a face and body animating apart (three skeleton
|
|
7
|
+
* copies), arms crossed into the chest (A-pose bind vs Mixamo's T-pose), a shirt torn at the armpits
|
|
8
|
+
* (pose-driven helper joints), hair left behind by a head turn (unskinned cards), tinted skin (rig
|
|
9
|
+
* masks in COLOR_0) and black eyes (the eye shell's UVs).
|
|
10
|
+
*
|
|
11
|
+
* Same contract as `blender-level-skill-files.ts`: a pure function returning file contents,
|
|
12
|
+
* registered in `SHIPPED_SKILLS` (project.ts). The code the skill relies on — the runtime module
|
|
13
|
+
* (`src/work/metahuman/`), the GLB scripts, the lip-sync tool and the verification rig — ships in the
|
|
14
|
+
* package's `assets/metahuman/` and lands at the project root through `bitmagic tools install
|
|
15
|
+
* metahuman` (`tools/bundles.ts`), so the skill only ever names files the package holds
|
|
16
|
+
* (`__tests__/metahuman-assets.test.ts` checks that).
|
|
17
|
+
*
|
|
18
|
+
* Backticks and `${` are escaped for the template literal; `project-files.test.ts` checks the rendered
|
|
19
|
+
* frontmatter and that no escape leaks into the output.
|
|
20
|
+
*/
|
|
21
|
+
export function renderMetaHumanSkill() {
|
|
22
|
+
return `---
|
|
23
|
+
name: importing-metahumans
|
|
24
|
+
description: Bring an Epic MetaHuman (a UE 5.7 glTF export) into this game as the playable, animated, talking high-fidelity character without voxelizing it — prepare the GLB (Draco, one skeleton, body mesh first, garment weights), load it as the engine's high-res player, fix the A-pose retarget and the pose-driven helper joints, keep the hair on the head, upgrade skin / hair / eye materials, add life and lip-sync, and verify with numbers. Use it when a creator asks for a MetaHuman, an Unreal character, a "photoreal" or "highest fidelity" character — or when such a character shows floating hair, crossed arms, split legs, a torn shirt, tinted skin, black eyes, slumped shoulders or sliding feet.
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Importing a MetaHuman
|
|
28
|
+
|
|
29
|
+
A MetaHuman export is a 40–80 MB skinned GLB with 51 ARKit blendshapes, hair as textured cards and a
|
|
30
|
+
UE5 skeleton with hundreds of pose-driven helper joints. The engine can load it as the player's
|
|
31
|
+
**high-res character** and drive it with its own Mixamo locomotion — but the raw export loads as
|
|
32
|
+
nothing (Draco), animates in pieces (three skeleton copies), stands with its arms crossed into its
|
|
33
|
+
chest (A-pose bind), tears its shirt at the armpits (helper joints), leaves its hair behind when it
|
|
34
|
+
turns its head (unskinned cards), and renders with tinted skin and black eyes (rig masks, eye shell).
|
|
35
|
+
Every one of those was met and fixed on Epic's "Bo" preset in a lab game (September 2026); this
|
|
36
|
+
skill is that path, in order, with the tools that do it. Everything it names ships with the CLI:
|
|
37
|
+
|
|
38
|
+
\`\`\`
|
|
39
|
+
bitmagic tools install metahuman
|
|
40
|
+
\`\`\`
|
|
41
|
+
|
|
42
|
+
lands, at the project root:
|
|
43
|
+
|
|
44
|
+
| Path | Does |
|
|
45
|
+
|---|---|
|
|
46
|
+
| \`src/work/metahuman/MetaHumanActor.ts\` | adopts the engine-loaded player model, re-parents the hair cards, fixes the arm retarget, applies the helper-joint policy, blinks / saccades / breathing / head look-at, morph access |
|
|
47
|
+
| \`src/work/metahuman/MetaHumanMaterials.ts\` | upgrades every material by name: skin SSS, hair/brow card atlas, lashes, eyes; hides the export's helper meshes |
|
|
48
|
+
| \`src/work/metahuman/MetaHumanSpeech.ts\` | plays a line and drives the ARKit mouth shapes from mouth cues (+ amplitude fallback); clock-driven mode for the frame recorder |
|
|
49
|
+
| \`src/work/metahuman/StudioEnvironment.ts\` | HDRI image-based lighting that survives the engine's ambient-lighting re-applies; optional separate sky map |
|
|
50
|
+
| \`src/work/metahuman/MetaHumanLabHooks.ts\` | installs \`window.__lab\`, the handle the rigs below drive |
|
|
51
|
+
| \`tools/metahuman/prepare.sh\` + five \`.mjs\` scripts | the GLB preparation, one command (needs Node ≥ 18; \`npm install\` runs on first use) |
|
|
52
|
+
| \`tools/metahuman/e2e/\` | \`shot.mjs\`, \`eval.mjs\`, \`walk-probe.mjs\` and \`probes/\` — headless Chrome stills and measurements |
|
|
53
|
+
| \`tools/lipsync/make_line.py\` | TTS audio → forced alignment → mouth cues (\`assets/speech/<id>.{m4a,json}\`) |
|
|
54
|
+
|
|
55
|
+
Nothing in them is character-specific: the scripts find meshes by the export's naming
|
|
56
|
+
(\`SKM_<name>_FaceMesh\`, \`SKM_<name>_BodyMesh\`, \`<name>_Outfits\`) and the actor classifies materials
|
|
57
|
+
by name. \`tools/metahuman/README.md\` is the index.
|
|
58
|
+
|
|
59
|
+
## 0. Before you start
|
|
60
|
+
|
|
61
|
+
- **WebGPU.** The skin, hair and eye upgrades are TSL node materials on three's WebGPU build (the
|
|
62
|
+
engine default). The WebGL fallback keeps plain glTF PBR with scalar tweaks — acceptable, not
|
|
63
|
+
photoreal. \`bitmagic verify\` prints which backend booted.
|
|
64
|
+
- **Licence.** Since June 2025 Epic allows MetaHumans in non-Unreal products; the export pipeline
|
|
65
|
+
below is MIT. Record both in an \`assets/LICENSES.md\` and check the current MetaHuman terms before
|
|
66
|
+
a commercial release.
|
|
67
|
+
- **Budget.** One character is ~45 MB of GLB plus two 4K atlases. Publish uploads it (step 8). The
|
|
68
|
+
whole cast goes highres with it — highres and block characters never coexist.
|
|
69
|
+
- **Nothing else changes.** \`artStyle\` in \`game.json\` stays whatever the game is; a MetaHuman is a
|
|
70
|
+
loaded file, not a generated asset, and costs no sparks.
|
|
71
|
+
|
|
72
|
+
## 1. Get an export
|
|
73
|
+
|
|
74
|
+
The exports come from **smorchj/metahuman-to-glb** (UE 5.7 MetaHuman → Blender → Draco GLB with the
|
|
75
|
+
51 ARKit blendshapes). Ready-made characters sit in that repo under \`docs/5.7/characters/<name>/\`
|
|
76
|
+
(bo 41 MB, bruce 79 MB; \`docs/characters/\` holds ada and taro from the older 5.6 pipeline). Fetch
|
|
77
|
+
through \`raw.githubusercontent.com\` — they are plain files, not LFS. An export folder holds:
|
|
78
|
+
|
|
79
|
+
- \`<name>.glb\` — Draco-compressed; meshes \`SKM_<name>_FaceMesh\` (face skin, teeth, eyes, eye shell,
|
|
80
|
+
lacrimal fluid, lashes, an \`M_Hide\` helper), \`<name>_Outfits\` (garments), \`SKM_<name>_BodyMesh\`
|
|
81
|
+
(body skin — **no torso or upper thighs under the clothing**, the export culls them), plus the
|
|
82
|
+
hair / eyebrow / beard \`*_CardsMesh_*\` card meshes;
|
|
83
|
+
- \`textures/<Hair|Eyebrows>_*_CardsAtlas_Attribute.png\` — 4K card atlases, R = coverage, G = root→tip,
|
|
84
|
+
B = per-strand seed; \`T_Eyelashes_*_Coverage.png\` — the lash mask;
|
|
85
|
+
- \`mh_materials.json\` — the pipeline's material sheet (base colours, alpha channels, roughness).
|
|
86
|
+
Reference only.
|
|
87
|
+
|
|
88
|
+
What is inside, and why every step below exists: **three copies of the skeleton** (the face skin's
|
|
89
|
+
875 joints incl. \`FACIAL_*\`, the outfit's 342, the body's 342 — same names, same rest pose), the
|
|
90
|
+
face skin **stops at the upper arms**, the cards are **unskinned meshes posed at the head's rest
|
|
91
|
+
pose**, \`COLOR_0\` on every mesh is a **rig mask** (not albedo), the bind pose is an **A-pose**, and
|
|
92
|
+
the corrective joints (\`*_correctiveRoot_*\`, \`*_twistCor_*\`, bicep/tricep, clavicle scap/out/pec,
|
|
93
|
+
latissimus, wrist, ankle, finger helpers) are **pose-driven** in Unreal by RBF drivers the export
|
|
94
|
+
cannot carry.
|
|
95
|
+
|
|
96
|
+
## 2. Prepare the GLB — one command
|
|
97
|
+
|
|
98
|
+
\`\`\`
|
|
99
|
+
tools/metahuman/prepare.sh <export>/<name>.glb assets/metahuman/<name>/<name>.glb
|
|
100
|
+
mkdir -p assets/metahuman/<name>/textures
|
|
101
|
+
cp <export>/textures/*CardsAtlas_Attribute.png <export>/textures/T_Eyelashes_*Coverage.png assets/metahuman/<name>/textures/
|
|
102
|
+
\`\`\`
|
|
103
|
+
|
|
104
|
+
| Step | Script | Why | Without it |
|
|
105
|
+
|---|---|---|---|
|
|
106
|
+
| 1 | \`tools/metahuman/strip-draco.mjs\` | \`engine.loader\` is a plain GLTFLoader — no Draco, no KTX2 | the model never appears |
|
|
107
|
+
| 2 | \`tools/metahuman/merge-skeletons.mjs\` | grafts the limb subtrees from the body hierarchy onto the face hierarchy (asserts identical rest transforms) and re-points every skin at the one skeleton | each mesh follows its own copy: the face and body animate apart |
|
|
108
|
+
| 3 | \`tools/metahuman/reorder-body-first.mjs\` | the engine's \`CharacterLoader\` captures a rig's bind pose from the **first** skinned mesh it traverses, and the face skin has no forearms or legs | split legs, twisted forearms and hands (10 bones corrected instead of 52) |
|
|
109
|
+
| 4 | \`tools/metahuman/smooth-outfit-weights.mjs\` (shorts 6 × λ 0.5, shirt 12 × λ 0.6) | Laplacian-smooths the garment weights so hard seams (torso latissimus helper beside arm twist correctives) become gradients | 26 cm shards at the armpits under every arm swing |
|
|
110
|
+
| 5 | \`tools/metahuman/transfer-skin-weights.mjs\` (full ≤ 2 cm, blend to 4.5 cm) | gives garment vertices the skin's weights wherever skin lies under them (adds the face's neck joints to the outfit skin) | skin pokes through the shirt |
|
|
111
|
+
|
|
112
|
+
\`SHORT_RE\` / \`SHIRT_RE\` override the garment material regexes (the export names them
|
|
113
|
+
\`MID_..._Short_NN\` / \`MID_..._Shirt_NN\`); \`KEEP_STEPS=1\` keeps the intermediates. The tuned numbers
|
|
114
|
+
came from a torn-edge metric on the CPU-skinned outfit at the Mixamo idle (8038 torn edges raw →
|
|
115
|
+
≈300 after steps 3–5 plus the helper policy). Check the result: the scripts print the scene order
|
|
116
|
+
(\`SKM_<name>_BodyMesh → <name>_Outfits → SKM_<name>_FaceMesh\`), the skins and their joint counts, and
|
|
117
|
+
throw if a joint is unreachable or a duplicate does not match its twin.
|
|
118
|
+
|
|
119
|
+
## 3. Load it as the player
|
|
120
|
+
|
|
121
|
+
\`src/work/world.json\`, in \`worldProfileData\`:
|
|
122
|
+
|
|
123
|
+
\`\`\`json
|
|
124
|
+
"characterUrl": "/assets/metahuman/bo/bo.glb",
|
|
125
|
+
"useHighResCharacter": true,
|
|
126
|
+
"characterConfig": { "height": 1.83, "walkSpeed": 1.4, "runSpeed": 2.4, "fastRunSpeed": 4 }
|
|
127
|
+
\`\`\`
|
|
128
|
+
|
|
129
|
+
and three animation assets in \`assets[]\` — the Mixamo viewer set — because the engine's \`generated\`
|
|
130
|
+
animation library plays the authored Idle but swaps Walk and Run for motion-captured clips whose
|
|
131
|
+
neutral shoulders sit ~20° lower (a visible slump on ANY character, only while walking):
|
|
132
|
+
|
|
133
|
+
\`\`\`json
|
|
134
|
+
{ "id": "mMixamoIdleViewer", "type": "animation", "locomotionState": "idle", "url": "https://mini.bitmagic.ai/worlds/v3/animations_brotli/NewIdle.glb" },
|
|
135
|
+
{ "id": "mMixamoWalkViewer", "type": "animation", "locomotionState": "walk", "url": "https://mini.bitmagic.ai/worlds/v3/animations_brotli/NewWalk.glb" },
|
|
136
|
+
{ "id": "mMixamoRunViewer", "type": "animation", "locomotionState": "run", "url": "https://mini.bitmagic.ai/worlds/v3/animations_brotli/NewRun.glb" }
|
|
137
|
+
\`\`\`
|
|
138
|
+
|
|
139
|
+
\`src/work/Game.ts\`: after \`setupPlayerController()\` and \`playerLoader.enablePlayerGravity()\`, adopt
|
|
140
|
+
the model the engine loaded (do NOT await slow downloads first — see fix 10), install the hooks, and
|
|
141
|
+
update the actor every frame:
|
|
142
|
+
|
|
143
|
+
\`\`\`ts
|
|
144
|
+
import { MetaHumanActor } from './metahuman/MetaHumanActor.js';
|
|
145
|
+
import { DEFAULT_HAIR, DEFAULT_BROWS } from './metahuman/MetaHumanMaterials.js';
|
|
146
|
+
import { installMetaHumanLabHooks } from './metahuman/MetaHumanLabHooks.js';
|
|
147
|
+
|
|
148
|
+
const bloomOn = this.worldProfileData.bloomConfig?.enabled ?? false;
|
|
149
|
+
const actor = new MetaHumanActor(this.engine, {
|
|
150
|
+
url: '/assets/metahuman/bo/bo.glb',
|
|
151
|
+
yawOffset: 0, // the export faces +Z = engine gameplay-forward
|
|
152
|
+
materials: {
|
|
153
|
+
hairAtlasUrl: '/assets/metahuman/bo/textures/Hair_S_SideSweptFringe_CardsAtlas_Attribute.png',
|
|
154
|
+
browAtlasUrl: '/assets/metahuman/bo/textures/Eyebrows_M_Wide_CardsAtlas_Attribute.png',
|
|
155
|
+
lashCoverageUrl: '/assets/metahuman/bo/textures/T_Eyelashes_S_Sparse_Coverage.png',
|
|
156
|
+
hair: { ...DEFAULT_HAIR }, brows: { ...DEFAULT_BROWS },
|
|
157
|
+
msaa: !bloomOn, // alpha-to-coverage only on the direct MSAA canvas
|
|
158
|
+
},
|
|
159
|
+
life: { blink: true, saccades: true, breathing: true, lookAtCamera: true, maxHeadTurn: 0.55 },
|
|
160
|
+
});
|
|
161
|
+
const root = this.playerLoader.getSkinnedSkeletonRoot();
|
|
162
|
+
if (root) actor.adopt(root, root, this.playerLoader); // engine-driven locomotion
|
|
163
|
+
else { this.engine.getPlayerVisibility().hide(); await actor.load(); actor.attachToPlayer(this.player, this.playerLoader.getFeetOffsetY()); }
|
|
164
|
+
this.metaHuman = actor;
|
|
165
|
+
installMetaHumanLabHooks({ engine: this.engine, actor, playerLoader: this.playerLoader, player: this.player, cameraController: this.cameraController, playerController: this.playerController });
|
|
166
|
+
// in update(deltaTime):
|
|
167
|
+
this.metaHuman?.update(deltaTime, this.engine.getDefaultCamera().position);
|
|
168
|
+
\`\`\`
|
|
169
|
+
|
|
170
|
+
Facts the wiring leans on: the engine faces the player toward −Z (camera behind) — use
|
|
171
|
+
\`actor.getFacing()\` for face cameras and turn \`ThirdPersonCamera.setAutoFollow(false)\` off while one
|
|
172
|
+
is on; the export faces +Z so \`yawOffset\` is 0; the engine picks walk or run by speed
|
|
173
|
+
(\`walkToRunThreshold\`) and never rescales a clip, so anything that drives the character by script
|
|
174
|
+
(cinematics, NPC copies) must move at the clip's stride speed — \`characterConfig.runSpeed\` 2.4 m/s
|
|
175
|
+
here — or the feet slide.
|
|
176
|
+
|
|
177
|
+
## 4. The fixes, by symptom
|
|
178
|
+
|
|
179
|
+
Each is a method of \`MetaHumanActor\` or a preparation step; know which one you are looking at.
|
|
180
|
+
|
|
181
|
+
1. **Hair, brows or beard stay behind when the head turns** → the cards are unskinned →
|
|
182
|
+
\`attachCardsToHead\` re-parents every non-skinned mesh onto the \`head\` bone with \`Object3D.attach\`
|
|
183
|
+
at load, while the skeleton is at rest. Any new load path must keep it.
|
|
184
|
+
2. **Split legs, twisted forearms and hands** → bind captured from the face skin → preparation step 3.
|
|
185
|
+
3. **Arms 45° too low, crossed into the torso** → the engine's per-bone correction \`inv(B_src)·B_rig\`
|
|
186
|
+
assumes the rig binds in the clip's rest pose; MetaHumans bind in an A-pose, Mixamo rests in a
|
|
187
|
+
T-pose → \`patchArmRetarget\` rewrites the loader's cached \`skinnedRetargetDeltas\` with a virtual
|
|
188
|
+
T-pose per arm segment (thumbs forward). Check: upper-arm and forearm world directions equal the
|
|
189
|
+
Mixamo rig's, hands at x ≈ ±0.30 m beside the thighs (\`tools/metahuman/e2e/probes/arm-pose-check.js\`).
|
|
190
|
+
4. **Shirt tears at the armpits and shoulders** → pose-driven helper joints swing rigidly with the
|
|
191
|
+
limb → \`applyHelperJointPolicy\`: each helper family follows only a fraction of its parent's
|
|
192
|
+
rotation delta from bind (\`helperFollow\`, families shoulder / thigh / elbow / knee / twistCor /
|
|
193
|
+
muscle / clavicle / lat / wrist / ankle / finger; tuned by coordinate descent on the torn-edge
|
|
194
|
+
metric, \`tools/metahuman/e2e/probes/helper-follow-descent.js\`) — plus preparation steps 4–5.
|
|
195
|
+
5. **Skin shows through the garment** → the outfit's weights differ from the skin's under it →
|
|
196
|
+
preparation step 5 (smoothing alone made this WORSE; transfer fixed it).
|
|
197
|
+
6. **Skin is tinted / blotchy** → \`COLOR_0\`/\`COLOR_1\` are rig masks → every material gets
|
|
198
|
+
\`vertexColors = false\` (\`MetaHumanMaterials\`).
|
|
199
|
+
7. **Eyes are black** → the export's eye shell has UVs that are not eye-centred, so any occlusion
|
|
200
|
+
gradient blacks the eye out → the shell, lacrimal fluid and \`M_Hide\` are hidden
|
|
201
|
+
(\`eyeShellOcclusion: 0\`).
|
|
202
|
+
8. **Far-side hair shows through the skin over the ear** → the hair depth bias was too strong →
|
|
203
|
+
polygon offset factor −0.5 / units −1, not −4 / −16.
|
|
204
|
+
9. **Hair edges alias or halo** → alpha-to-coverage needs the direct MSAA canvas, which only exists
|
|
205
|
+
while bloom / post-FX are off → \`msaa: !bloomOn\`; with post-FX on, the cards use the blended fringe.
|
|
206
|
+
10. **Hair or helpers detached, only on slow machines** → rest data was read from bones that were
|
|
207
|
+
already animating → capture every rest quantity from the skins' inverse bind matrices and adopt
|
|
208
|
+
BEFORE awaiting the HDRI or atlases.
|
|
209
|
+
11. **Shoulders slump only while walking** → the animation library, not the rig → section 3's
|
|
210
|
+
Mixamo assets. Compare raw clip tracks across states (\`tools/metahuman/e2e/probes/clip-shoulder.js\`)
|
|
211
|
+
before touching rig code.
|
|
212
|
+
12. **Feet slide** when moved by script → speed below the clip's stride → section 3.
|
|
213
|
+
|
|
214
|
+
## 5. What the materials do
|
|
215
|
+
|
|
216
|
+
\`upgradeMetaHumanMaterials(root, options)\` classifies each material by name (\`classifyMaterial\`)
|
|
217
|
+
and replaces it in place — geometry untouched:
|
|
218
|
+
|
|
219
|
+
- **skin** (\`MI_Face_Skin_*\`, \`MI_Body_*\`): roughness floor and a wrap-lighting subsurface term in a
|
|
220
|
+
\`PhysicalLightingModel\` subclass (light through ears, nose, lips);
|
|
221
|
+
- **hair / brow cards**: the 4K atlas drives coverage (alpha-to-coverage or blended fringe clone),
|
|
222
|
+
root darkening, per-strand tint and roughness variance, a normal-based self-occlusion;
|
|
223
|
+
\`DEFAULT_HAIR\` / \`DEFAULT_BROWS\` are the dials (colour, anisotropy, blend mode);
|
|
224
|
+
- **lashes**: the 2K coverage mask, alpha-blended;
|
|
225
|
+
- **eyes**: wet cornea (near-mirror roughness + clearcoat);
|
|
226
|
+
- **hidden**: \`M_Hide\`, lacrimal, eye edge, saliva, the eye shell.
|
|
227
|
+
|
|
228
|
+
Typing note for edits: \`@types/three\` types TSL nodes as \`Node<'vec3'>\` etc. while the engine's
|
|
229
|
+
lighting-model inputs are bare \`Node\` — cast; and \`three\` resolves to the WebGPU build.
|
|
230
|
+
|
|
231
|
+
## 6. Life and speech
|
|
232
|
+
|
|
233
|
+
- \`life\` options blink, saccade, breathe and turn the head toward the camera as deltas on top of the
|
|
234
|
+
animated pose (rest-frame world-axis rotations). \`setSpeechEnergy\` adds brow lift and nods.
|
|
235
|
+
- **Lip-sync**: \`MetaHumanSpeech\` maps Rhubarb-style mouth shapes (A closed, B teeth, C open, D wide,
|
|
236
|
+
E rounded, F puckered, G F/V, H L, X rest) to ARKit weights with 60 ms co-articulation, jaw scaled
|
|
237
|
+
by loudness, amplitude-driven jaw when a line has no cues. Lines live in \`assets/speech/lines.json\`
|
|
238
|
+
(\`MetaHumanSpeech.loadLines\`), \`speak(line)\` plays one, \`update(dt)\` every frame,
|
|
239
|
+
\`actor.setSpeechEnergy(speech.getEnergy())\` for the accents.
|
|
240
|
+
- **Making a line**: \`tools/lipsync/make_line.py <id> "<transcript>" --audio <tts.mp3>\` — PocketSphinx
|
|
241
|
+
forced alignment in a venv (\`python3 -m venv tools/lipsync/.venv && tools/lipsync/.venv/bin/pip
|
|
242
|
+
install pocketsphinx\`), unknown words via its \`EXTRA_WORDS\` table. Make the audio with
|
|
243
|
+
\`bitmagic generate speech --text "<the line>" --voice <voice> --out <line>.mp3 --no-world\` —
|
|
244
|
+
\`--no-world\` because a lip-sync line is an input to this tool, not a world.json asset the game
|
|
245
|
+
plays on its own, and \`--out\` writes the MP3 \`make_line.py --audio\` expects. Any provider's file
|
|
246
|
+
works too. macOS \`say\` is a placeholder the creator will hear immediately; never ship it. For an
|
|
247
|
+
exact pause between sentences generate them separately and join with silence.
|
|
248
|
+
- **Under the frame recorder** (\`bitmagic trailer record\`) the game runs slower than real time:
|
|
249
|
+
\`speech.setClockDriven(true)\` advances the cues on the engine delta, log a \`speech-start\` game
|
|
250
|
+
event when the cue clock starts, and mux the audio afterwards at that frame.
|
|
251
|
+
|
|
252
|
+
## 7. Verify with numbers, not thumbnails
|
|
253
|
+
|
|
254
|
+
Thumbnails hid crossed arms, detached hair and a "fix" whose before/after frames were identical.
|
|
255
|
+
Crop and zoom the contact region, and cross-check one measured quantity. The rigs drive the GAME
|
|
256
|
+
page (the game port in \`.bitmagic/dev.json\`, one below the dev shell's) through the system Chrome;
|
|
257
|
+
\`npm install\` in \`tools/metahuman/\` once:
|
|
258
|
+
|
|
259
|
+
- \`node tools/metahuman/e2e/shot.mjs <port>\` — stills: wide, front, face, three-quarter, profile,
|
|
260
|
+
hair, eye macro, life on, head-turn; asserts the hair↔head distance is unchanged across a turn and
|
|
261
|
+
that holding W moves the player;
|
|
262
|
+
- \`node tools/metahuman/e2e/eval.mjs tools/metahuman/e2e/probes/<probe>.js <port>\` with
|
|
263
|
+
\`arm-pose-check.js\`, \`bone-displacement.js\`, \`shirt-edge-stretch.js\`, \`shirt-long-edges.js\`,
|
|
264
|
+
\`outfit-bad-vertices.js\`, \`shirt-bone-ownership.js\`, \`helper-follow-sweep.js\`,
|
|
265
|
+
\`helper-follow-descent.js\`, \`helper-joints-inspect.js\`, \`clip-shoulder.js\`, \`grafted-bones.js\`,
|
|
266
|
+
\`outfit-own-skeleton.js\`, \`outfit-body-material.js\`;
|
|
267
|
+
- \`node tools/metahuman/e2e/walk-probe.mjs <port>\` — walks for a few seconds and prints idle-vs-walk
|
|
268
|
+
statistics (\`walk-sampler.js\`: bone heights, skin-under-shirt penetration, clip shoulders);
|
|
269
|
+
- in the page: \`__lab.retargetInfo()\` and \`__lab.boneMap()\` dump the engine's pose map, bind
|
|
270
|
+
corrections and name resolution (52 bones should be corrected);
|
|
271
|
+
- \`bitmagic verify\` last — it boots the real browser and reports the backend and fps.
|
|
272
|
+
|
|
273
|
+
## 8. Ship it
|
|
274
|
+
|
|
275
|
+
Every \`/assets/...\` URL the game fetches works only under \`bitmagic dev\` and 404s in a published
|
|
276
|
+
bundle: register the GLB with \`bitmagic assets add assets/metahuman/<name>/<name>.glb --keep-glb\`
|
|
277
|
+
and point \`characterUrl\` at the returned URL; do the same for the atlases, the lash mask, the HDRI
|
|
278
|
+
and the speech files, or inline them. This is the one step written from the CLI's rules rather
|
|
279
|
+
than from having done it — the lab game was never published.
|
|
280
|
+
|
|
281
|
+
## 9. Engine internals this depends on (re-check after \`bitmagic upgrade\`)
|
|
282
|
+
|
|
283
|
+
Written against engine 3.1173: \`PlayerLoader.getSkinnedSkeletonRoot()\`, \`CharacterLoader\`'s alias
|
|
284
|
+
map (resolves UE / Manny bone names) and its private \`skinnedRetargetDeltas\` / \`skinnedBind\` that
|
|
285
|
+
\`patchArmRetarget\` rewrites, \`engine.getPlayerVisibility()\`, the \`generated\` animation library. After
|
|
286
|
+
an upgrade run the probes in section 7 before trusting a screenshot.
|
|
287
|
+
|
|
288
|
+
## Known gaps
|
|
289
|
+
|
|
290
|
+
Shoulder / armpit fidelity (the RBF pose drivers are not in the export — real emulation or a
|
|
291
|
+
re-skin of the garment to the primary bones would fix it), scalp visible under thin hair cards, no
|
|
292
|
+
eye-socket occlusion, fingers keep the A-pose curl under Mixamo hand poses, the WebGL path is plain
|
|
293
|
+
PBR.
|
|
294
|
+
|
|
295
|
+
## Checklist
|
|
296
|
+
|
|
297
|
+
- [ ] export fetched, licence recorded in \`assets/LICENSES.md\`
|
|
298
|
+
- [ ] \`bitmagic tools install metahuman\`; \`tools/metahuman/prepare.sh\` ran clean: body mesh first, one skeleton, garment weights done
|
|
299
|
+
- [ ] atlases + lash mask copied; \`characterUrl\` + \`useHighResCharacter\` + Mixamo animation assets in world.json
|
|
300
|
+
- [ ] actor adopted BEFORE slow loads; hooks installed; \`actor.update\` every frame
|
|
301
|
+
- [ ] \`bitmagic check\`; shots + probes: hair follows the head, arms level with the Mixamo rig, ≈300 torn edges, no skin through the shirt
|
|
302
|
+
- [ ] \`bitmagic verify\` on WebGPU; speech line from a real TTS voice
|
|
303
|
+
- [ ] before publish: every \`/assets/...\` URL registered with \`bitmagic assets add\`
|
|
304
|
+
`;
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=metahuman-skill-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metahuman-skill-files.js","sourceRoot":"","sources":["../../src/scaffold/metahuman-skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,UAAU,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0RR,CAAC;AACF,CAAC"}
|
|
@@ -813,9 +813,9 @@ If you are unsure whether one is already running, \`bitmagic reload\` says so an
|
|
|
813
813
|
they stay current with it. Every one is plain markdown at
|
|
814
814
|
\`${PRIMARY_SKILLS_DIR}/<name>/SKILL.md\`, readable whether or not your harness loads skills by
|
|
815
815
|
itself: \`planning-a-game/\` (what to build first), \`finding-engine-apis/\` (engine docs),
|
|
816
|
-
\`generating-assets/\`, \`choosing-asset-pipelines/\`, \`working-with-the-creator/\`,
|
|
817
|
-
\`
|
|
818
|
-
\`
|
|
816
|
+
\`generating-assets/\`, \`choosing-asset-pipelines/\`, \`working-with-the-creator/\`, \`theming-the-hud/\`,
|
|
817
|
+
\`publishing-a-game/\`, \`judging-quality/\`, \`checking-usage/\`, \`making-a-trailer/\`,
|
|
818
|
+
\`converting-unity-levels/\`, \`building-levels-in-blender/\`, \`importing-metahumans/\`.${mirrorClause}
|
|
819
819
|
\`upgrade\` rewrites every copy, so edits to them are lost; skills you add yourself are never
|
|
820
820
|
touched.
|
|
821
821
|
- \`.claude/settings.json\` — **Claude Code only, and yours**: seeded with one Stop hook that runs
|
|
@@ -1083,8 +1083,8 @@ bitmagic character generate --name guard --prompt "..." [--apply-to-player] [--
|
|
|
1083
1083
|
bitmagic generate animation --family gait --name LimpStride --based-on walk [--dial limpSide=right]
|
|
1084
1084
|
bitmagic generate animation --spec clip.json # melee and oneShot clips: a spec file
|
|
1085
1085
|
bitmagic generate video --prompt "the castle gates swing open" [--duration 5] [--image cover.png]
|
|
1086
|
-
bitmagic generate model --prompt "a mossy stone arch" [--height 3]
|
|
1087
|
-
bitmagic generate vehicle --prompt "a rusty orange pickup"
|
|
1086
|
+
bitmagic generate model --prompt "a mossy stone arch" [--height 3] # any NEW object or prop (a lantern, a crate, a sign): ~3 sparks — never hand-build one in code
|
|
1087
|
+
bitmagic generate vehicle --preset ? # lists the FREE presets; then --preset PICKUP, or --prompt "a rusty orange pickup" for a bespoke look
|
|
1088
1088
|
\`\`\`
|
|
1089
1089
|
|
|
1090
1090
|
Run \`bitmagic generate <type> --help\` for the full flags of any one, or \`bitmagic character <verb> --help\` — characters are their own group, where \`generate\` costs sparks and \`search\`/\`add\` are free because they use the ready-made library instead of forging.
|
|
@@ -1104,12 +1104,12 @@ Three lanes make a 3D object, and the wrong one wastes a generation: \`generate
|
|
|
1104
1104
|
asset, \`generate prop --asset <id>\` UPGRADES a placeholder, \`assets add <file>\` uploads your own.
|
|
1105
1105
|
Splats, video and \`.vox\`/\`.fbx\` still need the web editor; never reference an asset you did not
|
|
1106
1106
|
make. Which lane fits which NEED — rough sparks and minutes, and when to ask first — is
|
|
1107
|
-
\`${PRIMARY_SKILLS_DIR}/choosing-asset-pipelines/SKILL.md\`; flags, reference-image rules and refusals, \`${PRIMARY_SKILLS_DIR}/generating-assets/SKILL.md\`.
|
|
1107
|
+
\`${PRIMARY_SKILLS_DIR}/choosing-asset-pipelines/SKILL.md\`; flags, reference-image rules and refusals, \`${PRIMARY_SKILLS_DIR}/generating-assets/SKILL.md\`. For local Blender rigging and repairs, read \`${PRIMARY_SKILLS_DIR}/rigging-characters/SKILL.md\`. For vision-led exposed-skin maps and material review, read \`${PRIMARY_SKILLS_DIR}/character-skin-authoring/SKILL.md\`.
|
|
1108
1108
|
|
|
1109
1109
|
## Forging a whole level
|
|
1110
1110
|
|
|
1111
1111
|
\`\`\`
|
|
1112
|
-
bitmagic forge --prompt "a ruined desert temple with a central courtyard"
|
|
1112
|
+
bitmagic forge --prompt "a ruined desert temple with a central courtyard" # the level's SHAPE — a circuit, a dungeon, a slope — is forged, never painted onto the baseline in code
|
|
1113
1113
|
\`\`\`
|
|
1114
1114
|
|
|
1115
1115
|
This designs a scene, builds its geometry, bakes it to voxels and writes the finished level —
|
|
@@ -1118,7 +1118,7 @@ terrain, props, spawn points — into \`src/work/world.json\`. \`bitmagic levels
|
|
|
1118
1118
|
\`--city\`, \`--dungeon\`, \`--platformer\`, \`--freeform\` or \`--vessel\` (a ship as the level) — at most
|
|
1119
1119
|
one — for a different kind of place; omit them all for natural terrain. A place designed part by
|
|
1120
1120
|
part — an interior, a station, a stylised set — can instead be scripted in Blender: \`${PRIMARY_SKILLS_DIR}/building-levels-in-blender/SKILL.md\`,
|
|
1121
|
-
whose first section says when that path is yours (a frontier model, Blender
|
|
1121
|
+
whose first section says when that path is yours (a frontier model — Claude Opus/Fable, GPT-6 class — with Blender 4.2+; any other model, or one not sure it is one, forges instead). All the level lanes side by side, with costs: \`${PRIMARY_SKILLS_DIR}/choosing-asset-pipelines/SKILL.md\`.
|
|
1122
1122
|
|
|
1123
1123
|
**Art style is a declared switch.** \`"artStyle": "low-poly"\` in \`src/work/game.json\` (or
|
|
1124
1124
|
\`bitmagic init --art-style low-poly\`) makes a Blender level a low-poly GAME: \`cover\`/\`reference\`
|
|
@@ -1242,8 +1242,8 @@ animations and NPC use, while a generated mesh is a mesh. Generate when the look
|
|
|
1242
1242
|
("a flaming katana with a skull hilt") — that is what the \`generating-assets\` skill is for.
|
|
1243
1243
|
|
|
1244
1244
|
Drivable vehicles are the one exception worth knowing: the physics and AI are built in, but a
|
|
1245
|
-
good-looking car comes from \`bitmagic generate vehicle
|
|
1246
|
-
without calling the designer when the request needs no bespoke look. Spawn it with
|
|
1245
|
+
good-looking car comes from \`bitmagic generate vehicle\`: \`--preset ?\` lists the free presets and
|
|
1246
|
+
\`--preset VAN\` builds one without calling the designer when the request needs no bespoke look. Spawn it with
|
|
1247
1247
|
\`engine.getVehicleSpawner().spawnAndEnterFromAsset(...)\`.
|
|
1248
1248
|
|
|
1249
1249
|
## Step 3 — write \`mechanics-plan.md\`
|
|
@@ -1313,11 +1313,12 @@ ${PLANNING_SKILL_REFERENCE_STEP4}4. \`bitmagic cover\` — **now**, not later. I
|
|
|
1313
1313
|
**One forge, and only when the terrain IS the mechanic.** \`bitmagic forge\` runs for many minutes,
|
|
1314
1314
|
so it sets how long the human waits for slice 1. It belongs in slice 1 for a game that cannot be
|
|
1315
1315
|
played without its shape — skiing, racing on a real circuit, open-world driving, an enclosed dungeon
|
|
1316
|
-
interior.
|
|
1317
|
-
|
|
1316
|
+
interior. Those are forged (\`bitmagic forge\`, tens of sparks — ask first when the purpose is unsaid),
|
|
1317
|
+
never painted onto the baseline terrain in code. For everything else the baseline's procedural voxel
|
|
1318
|
+
terrain is a fine slice-1 world and the forge is backlog item 1, run once the loop is proven. A designed place — an interior, a station, a
|
|
1318
1319
|
stylised set the creator has a picture of — has a second route, building it in Blender from a
|
|
1319
|
-
script (\`${PRIMARY_SKILLS_DIR}/building-levels-in-blender/SKILL.md\`, gated on
|
|
1320
|
-
Blender being
|
|
1320
|
+
script (\`${PRIMARY_SKILLS_DIR}/building-levels-in-blender/SKILL.md\`, gated on a frontier model —
|
|
1321
|
+
Claude Opus/Fable, GPT-6 class — and on Blender 4.2+ being installed; any other model takes the forge). That route is a low-poly game: set \`artStyle: "low-poly"\` in game.json first.
|
|
1321
1322
|
The level lanes and every other asset lane side by side, with costs and when to ask the creator:
|
|
1322
1323
|
\`${PRIMARY_SKILLS_DIR}/choosing-asset-pipelines/SKILL.md\`.
|
|
1323
1324
|
|
|
@@ -1536,19 +1537,27 @@ The \`bitmagic\` CLI generates content directly into this project. Eleven types
|
|
|
1536
1537
|
| \`bitmagic generate skybox --description "..."\` | a 360° environment | \`worldProfileData.skyboxUrl\` |
|
|
1537
1538
|
| \`bitmagic generate background --description "..."\` | a flat 2D backdrop | \`worldProfileData.skyboxUrl\` |
|
|
1538
1539
|
| \`bitmagic generate block-type --name <id> --description "..."\` | a custom voxel block | \`worldProfileData.customBlockTypes[]\` |
|
|
1539
|
-
| \`bitmagic generate sound --prompt "..."\` | a sound effect | \`assets[]\` |
|
|
1540
|
-
| \`bitmagic generate music --prompt "..." [--duration 30]\` | a music track (loops by default; billed per second) | \`assets[]\` (or a file with \`--out <mp3> --no-world\`) |
|
|
1540
|
+
| \`bitmagic generate sound --prompt "..."\` | a sound effect — for a jump blip or UI tick, Web Audio in code is free and better | \`assets[]\` |
|
|
1541
|
+
| \`bitmagic generate music --prompt "..." [--duration 30]\` | a music track (loops by default; billed per second) — say the assumption line first (below); a 30 s loop is decided, not discussed | \`assets[]\` (or a file with \`--out <mp3> --no-world\`) |
|
|
1541
1542
|
| \`bitmagic generate image --name <id> --prompt "..."\` | a 2D image | \`assets[]\` |
|
|
1542
1543
|
| \`bitmagic character generate --name <id> --prompt "..."\` | a rigged character; substitutes a close-enough ready-made one when the library has it (\`--fresh\` always forges). \`character search --prompt "..."\` then \`character add --name <id> --id <sid>\` instead is **free** and never forges — prefer it when any plausible body will do | \`assets[]\` |
|
|
1543
1544
|
| \`bitmagic generate animation --family gait ...\` or \`--spec <file>\` | an animation clip | \`assets[]\` |
|
|
1544
1545
|
| \`bitmagic generate video --prompt "..." [--duration 5] [--image <png>]\` | a short 720p clip for a cutscene (billed per second) | \`assets[]\`, played with \`engine.playVideo("<id>")\` |
|
|
1545
1546
|
| \`bitmagic generate model --prompt "..."\` | a new 3D model | \`assets[]\` |
|
|
1546
|
-
| \`bitmagic generate vehicle --prompt "..."\` | a drivable vehicle | \`assets[]\` |
|
|
1547
|
+
| \`bitmagic generate vehicle --preset <NAME>\` (free; \`--preset ?\` lists the names) or \`--prompt "..."\` for a bespoke look | a drivable vehicle | \`assets[]\` |
|
|
1547
1548
|
|
|
1548
1549
|
\`--help\` on any subcommand lists its full flags. Which of these — or a forge, a Blender build, a
|
|
1549
1550
|
built-in, or a file of the creator's own — fits a given need, with rough sparks and minutes:
|
|
1550
1551
|
\`${PRIMARY_SKILLS_DIR}/choosing-asset-pipelines/SKILL.md\`.
|
|
1551
1552
|
|
|
1553
|
+
## Before a paid generation: say the assumption, ask only when it is expensive
|
|
1554
|
+
|
|
1555
|
+
State one line, then run: \`Assuming prototype: using <route> (~N sparks, ~T); say polished and I
|
|
1556
|
+
will use <alt>.\` Ask first — recommended option first, answerable in a word — ONLY when the route
|
|
1557
|
+
is tens of sparks or many minutes (a forge, a long music track, a low-poly character, a bespoke
|
|
1558
|
+
vehicle) AND the creator has said neither prototype nor polished. Never ask about a free or
|
|
1559
|
+
seconds-long option; a 30-second music loop or a 3-spark model is decided, not discussed.
|
|
1560
|
+
|
|
1552
1561
|
**Every \`bitmagic\` command takes \`--original-prompt "<the creator's request, verbatim>"\` —
|
|
1553
1562
|
always pass it**, on the everyday loop (\`build\`, \`verify\`, \`dev\`, \`reload\`, \`publish\`) as much as
|
|
1554
1563
|
on the generators. It never reaches a generator, so it cannot change the output; it is what the
|
|
@@ -1580,8 +1589,8 @@ browser blocks autoplay and the clip silently does not run. See \`video-cutscene
|
|
|
1580
1589
|
|
|
1581
1590
|
\`vehicle\` is the one that needs more than a prompt to be useful. It creates a NEW asset (it does
|
|
1582
1591
|
not upgrade an existing one), it needs Chrome and a free port between 3000 and 3199 because only
|
|
1583
|
-
the engine can voxelize, and \`--preset VAN\` builds a standard
|
|
1584
|
-
at all — faster, and the right choice when the request does not need a bespoke look. Once it lands,
|
|
1592
|
+
the engine can voxelize, \`--preset ?\` lists the free presets, and \`--preset VAN\` builds a standard
|
|
1593
|
+
vehicle without calling the designer at all — faster, and the right choice when the request does not need a bespoke look. Once it lands,
|
|
1585
1594
|
spawn it by name:
|
|
1586
1595
|
|
|
1587
1596
|
\`\`\`js
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
|
package/dist/scaffold/project.js
CHANGED
|
@@ -5,9 +5,12 @@ import { aliasSourceDir } from './aliases.js';
|
|
|
5
5
|
import { renderPackageJson, renderTsconfig, renderIndexHtml, renderViteConfig, renderVitePublishConfig, renderVitePublishStandaloneConfig, renderGitignore, renderBitmagicJson, renderAgentsMd, renderGameDesignMd, renderClaudeMd, renderJudgeSkill, renderThemingSkill, renderGenerateSkill, renderPlanningSkill, renderEngineApiSkill, renderUsageSkill, } from './project-files.js';
|
|
6
6
|
import { renderCreatorCollaborationSkill, renderPublishingSkill, renderKiroSteering, renderSkillsReadme, renderTrailerSkill, renderTrailerCraftReference, } from './skill-files.js';
|
|
7
7
|
import { renderAssetPipelinesSkill } from './asset-pipeline-skill-files.js';
|
|
8
|
+
import { renderMetaHumanSkill } from './metahuman-skill-files.js';
|
|
8
9
|
import { renderUnityLevelsSkill, renderUnityLevelsTrapsReference, renderUnityLevelsFbxReference, renderUnityLevelsPhysicsReference, renderUnityLevelsVerificationReference, } from './unity-skill-files.js';
|
|
9
10
|
import { renderBlenderLevelsSkill, renderBlenderConventionsReference, renderBlenderAuditsReference, renderBlenderPassesReference, renderBlenderEngineHandoffReference, } from './blender-level-skill-files.js';
|
|
10
11
|
import { ALWAYS_AGENTS, dedupeAgents, skillDirsFor } from './agent-targets.js';
|
|
12
|
+
import { CHARACTER_RIGGING_SKILLS } from './character-rigging-skill-files.js';
|
|
13
|
+
import { CHARACTER_SKIN_SKILLS } from './character-skin-skill-files.js';
|
|
11
14
|
import { hashAgentsMd } from './agents-md.js';
|
|
12
15
|
import { CLAUDE_SETTINGS_FILE, renderClaudeSettings } from './claude-settings.js';
|
|
13
16
|
/**
|
|
@@ -162,6 +165,8 @@ export function writeProjectFile(root, relativePath, contents) {
|
|
|
162
165
|
* directory rather than each renderer being written twice.
|
|
163
166
|
*/
|
|
164
167
|
export const SHIPPED_SKILLS = [
|
|
168
|
+
...CHARACTER_RIGGING_SKILLS,
|
|
169
|
+
...CHARACTER_SKIN_SKILLS,
|
|
165
170
|
['README.md', renderSkillsReadme],
|
|
166
171
|
['generating-assets/SKILL.md', renderGenerateSkill],
|
|
167
172
|
['choosing-asset-pipelines/SKILL.md', renderAssetPipelinesSkill],
|
|
@@ -184,6 +189,7 @@ export const SHIPPED_SKILLS = [
|
|
|
184
189
|
['building-levels-in-blender/references/audits-and-review.md', renderBlenderAuditsReference],
|
|
185
190
|
['building-levels-in-blender/references/level-design-passes.md', renderBlenderPassesReference],
|
|
186
191
|
['building-levels-in-blender/references/engine-handoff.md', renderBlenderEngineHandoffReference],
|
|
192
|
+
['importing-metahumans/SKILL.md', renderMetaHumanSkill],
|
|
187
193
|
];
|
|
188
194
|
/**
|
|
189
195
|
* Files a particular agent needs that are not skills, written only for a project that named it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/scaffold/project.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/scaffold/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,7 +88,7 @@ ${alsoWritten}
|
|
|
88
88
|
\`planning-a-game/\`, \`finding-engine-apis/\`, \`generating-assets/\`, \`choosing-asset-pipelines/\`,
|
|
89
89
|
\`checking-usage/\`, \`judging-quality/\`, \`theming-the-hud/\`, \`making-a-trailer/\`,
|
|
90
90
|
\`publishing-a-game/\`, \`working-with-the-creator/\`, \`converting-unity-levels/\`,
|
|
91
|
-
\`building-levels-in-blender/\` — and this README — are shipped by the Bitmagic CLI and **re-rendered by \`bitmagic upgrade\`**. They
|
|
91
|
+
\`building-levels-in-blender/\`, \`rigging-characters/\`, \`character-skin-authoring/\`, \`importing-metahumans/\` — and this README — are shipped by the Bitmagic CLI and **re-rendered by \`bitmagic upgrade\`**. They
|
|
92
92
|
describe what the CLI and the engine can do, so they have to stay current with both; edits to them
|
|
93
93
|
are lost on the next upgrade.
|
|
94
94
|
|
|
@@ -96,6 +96,8 @@ are lost on the next upgrade.
|
|
|
96
96
|
|---|---|
|
|
97
97
|
| \`planning-a-game/\` | starting a game, a genre, or anything touching more than one gameplay feature — scoping the first playable slice and writing \`mechanics-plan.md\` |
|
|
98
98
|
| \`finding-engine-apis/\` | you need an engine API and do not know its name or signature, or \`bitmagic check\` cannot resolve a symbol |
|
|
99
|
+
| \`rigging-characters/\` | rigging or repairing a character in local Blender, including skin weights, fingers and optional appendages |
|
|
100
|
+
| \`character-skin-authoring/\` | mapping exposed skin on a generated or imported character with local-agent vision, reviewing face and body detail, or diagnosing skin material boundaries before optical eye work |
|
|
99
101
|
| \`generating-assets/\` | the game needs a skybox, a background, a custom block type, sound, music, image, character, animation or vehicle |
|
|
100
102
|
| \`choosing-asset-pipelines/\` | deciding HOW to make something — which command, skill, file or free built-in fits a level, character, prop, vehicle, weapon, sky, block, image, animation, audio or cutscene need, roughly what it costs in sparks and minutes, and when to ask the creator before an expensive one |
|
|
101
103
|
| \`checking-usage/\` | asked what sparks were spent on, how much Pro allowance is left, or whether there is enough left to keep generating |
|
|
@@ -105,7 +107,8 @@ are lost on the next upgrade.
|
|
|
105
107
|
| \`publishing-a-game/\` | shipping the game to bitmagic.ai — the verify gate, public vs private, thumbnails, category tags, and every way \`bitmagic publish\` can refuse |
|
|
106
108
|
| \`working-with-the-creator/\` | they are editing alongside you — gizmo drags into \`world.json\`, a pasted frame from their game, \`.bitmagic/edit/events.jsonl\`, their phone |
|
|
107
109
|
| \`converting-unity-levels/\` | a creator wants a Unity scene or game ported, replicated or "brought over" — reusing its prefabs, FBX models and colliders — or a converted level has pieces rotated, mis-scaled, walls that do not collide, an empty corner |
|
|
108
|
-
| \`building-levels-in-blender/\` | a hand-designed low-poly world — an interior, a station, a stylised set, "not voxels", "in Blender" — built from a Python script into one GLB the engine's MeshLevel loads, and the \`artStyle: "low-poly"\` switch in game.json that makes the cover, asset and judge defaults follow; or such a level has walls you fall through, doors that do not open, z-fighting, an empty world after publish. Its first section says when the path is yours |
|
|
110
|
+
| \`building-levels-in-blender/\` | a hand-designed low-poly world — an interior, a station, a stylised set, "not voxels", "in Blender" — for a frontier model (Claude Opus/Fable, GPT-6 class) with Blender 4.2+, any other model forges instead; built from a Python script into one GLB the engine's MeshLevel loads, and the \`artStyle: "low-poly"\` switch in game.json that makes the cover, asset and judge defaults follow; or such a level has walls you fall through, doors that do not open, z-fighting, an empty world after publish. Its first section says when the path is yours |
|
|
111
|
+
| \`importing-metahumans/\` | a creator wants an Epic MetaHuman, an Unreal character, a "photoreal" or "highest fidelity" character brought in as the playable high-res player — the GLB preparation (\`bitmagic tools install metahuman\`), the retarget / helper-joint / hair fixes, materials, lip-sync — or such a character has floating hair, crossed arms, split legs, a torn shirt, tinted skin, black eyes, slumped shoulders |
|
|
109
112
|
|
|
110
113
|
Every other directory here is yours. \`upgrade\` never opens a skill it does not ship, and never
|
|
111
114
|
deletes anything under a skills directory. Put project-specific guidance in a skill of your own, or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-files.js","sourceRoot":"","sources":["../../src/scaffold/skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAsB;IAC7E,2FAA2F;IAC3F,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAC7F,6FAA6F;IAC7F,0EAA0E;IAC1E,MAAM,WAAW,GACf,QAAQ,CAAC,MAAM,KAAK,CAAC;QACnB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,8FAA8F;YAC9F,mEAAmE;YACnE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,iFAAiF,CAAC;IAExF,OAAO;;sBAEa,SAAS,SAAS,iBAAiB,CAAC,SAAS,CAAC;;;EAGlE,WAAW
|
|
1
|
+
{"version":3,"file":"skill-files.js","sourceRoot":"","sources":["../../src/scaffold/skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;CAkBR,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAE,SAAS,EAAE,SAAS,EAAsB;IAC7E,2FAA2F;IAC3F,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;IAC7F,6FAA6F;IAC7F,0EAA0E;IAC1E,MAAM,WAAW,GACf,QAAQ,CAAC,MAAM,KAAK,CAAC;QACnB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,8FAA8F;YAC9F,mEAAmE;YACnE,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,iFAAiF,CAAC;IAExF,OAAO;;sBAEa,SAAS,SAAS,iBAAiB,CAAC,SAAS,CAAC;;;EAGlE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BZ,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6JR,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/F,OAAO,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+HR,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkER,CAAC;AACF,CAAC"}
|