LogoLogo
WebsiteSupportDownloadsForumsQuick LinksContact Us
v3.2
v3.2
  • OptiTrack Documentation
  • WHAT'S NEW
    • What's New in Motive 3.2
  • QUICK START GUIDES
    • Quick Start Guide: Getting Started
    • Quick Start Guide: Prime Color Camera Setup
    • Quick Start Guide: Precision Capture
    • Quick Start Guide: Tutorial Videos
    • Quick Start Guide: Active Marker Tracking
    • Quick Start Guide: Outdoor Tracking Setup
  • HARDWARE
    • Cameras
      • Ethernet Cameras
        • PrimeX 120
        • PrimeX 41
        • PrimeX 22
        • PrimeX 13
        • PrimeX 13W
        • SlimX 13
        • Prime Color
        • VersaX 22
        • VersaX 41
        • VersaX 120
      • USB Cameras
        • Slim 3U
        • Flex 13
        • Flex 3
        • V120:Duo
        • V120:Trio
        • Adjusting Global Origin for Tracking Bars
    • Prepare Setup Area
    • Camera Mount Structures
    • Camera Placement
    • Ethernet Camera Network Setup
      • General Overview and Specs
      • Windows 10 Network Settings
      • Cabling and Load Balancing
      • Switch Configuration for PrimeX 120
      • NETGEAR ProSafe GSM7228S: Disabling the Broadcast Storm Control
      • White/Blacklisting Cameras
    • USB Camera System Setup
      • USB Camera Network Overview and Specs
      • V120:Duo and Trio Setup
      • Tracking Bar Coordinate System
        • Transforming Coordinate System: Global to Local
    • Aiming and Focusing
    • Camera Status Indicators
  • MOTIVE
    • Installation and License Activation
    • Motive Basics
    • Calibration
      • .mcal XML Calibration Files
      • Continuous Calibration
      • Continuous Calibration (Info Pane)
      • Calibration Squares
    • Markers
    • Assets
      • Gizmo Tool: Translate, Rotate, and Scale
    • Rigid Body Tracking
      • Aligning Rigid Body Pivot Point with a Replicated 3D Model
    • Skeleton Tracking
    • Trained Markersets
    • IMU Sensor Fusion
    • Data Recording
      • Data Types
    • Labeling
    • Data Editing
    • Data Export
      • Data Export: BVH
      • Data Export: C3D
      • Data Export: CSV
      • Data Export: FBX
      • Data Export: TRC
    • Data Streaming
    • Camera Video Types
    • Audio Recording
    • Motive HotKeys
    • Measurement Probe Kit Guide
    • Motive Batch Processor
    • Reconstruction and 2D Mode
  • MOTIVE UI PANES
    • Settings
      • Settings: General
      • Settings: Assets
      • Settings: Live Pipeline
      • Settings: Streaming
      • Settings: Views
      • Settings: Mouse and Keyboard
      • Settings: Audio
    • Assets Pane
    • Builder Pane
    • Constraints Pane
      • Constraints XML Files
    • Calibration Pane
    • Data Pane
    • Devices Pane
    • Edit Tools Pane
    • Graph View Pane
    • Info Pane
    • Labels Pane
    • Log Pane
    • Probe Pane
    • Properties Pane
      • Properties Pane: Camera
      • Properties Pane: Force Plates
      • Properties Pane: NI-DAQ
      • Properties Pane: OptiHub2
      • Properties Pane: Rigid Body
      • Properties Pane: Skeleton
      • Properties Pane: Take
      • Properties Pane: Trained Markerset
      • Properties Pane: eSync2
    • Status Panel
    • Toolbar/Command Bar
    • Control Deck
    • Viewport
  • PLUGINS
    • OptiTrack Blender Plugin
      • OptiTrack Blender Plugin
    • OptiTrack Unreal Engine Plugin
      • Unreal Engine: OptiTrack Live Link Plugin
        • Quick Start Guide: Real-Time Retargeting in Unreal Engine with Live Link Content
        • Unreal Editor for Fortnite (UEFN): OptiTrack Plugin for Live Link Hub
        • Unreal Engine: Live Link Camera Stream Setup
        • Live Link Content: Active Puck Static Meshes
      • Unreal Engine: MotionBuilder Workflow
      • Unreal Engine: HMD Setup
      • Unreal Engine VCS Inputs
    • OptiTrack Unity Plugin
      • Unity: HMD Setup
    • OptiTrack OpenVR Driver
    • OptiTrack MATLAB Plugin
    • Autodesk Maya
      • Autodesk Maya: OptiTrack Insight VCS Plugin
    • Autodesk MotionBuilder
      • Autodesk MotionBuilder Plugin
      • Autodesk MotionBuilder: OptiTrack Skeleton Plugin
      • Autodesk MotionBuilder: OptiTrack Optical Plugin
      • Autodesk MotionBuilder: OptiTrack Insight VCS Plugin
      • Autodesk MotionBuilder: Timecode Data
    • OptiTrack Peripheral API
    • External Plugins
      • Houdini 19 Integration
  • ACTIVE COMPONENTS
    • Active Components Hardware
      • Active Puck
      • Wired AnchorPuck
      • CinePuck
      • Wired CinePuck
      • BaseStation
      • Information for Assembling the Active Tags
      • Manus Glove Setup
    • Configuration
      • Active Batch Programmer
      • Active Hardware Configuration: PuTTY
      • Active Component Firmware Compatibility
    • Active Marker Tracking
      • Active Finger Marker Set
  • SYNCHRONIZATION
    • Synchronization Hardware
      • External Device Sync Guide: eSync 2
      • External Device Sync Guide: OptiHub2
    • Synchronization Setup
    • OptiTrack Timecode
  • VIRTUAL PRODUCTION
    • Unreal Engine: OptiTrack InCamera VFX
    • Entertainment Marker Sets
    • PrimeX 41
  • MOVEMENT SCIENCES
    • Movement Sciences Hardware
      • General Motive Force Plate Setup
      • AMTI Force Plate Setup
      • Bertec Force Plate Setup
      • Kistler Force Plate Setup
      • Delsys EMG Setup
      • NI-DAQ Setup
      • Multiple Device Setup
    • Movement Sciences Marker Sets
      • Biomechanics Marker Sets
      • Biomech (57)
      • Rizzoli Marker Sets
    • For Visual3D Users
    • Prime Color Camera Setup
      • Prime Color Setup: Required Components
      • Prime Color Setup: Hardware Setup
      • Prime Color Camera Setup: Camera Settings
      • Prime Color Camera Setup: Prime Color FS Calibration
      • Prime Color Setup: Data Recording / Export
      • Prime Color Camera Setup: FAQ / Troubleshooting
      • Prime Color Camera Setup: Windows Network Settings
  • VIRTUAL REALITY
    • VR Plugins
      • VR Unreal Engine
        • OptiTrack Unreal Engine Plugin
        • Unreal Engine: OptiTrack Live Link Plugin
          • UE5.1 Live Link Retarget External Workaround
        • Unreal Engine VCS Inputs
      • VR Unity
        • OptiTrack Unity Plugin
      • VR OpenVR
        • OptiTrack OpenVR Driver
    • VR HMD Setup
      • Unreal Engine: HMD Setup
      • Unity: HMD Setup
      • Manually Calibrating the HMD Pivot Point
      • Sync Configuration with an HTC Vive System
    • SlimX 13
    • Active Marker Tracking
      • Active Finger Marker Set
    • Synchronization Hardware
      • External Device Sync Guide: eSync 2
      • External Device Sync Guide: OptiHub2
  • ANIMATION
    • Autodesk Maya
      • Autodesk Maya: OptiTrack Insight VCS Plugin
    • Autodesk MotionBuilder
      • Autodesk MotionBuilder Plugin
      • Autodesk MotionBuilder: OptiTrack Skeleton Plugin
      • Autodesk MotionBuilder: OptiTrack Optical Plugin
      • Autodesk MotionBuilder: OptiTrack Insight VCS Plugin
      • Autodesk MotionBuilder: Timecode Data
  • ROBOTICS
    • MoCap4ROS2 Setup
    • OptiTrack Robot Applications
    • Outdoor Tracking Setup
  • DEVELOPER TOOLS
    • Developer Tools Overview
    • Camera SDK
      • Class: cCameraModule
      • Class: cUID
    • Motive API
      • Motive API: Quick Start Guide
      • Motive API Overview
      • Motive API: Function Reference
      • Motive API Camera Calibration
    • NatNet SDK
      • NatNet 4.1
      • NatNet: Class/Function Reference
      • NatNet: Creating a Managed (C sharp) Client Application
      • NatNet: Creating a Native (C++) Client Application
      • NatNet: Data Types
      • NatNet: Matlab Wrapper
      • NatNet: Migration to NatNet 3.0 libraries
      • NatNet: Remote Requests/Commands
      • NatNet: Sample Projects
      • NatNet: Unicast Data Subscription Commands
      • Latency Measurements
    • VRPN Sample
    • Peripheral API: Glove Devices
  • SKELETON MARKER SETS
    • Full Body
      • Baseline (41)
      • Core (50)
      • Biomech (57)
      • Conventional (39)
    • Full Body + Fingers
      • Baseline + Passive Fingers (49)
      • Baseline + Active Fingers (57)
      • Core + Passive Fingers (54)
      • Core + Active Fingers (62)
    • Upper
      • Baseline Upper (25)
      • Conventional Upper (27)
    • Lower
      • Baseline Lower (20)
      • Helen Hayes Lower (19)
      • Conventional Lower (16)
    • Hand and Fingers
      • Left/Right Hand (4) Active
      • Left/Right Hand (10) Active + Passive
      • Active Finger Marker Set
    • Glove Device Setup
      • Manus Glove Setup
      • StretchSense Glove Setup
    • Rizzoli Marker Sets
    • Entertainment Marker Sets
    • Rigid Body Skeleton Marker Set
  • GENERAL TROUBLESHOOTING
    • Licensing Troubleshooting
    • Windows 11 Optimization for Realtime Applications
    • Network Troubleshooting
    • Troubleshooting Q&A
    • Running Motive on High DPI Displays
    • Firewall Settings
