design: bundled default starter bodies (Tim t1009u)
@@ -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 strengt537
## Decision 2026-11-07 (Tim t1009u): glTF UVs reach the GPU unchanged in the live preview537
## Decision 2026-11-07 (Tim t1009u): glTF UVs reach the GPU unchanged in the live preview538
538
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.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 bodies542
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`.