BlueGit

golden-age paperdoll-renderer

design: bundled default starter bodies (Tim t1009u)

timfa Grok Bot · pushed by timfa

Authored 2026-11-07 · 6 days ago

Hash
0529eae13b9e8d280ee50927e4c66e6a47e321cc
Parent
f7012585
Pipeline
Passed
1 file changed +4 −0
design.md +4 −0
@@ -537,3 +537,7 @@ When a glTF body material carries `KHR_materials_specular`, its specular strengt
537 537 ## Decision 2026-11-07 (Tim t1009u): glTF UVs reach the GPU unchanged in the live preview
538 538
539 539 glTF texture coordinates have their origin at the top-left of the image (v = 0 is the first row) and are used as loaded, with no V flip, per `TEXCOORD_n` of the texture (`texCoord`) and after `KHR_texture_transform`, as in production. The live shader no longer flips V for everything; only equipment meshes (OBJ/FBX convention, bottom-left origin) are converted once when they are handed to the live GPU path, exactly as production already did. Sampler wrap stays nearest + REPEAT for both paths. A GPU probe case checks both origins with a 1×2 texture.
540
541 ## Decision 2026-11-07 (Tim t1009u, licence approved by Tim): bundled default starter bodies
542
543 Tim's Sketchfab models "Animated walking Male Base Mesh" and "Animated Female Base Mesh" (author assetfactory, Sketchfab Standard licence, approved by Tim) are bundled byte-exact in `assets/default-bodies/{male,female}/` (`.gltf` with the buffer uri fixed by Tim to `male.bin`/`female.bin`, `.bin`, `textures/`, `license.txt`). **Nieuw project** (parent folder + name) copies them into `<project>/assets/body/male/` and `female/` with their `license.txt` and sets them as the male and female body, so a new project renders immediately. The files are embedded in the executable (`include_bytes!`), so every package (AppImage, deb, Arch, AUR, Windows zip) carries them without a separate data path; packages also ship `THIRD_PARTY_NOTICES.md`. The README has an attribution section. The CC0 synthetic test bodies stay in `tests/fixtures/bodies/` and remain the seed for tests, examples and `--preview-fixture`.
@@ -537,3 +537,7 @@ When a glTF body material carries `KHR_materials_specular`, its specular strengt
537## Decision 2026-11-07 (Tim t1009u): glTF UVs reach the GPU unchanged in the live preview
537## Decision 2026-11-07 (Tim t1009u): glTF UVs reach the GPU unchanged in the live preview
538
538
539glTF texture coordinates have their origin at the top-left of the image (v = 0 is the first row) and are used as loaded, with no V flip, per `TEXCOORD_n` of the texture (`texCoord`) and after `KHR_texture_transform`, as in production. The live shader no longer flips V for everything; only equipment meshes (OBJ/FBX convention, bottom-left origin) are converted once when they are handed to the live GPU path, exactly as production already did. Sampler wrap stays nearest + REPEAT for both paths. A GPU probe case checks both origins with a 1×2 texture.
539glTF texture coordinates have their origin at the top-left of the image (v = 0 is the first row) and are used as loaded, with no V flip, per `TEXCOORD_n` of the texture (`texCoord`) and after `KHR_texture_transform`, as in production. The live shader no longer flips V for everything; only equipment meshes (OBJ/FBX convention, bottom-left origin) are converted once when they are handed to the live GPU path, exactly as production already did. Sampler wrap stays nearest + REPEAT for both paths. A GPU probe case checks both origins with a 1×2 texture.
540
541## Decision 2026-11-07 (Tim t1009u, licence approved by Tim): bundled default starter bodies
542
543Tim's Sketchfab models "Animated walking Male Base Mesh" and "Animated Female Base Mesh" (author assetfactory, Sketchfab Standard licence, approved by Tim) are bundled byte-exact in `assets/default-bodies/{male,female}/` (`.gltf` with the buffer uri fixed by Tim to `male.bin`/`female.bin`, `.bin`, `textures/`, `license.txt`). **Nieuw project** (parent folder + name) copies them into `<project>/assets/body/male/` and `female/` with their `license.txt` and sets them as the male and female body, so a new project renders immediately. The files are embedded in the executable (`include_bytes!`), so every package (AppImage, deb, Arch, AUR, Windows zip) carries them without a separate data path; packages also ship `THIRD_PARTY_NOTICES.md`. The README has an attribution section. The CC0 synthetic test bodies stay in `tests/fixtures/bodies/` and remain the seed for tests, examples and `--preview-fixture`.