A VR headset measures true head orientation θ(t), renders a frame from it, and displays that frame some milliseconds later. That delay — the motion-to-photon (MTP) latency L — means the eye sees the world lagging behind the vestibular system's sense of motion:
rendered(t) = true(t − L)
mismatch(t) = true(t) − rendered(t)
This model uses a real ring buffer of past head-yaw samples and reads it back exactly L milliseconds late (linearly interpolated), so the mismatch you see and the number in the readout are the actual delayed-vs-true difference, not a cosmetic estimate. The top panel is a cylindrical panorama re-projection of a fixed virtual classroom (board, pillars, desks placed at angular positions around you); it is drawn centred on the rendered (delayed) yaw, and a dashed white marker shows where "true forward" actually is right now — the gap between that marker and screen-centre is the mismatch, drawn to scale.
Sensory-conflict theory (Reason & Brand, 1975) holds that motion sickness arises when the visual and vestibular systems report contradictory motion. This simulator turns that into a simplified, pedagogical discomfort score S ∈ [0,100]:
dS/dt = k1 · mismatch² · |ω| · (FOV/90°) − k2 · S
ω = dθ_true/dt (head angular velocity)
Discomfort accumulates fastest when the head is turning quickly (large ω) and the display is behind (large mismatch) — both factors, not either alone — and grows faster still at wide fields of view, since more of the peripheral visual field is then reporting the mismatched motion. It decays exponentially toward zero whenever the head is not actively driving new discomfort. This is a teaching heuristic, not a clinical SSQ score, but the qualitative behaviour matches published VR guidance: engines below roughly 20 ms MTP latency are generally imperceptible, 20–50 ms is commonly tolerated but degrades comfort under fast motion, and consumer headset guidelines (e.g. Oculus/Meta developer docs) target well under 20 ms specifically to avoid this sensory-conflict sickness.
- Latency slider — the actual delay fed into the ring-buffer lookup.
- Head-turn intensity — peak angular velocity of the automatic head sweep (you can also grab the compass below and turn the head yourself).
- Field of view — widens the panorama window shown above and scales the discomfort-growth rate, per the formula above.
- Compass drag — click/touch-drag the white dial to steer true head yaw directly; the physics reacts to your real angular velocity exactly as it does to the automatic sweep.
- Pause / Reset — freeze the automatic sweep to let the score decay, or zero it out.