Nine builds in one update. Your chest and waist can now go to SteamVR as trackers, a phone compass keeps your heading straight, the Steps tab was reworked from tester feedback, several turning and input fixes landed, and the built-in FlatVR tab - watching a flat screen in 3D inside the headset - got a large update of its own.
A compass on the phone dial. When your phone is the tracker, the phone panel now shows a real compass: a fixed needle over a rotating N/E/S/W ring, with the azimuth and quadrant in the middle - exactly like the compass app on the phone. It reads the phone's own magnetic heading, filtered by the OS.
Heading correction follows that compass. Turned on, it holds your in-game facing to magnetic north instead of letting it creep as you play. It corrects the way you actually point the phone, so it stays right whether the phone is lying flat or standing up. Measured: about 1° of drift per half hour without it, 10-35° with the gyro alone.
One switch, off by default. It only helps where the phone's magnetometer is trustworthy, so you choose when to use it; the magnetometer itself is turned on in the phone app.
The Mapping tab can now hand your body to SteamVR. Chest and waist, as tracked by BodyWalkVR from your phone, nRF or SlimeVR source, appear in SteamVR as tracker devices - so any game that supports body trackers (VRChat and friends) sees them, and your torso in the game turns and leans with you.
It ships as the SteamVR Tracker plugin, version 1.0: install it from the Plugins tab, and the Mapping tab does the rest. It sits next to the existing SteamVR Controller plugin (the virtual treadmill controller) and does not replace it.
The graph lines are labelled and draggable. Dead zone, maximum walking speed and the acceleration threshold each carry their name on the left and the live value on the right, and you can drag any of them by its handle or by the line itself - no more guessing which slider moves which line.
"S2" is now "Acceleration" on the Steps tab (the threshold that switches acceleration on, and the acceleration button), with the tooltips rewritten to match. "Speed 100%" is now Maximum walking speed, with a real explanation under it.
The speed curve sits beside the live graph with its axes named - Stick deflection against Movement intensity - so you can watch the dot on the curve against the signal that drives it. The green line shows its numbers right on the line, at the end and on the peaks.
Turning is fixed. Turning driven by your body could go the wrong way and wind past a half-turn (a "Turn +544" on the dial), and with Turn set to None the hips lagged backwards behind your head instead of following it. Turning now tracks you correctly. Quick Setup also stopped overwriting the axis you picked for a phone, nRF or SlimeVR source - it presets only the headset rows now.
The DIY Magnetic Treadmill no longer fights the headset. Choosing Magnetic Treadmill on the Steps tab used to leave a headset walking source selected at the same time, so the two drove movement in parallel. Picking the treadmill is now exclusive, the way the other locomotion sources are.
Meta Quest Pro: finger-touch on the controller works in OpenXR. On Quest Pro (and other Touch controllers) the capacitive touch sensors - your finger resting on the thumbrest or on the A/B/X/Y buttons - were dead in OpenXR games: the layer declared the fields but never filled them, so a binding set to one of them did nothing. They reach the Mapping tab now. This needs the updated OpenXR plugin (2.0) - install it again from the Plugins tab.
OpenVR device scan no longer runs every frame when SteamVR answers with an empty list; an empty answer is an answer.
The flat-to-3D tab inside BodyWalkVR received its own large update this cycle:
Cinema Mode plays films smoothly - no more freeze-then-jump. A 60 fps film on a 120 Hz desktop used to be counted twice per frame; only real frames count now.
Sharper, faster depth. The AI presets were measured against each other on real frames and two broken ones were replaced with better models at the same cost; a new Distill Balanced preset fills the gap between cheap and expensive; and the depth model can now run in pieces, paced to your frames, for a steadier frame rate.
Performance you can actually reach. Performance Mode watches the frames, not just the model's clock, and steps a preset down when it keeps dropping them. The Status tab shows hardware-accelerated GPU scheduling (HAGS), explains it and switches it for you - it decided between 45 and 90 fps on the same PC in our tests.
Direct3D 12 games fixed. Real depth from games like Cyberpunk 2077 no longer arrives as flat blocky rectangles and no longer resets the graphics driver. Depth add-on 2.13: run the Setup Helper on the ReShade tab once more so the new file lands in the game folder.
OpenTrack head tracking fixed. The head pose was being sent with the axes crossed - a nod arrived in the channel OpenTrack calls roll - so the Invert checkboxes seemed to act on the wrong axis. There is also a new Axis Mapping on the OpenTrack panel for games or trackers that read the channels in another order.
Smoother output: dark gradients no longer band on SBS/XREAL, and glasses that switch their own 3D mode (Viture, XREAL) keep the picture on the right display when Windows renumbers the monitors. New sliders: 3D Render Resolution and Interface Scale; the app window is resizable.
The app version is shown in the window title, so "which build do I have" reads at a glance, and the installer removes older stray installs instead of leaving two side by side.
Silent crashes can be caught. For the crashes that "just close" the app before a report can be written, the Debug tab now asks Windows to save a dump (and switches on Page Heap to catch memory corruption), then reports it with one Send. Turn it off after the hunt; it slows the app while on.
One crash report per process - a second fault no longer overwrites the first report, which is the one that matters.
Gesture binding popup no longer reads past the end of the list after a reload.
Capture error screen no longer takes the app down with it when the UI backend's texture was only half created.
A round of FlatVR crash fixes from your reports: minimising the captured game, Stop then Start in one sitting, a driver reset (TDR) - all stop cleanly now. Nothing is ever sent unless you press Send.
The sliced depth models made for the pieces mode are fetched on demand rather than shipped, so the download is smaller; anything you fetch is removed when you uninstall.
Rolling back: Steam library → right-click BodyWalkVR → Properties → Betas → last-stable. Your settings are kept either way.