MocapApi 中文文档 和github下载地址 NeuronDataReader(以下简称 NDR)的下一代编程接口

以下是 MocapApi 技术文档

github https://github.com/pnmocap/MocapApi?tab=readme-ov-file

国内可以查找getcode

英文文档
https://mocap-api.noitom.com/mocap_api_en.html

概述

MocapApi 是 NeuronDataReader(以下简称 NDR)的下一代编程接口,设计目标为:

  • 跨平台兼容(Win/Mac/Android/iOS/Linux)
  • 跨引擎访问(Unity/Unreal)
  • 无需用户手动更新
    当前支持语言:C、C++、C#,支持 Windows、Unity 和 Unreal Engine。
    MocapApi 接收来自 AxisStudioPnlab 等软件的 Socket 数据流。

命名规则与调用约定

命名规则
  • 接口类型 :命名格式为 IMCpxxx(如 IMCPApplication
  • 句柄类型 :命名格式为 MCPXxxHandle_t(如 MCPApplicationHandle_t
  • 其他类型遵循匈牙利命名法。
语言差异
语言 头文件/模块 接口类型 句柄类型
C++ MocapApi.h IMCpxxx MCPXxxHandle_t
C MocapCApi.h MCPXxx_ProcTable 结构体 MCPXxxHandle_t
C# MocapApi.cs IMCpxxx 无直接对应,通过接口访问

核心类型与功能

1. IMCPApplication & MCPApplicationHandle_t

表示与 Axis Studio 广播端口的连接,用于轮询数据和状态。

关键方法

cpp 复制代码
// 获取接口指针
MocapApi::IMCPApplication* mcpApplication = nullptr;
MocapApi::MCPGetGenericInterface(MocapApi::IMCPApplication_Version, 
        reinterpret_cast<void**>(&mcpApplication));

// 创建/销毁Application实体
MCPApplicationHandle_t appHandle;
mcpApplication->CreateApplication(&appHandle);
mcpApplication->DestroyApplication(appHandle);
2. IMCPAvatar & MCPAvatarHandle_t

对应 Axis Studio 中的 Avatar 模型,用于获取骨骼层级和关节数据。

关键方法

cpp 复制代码
// 获取根关节
MCPJointHandle_t rootJoint;
mcpAvatar->GetAvatarRootJoint(&rootJoint, avatarHandle);

// 通过名称获取关节
mcpAvatar->GetAvatarJointByName("LeftKnee", &jointHandle, avatarHandle);
3. IMCPJoint & MCPJointHandle_t

处理关节的本地变换数据(位置/旋转)。

关键方法

cpp 复制代码
// 获取欧拉角旋转
float rx, ry, rz;
mcpJoint->GetJointLocalRotaionByEuler(&rx, &ry, &rz, jointHandle);

// 获取子关节
MCPJointHandle_t childJoints[10];
uint32_t childCount = 10;
mcpJoint->GetJointChild(childJoints, &childCount, jointHandle);
4. 事件处理(PollApplicationNextEvent)

轮询来自 Axis Studio 的事件(如 Avatar 更新、错误等):

cpp 复制代码
MCPEvent_t events[10];
uint32_t eventCount = 10;
mcpApplication->PollApplicationNextEvent(events, &eventCount, appHandle);

数据流逻辑

AxisStudio MocapApi Application 发送BVH/TCP数据流 解析骨骼层级和帧数据 通过事件/接口返回关节数据 AxisStudio MocapApi Application


错误处理

  • 函数调用错误 :通过 EMCPError 返回(如 Error_None 表示成功)。
  • 运行时错误 :通过事件机制通知(如 MCPEvent_Error)。

附录:关键枚举类型

cpp 复制代码
// BVH旋转顺序
enum EMCPBvhRotation {
    BvhRotation_XYZ, BvhRotation_XZY, ..., BvhRotation_ZYX
};

// 坐标系设置
enum EMCPCoordSystem {
    CoordSystem_RightHanded,  // 右手系
    CoordSystem_LeftHanded    // 左手系
};

// 命令类型(如开始/结束捕捉)
enum EMCPCommand {
    CommandStartCapture, CommandStopCapture, ...
};

注意事项

  1. 内存管理 :通过 CreateXxx 创建的对象需手动调用 DestroyXxx 释放。
  2. 实时性 :建议在独立线程中轮询 PollApplicationNextEvent
  3. 坐标转换 :可通过 IMCPRenderSettings 设置上/前向量和单位(米/厘米)。

如需具体代码示例或进一步功能说明,请提供应用场景细节!

相关推荐
天若有情6738 小时前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串
果汁华10 小时前
GitHub Trending 热门仓库整理 (2026年4月10日)
github
无限进步_11 小时前
【C++&string】大数相乘算法详解:从字符串加法到乘法实现
java·开发语言·c++·git·算法·github·visual studio
粥里有勺糖11 小时前
视野修炼-技术周刊第129期 | 上一次古法编程是什么时候
前端·javascript·github
无限进步_12 小时前
【C++】验证回文字符串:高效算法详解与优化
java·开发语言·c++·git·算法·github·visual studio
Gavin_ZYX12 小时前
Skill 管理过于繁琐,不如写个自动同步的工具
人工智能·架构·github
Hommy8813 小时前
【开源剪映小助手-客户端】桌面客户端
python·开源·node.js·github·剪映小助手
张二娃同学14 小时前
Claude Code 使用教程:下载安装、CC Switch 配置、MiniMax API 获取与启动实操
人工智能·windows·深度学习·github·claude code
华仔啊14 小时前
写简历太痛苦?这个开源项目用 AI 帮你一键搞定
github
70asunflower15 小时前
个人主页从 0 到 1:Jekyll + GitHub Pages + AI Agent 完全指南
github·个人主页