plan: 0.1.0 ships first-person only; MPCB character reserved as NPC template

Coordinator decision 2026-11-07: 0.1.0 is first-person-only (capsule +
camera, no visible body). The MPFB character (idle pose + warm skin, done)
is reframed as the reusable NPC/pedestrian prefab for 0.2.0+ / 0.5.0, not
wired into the AGigLineCharacter pawn. Roadmap character + 0.2.0/0.5.0
sections updated; no engine/asset changes.
This commit is contained in:
zwitschi committed 2026-11-07 14:16:17 +01:00
1 parent c11cb4caa4
commit 72e7eed653
1 file changed
+10 -11
+10 -11
View File
@@ -79,17 +79,15 @@ Owner: this session. Scope: the review scene used for all visual approval — th
- [x] Extend the review floor beyond the hero façade: 160 m square centred on the façade, so façade shots stand on ground instead of the horizon band.
- [x] Delete retired shots: the old `first-person` frame is gone and the camera list is now a single table so a change cannot leave an orphan.
### Character development - active - 01a1b26b-3c94-707f-9665-2f6b4a79b564
### Character development — decision: 0.1.0 is first-person only; NPCs planned later
Follow-on work on the player avatar, after the review scene passes. None of it is `0.1.0` scope unless a release check requires it. Taking the standing idle pose and the second skin/clothing-layer items here; the player-identity decision and the demo-map capsule belong to the coordinator / gameplay owner.
Coordinator decision 2026-11-07: **`0.1.0` ships first-person only** — a capsule with a camera, no visible player body. It is **not** a player-avatar blocker for `0.1.0`.
- [x] Standing idle pose: `Tools/mpfb_character_export.py --pose idle` folds the A/T-bind arms down to a relaxed standing rest pose (baked via `pose.armature_apply` before export). Verified: `upperarm01.L` rest z −0.71 → −1.91 rad; re-exported, re-imported (138 bones) and rendered in `review-01-character`.
- [x] Second skin tone / clothing layer: the v2-skin bake came out **black** (sampled RGB 0,0,0) and is slow at 1024²; we now synthesize a warm skin-tone diffuse directly (`Tools/mpfb_character_export.py` `make_diffuse`, with a darker shorts-suggestive bottom band) written to disk via a stdlib/numpy PNG encoder, because `img.save()` writes black for an in-memory image. Character now reads warm, not grey. Screenshot review pending (`Screenshots/review-01-character` re-pended).
The MPFB character asset (idle pose + warm skin, done below) is planned as the template for **NPCs** in later milestones (`0.2.0` adds the body/camera toggle; `0.5.0` adds pedestrians). Keep it as a standalone character/prefab rather than wiring it into the `AGigLineCharacter` pawn. Everything here is future/NPC work, not `0.1.0` scope.
- [ ] Decide what the `0.1.0` player is: first-person-only, or a body that is visible in third person. The `0.2.0` milestone adds the MPFB body and camera toggle; `0.1.0` currently ships a capsule with a camera and no visible body.
- [ ] Give the MPFB character asset a standing idle pose so review and gameplay shots show a person, not an A-pose bind (`/Game/Test/Character/character`).
- [ ] Bake a second skin tone or clothing layer, so the character does not read as a grey mannequin in shots.
- [ ] Add the character's collision capsule in the demo map and confirm the camera does not clip the head at the 1.60 m eye height.
- [x] Give the MPFB character asset a standing idle pose so review and NPC shots show a person, not an A-pose bind. Done: `Tools/mpfb_character_export.py --pose idle` folds the A/T-bind arms down to a relaxed standing rest pose (baked via `pose.armature_apply` before export; `upperarm01.L` rest z −0.71 → −1.91 rad), re-exported, re-imported (138 bones), rendered in `review-01-character`.
- [x] Bake a second skin tone or clothing layer, so the character does not read as a grey mannequin in shots. Done: the v2-skin bake came out **black** and slow at 1024², so we synthesize a warm skin-tone diffuse directly (`Tools/mpfb_character_export.py` `make_diffuse`, with a darker shorts-suggestive bottom band) via a stdlib/numpy PNG writer. Character reads warm, not grey. Screenshot review pending (`Screenshots/review-01-character` re-pended).
- [ ] (open) Keep the character as a reusable NPC prefab: a visible body, a collision capsule, and a head-height check that the camera does not clip at 1.60 m — for when NPCs/pedestrians are wired in (`0.2.0+`), not the `0.1.0` player.
### Asset production
@@ -182,8 +180,9 @@ Planned explicitly so the shipped blockouts are not mistaken for finished archit
### Character setup
- [ ] Generate MPFB human base mesh; export baked materials and deform skeleton.
- [ ] Import character into Unreal; validate skeleton, scale, and materials.
- [x] Generate MPFB human base mesh; export baked materials and deform skeleton. Done in bootstrap: idle-pose 19 158-vert human with a 137-bone standard rig, `Tools/mpfb_character_export.py` (now `--pose idle` + warm `make_diffuse`).
- [x] Import character into Unreal; validate skeleton, scale, and materials. Done: `/Game/Test/Character` — `SkeletalMesh` (138 bones), `Skeleton`, warm `M_Character_Export` material with baked `T_Character_Diffuse`.
- [ ] Promote the character asset into a reusable NPC prefab (visible body, collision capsule, idle pose) ready for pedestrians (`0.5.0`) once the third-person body lands.
- [ ] Create basic idle/walk animation set.
- [ ] Verify animation plays correctly on the imported rig.
@@ -302,7 +301,7 @@ Planned explicitly so the shipped blockouts are not mistaken for finished archit
### Simulation
- [ ] Add pedestrian characters with navigation.
- [ ] Add pedestrian characters with navigation, reusing the idle-pose character asset as the NPC prefab (`/Game/Test/Character`).
- [ ] Implement crosswalk behavior (pedestrians use the designated crossing).
- [ ] Add limited ambient traffic on the street network.
- [ ] Optimize simulation cost to stay within frame budget.