design: default depth range = T-pose arm span + arm margin each side, .ppd override (t985u)
@@ -405,9 +405,9 @@ 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
408
## Decision 2026-11-07 (Tim t984u, amended t985u): default and configurable depth range
409
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.
410
Supersedes the `R = half render height + |pivot − centre|` rule. (1) The default per-sex depth range is the **T-pose arm span** (fingertip to fingertip, measured in the bind pose) **plus one arm length of margin on each side**, centred on the pivot depth: `total = span + 2·arm`, `near = D − total/2`, `far = D + total/2` (camera distance D = 10 m). This covers the model in any rotation plus long weapons. Span = horizontal extent of the bind-pose body vertices; arm = (span − shoulder width)/2 with the shoulder width taken from the left/right upper-arm/shoulder joints when they can be identified by name, otherwise arm = 0.4·span (documented fallback, also for static bodies). Geometry still outside the range is clamped and reported (progress + `complete.json` `depth_clamped`). (2) The range is configurable per sex in the `.ppd` (`depth_range_milli`: optional total range in millimetres, centred on the pivot) and editable in the GUI next to framing ("Dieptebereik", with an "automatisch" choice). 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 use the recorded values (validated: finite, 0 < near < far, equal to identity near/far) instead of recomputing them.
411
411
412
412
## Decision 2026-11-07 (Tim t980u, amended t981u/t983u): depth bit depth + optional RGB band encoding
413
413
@@ -405,9 +405,9 @@ 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 range408
## Decision 2026-11-07 (Tim t984u, amended t985u): default and configurable depth range409
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.410
Supersedes the `R = half render height + |pivot − centre|` rule. (1) The default per-sex depth range is the **T-pose arm span** (fingertip to fingertip, measured in the bind pose) **plus one arm length of margin on each side**, centred on the pivot depth: `total = span + 2·arm`, `near = D − total/2`, `far = D + total/2` (camera distance D = 10 m). This covers the model in any rotation plus long weapons. Span = horizontal extent of the bind-pose body vertices; arm = (span − shoulder width)/2 with the shoulder width taken from the left/right upper-arm/shoulder joints when they can be identified by name, otherwise arm = 0.4·span (documented fallback, also for static bodies). Geometry still outside the range is clamped and reported (progress + `complete.json` `depth_clamped`). (2) The range is configurable per sex in the `.ppd` (`depth_range_milli`: optional total range in millimetres, centred on the pivot) and editable in the GUI next to framing ("Dieptebereik", with an "automatisch" choice). 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 use the recorded values (validated: finite, 0 < near < far, equal to identity near/far) instead of recomputing them.411
411
412
## 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 encoding413
413