design: narrower bounds-derived + configurable per-sex depth range (t984u)
@@ -405,6 +405,10 @@ Exports no longer pile up as `renders/run-<id>/` folders. Each result lives in `
405
405
406
406
Implementation (2026-11-07): the build folder is `renders/inprogress-<stamp>-<pid>-<sex>-<settype>/` (the only resumable kind). After `complete.json` the run is re-validated with `AtlasSet::open_run`, its lock released, the old result renamed to `.replaced-<name>-<stamp>`, the build renamed to `<sex>-<settype>-atlas`, then the old one removed (restored if the rename fails). `resume::recover` runs before every render: a `.replaced-*` folder is restored when its result folder is missing (else removed), and a completed, unlocked, validating `inprogress-*` folder is promoted. The 2D preview only opens `*-atlas` folders whose name matches their `.ppda` sex/settype; `run-*` folders are skipped with a notice; `inprogress-*`/`.replaced-*` are ignored silently.
407
407
408
## Decision 2026-11-07 (Tim t984u): narrower, configurable depth range
409
410
Supersedes the `R = half render height + |pivot − centre|` rule. (1) The default per-sex depth range is derived from the model bounds around the pivot: the maximum distance of any body vertex from the pivot over all clips, frames and views (the 60 view rotations around the pivot), plus a small margin, giving roughly 0.6 m total for a human body (the old ~3.6 m range used only ~21 cm). Equipment is not part of this envelope; equipment geometry outside the range is clamped and reported (progress + `complete.json` `depth_clamped`), as before. (2) The range is configurable per sex in the `.ppd` (optional override of near/far in meters relative to the camera, or a total range in meters centred on the pivot) and editable in the GUI next to framing. It stays fixed for all frames, views and equipment of that sex, and is stored in `render.json` and `.ppda` `depth_near`/`depth_far`. Readers keep using the recorded values.
411
408
412
## Decision 2026-11-07 (Tim t980u, amended t981u/t983u): depth bit depth + optional RGB band encoding
409
413
410
414
Two project settings in `.ppd`: `depth_bits` = **8 (default)** or 16, and the boolean `depth_rgb_bands`, default **off**. This changes the default export: depth becomes 8-bit unless 16 is chosen. Four combinations, with M = 2^bits − 1 (255 or 65535) and `t = (d − near)/(far − near)` clamped to 0..1:
@@ -405,6 +405,10 @@ Exports no longer pile up as `renders/run-<id>/` folders. Each result lives in `405
405
406
Implementation (2026-11-07): the build folder is `renders/inprogress-<stamp>-<pid>-<sex>-<settype>/` (the only resumable kind). After `complete.json` the run is re-validated with `AtlasSet::open_run`, its lock released, the old result renamed to `.replaced-<name>-<stamp>`, the build renamed to `<sex>-<settype>-atlas`, then the old one removed (restored if the rename fails). `resume::recover` runs before every render: a `.replaced-*` folder is restored when its result folder is missing (else removed), and a completed, unlocked, validating `inprogress-*` folder is promoted. The 2D preview only opens `*-atlas` folders whose name matches their `.ppda` sex/settype; `run-*` folders are skipped with a notice; `inprogress-*`/`.replaced-*` are ignored silently.406
Implementation (2026-11-07): the build folder is `renders/inprogress-<stamp>-<pid>-<sex>-<settype>/` (the only resumable kind). After `complete.json` the run is re-validated with `AtlasSet::open_run`, its lock released, the old result renamed to `.replaced-<name>-<stamp>`, the build renamed to `<sex>-<settype>-atlas`, then the old one removed (restored if the rename fails). `resume::recover` runs before every render: a `.replaced-*` folder is restored when its result folder is missing (else removed), and a completed, unlocked, validating `inprogress-*` folder is promoted. The 2D preview only opens `*-atlas` folders whose name matches their `.ppda` sex/settype; `run-*` folders are skipped with a notice; `inprogress-*`/`.replaced-*` are ignored silently.407
407
408
## Decision 2026-11-07 (Tim t984u): narrower, configurable depth range409
410
Supersedes the `R = half render height + |pivot − centre|` rule. (1) The default per-sex depth range is derived from the model bounds around the pivot: the maximum distance of any body vertex from the pivot over all clips, frames and views (the 60 view rotations around the pivot), plus a small margin, giving roughly 0.6 m total for a human body (the old ~3.6 m range used only ~21 cm). Equipment is not part of this envelope; equipment geometry outside the range is clamped and reported (progress + `complete.json` `depth_clamped`), as before. (2) The range is configurable per sex in the `.ppd` (optional override of near/far in meters relative to the camera, or a total range in meters centred on the pivot) and editable in the GUI next to framing. It stays fixed for all frames, views and equipment of that sex, and is stored in `render.json` and `.ppda` `depth_near`/`depth_far`. Readers keep using the recorded values.411
408
## Decision 2026-11-07 (Tim t980u, amended t981u/t983u): depth bit depth + optional RGB band encoding412
## Decision 2026-11-07 (Tim t980u, amended t981u/t983u): depth bit depth + optional RGB band encoding409
413
410
Two project settings in `.ppd`: `depth_bits` = **8 (default)** or 16, and the boolean `depth_rgb_bands`, default **off**. This changes the default export: depth becomes 8-bit unless 16 is chosen. Four combinations, with M = 2^bits − 1 (255 or 65535) and `t = (d − near)/(far − near)` clamped to 0..1:414
Two project settings in `.ppd`: `depth_bits` = **8 (default)** or 16, and the boolean `depth_rgb_bands`, default **off**. This changes the default export: depth becomes 8-bit unless 16 is chosen. Four combinations, with M = 2^bits − 1 (255 or 65535) and `t = (d − near)/(far − near)` clamped to 0..1: