# Virtual Tracker

The Virtual Tracker generates virtual tracker data that motion compensation software uses to cancel out your simulator's physical movement from the VR headset view. Without motion compensation, every time your platform moves, the VR world moves with it — making the experience nauseating and unusable. The Virtual Tracker solves this by telling the motion compensation software exactly how the platform is moving so it can counter-adjust the VR view.

DR Sim Manager supports **OXRMC** (OpenXR Motion Compensation) and **OVRMC** (OpenVR Motion Compensation) via the FlyPT Mover data format.

***

## Why Use Virtual Tracker Instead of a Physical Tracker?

Using the Virtual Tracker is a **better alternative** to relying on a physical tracking device (such as a Vive Tracker mounted on your rig):

* **More precise** — The Virtual Tracker sends the exact computed motion data rather than a noisy optical/IMU tracking signal.
* **No line of sight issues** — Physical trackers can lose tracking when base stations are occluded. The Virtual Tracker never loses tracking.
* **No additional hardware** — No need to purchase, mount, charge, or calibrate a physical tracker.
* **Zero latency** — The position is known instantly because it comes from the motion processing pipeline, not from an external measurement.

***

## Setup Steps

### Step 1: Add the Virtual Tracker Output

1. In DR Sim Manager, go to the **Outputs** tab and click the **+** tab.
2. Select **Virtual Tracker** from the list.
3. The output is now active and writing tracker data.

### Step 2: Configure OXRMC (OpenXR Motion Compensation)

1. Locate the OXRMC configuration file at: `C:\Users\<YourUsername>\AppData\Local\OpenXR-MotionCompensation\OpenXR-MotionCompensation.ini`
2. Open it in a text editor.
3. In the `[tracker]` section, set the tracker type to `flypt`:

```ini
[tracker]
; supported modes: controller, vive, yaw, srs and flypt
type = flypt
```

4. Save the file and restart SteamVR / your OpenXR runtime.

### Step 3: Configure OVRMC (OpenVR Motion Compensation)

If using OVRMC instead of OXRMC, select "FlyPT Mover" as the tracker source in the OVRMC settings panel.

### Step 4: Adjust Offset (Optional)

By default, the Virtual Tracker's position is set to the **Center of Rotation (CoR)** of your simulator. For the best VR experience, you may want to offset the tracker position to match your **eyepoint** (the approximate position of your head/eyes on the rig). This simplifies alignment in OXRMC or OVRMC.

Set the offset values in millimeters:

* **Sway Offset** — Left/right offset from the CoR.
* **Surge Offset** — Forward/backward offset from the CoR.
* **Heave Offset** — Up/down offset from the CoR.

{% hint style="info" %}
Placing the tracker at your eyepoint means the offset in OXRMC/OVRMC can be left at zero, making calibration much simpler. Measure the distance from your rig's Center of Rotation to approximately where your eyes are when seated.
{% endhint %}

***

## Settings

### Output Rate

How frequently the Virtual Tracker writes position data, in milliseconds. The default is **2 ms** (500 Hz). This should be fast enough for all motion compensation software.

### Use Reported Position

When enabled, the Virtual Tracker uses the **platform's reported position** (from a controller that reports its actual position, such as YawVR with Request Position enabled) instead of the computed motion data. This can improve accuracy for controllers that have position feedback.

When disabled (default), the Virtual Tracker uses the computed position from DR Sim Manager's motion processing pipeline.

### Smoothing (Lowpass Samples)

Each axis (Sway, Surge, Heave, Pitch, Roll, Yaw) has an independent **Smoothness** slider that controls the amount of lowpass filtering applied to the tracker data. Higher values produce smoother tracker movement but add a small amount of latency.

* **0** — No smoothing (raw data). Best for low-latency setups.
* **Low values (0.1–0.3)** — Light smoothing. Reduces high-frequency noise while keeping latency minimal.
* **Higher values** — More aggressive smoothing. Useful if the VR view appears jittery.

{% hint style="warning" %}
Too much smoothing introduces latency between the physical platform movement and the VR compensation, which can cause a noticeable "swim" or drift in the VR view. Start with low values and increase only if needed.
{% endhint %}

### Gain

Each axis has an independent **Gain** value that scales the tracker movement for that axis:

* **1.0** (default) — The tracker reports the exact motion.
* **Greater than 1.0** — Amplifies the motion compensation for this axis.
* **Less than 1.0** — Reduces the motion compensation for this axis.

In most cases, gain should stay at **1.0**. Adjust only if the VR compensation consistently over- or under-corrects on a specific axis.

### Offset (mm)

Define custom offsets for Sway, Surge, and Heave to move the tracker position from the Center of Rotation to a different point (typically your eyepoint). Values are in millimeters.

***

## Center of Rotation (CoR)

Understanding where the CoR is located on your rig is important for setting up the offset correctly:

* **Hexapods** — The CoR is at the centroid of the upper platform.
* **Quadposts** — The CoR is located on the plane that the four actuators rest on, which could be either the ground or the cup mounts if placed on a surge or sway platform.

If unsure, start with all offsets at zero and adjust if the VR compensation feels off.

***

## Troubleshooting

### VR view still moves with the platform

1. **Check OXRMC/OVRMC is running** — The motion compensation software must be active and configured to use the `flypt` tracker type.
2. **Check the Virtual Tracker output is enabled** — Ensure the output tab is active in DR Sim Manager.
3. **Check tracker type** — Verify the OXRMC config file has `type = flypt` in the `[tracker]` section.
4. **Restart SteamVR** — After changing the OXRMC config, SteamVR must be restarted for changes to take effect.

### VR compensation is close but slightly off

* **Adjust the Offset** — If the VR view tilts or shifts slightly when the platform moves, the tracker position doesn't match your eyepoint. Adjust the Sway, Surge, and Heave offsets to better match your head position.
* **Check gain values** — If compensation consistently over- or under-corrects on one axis, adjust the gain for that axis.

### VR view "swims" or drifts during motion

* **Reduce smoothing** — Too much smoothing adds latency between the platform movement and the VR compensation. Lower the smoothness values.
* **Check output rate** — Ensure the output rate is at 2 ms or lower. Higher values reduce update frequency.

### VR view is jittery

* **Increase smoothing** — A small amount of smoothing (0.1–0.2) can reduce high-frequency noise without adding noticeable latency.
* **Check your sim config** — Jitter may be caused by noisy telemetry or aggressive tuning settings (high gain, low smoothing in your motion profile).

### Verifying the data being sent

Use the **MMF Reader tool** bundled with OXRMC to inspect the data being written to the memory-mapped file. This shows the live values DR Sim Manager is sending and is useful for confirming the Virtual Tracker is working correctly independent of the motion compensation software.

### Using with YawVR (Reported Position)

If you have a YawVR with **Request Position** enabled, you can enable **Use Reported Position** on the Virtual Tracker. This uses the YawVR's actual reported position for VR compensation rather than the computed position, which can improve accuracy since it accounts for any mechanical differences between the commanded and actual position.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.departedreality.com/dr-sim-manager/general/outputs/virtual-tracker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