Powered by GitBook
On this page
  • NatNet Sample Projects
  • NatNet SDK Samples
  • Direct Depacketization Samples
  • XML trigger broadcast
  • Running NatNet Samples
  • Console Output Sample (SampleClient)
  • Minimal Sample (MinimalClient)
  • Rigid Body Sample (SampleClient3D)
  • WinForms .NET Sample
  • Matlab Sample

Was this helpful?

Export as PDF
  1. DEVELOPER TOOLS
  2. NatNet SDK

NatNet: Sample Projects

This page lists the NatNet sample applications provided with the SDK and provides instructions for some of the samples.

Our code samples are the quickest path to get NatNet data into your application. We recommend the following steps:

  1. Identify your application’s development/interface requirements (managed, native, etc.).

  2. Adapt the NatNet sample code from the corresponding NatNet sample application in the samples folder into your application.

  3. Use the API reference in the next page for additional information.

The Visual Studio solution file \Samples\NatNetSamples.sln will open and build all of the NatNet sample projects. If you are creating an application from scratch, please refer to the following sections for application specific requirements.

NatNet Sample Projects

The following projects are located in the NatNet SDK\Samples folder.

NatNet SDK Samples

The following sample projects utilizes NatNet SDK library for obtaining tracking data from a connected server application.

