Main Page → NatNet SDK 3.0
The NatNet SDK is a networking software development kit (SDK) for receiving NaturalPoint data across networks. It allows streaming of live or recorded motion capture data from a tracking server (e.g. Motive) into various client applications. Using the SDK, you can develop custom client applications to receive data packets containing real-time tracking data and send remote commands to the connected server. NatNet uses the UDP protocol in conjunction with either Point-To-Point Unicast or IP Multicasting for sending and receiving data. The following diagram outlines the major components of a typical NatNet network setup and how they establish communication between NatNet server and client application.
Please read through the update notes for key changes in this version
The NatNet SDK consists of the following:
The NatNet SDK is shipped in a compressed ZIP file format. Within the unzipped NatNet SDK directory, the following contents are included:
The Sample folder, contains Visual Studio 2013 projects that use the NatNetSDK libraries for various applications. These samples are the quickest path towards getting NatNet data into your application. We strongly recommend taking a close look into these samples and adapt applicable codes into your application. More information on these samples are covered in the NatNet Samples page.
The include folder contains headers files for using the NatNet SDK library.
NatNet library files are contained in the lib folder. When running applications that are developed against the NatNet SDK library, corresponding DLL files must be placed alongside the executables.
Note that this assembly is derived from the native library, and to use the NatNetML.dll, NatNetLib.dll must be linked as well.
Tip: Code samples are the quickest path to towards getting familiar with the NatNet SDK. Please check out the NatNet samples page.
In streamed NatNet data packets, orientation data is represented in the quaternion format (qx, qy, qz, qw). In contrast to Euler angles, Quaternion orientation convention is order independent, however, it indicates the handedness. When converting quaternion orientation into Euler angles, it is important to consider and decide which coordinate convention that you want to convert into. Some of the provided NatNet samples demonstrate quaternion to Euler conversion routines. Please refer to the included WinFormSample, SampleClient3D, or Matlab samples for specific implementation details and usage examples.
To convert from provided quaternion orientation representation, the following aspects of desired Euler angle convention must be accounted:
For example, Motive uses the following convention to display the Euler orientation of an object:
Important Note: If applicable, we recommend using the Direct depacketization approach is not recommended. The bit-stream packet syntax is subject to change, requiring an application to update its parsing routines to be compatible with the new format. NatNet packets should be decoded directly only where the use of the NatNet library is not applicable.
The NatNet SDK 3.0 update involves bit-stream syntax changes with the addition of analog data and other functionalities in the protocol. This will require corresponding updates for programs that utilize the direct depacketization approach for parsing the streamed data.
In situations where the use of the NatNet library is not applicable (e.g. developing on unsupported platforms such as Unix), you can also depacketize the streamed data directly from the raw bit-stream without using the NatNet library. In order to provide the most current bitstream syntax, the NatNet SDK includes a testable working depacketization sample (PacketClient) that decodes NatNet Packets directly without using the NatNet client class.
For the most up-to-date syntax, refer to the PacketClient sample, or use it as a template for depacketizing NatNet data packets.
3.0 Update Notes:
3D positions of the rigid body model markers have been moved from the frame data onto description packet. You can utilize the position offset data given for each rigid body model marker and combine it with per-frame rigid body position and orientation data to derive the model markers instead.