# 运动捕捉数据处理脚本

本文档简要说明了三个使用Nokov SDK设计的Python脚本的功能，这些脚本用于处理运动捕捉数据。

## 1. Nokov_SDK_Client.py

该脚本作为Nokov运动捕捉SDK的基础客户端。它连接到Nokov服务器，检索运动捕捉数据帧，并打印有关标记集、刚体和未识别标记的信息。脚本提供了一个回调函数`py_data_func`，每次有新的运动捕捉数据帧可用时都会调用该函数。它还包括一个消息回调`py_msg_func`来处理SDK的日志消息，以及一个力板回调`py_forcePlate_func`来处理力板数据。

## 2. Nokov_SDK_Client_With_Vel_Acc_Degree.py

该脚本扩展了基础Nokov SDK客户端的功能，包括计算标记点的速度、加速度和角度变化。它使用`Utility`模块来执行这些计算。脚本假设第一个包含三个标记点的标记集代表一个手指，并计算由指尖、指关节和手指根形成的线之间的角度。它还计算了指尖标记点的速度和加速度。

### 手指关节的计算操作说明
贴点：分别在选定的手指、关节、指尖、关节和手指根上贴一个点。

动作：手指弯曲

运动捕捉软件操作：为手指创建一个标记集，一个手指对应一个标记集，包含三个标记点，分别对应指尖、关节和手指根。可以同时为多个手指创建多个标记集。

数据采集：要实时获取每个点的坐标、指尖的加速度和关节的角度变化（三点连线），运行`Nokvo_SDK_Client_With_Vel_Acc_Degree.py`。定位到代码的第41行，如下所示。这个示例使用第一个标记集；注释此行可以同时获取多根手指的数据。

if (0 == iMarkerSet and 3 == markerset.nMarkers):

## 3. Utility.py

`Utility`模块提供了用于外部计算速度、加速度和角度支持的辅助函数。它定义了表示3D空间中的点、速度和加速度的类，以及基于多帧运动捕捉数据计算这些值的方法。该模块包括一个`SlideFrameArray`类，用于管理一个滑动窗口的帧，这对于随时间计算速度和加速度非常有用。

---

请注意，这些脚本设计用于与Nokov运动捕捉系统一起工作，并且需要Nokov SDK才能正常运行。必须正确设置服务器IP地址，以便客户端脚本连接到Nokov服务器。