Merge design: pitch ±60, atlases, .ppda, 4 fps
@@ -349,3 +349,10 @@ Houd me bij elke feature op de hoogte hoe het gaat.
349
349
```text
350
350
Bepaal ook welk 3D-model format goed is; liefst ondersteunen we natuurlijk meerdere. In ieder geval .obj (met mtl en texture) en .fbx, maar hoe meer hoe beter.
351
351
```
352
353
## Decision 2026-11-07 (Tim t955u): pitch ±60, per-map atlases, `.ppda`, default 4 fps
354
355
- **Pitches:** production renders pitches **−60, −30, 0, +30, +60** × twelve yaw values (0…330, step 30), so **60 views** per sample. This supersedes the earlier 36-view (three pitches) wording wherever this document mentions it. The 2D preview's up/down control clamps across the five pitch rows.
356
- **Atlases:** in addition to the loose PNGs (which stay), each completed export writes one atlas per map type (diffuse, normal, depth, specular), containing every angle of every frame of every clip. Name: `<sex>-<settype>-<maptype>-atlas.png`, following the convention of the loose images. Cells are exactly the target resolution, with no padding or scaling. Layout is deterministic: one row per (clip, frame) in source clip order and frame order; columns are pitch (−60→+60) × yaw (0→330). All four atlases share identical cell coordinates. Atlases are written atomically, do not overwrite existing files, and are only written after the loose maps are complete (including after a resume). When the atlas dimensions would exceed the PNG/GPU limit, export fails with a clear message rather than silently splitting the atlas.
357
- **`.ppda` (PaPerDollAtlas):** a strict UTF-8 JSON file next to the atlases, named `<sex>-<settype>-atlas.ppda`. Fields: `format_version` (1), `sex`, `settype`, project id/name, `fps`, `cell_width`/`cell_height`, `pitches` and `yaws` (degrees, in column order), a `maps` object mapping each map type to its atlas PNG filename plus SHA-256, and `clips`: per clip its source index, name, `frame_count` and `duration`, with each frame listing `{pitch, yaw, x, y, w, h}` for every view in atlas pixels. Unknown fields or versions are rejected when read.
358
- **Default framerate:** new projects default to **4 fps** instead of 12. Existing `.ppd` files keep their stored `fps`.
@@ -349,3 +349,10 @@ Houd me bij elke feature op de hoogte hoe het gaat.349
```text349
```text350
Bepaal ook welk 3D-model format goed is; liefst ondersteunen we natuurlijk meerdere. In ieder geval .obj (met mtl en texture) en .fbx, maar hoe meer hoe beter.350
Bepaal ook welk 3D-model format goed is; liefst ondersteunen we natuurlijk meerdere. In ieder geval .obj (met mtl en texture) en .fbx, maar hoe meer hoe beter.351
```351
```352
353
## Decision 2026-11-07 (Tim t955u): pitch ±60, per-map atlases, `.ppda`, default 4 fps354
355
- **Pitches:** production renders pitches **−60, −30, 0, +30, +60** × twelve yaw values (0…330, step 30), so **60 views** per sample. This supersedes the earlier 36-view (three pitches) wording wherever this document mentions it. The 2D preview's up/down control clamps across the five pitch rows.356
- **Atlases:** in addition to the loose PNGs (which stay), each completed export writes one atlas per map type (diffuse, normal, depth, specular), containing every angle of every frame of every clip. Name: `<sex>-<settype>-<maptype>-atlas.png`, following the convention of the loose images. Cells are exactly the target resolution, with no padding or scaling. Layout is deterministic: one row per (clip, frame) in source clip order and frame order; columns are pitch (−60→+60) × yaw (0→330). All four atlases share identical cell coordinates. Atlases are written atomically, do not overwrite existing files, and are only written after the loose maps are complete (including after a resume). When the atlas dimensions would exceed the PNG/GPU limit, export fails with a clear message rather than silently splitting the atlas.357
- **`.ppda` (PaPerDollAtlas):** a strict UTF-8 JSON file next to the atlases, named `<sex>-<settype>-atlas.ppda`. Fields: `format_version` (1), `sex`, `settype`, project id/name, `fps`, `cell_width`/`cell_height`, `pitches` and `yaws` (degrees, in column order), a `maps` object mapping each map type to its atlas PNG filename plus SHA-256, and `clips`: per clip its source index, name, `frame_count` and `duration`, with each frame listing `{pitch, yaw, x, y, w, h}` for every view in atlas pixels. Unknown fields or versions are rejected when read.358
- **Default framerate:** new projects default to **4 fps** instead of 12. Existing `.ppd` files keep their stored `fps`.