docs(decisions): add character pipeline decisions from Quaternius spike
D-158: Frontal camera angle for editor/mugshot UI D-159: Character body type enum (4 adult × 2 genders + 1 child) D-160: Body meshes segmented into 15 bone-group regions D-161: Head always separate mesh on Head bone D-162: Clothing pre-baked per body type via Blender Surface Deform D-163: Trellis generates unique heads via BoneAttachment3D D-164: Fork Quaternius skeleton, replace all body meshes Q-060: Surface Deform quality at extreme body types Q-061: Base clothing mesh count for v0.2 Q-062: Quaternius Source tier body type coverage Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -540,6 +540,41 @@ Technical foundation decisions that constrain implementation: engine, client-ser
|
||||
- **Dissent:** None
|
||||
- **Cross-reference:** [D-149](#d-149-3d-characters-rendered-live-in-scene--not-pre-rendered-sprites), [D-150](#d-150-character-outline--inverted-hull-method)
|
||||
|
||||
### D-160: Body meshes must be segmented into 15 bone-group regions
|
||||
- **Date:** 2026-03-19
|
||||
- **Decision:** Character body meshes are segmented into 15 bone-group regions (head, neck, torso, arm_upper_l/r, arm_lower_l/r, hand_l/r, leg_upper_l/r, leg_lower_l/r, foot_l/r) plus eyes and eyebrows. Each segment is a separate skinned GLB on the shared 65-bone skeleton. Segments have a 1-ring vertex overlap at boundaries to eliminate visible seams during animation. Segments can be individually hidden when clothing covers them.
|
||||
- **Rationale:** Validated in the Quaternius aesthetic spike. Monolithic body meshes block the compositor: hiding the body to show clothing also removes the head and limbs. Segmentation enables per-slot visibility, head separation for Trellis-generated faces, and limb loss mechanics. The 1-ring vertex overlap was validated as seamless at gameplay zoom.
|
||||
- **Raised by:** Jeroen + Tyre, during spike validation.
|
||||
- **Cross-reference:** [D-159](scope.md#d-159-character-body-type-enum-4-adult-types--2-genders--1-child-skeleton) (body type enum), [D-149](#d-149-3d-characters-rendered-live-in-scene--not-pre-rendered-sprites)
|
||||
|
||||
### D-161: Head is always a separate mesh on the Head bone
|
||||
- **Date:** 2026-03-19
|
||||
- **Decision:** Character heads are never baked into body or clothing meshes. The head is always a separate mesh attached to the Head bone via BoneAttachment3D. Trellis generates unique head shapes per character. Hair attaches to the same bone as a separate swappable mesh (enables hairdresser mechanic). The neck stays with the body mesh as a separate segment.
|
||||
- **Rationale:** Validated in the Quaternius spike. The Quaternius pack bakes the head into the body mesh — this blocks clothing display (hiding body = losing head) and prevents per-character face variation. Separating the head unlocks: Trellis-generated faces, idle look-around animation, helmet/hood equipment, hair as a swappable accessory.
|
||||
- **Raised by:** Jeroen, during spike validation.
|
||||
- **Cross-reference:** [D-160](#d-160-body-meshes-must-be-segmented-into-15-bone-group-regions), [D-163](#d-163-trellis-generates-unique-heads-per-character-via-boneattachment3d)
|
||||
|
||||
### D-162: Clothing is pre-baked per body type via Blender Surface Deform
|
||||
- **Date:** 2026-03-19
|
||||
- **Decision:** Clothing meshes are authored on a reference body type, then batch-fitted to each of the 9 body types via Blender's Surface Deform modifier in an offline pipeline. The fitted variants are exported as separate GLBs. At runtime, the compositor loads the variant matching the character's body type. Runtime clothing scaling does not exist — it was tested (bone pose scaling in Godot) and failed catastrophically.
|
||||
- **Rationale:** Three approaches were tested during the spike: (1) runtime bone scaling — failed with mesh collapse at joints, (2) Blender bone scaling — same failure, (3) Blender Surface Deform — produced output (visual quality at extremes is Q-060). The Surface Deform pipeline is the only viable path. Pre-baking is required; runtime fitting is impossible.
|
||||
- **Raised by:** Tyre + Araminta, during spike research and validation.
|
||||
- **Cross-reference:** [D-159](scope.md#d-159-character-body-type-enum-4-adult-types--2-genders--1-child-skeleton), Q-060
|
||||
|
||||
### D-163: Trellis generates unique heads per character via BoneAttachment3D
|
||||
- **Date:** 2026-03-19
|
||||
- **Decision:** Each character in the game receives a unique Trellis-generated head mesh. The head is a static (unskinned) mesh attached to the Head bone via BoneAttachment3D. Hair is a separate mesh on the same bone. Head generation happens offline during character creation/world generation. The concept image prompt controls face shape, ethnicity, age, and features.
|
||||
- **Rationale:** Validated in the spike: Trellis head + BoneAttachment3D + toon shader produces a coherent character at gameplay zoom. This is the only Trellis output that works on the Quaternius rig — clothing and body meshes both failed. Head generation gives per-character visual identity without hand-modeling.
|
||||
- **Raised by:** Jeroen (insight that Trellis output works as heads), validated by Tyre.
|
||||
- **Cross-reference:** [D-161](#d-161-head-is-always-a-separate-mesh-on-the-head-bone)
|
||||
|
||||
### D-164: Fork Quaternius skeleton, replace all body meshes
|
||||
- **Date:** 2026-03-19
|
||||
- **Decision:** The Quaternius 65-bone skeleton and Universal Animation Library are adopted as the character rig foundation. All body meshes are replaced with hand-authored meshes on the same skeleton. The CC0 license permits unrestricted forking. Quaternius Source tier ($5/mo Patreon, one month) is recommended for .blend source files to support the Blender batch scripting pipeline.
|
||||
- **Rationale:** The spike validated the skeleton and animation library as clean, compatible, and well-structured. The body meshes are rejected: Superhero proportions contradict the life-sim aesthetic (D-153), only 2 body types exist in the standard tier (Superhero Male/Female), and procedural body type generation via bone scaling failed. The skeleton is the expensive part to create from scratch — keeping it and replacing the meshes is the correct split.
|
||||
- **Raised by:** Tyre + Araminta, confirmed by Jeroen.
|
||||
- **Cross-reference:** [D-159](scope.md#d-159-character-body-type-enum-4-adult-types--2-genders--1-child-skeleton), [D-160](#d-160-body-meshes-must-be-segmented-into-15-bone-group-regions)
|
||||
|
||||
---
|
||||
|
||||
*44 decisions. Last updated: 2026-03-17 (D-148–D-152 added — Sprint 28 Character Visuals workshop: camera, 3D rendering, outline, direction count, LOD)*
|
||||
*49 decisions. Last updated: 2026-03-19 (D-160–D-164 added — Quaternius aesthetic spike: segmentation, head separation, clothing pipeline, Trellis heads, Quaternius fork)*
|
||||
|
||||
@@ -92,6 +92,13 @@ Technical foundation questions: engine, protocols, data structures, performance,
|
||||
- **Assigned to:** Tyre
|
||||
- **Source:** Sprint 26 client work (#646, #659)
|
||||
|
||||
### Q-060: Can Surface Deform produce acceptable clothing at extreme body types?
|
||||
- **Status:** OPEN
|
||||
- **Question:** The Surface Deform batch pipeline runs and produces output, but visual quality at extreme body types (heavy, thin) has not been verified at gameplay or mugshot zoom. Does the clothing mesh hold its shape when Surface Deform stretches it to fit a heavy body?
|
||||
- **Date raised:** 2026-03-19
|
||||
- **Source:** Quaternius aesthetic spike — clothing pipeline validation
|
||||
- **Cross-reference:** D-162
|
||||
|
||||
---
|
||||
|
||||
*13 questions (7 resolved, 1 partially resolved, 5 open). Last updated: 2026-03-13.*
|
||||
*14 questions (7 resolved, 1 partially resolved, 6 open). Last updated: 2026-03-19.*
|
||||
|
||||
@@ -99,6 +99,18 @@ Game concept, prototype boundaries, production pipeline, and feature decisions.
|
||||
- **Assigned to:** Tyre, SI
|
||||
- **Source:** Voice pipeline Spike 2 Phase 3
|
||||
|
||||
### Q-061: How many base clothing meshes needed for v0.2 proof-of-life?
|
||||
- **Status:** Open
|
||||
- **Question:** The Quaternius Fantasy pack (62 parts) is genre-incompatible with an industrial sci-fi life-sim. What is the minimum viable clothing catalogue for the v0.2 proof-of-life milestone? Needs a scope decision before clothing work begins. The multiplier stack (30 base meshes × shape keys × AI textures × tint = ~20K visual variants) was identified during the spike but the base mesh count is arbitrary.
|
||||
- **Assigned to:** Gestalt, Araminta
|
||||
- **Source:** Quaternius aesthetic spike — clothing pipeline research
|
||||
|
||||
### Q-062: What does Quaternius Source tier include for body types?
|
||||
- **Status:** Open
|
||||
- **Question:** The standard tier only includes Superhero Male and Female body meshes. Does the Source tier ($5/mo Patreon) include Regular and Tiny body meshes in full Blender format? These would provide 2 additional body types (mapping to Average and Thin in D-159) that could be forked and segmented, reducing the hand-authoring burden from 9 to 5 meshes.
|
||||
- **Assigned to:** Jeroen (acquisition decision)
|
||||
- **Source:** Quaternius aesthetic spike
|
||||
|
||||
---
|
||||
|
||||
*15 questions (2 resolved, 3 partially resolved, 10 open). Last updated: 2026-03-14 (Q-039 resolved — gate topology generated)*
|
||||
*17 questions (2 resolved, 3 partially resolved, 12 open). Last updated: 2026-03-19 (Q-060–Q-062 added — Quaternius aesthetic spike)*
|
||||
|
||||
+15
-1
@@ -341,6 +341,20 @@ What we're building: game concept, design pillars, prototype definition, map spe
|
||||
- **Dissent:** None (camera pull-back proposal overruled)
|
||||
- **Cross-reference:** [D-136](architecture.md#d-136-first-settled-reach-moment--auto-generated-apartment--insert-activation) (first game moment), [D-146](#d-146-character-creation-preview--tile-scale-sprite-with-heavy-zoom) (character creation as separate context)
|
||||
|
||||
### D-158: Frontal camera angle is default for character editor / mugshot UI
|
||||
- **Date:** 2026-03-18
|
||||
- **Decision:** The character editor and mugshot UI use a frontal camera angle (0° tilt, eye-level) by default. Gameplay camera defaults to dramatic (-30°) or isometric (-45°).
|
||||
- **Rationale:** Frontal view is the natural angle for inspecting a character's face and outfit in an editor context. Identified during the Quaternius aesthetic spike — the frontal preset immediately felt right for close inspection while the tilted angles serve gameplay readability.
|
||||
- **Raised by:** Jeroen, during spike validation.
|
||||
- **Cross-reference:** [D-146](#d-146-character-creation-preview--tile-scale-sprite-with-heavy-zoom) (character creation as separate context), [D-155](#d-155-character-editor-supports-full-360-rotation) (editor rotation)
|
||||
|
||||
### D-159: Character body type enum: 4 adult types × 2 genders + 1 child skeleton
|
||||
- **Date:** 2026-03-18
|
||||
- **Decision:** The character system supports 4 adult body types × 2 genders (8 base meshes) plus 1 gender-neutral child skeleton (9 total). The adult body types are: **Thin** (ectomorph, narrow), **Average** (regular proportions, canonical/default), **Muscular** (broad shoulders, thick limbs), **Heavy** (wide torso, thick midsection). Children use a distinct skeleton with correct child proportions (larger head-to-body ratio, shorter limbs) — not a scaled-down adult. Child gender differentiation comes from animation, not mesh. Elderly is an animation/posture layer on adult bodies (slight stoop, different gait), not a separate body type.
|
||||
- **Rationale:** Identified during the Quaternius aesthetic spike — the standard tier only has 3 body types (Superhero/Regular/Tiny) with no heavy/fat variation and clothing locked per body type. A populated life-sim world needs visually distinct people. 4 types gives readable silhouette variety at isometric zoom without exploding the clothing authoring burden (clothing authored on Average, batch-generated for other 3 via Blender Surface Deform). Araminta confirmed 4 is the right count — 2 is too coarse, 5+ becomes unmanageable. Thin vs Average may merge in loose clothing at gameplay zoom; this is acceptable.
|
||||
- **Raised by:** Jeroen, during spike review. Araminta and Tyre confirmed.
|
||||
- **Cross-reference:** [D-153](#d-153-player-character-not-visually-distinct-from-npcs) (same models for player and NPCs), [D-158](#d-158-frontal-camera-angle-is-default-for-character-editor--mugshot-ui) (editor camera)
|
||||
|
||||
---
|
||||
|
||||
*31 decisions (22 active, 9 superseded). Last updated: 2026-03-17 (D-153–D-157 added — Sprint 28 Character Visuals workshop: player distinctness, outline, editor rotation, faction colors, game start)*
|
||||
*33 decisions (24 active, 9 superseded). Last updated: 2026-03-18 (D-159 added — body type enum)*
|
||||
|
||||
Reference in New Issue
Block a user