Roll and pitch, measured from the pixels

On our research path, full-car dynamics moves a rigged Lincoln MKZ in Helios Engine. We measured its body roll and pitch back from the rendered pixels; on a plain test pad they match the physics to within 0.2°. Synthetic vehicle parameters.
Replay a car along a recorded path in a renderer and it slides around the corner like a cutout on rails. The path is right. The body never leans, the nose never dips under braking, and the wheels never move on their springs. A planner reading poses does not care. A camera-based driving model does, because body motion is part of what it sees on the road: the horizon tilts in a turn and drops when the car brakes.
So we connected a full-car dynamics model to Helios Engine, our renderer, and drove a Lincoln MKZ through three standard manoeuvres on a straight road at Richmond Field Station, one of our SimForge map scenes, on one NVIDIA RTX A6000. Then we checked the result the hard way. We did not trust the numbers we fed the renderer. We measured the body's angles back out of the frames it drew.
- Roll 1.7° by the end of a 15 m/s left turn, braking dive peaking at 1.4°, launch squat peaking at 1.3°.
- Measured from the rendered pixels on a plain test pad, the angles match the physics to within 0.2°; on the Richmond Field Station renders, within 0.34°.
- Synthetic vehicle parameters, one GPU, three manoeuvres, research path.
The body leans out of the turn
At 15 m/s the steering steps to 2.4° and the car turns left. Weight moves to the outside. By the end of the clip the outer front suspension has compressed 21 mm, the inner one has extended 22 mm, the outer front tyre carries 1.1 kN more than the inner one (4.9 against 3.8 kN), and the body has rolled 1.7° toward the outside of the turn. The inset beside it is the control: the same path with no body motion at all.
Measured from the pixels
Feeding numbers into a renderer proves little on its own. A wrong rotation order, a pivot in the wrong place or a dropped offset all produce a car that moves, just not the way the physics says. So we rendered every manoeuvre twice from the identical camera pose: once with the full dynamics, and once as a rigid replay of the same path. Any difference between the two frames comes from the car body alone. We then rotated each rigid frame until it best matched the physics frame, searching ±4° in 0.1° steps on a crop of the car body, and read off the angle.
These four measurements come from the same physics rendered on a plain test pad, where the background does not compete with the car. Roll comes from the rear view and pitch from the side view. Every sign is right and every angle agrees to within 0.2°; the remaining gaps are consistent with perspective, which an image rotation does not model. The control frame, before the car turns, measures 0.0° on the 0.1° search grid. On the Richmond Field Station renders the same search gives 1.6° of roll, 1.1° of braking pitch and 0.0° for the control, but 0.9° for the launch pitch. We attribute that 0.34° shortfall to the busier background, which our method note predicts biases the fit toward zero.
We also checked the parts directly. Each wheel of the car model sits within 0.17 mm of where the physics puts it in either scene, the body within 3.8 µm, and on the flat test pad every tyre touches the ground to within 0.78 mm. Each wheel takes its own spin, steer and suspension travel exactly as the physics computes them, with no hidden correction, and an invalid update is refused whole.
We wrote down a predicted range for each manoeuvre before rendering. Every direction came out right, and the braking deceleration landed on its prediction: 3.41 against 3.39 m/s². Two magnitudes missed: steady squat by 11% and mean dive by 21%. We report them rather than tune them away.
The nose dives, the tail squats
Braking from 20 m/s at 3.4 m/s² pitches the nose down, peaking at 1.4° and settling near 1°. One second in, the front tyres carry 4.9 kN each and the rear tyres 2.8 kN. Launching from rest does the opposite: the nose lifts 1.3° at its peak and settles at 0.9°, and the rear suspension sits 21 mm compressed once the body settles after two small bounces.
Same frames, every run
We render from a cached physics run, one manoeuvre per GPU session, from a single recorded build. When we rebuilt from a later commit and rendered the test-pad set again on the same GPU, all 1,577 frames came out byte for byte the same, and the Richmond Field Station renders reuse those exact physics samples. A render stopped halfway and resumed matched an unbroken one frame for frame. It is the same standard we hold the closed loop to, described in our post on deterministic simulation.
What we do not claim
- Synthetic vehicle. The mass, inertia, springs, dampers and tyres are synthetic values built around the MKZ's geometry. They are not a calibrated Lincoln MKZ.
- One softened tyre constant. We raised the tyre model's slip regularisation from 0.5 to 5.0 m/s so the physics could take steps large enough for multi-second clips. It softens the tyres at every speed, which is why the slip readout in the launch clip is far larger than a real tyre's. The body attitudes depend on the force balance rather than on slip, and are barely affected above about 3 m/s.
- A turn that has not settled. The step-steer clip ends at 2.6 s, while roll and lateral acceleration are still rising.
- A research path. These dynamics run in our test harness. They are not yet a setting for the ego vehicle in a closed-loop run, and we make no real-time claim for them.
- One car, three manoeuvres, one straight road. The physics treats the road as a plane, so we placed each manoeuvre in the right-hand lane of a Richmond Field Station road where the real surface under the tyres stays within 0.6 mm of that plane, and checked every tyre against the real road surface on every frame (within 4.4 mm). That road slopes about 0.08°, and the attitudes in the clips are relative to it, not to level. The model accepts any vehicle described by its parameters, and the renderer can pose any rigged car in our catalog; only one parameter set exists today.
What this buys you
- Camera frames that move like the car. Body roll, dive and squat reach the sensors, so a camera-based model sees the horizon tilt and drop the way it does on the road.
- A renderer you can audit. The vehicle attitude in a frame can be measured back from the pixels and compared with the physics state.
- Evidence that repeats. The same code draws the same frames, so a strange frame can be reproduced and inspected rather than explained away.
Next we plan to make full-car dynamics a choice for the ego vehicle in closed-loop runs, fit the parameters to measured vehicle data, and add more cars and manoeuvres. To see these renders with one of your own vehicles or scenarios, write to contact@simforge.ai.