Sample Name
NatNet Library Type
Description

Managed: Matlab

MinimalClient

Native: C++

Sample NatNet console app that connects to a NatNet server to receive a data stream.

Contains the bare minimum code to make the NatNet connection. Good for testing connectivity.

Native: C++

Sample NatNet console app that connects to a NatNet server, receives a data stream, and writes that data stream to an ASCII file.

More robust than the MinimalClient, SampleClient provides a feature-rich template that includes everything necessary to build your own application.

Native: C++

Sample NatNet application that connects to a NatNet server, receives a data stream, and displays that data in an OpenGL 3D window.

SampleClientML

Managed: .NET (C#)

Managed: C# .NET

Simple C# .NET sample showing how to use the NatNet managed assembly (NatNetML.dll). This sample also demonstrates how to send and receive the NatNet commands.

Direct Depacketization Samples

The following sample projects do not use the NatNet SDK library. Client/Server connection is established at a low-level by creating sockets and threads within the program, and the streamed data are depacketized directly from the bit-stream syntax. The following sample approaches should be used only when the use of NatNet SDK library is not applicable (e.g., streaming into UNIX clients).

Sample Name
Type
Description

PacketClient

C++

Simple example showing how to connect to a NatNet multicast stream and decode NatNet packets directly without using the NatNet SDK.

PythonSample

Python

Sample Python code file (.py) for using Python with NatNet streaming. This sample depacketizes data directly from the bit-stream without using the library.

When working in Edit mode, pause playback in Motive to view the streamed data. Press the h key to display the NatNet help screen for additional commands.

XML trigger broadcast

Sample Name
Type
Description

BroadcastSample

C++

XML broadcast. Sample application illustrating how to use remote record trigger in Motive using XML formatted UDP broadcast packets.

Running NatNet Samples

Console Output Sample (SampleClient)

  1. Start the OptiTrack Server (e.g. Motive) and begin streaming data via the Streaming Panel.

  2. Start the SampleClient application from the command prompt or directly from the NatNet SDK/Samples/bin folder.

  3. At startup, the SampleClient application searches the local network and lists the IP addresses of available tracking servers that are streaming tracking data.

Select a server address by pressing the corresponding number key. The SampleClient application will begin receiving tracking data.

Press Q at any time to quit the SampleClient application.

Minimal Sample (MinimalClient)

  • Start the OptiTrack Server (e.g. Motive) and begin streaming data via the Streaming Panel.

  • Start the MinimalClient application from the command prompt or directly from the NatNet SDK/Samples/bin folder.

  • Data will begin streaming once the connection is established, beginning with a list all the data descriptions in the Take, followed by individual frames of MoCap data.

  • If the Take is paused in Motive, the MinimalClient will remain in a listening state, waiting for Motive to stream additional data. Start the MinimalClient with playback paused if you wish to verify the data descriptions being streamed.

  • If the MinimalClient cannot make a connection, the application will terminate.

Rigid Body Sample (SampleClient3D)

The Rigid Body sample (SampleClient3D) illustrates how to decode NatNet 6DOF Rigid Body and Skeleton Segment data from OptiTrack quaternion format to euler angles and display them in a simple OpenGL 3D viewer. This sample also illustrates how to associate RigidBody/Skeleton Segment names and IDs from the data descriptions with the IDs streamed in the FrameOfMocapData packet.

With Client/Server on same machine:

  1. In Motive, load a dataset with Rigid Body or Skeleton definitions.

  2. Enable network streaming (Data Streaming Pane -> Check Broadcast Frame Data).

  3. Enable streaming Rigid Body data (check Stream Options -> Stream Rigid Bodies = True)

  4. Open the Sample3D project, go to File -> Connect.

With Client/Server on separate machines:

  1. In Motive, Load a dataset with Rigid Body or Skeleton definitions.

  2. Set the IP address to stream from (Network Interface Selection -> Local Interface).

  3. Enable network streaming ( Data Streaming Pane -> Check Broadcast Frame Data ).

  4. Enable streaming Rigid Body data (check Stream Options -> Stream Rigid Bodies = True).

  5. Open the Sample3D project. Set the Client and Server IP addresses.

  6. File -> Connect.

Edit the sample with the following properties:

  • IP Address: Use the IP address of the client NIC card you wish to use.

  • Server IP Address: IP Address of the server entered in step 2 above.

WinForms .NET Sample

  1. Start a NatNet server application, such as Motive (as used in our example).

  2. Enable NatNet streaming from the Server application.

  3. Start the WinForms sample application from the NatNet Samples folder.

  4. Update the Local and Server IP Addresses as necessary.

  5. Press the Connect button to connect to the server.

  6. Select Get Data Descriptions to request and display a detailed description of the Server’s currently streamed objects.

  7. Select a Row in the DataGrid to display that value in the graph.

Matlab Sample

  1. Start a NatNet server application (e.g. Motive).

  2. Enable NatNet streaming from the Server application.

  3. Start Matlab.

  4. Open the NatNetPollingSample.m file.

  5. From the editor window, press Run.

PreviousNatNet: Remote Requests/CommandsNextNatNet: Unicast Data Subscription Commands

Was this helpful?

Sample MATLAB code file (.m) for using MATLAB with the NatNet managed assembly (NatNetML.dll) using the provided class. Works in Matlab version 2014 or above.

Sample NatNet C# console application that connects to a NatNet server on the local IP address, receives data stream, and outputs the received data. Note: must be set to false.

The following samples demonstrate how to use remote triggering in Motive using the .

XML formatted UDP broadcast packets
natnet.p wrapper
Matlab
SampleClient
SampleClient3D
WinFormsSample
Skeleton As Rigid Bodies
Motive is streaming to the local loopback address, detected by the SampleClient application.
Running the SampleClient project from the windows command prompt.
Connecting to the MinimalClient before starting playback in Motive.
SampleClient3D - Decoding and draqing labeled Rigid Body position and orientation (6DoF) data.
Receiving tracking data via NatNet in a .NET environment.
Issuing remote control commands to Motive.
Real-time streaming mocap data from Motive into Matlab. Click image to enlarge.