OptiTrack¶
Optitrack is a commercialy available optical tracking system.
In order to use it with SPARCK, you need the NatNet2Osc App.

Real-Time Tracking for Spatial Augmented Reality
The OptiTrack node enables SPARCK to receive real-time transformation data from the OptiTrack motion capture system. This data drives virtual objects to move synchronously with their physical counterparts, providing a tracked match between virtual and physical worlds — essential for Spatial Augmented Reality installations.
Reference¶
The following properties can be configured for this node:
| Property | Type | Description |
|---|---|---|
reply indicator |
- | lights up when bidirectional connection to motive works |
connection indicator |
- | lights up when optitrack data is received |
stream 1 - 8 |
- | chosen optitrack rigidbody to be used with rigidbody abstraction |
in port |
- | listening port, port where the NatNet2Osc-app send the osc stream. |
out port |
- | sending port, NatNetThree2Osc-app listening port to receive commands. |
out port IP |
- | sending IP address, where the NatNetThree2Osc-app runs. |
leap forward |
- | calculate forward prediction. [ms] |
leap filter |
- | smooth forward prediction. [%] |
parent |
- | parent transformation node |
scale |
(local transformation) | scale in x y z |
| Inlet | Type | Description |
|---|---|---|
| properties | properties | properties | use message [set <propertyPath> <value(s)>] (without node/<nodeName> at the beginning) to set internal properties |
| raw | message | raw motive data stream |
| Outlet | Type | Description |
|---|---|---|
| raw | message | raw motive data stream |
Setup Requirements¶
NatNet2OSC Bridge Required
OptiTrack streams data in its proprietary NatNet format. SPARCK cannot receive NatNet directly — you need the NatNet2OSC application as a bridge:
- Download NatNet2OSC from GitHub
- Run NatNet2OSC on the same machine as Motive (or on the network)
- Configure NatNet2OSC to listen to Motive's NatNet stream
- NatNet2OSC converts the data to OSC and sends it to SPARCK
The OptiTrack node listens for this OSC stream on the configured in port.
Connection Setup¶
Network Configuration
Configure the ports and IP addresses to establish communication:
| Property | Purpose | Typical Value |
|---|---|---|
in port |
Port where SPARCK receives OSC data from NatNet2OSC | 1511 |
out port |
Port where SPARCK sends commands to NatNet2OSC | 1512 |
out port IP |
IP address of the machine running NatNet2OSC | 127.0.0.1 (local) or network IP |
The reply indicator lights up when bidirectional communication is established. The connection indicator lights up when tracking data is actively being received.
Working with RigidBodies¶
Tracking Objects Workflow
To track physical objects and move virtual geometry accordingly:
- In Motive: Define rigid bodies for each object you want to track. Give them unique names/IDs.
- In OptiTrack node: Assign each rigid body to a stream slot (stream 1–8)
- Add RigidBody nodes: Create a RigidBody node for each tracked object
- Link streams: Set each RigidBody's
streamproperty to the corresponding OptiTrack stream - Parent geometry: Set the RigidBody as parent for your Canvas or other nodes
The virtual objects will now follow the physical tracked objects in real-time.
Latency Compensation¶
Leap Forward Prediction
Fast-moving tracked objects can cause visible jitter or lag. The leap forward and leap filter properties help compensate:
- leap forward [ms]: Predicts where the object will be X milliseconds in the future. Start with small values (10-50ms) and increase as needed.
- leap filter [%]: Smooths the prediction to reduce jitter. Higher values = smoother but less responsive.
These settings are also available on individual RigidBody nodes for per-object tuning.
Important Notes¶
Data Flow Architecture
Calibration with Motion Capture
You can calibrate Beamer nodes while the projector is attached to a motion capture rigid body. Enable implement parent transformation in the Beamer's calibration settings to automatically calculate the local offset from the rigid body to the projector's lens position.
-
Quick Start
Get started with OptiTrack in minutes
-
Complementing OptiTrack
-
Tutorials
-
Community
Need help or want to suggest improvements?
Last updated: 2025-12-01 | Edit this page on GitHub