BlueGit

golden-age paperdoll-renderer

design: 2D playback loops on whole frames (Tim)

timfa Grok Bot · pushed by timfa

Authored 2026-11-07 · 7 days ago

Hash
64eab3191da174a6fff1c959963aee232ce8fa7f
Parent
7641d6bf
1 file changed +4 −0
design.md +4 −0
@@ -368,3 +368,7 @@ Bepaal ook welk 3D-model format goed is; liefst ondersteunen we natuurlijk meerd
368 368 ## Decision 2026-11-07 (Tim t960u): 2D previewer view modes
369 369
370 370 The 2D previewer gets a mode picker: **Resultaat** (default; the real relit composite as the game would show it), **Alleen diffuse**, **Alleen normal map**, **Alleen depth map** and **Alleen specular map**. The map modes show the depth-composited map of the winning layer per pixel directly as the image, unlit, so you can inspect each exported map. Depth is shown as grayscale and normal as its stored RGB encoding. Playback, view selection and equipment selection work the same in every mode; the light controls only affect Resultaat.
371
372 ## Decision 2026-11-07 (Tim t961u): 2D playback loops on whole frames
373
374 Cause found: the 2D preview wrapped its clock on the source clip duration, while the export holds `ceil(duration × fps)` frames. As a result, the last frame of the loop was shown for only `duration − (frames−1)/fps` instead of a full `1/fps`. For example, at 4 fps a clip of 1.1 s showed its fifth frame for only 0.1 s. Fix: playback loops over exactly `frames / fps` seconds, so every frame, including the last, is shown for an equal `1/fps`. A regression test covers a non-whole duration.
@@ -368,3 +368,7 @@ Bepaal ook welk 3D-model format goed is; liefst ondersteunen we natuurlijk meerd
368## Decision 2026-11-07 (Tim t960u): 2D previewer view modes
368## Decision 2026-11-07 (Tim t960u): 2D previewer view modes
369
369
370The 2D previewer gets a mode picker: **Resultaat** (default; the real relit composite as the game would show it), **Alleen diffuse**, **Alleen normal map**, **Alleen depth map** and **Alleen specular map**. The map modes show the depth-composited map of the winning layer per pixel directly as the image, unlit, so you can inspect each exported map. Depth is shown as grayscale and normal as its stored RGB encoding. Playback, view selection and equipment selection work the same in every mode; the light controls only affect Resultaat.
370The 2D previewer gets a mode picker: **Resultaat** (default; the real relit composite as the game would show it), **Alleen diffuse**, **Alleen normal map**, **Alleen depth map** and **Alleen specular map**. The map modes show the depth-composited map of the winning layer per pixel directly as the image, unlit, so you can inspect each exported map. Depth is shown as grayscale and normal as its stored RGB encoding. Playback, view selection and equipment selection work the same in every mode; the light controls only affect Resultaat.
371
372## Decision 2026-11-07 (Tim t961u): 2D playback loops on whole frames
373
374Cause found: the 2D preview wrapped its clock on the source clip duration, while the export holds `ceil(duration × fps)` frames. As a result, the last frame of the loop was shown for only `duration − (frames−1)/fps` instead of a full `1/fps`. For example, at 4 fps a clip of 1.1 s showed its fifth frame for only 0.1 s. Fix: playback loops over exactly `frames / fps` seconds, so every frame, including the last, is shown for an equal `1/fps`. A regression test covers a non-whole duration.