BlueGit

golden-age paperdoll-renderer

design: #13 orientation convention + one-shot animation envelope

timfa Grok Bot · pushed by timfa

Authored 2026-11-07 · 7 days ago

Hash
26122ebc615c5b92c6043a9ac75271d55bc580ec
Parent
782bccbb
Pipeline
Passed
1 file changed +4 −0
design.md +4 −0
@@ -423,3 +423,7 @@ Alpha is always kept (scaled to the bit depth). Distance = near + t·(far − ne
423 423 - A skinned glTF body loads every mesh node and every skin; joints of all skins are merged into one skeleton (shared joints once, max 128).
424 424 - A mesh node without a skin moves rigidly with its nearest joint ancestor (else the first joint); its rest-pose scene placement is baked once so it is exact at rest.
425 425 - KHR_texture_transform on the base-color texture is baked into the UVs at load. Sampler wrap modes stay unread (nearest + REPEAT everywhere); metallic/roughness, normal/occlusion/emissive textures and morph targets stay unused, body specular stays zero. These limits are documented in the README rather than approximated.
426
427 ## Decision 2026-11-07 (#13 orientation + envelope, implementation choice)
428 - Orientation convention fixed and test-guarded with labelled markers: +Y up, character faces −Z, its right is +X; yaw 0 = front (character's right on image left), 90 = left side, 180 = back, 270 = right side; positive pitch looks from above.
429 - "Omhullende animaties" is a one-shot, user-triggered button: height and center Y are set so every clip, every frame at project fps and all 60 views fit, +5% margin per side; the pivot is unchanged. Framing stays fixed afterwards: no per-frame, per-clip or per-layer autozoom. Equipment allowance stays manual. Root motion stays retained, so a travelling clip widens the envelope.
@@ -423,3 +423,7 @@ Alpha is always kept (scaled to the bit depth). Distance = near + t·(far − ne
423- A skinned glTF body loads every mesh node and every skin; joints of all skins are merged into one skeleton (shared joints once, max 128).
423- A skinned glTF body loads every mesh node and every skin; joints of all skins are merged into one skeleton (shared joints once, max 128).
424- A mesh node without a skin moves rigidly with its nearest joint ancestor (else the first joint); its rest-pose scene placement is baked once so it is exact at rest.
424- A mesh node without a skin moves rigidly with its nearest joint ancestor (else the first joint); its rest-pose scene placement is baked once so it is exact at rest.
425- KHR_texture_transform on the base-color texture is baked into the UVs at load. Sampler wrap modes stay unread (nearest + REPEAT everywhere); metallic/roughness, normal/occlusion/emissive textures and morph targets stay unused, body specular stays zero. These limits are documented in the README rather than approximated.
425- KHR_texture_transform on the base-color texture is baked into the UVs at load. Sampler wrap modes stay unread (nearest + REPEAT everywhere); metallic/roughness, normal/occlusion/emissive textures and morph targets stay unused, body specular stays zero. These limits are documented in the README rather than approximated.
426
427## Decision 2026-11-07 (#13 orientation + envelope, implementation choice)
428- Orientation convention fixed and test-guarded with labelled markers: +Y up, character faces −Z, its right is +X; yaw 0 = front (character's right on image left), 90 = left side, 180 = back, 270 = right side; positive pitch looks from above.
429- "Omhullende animaties" is a one-shot, user-triggered button: height and center Y are set so every clip, every frame at project fps and all 60 views fit, +5% margin per side; the pivot is unchanged. Framing stays fixed afterwards: no per-frame, per-clip or per-layer autozoom. Equipment allowance stays manual. Root motion stays retained, so a travelling clip widens the envelope.