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.pswp.cn/diannao/88828.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32历史、命名、Flash、工作频率

目录 命名: Flash: 工作频率&#xff1a; 复位&#xff1a; 低功耗模式&#xff1a; IO端口&#xff1a; JATG: 看门狗定时器&#xff1a; STM是一家半导体公式&#xff0c;专门做芯片的&#xff0c;STM32是指32位的微处理器&#xff0c;其中芯片的架构是ARM结构的&#…

了解公共部门中的数据网格:支柱、架构和示例

作者&#xff1a;来自 Elastic Elastic Platform Team 想想那些像公共健康记录、城市规划模型等项目背后的所有数据。政府机构一直在产生大量数据。当数据分散在云平台、本地系统或像卫星和应急响应中心这样的专业环境中时&#xff0c;情况变得更加复杂。找到信息变得困难&…

阿里云ACP-检索分析服务

当数据量爆炸增长&#xff0c;并且需要提供全文检索功能&#xff0c;需要有效的数据检索能力 用什么数据库怎么保证安全性如何解决统计分析问题如何解决单点故障如何解决检索难题 应对方案&#xff1a; 关系型数据库&#xff1a;主从备份解决数据安全性问题&#xff0c;数据…

【DBeaver】跨平台数据库连接工具DBeaver Community 23.2.5安装配置使用

DBeaver是一款免费开源的通用数据库管理工具和SQL客户端&#xff0c;支持多种数据库系统。它基于Java开发&#xff0c;具备跨平台能力&#xff0c;可以在Windows、macOS和Linux系统上运行。 目录 安装DBeaver 连接MySQL数据库 安装DBeaver 进入DBeaver官网 DBeaver Communit…

【钱包】WEB3钱包APP框架的设计

【钱包】WEB3钱包APP框架的设计 一、前言 前段时间&#xff0c;自己做了一款WEB3钱包APP&#xff0c;从产品设计到框架搭建都是我一个人搞的&#xff0c;更多的参考了其他公司的钱包APP。 在此&#xff0c;想把自己的钱包经验分享出来&#xff0c;帮助没有做过钱包APP的同学开…

openGL学习(基本窗口)

学习路线 学习 OpenGL 需要掌握一系列基础知识和技能&#xff0c;这些内容涵盖了计算机图形学的基本概念、编程语言、数学知识以及 OpenGL 的具体 API 使用。以下是学习 OpenGL 所需的主要知识点&#xff1a; 1. 计算机图形学基础 图形学概念&#xff1a;了解图形学的基本概…

无人机防护装置技术解析

一、技术要点 1. 侦测防御系统 多频谱复合探测 整合无线电侦测&#xff08;20MHz–6GHz频段扫描&#xff09;、雷达探测、光电跟踪&#xff08;可见光/红外/激光&#xff09;技术&#xff0c;实现360无死角监测。例如神州明达系统可5公里内识别无人机信号&#xff0c;并同步…

2.2.2、CAN总线-测试模式、工作模式

目录 1、测试模式 2、工作模式 &#xff08;1&#xff09; &#xff08;2&#xff09;SLEEP位&#xff1a; &#xff08;3&#xff09;INRQ位&#xff1a;&#xff08;Init Request&#xff09; &#xff08;4&#xff09;ACK&#xff1a;应答 &#xff08;5&#xff09;…

区块链大讲堂 | 分布式隐私计算友好的零知识证明协议

区块链大讲堂 主讲人&#xff1a;上海交通大学计算机学院助理教授胡云聪 报告题目&#xff1a;分布式隐私计算友好的零知识证明协议 参与方式&#xff1a;扫描海报二维码报名参与活动

MyBatis映射文件(XML)中参数传递和SQL特殊字符处理

1. 参数占位符 1.1 #{} 和 ${} 的区别 #{} 占位符 作用&#xff1a;安全传参。MyBatis在执行SQL时&#xff0c;会把#{}替换成?&#xff0c;然后用参数值自动填充。 优点&#xff1a;可以防止SQL注入&#xff0c;推荐使用。 例子&#xff1a; select * from user wher…

