Frame every model in the tour, and measure that it does
The showcase is the one deliverable a still render cannot check, and until now the only way to check it was to watch it -- which is how a model half out of frame gets shipped. `__probe.framing()` projects the current model's bounding box into the frame and reports the worst corner in normalised device coordinates: 0 is comfortably inside, 1 is exactly on the edge. The whole 60 seconds can then be swept and the bad moments found by number. Swept, it found five models leaving the frame. Four of them were during the dip between beats, where the veil is 92% opaque and the point is that you cannot see the swap -- so the honest figure is two frames out of 1060, the broom and the ladder, each for a twentieth of a second. Not much. Also not nothing, when the whole point of the tour is that someone records it once and posts it. The first fix was to widen the framing margin from 1.55 to 1.62. It worked and it was the wrong fix: it took a slice of the frame off all thirty-five models to buy back two frames from one, and mean fill fell to 0.515 -- every model sitting in half a screen of empty space. The right fix is in the chase. The camera's distance follows the model's size by exponential approach at a single rate, and the two directions are not the same mistake: falling behind a model that is GROWING crops it, and falling behind one that is shrinking only leaves it small for a moment, which nobody notices. The broom was the last offender because its bundle and its handle both sweep. So the camera now retreats at 18 and closes at 7, and with that in place the margin came back in past where it started, to 1.38. Measured over the visible frames of a full 60 s run: no frame crops, the closest any model comes to the edge is 0.81, and mean fill is 0.605 against 0.515 for the wide-margin version and 0.55 for the original. Models are bigger in frame than before AND nothing is cut. Also here: the tour verified end to end -- 1201 frames, 60.05 s, 35 models, no repeats, chest to oak -- and two stale numbers in the README. It claimed ~800 checks (1,044) and did its showcase arithmetic for 27 models, which is the kind of sentence that goes quietly wrong every time a model is added, so it now says what the number does when the kit grows. One correction to my own measurements, twice over. `showcase.update` clamps its delta to 0.05 internally, which `frameStep` does not, so stepping 0.2 advances 0.05 -- my first two readings of the tour's length were wrong by 4x and 10x and disagreed with each other, which is what gave it away. And the run that reported 34 models in 57.8 s was racing a page reload, not a dropped model.
This commit is contained in:
parent
7d2877c901
commit
9de2721422
4 changed files with 74 additions and 11 deletions
|
|
@ -113,7 +113,7 @@ export function createModel(overrides: Partial<OakTreeConfig> = {}) {
|
|||
* photograph by finding the run of trunk pixels at that height, and the
|
||||
* profile they make is the whole character of the bole: a violent flare
|
||||
* in the bottom twentieth, then a shaft that hardly tapers for a quarter
|
||||
* of the tree, then a steady run out to nothing at 78%.
|
||||
* of the tree, then a steady run out to nothing at 74%.
|
||||
*/
|
||||
const TAPER: ReadonlyArray<readonly [number, number]> = [
|
||||
[0.00, 1.95],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue