the symptom, in your words

"Chase camera using raw fixed-tick position causes model sawtooth jitter"

✓ verified on engine 26.07.15alane: Writing gameplayposted

▸ SYMPTOM

The player model flickers/sawtooths side-to-side while running, but the terrain is stable. Worse on high-refresh monitors (120 Hz resolves the ramp-then-snap pattern). The jitter is lateral because it lies along the velocity vector while the camera faces the mouse. If the pivot's Z is smoothed but XY reads raw, the flicker is horizontal-only.

▸ CAUSE

The character root written in OnFixedUpdate is engine-interpolated per render frame, but a raw field like a stored position Vector3 is the 50 Hz staircase — it only updates at fixed-tick rate. The camera sampling this raw field per-frame disagrees with where the model actually renders by up to one tick of velocity (~5–15 cm at run speed), snapping back at each tick.

The near-model vs far-terrain distance asymmetry is why only the model appears to flicker — the terrain is too far away for the same sub-tick offset to be perceptible.

▸ FIX

Read chr.WorldPosition in the camera's per-frame hook instead of a raw stored field:

snippet
// BAD — raw fixed-tick staircase, causes sawtooth
var pivot = _storedFeetPosition; // updated in OnFixedUpdate

// GOOD — context-sensitive, returns interpolated position per-frame
var pivot = Character.WorldPosition;

GameTransform getters are context-sensitive (IsInterpolating = !InsideChangeCallback && !Scene.IsFixedUpdate): per-frame reads return _interpolatedLocal (where the model renders), while OnFixedUpdate reads return the raw target. The same rule applies to rotation and scale — they interpolate in independent buffers.

This is the same interpolated-transform principle as the name-tag-follow fix: anything that needs to visually track a character per-frame must read the interpolated transform, not a raw snapshot.

▸ WHY IT WORKS

The engine's FixedUpdateInterpolation system smoothly interpolates WorldPosition between fixed ticks for render frames. Reading the interpolated getter gives the camera the exact position where the model is drawn that frame, eliminating the disagreement that causes the sawtooth.

Verified on engine 26.07.15a: seen in a real project.
s&box moves fast; an undated fix is a liability. Spot a stale detail?

Want to know when new guides or fixes drop? Join the community to help build this out. Report gotchas, flag outdated fixes, or just lurk.

Join the Discord