当前位置: 首页 > news >正文

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.hIMCpxxxMCPXxxHandle_t
CMocapCApi.hMCPXxx_ProcTable 结构体MCPXxxHandle_t
C#MocapApi.csIMCpxxx无直接对应,通过接口访问

核心类型与功能

1. IMCPApplication & MCPApplicationHandle_t

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

关键方法

// 获取接口指针
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 模型,用于获取骨骼层级和关节数据。

关键方法

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

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

关键方法

// 获取欧拉角旋转
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 更新、错误等):

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)。

附录:关键枚举类型

// 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 设置上/前向量和单位(米/厘米)。

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

http://www.lqws.cn/news/493219.html

相关文章:

  • 1 Studying《Systems.Performance》7-13
  • Maven 多模块项目调试与问题排查总结
  • SpreadJS 迷你图:数据趋势可视化的利器
  • Web基础 -SpringBoot入门 -HTTP-分层解耦 -三层架构
  • HTML语义化标签
  • 最近小峰一直在忙国际化项目,确实有点分身乏术... [特殊字符] 不过! 我正紧锣密鼓准备一系列干货文章/深度解析
  • [HTML]iframe显示pdf,隐藏左侧分页
  • Python异步爬虫编程技巧:从入门到高级实战指南
  • 从本地到云端:通过ToolJet和cpolar构建远程开发环境实践过程
  • ​​FFmpeg命令全解析:三步完成视频合并、精准裁剪​​、英伟达显卡加速
  • systemd[1]: Failed to start LSB: Bring up/down networking
  • 在大数据求职面试中如何回答分布式协调与数据挖掘问题
  • 开疆智能CCLinkIE转ModbusTCP网关连接 BORUNTE伯朗特机器人案例
  • 百度AIP:Springboot人脸对比
  • 用安卓手机,怎样远程管理孩子iPhone屏幕使用时间?
  • LNMP 一键部署脚本 shell脚本
  • R语言入门课| 05 一文掌握R语言常见数据类型
  • 面试150 分发糖果
  • 【设计模式精讲 Day 12】代理模式(Proxy Pattern)
  • idea 报错:java: 非法字符: ‘\ufeff‘
  • ISO 26262-11 半导体功能安全学习(二)
  • Meta-华盛顿大学-CMU联合研究多感官触觉表征在机器人操作中的新范式
  • 启用AWS VPC流日志保存到CloudWatch日志组
  • 设计模式精讲 Day 11:享元模式(Flyweight Pattern)
  • WPF中MVVM和MVVMLight模式
  • 单片机——浮点数转换4位数码管显示
  • Java面试复习指南:基础、并发、JVM与Spring框架
  • Nginx:互斥锁 accept_mutex配置
  • APO:自动化技术提升大语言模型在各类任务中的表现
  • 世赛背景下,高职物联网应用开发赛项实训解决方案