Tracker is a Grasshopper plugin for receiving real-time OptiTrack motion-capture data from NaturalPoint Motive through the NatNet API.
The plugin currently exposes an OptiTrack Stream component that connects to a running Motive session, receives NatNet frame data, and outputs Rhino/Grasshopper geometry such as marker points and rigid-body planes.
- Rhino 8 with Grasshopper
- Windows
- OptiTrack Motive running on the local network
- Motive configured to broadcast NatNet data
- NatNet SDK 4.0 managed/native runtime files
This repository currently bundles the NatNet 4.0 runtime files under lib/NatNet:
NatNetML.dllNatNetLib.dllNatNetLib.libNatNetML.xml
The bundled SDK license status should be reviewed before redistribution. The files are retained for build and runtime compatibility because the plugin depends on NatNetML.dll.
src- source index for plugin implementationsrc/Tracker- Grasshopper plugin source and project filesrc/Tracker/OptiTrack- core contracts, NatNet adapter, and telemetry moduleslib- bundled runtime/reference assetslib/NatNet- NatNet SDK runtime/reference filesdocs- setup, compatibility, troubleshooting, build, and telemetry notesexamples- sample definition guidance
-
Build the solution in Release mode, or use a packaged release.
-
If Windows marks the downloaded archive or files as blocked, right-click the
.zip,.gha, or.dll, open Properties, select Unblock, and apply the change. -
Copy the built
Tracker.ghaand required NatNet DLLs into your Grasshopper Libraries folder, commonly:%APPDATA%\Grasshopper\Libraries\Tracker -
Restart Rhino and Grasshopper.
See docs/setup.md for more detail.
For navigable documentation by area, use docs/README.md.
- Start Motive and confirm the OptiTrack system is tracking.
- Enable NatNet broadcasting in Motive.
- In Grasshopper, place the Tracker > OptiTrack > OptiTrack Stream component.
- Set
Local IPto the network adapter address used by Rhino/Grasshopper. - Set
Server IPto the Motive machine address. - Set
Activatetotrue. - Use the component menu to enable rigid-body output when needed.
- NatNet connection mode is currently multicast in code.
- Local and server IP values default to
127.0.0.1; multi-machine setups usually require explicit network adapter addresses. - Skeleton and force-plate paths are present but not fully implemented.
- The project targets .NET Framework 4.8 and is intended for Rhino/Grasshopper on Windows.
- CI builds may be limited by Rhino/Grasshopper and NatNet runtime availability.
Telemetry/error reporting is optional and disabled unless explicitly enabled and configured. No Sentry DSN or project-specific telemetry setting is stored in source control.
Sentry configuration uses environment variables or a local config file such as:
SENTRY_DSNSENTRY_ENVIRONMENTSENTRY_RELEASESENTRY_TRACES_SAMPLE_RATE
Raw motion-capture data, marker positions, rigid-body names, file paths, IP addresses, machine names, usernames, model names, and project names must not be sent to telemetry. See docs/telemetry.md.
Maintainers may use the Codex Sentry plugin for read-only issue review, but that requires a local SENTRY_AUTH_TOKEN and is separate from runtime telemetry.
Current modernization target: v1.4.0.
- Ryan Hughes
- Povl-Sonne Frederiksen