来自Wiki
跳转至: 导航搜索

NatNet SDK

所述NatNet SDK是一个网络软件开发工具包(SDK),用于通过网络接收数据NaturalPoint公司。它允许将实时或录制的动作捕捉数据从跟踪服务器(例如Motive)流式传输到各种客户端应用程序中。使用SDK,您可以开发自定义客户端应用程序,以接收包含实时跟踪信息的数据包,并将远程命令发送到连接的服务器。NatNet将UDP协议点对点单播IP多播结合使用,以发送和接收数据。下图概述了典型NatNet网络设置的主要组件以及它们如何在NatNet服务器和客户端应用程序之间建立通信。

  • 对于以前版本的NatNet,请参阅SDK随附的PDF用户指南。

Info2.png

请阅读[更新说明],了解此版本中的主要更改

概述


NatNet 组件概述


NatNet Component Overview


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命令

用户文档页面


Info2.png

提示: 代码示例是熟悉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)
  • 轴: 相对轴(又名“本地”)

直接解包


Info2.png

重要说明:不建议使用直接拆包。比特流数据包的语法可能会发生变化,要求应用程序更新其解析例程以与新格式兼容。只有在不适用NatNet库的情况下才应使用直接拆包方法。

在不使用NatNet库的情况下(例如在Unix等不受支持的平台上开发),您也可以直接从原始比特流中解包流数据,而无需使用NatNet库。为了提供最新的比特流语法,NatNet SDK包括一个可测试的工作拆包样本(PacketClient,PythonClient),它可以直接解码NatNet数据包,而无需使用NatNet客户端类。

比特流语法

有关最新语法,请参阅PacketClient示例或PythonClient示例,以将它们用作解包NatNet数据包的模板。

  1. 将PacketClient示例(PacketClient.cpp)或PythonClient示例(NatNetClient.py)调整为应用程序的代码。
  2. 定期使用NatNet比特流语法的每个修订版更新代码。