C语言 数据结构 --排序 (直接插入排序,选择排序,交换排序......)

引言&#xff1a;本章简洁的讲解一下数据结构中的几个常见的排序 &#xff0c;作复习之用&#xff0c;后面可能会补一些其他的排序 。并给出一些小编学习中遇到的坑&#xff0c;作借鉴。 1.直接插入排序 直接插入排序是一种简单直观的排序算法&#xff0c;其基本思想是将一个数…

华为云发布盘古大模型 5.5 新一代昇腾 AI 云服务上线

2025 年 6 月 20 日&#xff0c;华为开发者大会 2025&#xff08;HDC 2025&#xff09;在东莞召开。华为常务董事、云计算 CEO 张平安宣布基于 CloudMatrix 384 超节点的新一代昇腾 AI 云服务全面上线&#xff0c;并发布盘古大模型 5.5&#xff0c;五大基础模型实现技术突破&am…

Reactor Handle

handle 是 Reactor 中一个非常灵活的操作符&#xff0c;它允许你对每个源元素进行处理&#xff0c;并可以选择性地发出零个或多个元素。它既可以用于映射&#xff08;map&#xff09;也可以用于过滤&#xff08;filter&#xff09;&#xff0c;因此可以看作是 map 和 filter 的…

C#哈希加密:原理、实现与应用

C#哈希加密&#xff1a;原理、实现与应用 在当今数字化时代&#xff0c;数据安全是每个应用程序都必须重视的问题。哈希加密作为一种重要的加密技术&#xff0c;在密码存储、数据完整性验证、数字签名等领域发挥着关键作用。本文将深入探讨C#中哈希加密的原理、常用算法以及实…

httpbin.org是什么,有什么作用

httpbin.org 是一个开源的 HTTP 请求与响应测试服务&#xff0c;基于 Python 的 Flask 框架开发 它允许开发者发送各种 HTTP 请求&#xff0c;并返回请求的详细信息&#xff0c;便于调试和验证 HTTP 客户端的行为。以下是其核心功能和作用详解&#xff1a; 一、核心功能与作用…

mongodb生产备份工具PBM

如果你的 MongoDB 数据量特别大&#xff08;例如几十 GB、TB 级别&#xff09;&#xff0c;普通的 mongodump/mongorestore 会显得缓慢且资源消耗大&#xff0c;不适合生产级别大数据集。下面是当前 MongoDB 社区和企业广泛使用的几种备份方案对比和推荐&#xff1a; 工具是否…

【LeetCode#第167题】两数之和Ⅱ

给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &#xff0c;则 1 < index1 < index2 < numbers…

Python(一)实现一个爬取微信小程序数据的爬虫+工程化初步实践

文章目录 前言用Charles 抓包 iOS 微信小程序在Mac端和iOS端安装Charles 自签名证书Mac端iOS端 能抓到Safari浏览器的包但是抓不到微信小程序的包直接在iOS 上抓包的App如何抓取Android 7.0 以上/Harmony OS微信小程序包 Python 项目工程化pip 切换为国内镜像源工程化参考脚手架…

uview ui request get / post 传参含params和json数据的分析和使用

背景。单独写了controller方法去配合移动端的接口调用。但有的接口与pc端类似。于是进行了复用。但接口得复制不是。 uview js request 文档 注意迪三个参数是header 后端接口GET方法 调用代码截图 浏览器调试 总结。 复制之前的api接口。为了方便复用底层实现。接口类型…

用 pnpm + TurboRepo,构建多项目高效开发体系

在现代前端项目日益复杂的今天&#xff0c;我们越来越多地面对一个场景&#xff1a;多个项目共享逻辑、组件和依赖&#xff0c;而维护和构建效率却在不断拉垮。这种情况下&#xff0c;传统项目结构的痛点就显现无遗。 从我亲身实践来看&#xff0c;选择 pnpm TurboRepo 构建 …