Skip to content

Measure a character against the training renderer ​

Goal ​

One number, in dB, that says how close the engine's picture of a studio character is to what the character was trained to look like: the align lab (examples/align-lab) draws the file or its exported package at the training renderer's own camera, and the training renderer's picture of the same file at the same camera is the reference. Every change to the engine's splat drawing (the fork, the layer, a point shape) is measured this way, at the same three cameras, before it lands. The 30 September 2026 numbers are below; a change that lowers them does not land.

Files you will edit ​

None. This recipe runs one command; nothing in a game changes.

Steps ​

  1. Get a studio character on this disk: its character.ply (the file as trained: what the studio's stage draws), or the exported package's folder (character.json beside character.ply, bindings.bin, the head and the skeleton: what a game gets). Logan Paul's copies of 30 September are in D:\claude-temp\engine-align\serve\ on Isaac's desk (logan_full.ply, pkg\character.json).

  2. Run the one command from the repository root. The head close-up of the file:

    sh
    python examples/align-lab/tools/measure.py path/to/character.ply --camera head

    and of the package, on the character road (the compute skin, the rest stance):

    sh
    python examples/align-lab/tools/measure.py path/to/pkg/character.json --camera head

    --camera all measures the head close-up, the front and the three-quarter. The command's defaults are what a character gets when nothing asks for a look (--shape size-aware --blend stored, chosen by Isaac on the looks sheet of 30 Sep 2026); --shape engine --blend linear is the line before, --shape studio the studio page's point, --band lo,hi the size-aware point's band, --shape trained the lab's own measuring switch (the training renderer's point; no game can ask for it). --cy-head and --cy-body move the aim for a character whose file does not stand where Logan's does (the head at y 0.25, the body aimed at y -0.45).

  3. Read the line it prints per camera, and keep the pictures it wrote in examples/align-lab/shots/:

    text
    head      figure  37.47 dB  whole  39.81 dB  shift +0.08 levels  sharp x1.05  problems 0

    figure is the PSNR on the figure (where the training renderer's alpha is above 2 %: the number to compare), whole the PSNR on the whole frame, shift the mean colour shift on the figure in levels of 255 (positive: lighter than trained), sharp the candidate's sharpness over the reference's (1 is as sharp), skin the skin pass's time on the card per frame for a package, problems the page's errors (0, or the number means nothing).

Verify ​

The training renderer needs Isaac's desk: an NVIDIA card with CUDA and the studio's companion venv (torch and gsplat; GAMEABLE_STUDIO_DIR names the studio checkout, GAMEABLE_STUDIO_PYTHON its venv's python; the first run builds gsplat's CUDA extension into TORCH_EXTENSIONS_DIR, several minutes). Anywhere else, copy the reference pictures rendered there (train_<stem>_<camera>.png and _alpha.png) and pass --reference <dir>: the engine's side of the measurement runs on any machine with WebGPU (headless Edge, or npx playwright install chromium once).

On Logan Paul, 30 September 2026, 1024 x 1024, PSNR on the figure against the training renderer:

CameraThe studio's rendererThe line before 30 SepThe colours as stored, the line's pointThe colours as stored, the studio's pointThe trained point (the lab's switch)
Head close-up, the file35.7 dB28.030.737.440.3
Front, the file26.325.624.537.444.2
Three-quarter, the file26.925.925.136.042.9
Head close-up, the package36.427.530.837.141.8
Front, the package29.027.026.636.142.8
Three-quarter, the package29.526.826.935.641.9

The size-aware point (the default, band 4 to 8 px) on the package at a head close-up (1 m, fov 22) reads with the studio's point (front 37.5 against 37.5; Ari of Hollow Reign 37.4 against 40.2) and at a game's distance (3.3 m, fov 70, 1080p) between the line's and the studio's (Logan front 25.7: the line 23.8, the studio's 31.9). The skin pass on the package (144,492 points), the idle playing: 0.10 ms a frame on that card; the head's expression blend 0.02 ms. The number is not the judge: Isaac is, by eye, at a game's distance as much as close up; this page measures that a change to the fork did not lower a look he chose.

See also ​