NatNet SDK
所述NatNet SDK是一个网络软件开发工具包(SDK),用于通过网络接收数据NaturalPoint公司。它允许将实时或录制的动作捕捉数据从跟踪服务器(例如Motive)流式传输到各种客户端应用程序中。使用SDK,您可以开发自定义客户端应用程序,以接收包含实时跟踪信息的数据包,并将远程命令发送到连接的服务器。NatNet将UDP协议与点对点单播或IP多播结合使用,以发送和接收数据。下图概述了典型NatNet网络设置的主要组件以及它们如何在NatNet服务器和客户端应用程序之间建立通信。
- 对于以前版本的NatNet,请参阅SDK随附的PDF用户指南。
|
请阅读[更新说明],了解此版本中的主要更改 |
概述
SDK内容
NatNet SDK包含以下内容:
- NatNet 库: 本机C ++网络库内容,包括静态库文件(.lib),动态库文件(.dll)和相应的头文件。
- NatNet Assembly: 托管.NET程序集(NatNetML.dll),用于.NET兼容客户端。
- NatNet 示例: 示例项目和已编译的可执行文件,旨在快速集成到您的代码中。
附加信息
- NatNet服务器(例如Motive)有2个线程和2个套接字:一个用于向客户端发送跟踪数据,另一个用于发送/接收命令。
- NatNet服务器和客户端可以存在于同一台机器上,也可以存在于不同的机器上。
- 多个NatNet客户端可以连接到单个NatNet服务器。
- 当NatNet服务器配置为使用IP多播时,数据仅广播一次到多播组。
- 默认多播IP地址:239.255.42.99和端口:1511。
- 单播的IP地址由服务器应用程序定义。
文件列表
NatNet SDK以压缩的ZIP文件格式提供。在解压缩的NatNet SDK目录中,包含以下内容:
示例项目: NatNet SDK\Samples
Sample文件夹包含使用NatNetSDK库进行各种应用程序的Visual Studio 2013项目。这些样本是将NatNet数据导入应用程序的最快捷途径。我们强烈建议您仔细研究这些样本,并将适用的代码调整到您的应用程序中。有关这些样本的更多信息,请参见 NatNet 样本 页面。
库头文件: NatNet SDK\include
include文件夹包含使用NatNet SDK库的头文件。
文件 | 描述 |
---|---|
\include\NatNetTypes.h | NatNetTypes.h头文件包含通过NatNet协议传送的所有数据格式的类型声明。 |
\include\NatNetClient.h | NetNetClient.h头文件包含 NatNetClient 类的声明,该类是SDK中使用的关键对象。必须初始化此对象才能运行客户端应用程序以接收数据包。 |
\include\NatNetRequests.h | NatNetRequest.h头文件包含可以使用SendMessageAndWait函数发送到服务器应用程序的 NatNet 命令 列表。 |
\include\NatNetCAPI.h | NatNetCAPI.h头文件包含NatNet API辅助函数的声明。这些功能仅适用于本机客户端应用程序。 |
库DLL文件: NatNet SDK\lib
NatNet库文件包含在lib文件夹中。运行针对NatNet SDK库开发的应用程序时,必须将相应的DLL文件放在可执行文件旁边。
文件 | 描述 |
---|---|
\lib\ | 此文件夹包含32位体系结构的NatNet SDK库文件。 |
\lib\x64 | 此文件夹包含64位体系结构的NatNet SDK库文件。 |
\lib\NatNetLib.dll
\lib\x64\NatNetLib.dll |
用于32位和64位平台架构的Native NatNet库。这些库用于与NatNet本机客户端一起使用。 |
\lib\NatNetML.dll
\lib\x64\NatNetML.dll |
管理用于32位和64位平台体系结构的NatNet程序集文件。这些库用于与NatNet托管客户端一起使用,包括使用.NET程序集的应用程序。
请注意,此程序集源自本机库,要使用NatNetML.dll,还必须链接NatNetLib.dll。 |
\lib\NatNetML.xml
\lib\x64\NatNetML.xml |
包含用于NatNetML.dll程序集的XML文档。将其放在DLL文件旁边以查看程序集引用。 |
API 参考
NatNet: NatNetClient 类参考
- NatNet类和NatNetClient对象的函数引用。
NatNet:数据类型
- NatNet SDK流媒体协议中提供的跟踪数据类型列表。
NatNet:远程请求/命令
- 用于远程触发服务器应用程序的NatNet命令
用户文档页面
|
提示: 代码示例是熟悉NatNet SDK的最快捷途径。请查看NatNet示例页面。 |
NatNet:样本项目
- NatNet示例项目列表和说明。
NatNet:时间码
- OptiTrack系统和NatNet SDK工具中的时间码表示。
创建NatNet Native C ++客户端
- 使用NatNet SDK开发本机客户端应用程序的一般准则。
创建一个NatNet托管C#客户端
- 使用NatNet SDK开发托管客户端应用程序的一般准则。
NatNet中的方向数据
在流式NatNet数据包中,方向数据以四元数格式(qx,qy,qz,qw)表示。与欧拉角相反,四元数方向约定与顺序无关,但它表示手性。将四元数方向转换为欧拉角时,重要的是要考虑并确定要转换为哪个坐标约定。一些提供的NatNet样本演示了四元数到欧拉转换例程。有关具体的实现细节和用法示例,请参阅随附的 WinFormSample, SampleClient3D, or Matlab 示例。
要从提供的四元数方向表示转换,必须考虑所需的欧拉角约定的以下方面:
- 旋转次序
- 用手:左手或右手
- 轴:静态(全局)或相对(局部)轴。
例如,Motive使用以下约定来显示对象的欧拉方向:
- 旋转顺序: X(螺距),Y(偏航),Z(滚动)
- 用手: 右撇子(RHS)
- 轴: 相对轴(又名“本地”)
直接解包
在不使用NatNet库的情况下(例如在Unix等不受支持的平台上开发),您也可以直接从原始比特流中解包流数据,而无需使用NatNet库。为了提供最新的比特流语法,NatNet SDK包括一个可测试的工作拆包样本(PacketClient,PythonClient),它可以直接解码NatNet数据包,而无需使用NatNet客户端类。
比特流语法
有关最新语法,请参阅PacketClient示例或PythonClient示例,以将它们用作解包NatNet数据包的模板。
- 将PacketClient示例(PacketClient.cpp)或PythonClient示例(NatNetClient.py)调整为应用程序的代码。
- 定期使用NatNet比特流语法的每个修订版更新代码。