Main Page → Motive Documentation → Data Streaming
Motive offers multiple options to stream tracking data onto external applications in real-time. Streaming plugins are available for Autodesk Motion Builder, The MotionMonitor, Visual3D, Unreal Engine 4, 3ds Max, Maya (VCS), VRPN, and trackd, and they can be downloaded from the OptiTrack website. For other streaming options, the NatNet SDK enables users to build custom clients to receive capture data. All of the listed streaming options do not require separate licenses to use. Common motion capture applications rely on real-time tracking, and the OptiTrack system is designed to deliver data at an extremely low latency even when streaming to third-party pipelines. This page covers configuring Motive to broadcast frame data over a selected server network. Detailed instructions on specific streaming protocols are included in the PDF documentation that ships with the respective plugins or SDK's.
Read through the Data Streaming Pane page for explanations on each setting.
NaturalPoint Data Streaming Forum: OptiTrack Data Streaming
Streaming in Motive
- Open the Data Streaming Pane in Motive
- Select the network interface address for streaming data.
- Select desired data types to stream under streaming options.
- When streaming skeletons, set the appropriate bone naming convention for client application.
- Check Broadcast Frame Data at the top.
- Configure streaming settings and designate the corresponding IP address from client applications
- Stream live or playback captures
Streaming IP Address
It is important to select the network adapter (interface, IP Address) for streaming data. Most Motive Host PCs will have multiple network adapters - one for the camera network and one (or more) for the local area network (LAN). Motive will only stream over the selected adapter (interface). Select the desired interface using the Data Streaming Pane in Motive. The interface can be either over a local area network (LAN) or on the same machine (localhost, local loopback). If both server (Motive) and client application are running on the same machine, set the network interface to the local loopback address (127.0.0.1). When streaming over a LAN, select the IP address of the network adapter connected to the LAN. This will be the same address the Client application will use to connect to Motive.
Firewall or anti-virus software can block network traffic, so it is important to make sure these applications are disabled or configured to allow access to both server (Motive) and Client applications.
Before starting to broadcast data onto the selected network interface, define which data types to stream. Under streaming options, there are settings where you can include or exclude specific data types and syntax. Set only the necessary criteria to true. For most applications, the default settings will be appropriate.
See: Data Streaming pane
Bone Naming Convention
When streaming skeleton data, bone naming convention formats annotations for each segment when data is streamed out. The appropriate convention should be configured to allow a client application to properly recognize segments. For example, when streaming to Autodesk pipelines, the naming convention should be set to FBX. If you are also using exported tracking data (FBX) to animate a character in certain scenes, you will need to use the matching convention in the streaming settings so that it can properly recognize the naming convention used in the character.
Coordinate System Convention
Motive (1.7+) uses a right-handed Y-up coordinate system. However, coordinate systems used in client applications may not always agree with the convention used in Motive. In this case, the coordinate system in streamed data needs to be modified to a compatible convention. For client applications with a different ground plane definition, Up Axis can be changed under Advanced Network Settings. For compatibility with left-handed coordinate systems, the simplest method is to rotate the capture volume 180 degrees on the Y axis when defining the ground plane during Calibration.
NatNet is a client/server networking protocol which allows sending and receiving data across a network in real-time. It utilizes UDP along with either Unicast or Multicast communication for integrating and streaming reconstructed 3D data, rigid body data, and skeleton data from OptiTrack systems to client applications. Within the API, a class for communicating with OptiTrack server applications is included for building client protocols. Using the tools provided in the NatNet API, capture data can be used in various application platforms. Please refer to the NatNet User Guide For more information on using NatNet and its API references.
If desired, recording in Motive can control or be controlled by other remote applications via sending or receiving either NatNet commands or XML broadcast messages to or from a client application through the UDP communication protocol. This enables client applications to trigger Motive or vise versa. Using NatNet commands is recommended because they are not only more robust but they also offer additional control features.
Recording start and stop commands can also be transmitted via XML packets. When triggering via XML messages, the Remote Trigger setting under Advanced Network Settings must be set to true. In order for Motive, or clients, to receive the packets, the XML messages must be sent via the triggering UDP port. The triggering port is designated as two increments (2+) of the defined Command Port (default: 1510), under the advanced network settings, which defaults to 1512. Lastly, the XML messages must exactly follow the appropriate syntax:
- XML Triggering Port: Command Port (Advanced Network Settings) + 2. This defaults to 1512 (1510 + 2).
- Tip: Within the NatNet SDK sample package, there is are simple applications (BroadcastSample.cpp (C++) and NatCap (C#)) that demonstrates a sample use of XML remote trigger in Motive.
XML syntax for the start / stop trigger packet
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <CaptureStart> <Name VALUE="RemoteTriggerTest_take01"/> <SessionName VALUE="SessionName" /> <Notes VALUE="Take notes goes here if any"/> <Assets VALUE="skel1, skel2, sword" /> <Description VALUE="" /> <DatabasePath VALUE="S:/shared/testfolder/"/> <TimeCode VALUE="00:00:00:00"/> <PacketID VALUE="0"/> <HostName VALUE="optional host name" /> <ProcessID VALUE="optional process id" /> </CaptureStart>
<?xml version="1.0" encoding="utf-8"?> <CaptureStop> <Name VALUE="TakeName" /> <Notes VALUE="Take notes go here if any." /> <Assets VALUE="skel1, skel2, sword" /> <TimeCode VALUE="00:00:00:00" /> <HostName VALUE="optional host name" /> <ProcessID VALUE="optional process id" /> </CaptureStop>
Capture Start Packet Value Description Name Name of the Take that will be recorded. SessionName Name of the session folder. Notes Informational note for describing the recorded Take. Description (Reserved) Assets List of assets involved in the Take. DatabasePath The file directory where the recorded captures will be saved. Start Timecode Timecode values (SMTPE) for frame alignments, or reserving future record trigger events for timecode supported systems. Camera systems usually have higher framerates compared to the SMPTE Timecode. In the triggering packets, the subframe values always equal to 0 at the trigger. PacketID (Reserved) HostName (Reserved) ProcessID (Reserved)
Capture Stop Packet Value Description Name Name of the recorded Take. Notes Informational notes for describing recorded a Take. Assets List of assets involved in the Take Timecode Timecode values (SMPTE) for frame alignments. The subframe value is zero. HostName (Reserved) ProcessID (Reserved)
|Streaming Protocol||Markers||Rigid Bodies||Skeletons||Description||Download|
|NatNet SDK||Y||Y||Y||Runs local or over network. The NatNet SDK includes multiple sample applications for C/C++, OpenGL, Winforms/.NET/C#, MATLAB, and Unity. It also includes a C/C++ sample showing how to decode Motive UDP packets directly without the use of client libraries (for cross platform clients such as Linux).
|Autodesk MotionBuilder Plugin||Y||Y||Y||Runs local or over network. Allows streaming both recorded data and real-time capture data for markers, rigid bodies, and skeletons.
Comes with Motion Builder Resources: OptiTrack Optical Device OptiTrack Skeleton Device OptiTrack Insight VCS
|Visual3D||Y||N||N||With a Visual3D license, you can download Visual3D server application which is used to connect OptiTrack server to Visual3D application. Using the plugin, Visual 3D receives streamed marker data to solve precise skeleton models for biomechanics applications.
|The MotionMonitor||Y||Y||Y||The MotionMonitor xGen software is cable of receiving live streamed motion capture data from Motive. Streamed data is then solved, in real-time, using live marker data to build biomechanical model and also perform real-time analysis of the data.||The MotionMonitor website|
|Unreal Engine 4 Plugin||N||Y||N||Runs local or over network. Supports Unreal Engine versions up to 4.17. This plugin allows streaming of rigid bodies and integration of HMD tracking within Unreal Engine projects. For more details, read through the OptiTrack Unreal Engine 4 Plugin documentation page.||Download|
|Unity Plugin||N||Y||N||Runs local or over network. This plugin allows streaming of tracking data and integration of HMD tracking within Unity projects. For more details, read through the OptiTrack Unity Plugin documentation page.||Download|
|3ds Max Plugin||N||Y||N||
(Unmaintained)Runs local or over network. Supports 3ds Max 2009-2012. This plugin allows Autodesk 3ds Max to receive skeletons and rigid bodies from the OptiTrack server application such as Motive.
|VRPN||N||Y||N||Runs local or over network.
Includes source code (C++) of a sample implementation for VRPN streaming. The Virtual-Reality Peripheral Network (VRPN) is an open source project containing a library and a set of servers that are designed for implementing a network interface between application programs and tracking devices used in a virtual-reality system.
For more information: VRPN Github
|trackd||N||Y||N||Runs local or over network. Provides streaming implementation with the trackd module.
Trackd is a network streaming infrastructure that takes in data from tracking applications (e.g. Motive) and makes it available for other applications to use. The provided DLL library and the CONF file can be imported into the Trackd software for delivering the mocap data to other applications.
For more information or specific directions on how to use the trackd software, contact: Mechdyne (trackd)
|Motive API||Y||Y||N||Runs Motive heedlessly. Best Motive command/control. Also provides access to camera imagery and other data elements not available in the other streams.
|VCS:Maya||N||Y||N||Separate license is required. Streams capture data into Autodesk Maya for using the Virtual Camera System.||Download|