产品支持
技术专栏
Unity3d插件使用手册

 

青瞳Unity3d插件

 

 

使

 

 

 

 

上海青瞳视觉科技有限公司

 

 

修改记录

 

日期

版本

修改说明

修改者

2022/12/19

2.0

1. 根据输入的ServerIp,可以接收到AvatarTrackervrpn传输数据;

2. Ip端口号优化;

3. 非重定向骨骼demo新增手指功能;(CMAvatarfeeler手指、光学手指)

范蓉

 

目录

1 插件简介

2 阅读说明

3 插件功能说明

3.1 插件下载

3.2 安装插件

3.3 客户端连接状态测试

3.4 刚体追踪

3.5 实时全身动捕

3.6 刚体追踪在VR中的应用

3.7 动捕追踪线程与追踪日志

3.8 外部配置文件

4 操作说明

4.1 安装插件

4.2 客户端连接状态测试

4.3 刚体追踪

4.3.1普通刚体在Unity demo中的使用

4.3.2普通刚体在Unity中的使用

4.3.3关于带陀螺仪的刚体在Unity中的使用方法

4.3.4刚体追踪与Unity动画IK

4.4 实时全身动捕

4.4.1使用非重定向数据驱动角色demo

4.4.2使用非重定向数据驱动角色

4.4.3使用重定向数据驱动角色

4.4.3获取人物各关节位置

4.5 刚体追踪在VR中的应用

4.5.1OCULUS Rift CV1 头显

4.5.2OCULUS Rift S 头显

4.5.3OCULUS Quest 头显

2.5.4Window Mixed Realit 头显

4.5.5OCULUS Tocuh 手柄

4.6 动捕追踪线程与追踪日志

4.6.1动捕追踪线程

4.6.2追踪日志CMTrackLog

4.7 外部配置文件

5 API函数

6 常见问题回答(FAQ

6.1 没有找到加密狗,检查电脑USB端口的加密狗

6.2 加密狗没有授权,检查授权文件是否正确安装


 

插件简介

Unity插件是由上海青瞳视觉自行研发,此插件可以实时接收青瞳视觉动捕数据,用户可以通过Unity引擎进行角色化骨骼绑定,自定义刚体, Unity场景中的虚拟角色能够实时同步动捕演员的动作,刚体位移,支持内容的实时录制及回放

阅读说明

根据Unity版本下载对应的插件版本

在工程内导入插件

文档适用于Unity2018Unity2021版本的ChingMU Unity插件

 

插件功能说明

3.1 插件下载

Unity版本

插件名称

下载地址

Unity2018Unity2022

CMPlugin For Unity3d V2.0

https://github.com/ChingMuVisionTech/ChingMuUnitySDKs/releases/download/Unity3d/ChingMu_Unity3d.unitypackage

 

3.2 安装插件

1.Git下载ChingMuPlugin For Unity3d.unitypackage插件;

2.打开Unity3d并创建一个工程

3.将下载好的CMPlugin.unitypackage导入到对应版本的Unity

4.点击import”按钮将插件代码导入到Unity3d工程内

3.3 客户端连接状态测试

测试程序Vrpn_client.exe,该程序用于测试Unity客户端是否能从追踪服务器获取到追踪数据。

3.4 刚体追踪

普通刚体在Unity demo中的使用

普通刚体在Unity中的使用方法

带陀螺仪的刚体在Unity中的使用

刚体追踪与Unity动画IK

3.5 实时全身动捕

非重定向数据驱动角色

重定向数据驱动角色

获取人物各关节位置

3.6 刚体追踪在VR中的应用

OCULUS Rift CV1头显

OCULUS Rift S头显

OCULUS Quest头显

Window Mixed RealitOdyssey)头显

OCULUS Touch 手柄

3.7 动捕追踪线程与追踪日志

动捕追踪线程

追踪日志CMTrackLog

3.8 外部配置文件

打包发布为.exe后,为了可以在外部修改HuamnIDBodyID,所以在插件中准备了Config.json文件,便于用户在打包后依然可以修改程序中所引用的HumanIDBodyID

操作说明

4.1 安装插件

1.Git下载ChingMuPlugin For Unity3d.unitypackage

 

2.打开Unity3d并创建一个工程

 

3.下载好的CMPlugin.unitypackage导入到对应版本的Unity

 

4.点击import”按钮将插件代码导入到Unity3d工程内

4.2 客户端连接状态测试

1.关闭Unity应用程序所在电脑与追踪server所在电脑的windows防火墙

2.追踪serverUnity应用程序在同一个局域网

3.本地33843383端口没有被其他程序占用

4.unity应用程序所在的windows上运行vrpn_client.exe

 

5.刚体或人物处于被追踪状态时,会有来自追踪server的实时追踪数据在刷新

 

4.3 刚体追踪

4.3.1普通刚体在Unity demo中的使用

1.选择刚体场景,双击后进入刚体demo

 

 

2.选择左侧demogun)后,并在它上面添加BodyTrackerScript)组件,然后设置刚体id,如果是非重定向刚体,刚体idAvatarTracker的刚体id保持一致。如果是重定向刚体,刚体id则是重定向id(重定向id:假设追踪系统中刚体id1,但是它是第一个做重定向的刚体,则这边就要输入0,以次类推)。

    

3.选择左侧的CmtrackThreadManager组件,在右侧的CM PluginType中设置为VrpnServerIp内设置对应的服务器地址(CMAvatar的话输入MCAvatar@追踪服务器ip地址,CMTracker的话输入MCServer@追踪服务器ip地址)、port内设置对应端口号(3883/3884);重定向/非重定向刚体的数据会从端口号传入;

 

4.点击运行按钮,刚体demo就能被驱动起来;

4.3.2普通刚体在Unity中的使用

1.将刚体水平放置到地面并面向追踪(世界)的正方向(以下关于追踪的正方向表述都是CMTracker里的世界正方向),然后添加刚体到追踪Client里面

2.手动设置刚体的重心到你需要的位置

3.Unity场景里面添加与刚体对应的虚拟物体,添加Tracker.CS脚本

 

4.指定刚体在CMTracker里的ID

 

5.Unity场景中的任意游戏对象上添加TrackThreadManager脚本(参考动捕追踪线程与追踪日志CMTrackLog 章节中有关动捕追踪线程的内容)

4.3.3关于带陀螺仪的刚体在Unity中的使用方法

这里所说的带陀螺仪数据的刚体,主要是指VR 头戴显示设备

1.VR头戴显示设备按照下图添加mark标记点

 

2.将头显设备水平放置到地面并面向追踪(世界)的正方向,然后在CMTracker里面添加刚体

 

3.手动设置刚体的重心到头显两镜片之间向后5~7cm的位置上

 

4.设置VR头显中地面的起始高度

经验发现,例如在OculusHome中有时无法完全设置头显初始地面高度为0或者在OculusRiftSOculusQuest头显里的引导设置程序中即使设置了地面高度为当前的实际地面高度,但是有时间也会失效,甚至有些头显并没有提供设置地面高度的操作,如DlodloVR。所以我们需要统一在SteamVR里面设置地面高度。具体操作如下:

将头显水平放置到地面并面向追踪(世界)的正方向,然后进入SteamVR的房间设置,将地面高设置为0,或者进入开发者设置,MRRiftQuest头显选择大型空间。MRRiftCV1头显站立空间,点击快速校准,这样可以确保将地面的高度设置为头显当前放置的高度,并且这个操作也可以定义头显的世界原点,头显现在放置的地方即为头显的世界原点。

 

5.Unity的场景里面添加与头显对应的预制体CMVRCameraRig_1Camera

6.根据头显设备添加头显对应的脚本到预制体CMVRCameraRig_1Camera。在脚本件程序中需要处理两个问题:

(一) 去除头显自带的位置

直接禁用头显自带的位置

 

用头显在追踪世界中的位置低消掉头显自带的位置

 

(二) 处理头显的视点正方向与追踪(世界)的正方向不一致的问题

使用插件内置API

 

如果使用API无效,需要尝试将头显水平放置到地面并面向追踪正方向,进入SteamVR的房间设置界面,将VR的视点方向设置为与追踪物的正方向一致或进入开发者设置,MRRiftSQuest头显选择大型空间。MRRiftCV1头显选择站立空间,然后点击快速校准。此时仍然可以用这个API将得到的旋转值,应用到VR Cmera的父物体上,来控制VR Camera的旋转。

7.Unity里面启用VR功能,然后激活OpenVR(由于每个VR头显设备都不一样,所以在 刚体追踪在VR中的应用 章节对已经测试过的VR头显设备,在使用青CMTracker定位头显的使用方法中有具体描述)

 

8.设置Unity的固定刷新帧率也就是FixedUpdate的刷新间隔时间与头显的显示刷新帧率一致,这样做的目的是让控制头显的位置与旋转数据与头显的刷新率一致。不同的头显它的显示刷新率都不一样,具体查看 刚体追踪在VR中的应用 章节中所提及的每个头显的刷新率

 

9.VR画面出现谍影现象的处理方法(StereoRenderingMode=Single Pass(默认模式)切换为 StereoRendering=Mulit Pass

10.Unity场景中的任意游戏对象上添加TrackThreadManager脚本,关于它的作用查看 动捕追踪线程与追踪日志CMTrackLog 章节中有关追踪线程的内容

4.3.4刚体追踪与Unity动画IK

1.CMTracker里面添加6个刚体,确保6个刚体的正方向与CMTracker中设置的正方向保持一致

2.6个刚体分别绑到测试者的左手腕,右手腕,左脚踝,右脚踝,头,腰上

图片1.png

3.config.json中配置好每个刚体的ID

 

4.打开插件中的示例场景SixIKWithCMBody。(如果要替换为自己的角色,需要确保导入Unity的角色,它所有的骨骼节点相对于Unity世界坐标系的旋转都为0

5.在程序运行之初,会自动缩放角色使角色的身高与真实测试者身高尽量保持一致,以减缓由于身高不一样导致腿部弯曲不正常的效果。然后通过Real Human Mass Offset参数可以适当偏移重心,让人物踩在地面上

 

4.4 实时全身动捕

实时全身动捕分为使用非重定向动画数据驱动角色与重定向动画数据驱动角色两种使用方式

4.4.1使用非重定向数据驱动角色demo

1.选择非重定向骨骼场景,双击后进入非重定向骨骼demo

 

2.选择左侧demo角色(xiaoqing)后,并在它上面添加HumanTrackerScript)组件,然后设置骨骼id,骨骼idCMAvatarCMTracker的骨骼id保持一致。下方各骨骼节点映射需要一一绑定。

 

3.选择左侧的CmtrackThreadManager_control组件,在右侧的CM PluginType中设置为VrpnServerIp内设置对应的服务器地址(CMAvatar的话输入MCAvatar@追踪服务器ip地址,CMTracker的话输入MCServer@追踪服务器ip地址)、port内设置对应端口号(3883/3884);非重定向后的数据会从端口号传入;

 

4.点击运行按钮,非重定向骨骼demo就能被驱动起来;(CMAvatarfeeler手指功能,CMTracker不带手指功能)

4.4.2使用非重定向数据驱动角色

1.所需要的骨骼层级关系如下图所示,且角色模型初始姿势应为T-Pose

2.骨骼层级关系

 

3.T-Pose状态下,模型各关节的LocalRotation应该为(0, 0, 0)

4.相邻关节之间不能有其它关节,除非其LocalRotation(0, 0, 0)。例如RightArmRightForeArm之间不能有旋转骨骼RightRollArm,除非RightRollArmLocalrotation(0, 0, 0)

5.以上对角色骨骼的要求,并不是强制的,但是建议尽可能导入符合上述规范的角色

6.然后将导入的角色拖入到Unity场景,并使它面向Unity的世界正方向,然后给它添加humanbody.cs脚本组件

7.在这个脚本组件里,需要知道humanID,与追踪server的地址,然后设置根骨骼节点(hip)的世界空间位置,以及根骨骼节点与其他所有骨骼节点的LocalRotation。具体实现参见humanbody.cs脚本

 

 

8.设置骨骼映射

 

9.Unity场景中的任意游戏对象上添加TrackThreadManager脚本组件,关于它的作用查看 动捕追踪线程与追踪日志CMTrackLog 章节中有关追踪线程的内容

10.在插件里也准备了一个实时全身动捕示例场景FullBodyMotionCap,展示了使用非重定向数据驱动角色的效果

4.4.3使用重定向数据驱动角色

1.准备工作:首先确保在CMTrackerCMAvatar中做完重定向所需的所有操作。 然后把CMTracker/CMAvatar里的角色再导入到Unity中,确保导入追踪系统里的角色与导入Unity里的是相同的角色模型;

2.选择重定向骨骼场景,双击后进入重定向骨骼场景;

 

3.导入到Unity的角色拖到Unity场景左侧并在它上面添加HumanRetargetForVrpnScript)组件,然后设置ObjectID_InCMTrackSenceObjectID_InCMTrackSenceCMTracker重定向设置面板的管理选项卡下的演员名称列表中对象从上到下的排列顺序,也可以是CMAvatar大纲里人物角色列表中对象从上到下的排列顺序,取决于使用哪款追踪软件。(追踪系统中skeleton_id1,但是它是第一个做重定向的骨骼,则这边ObjectID_InCMTrackSence就要输入0,以次类推)

 

 

 

4.选择左侧的CmtrackThreadManager_control组件,在右侧的CMPluginType中设置为Vrpn、ServerIp内设置对应的服务器地址(CMAvatar的话输入MCAvatar@追踪服务器ip地址,CMTracker的话输入MCServer@追踪服务器ip地址)、port内设置对应端口号(3883/3884);重定向后的数据会从端口传入

 

5.点击运行按钮,重定向骨骼就能被驱动起来;(CMAvatarfeeler手指、光学手指功能,CMTracker不带手指功能)

6.Unity场景中的任意游戏对象上添加TrackThreadManager脚本组件,关于它的作用查看 动捕追踪线程与追踪日志CMTrackLog 章节中有关动作追踪线程的内容

7.在使用HumanbodyRetarget.cs重定向数据驱动角色时,若发现角色不动,检查追踪Server是否打开,对应的ID是否填正确

8.在插件里也准备了一个实时全身动捕示例场景ChingMURetargetDriverCharacterDemo,展示了使用重定向数据驱动角色的效果

4.4.3获取人物各关节位置

在有些应用开发中,可能需要获取动捕演员身上指定关节的世界位置信息,可通过接口CMVrpn.CMPos(ServerIPBodyID)获得。该函数返回刚体号为BodyID的位置信息。要想获取动捕演员身上指定关节的位置信息,只需要这个关节的ID号即可。BodyID是根据HumanID划分的。例如第一个人物的humanID023个关节占用bodyID的范围是从100~122,如果存在头显,那么第123ID就是humanID0的人物所戴的VR头显的ID,这种情况用于全身动捕和Oculus头显结合的解决方案,具体查看 全身动捕结合VR头显的应用 章节。

 

humanID号为0时,各关节的bodyID

4.5 刚体追踪在VR中的应用

下面给出实际测试并使用过的几种头显设备在使用CMTracker定位VR头显的使用方法以及要注意的问题

4.5.1OCULUS Rift CV1 头显

1.确保已经成功安装OculusHome,并连接头显到OcousHome中,并且OculusHome中可以识别到Rift CV1头显

2.由于RiftCV1需要Sensor,所以当我们把Sensor移除后,RiftCV1里面会弹出找不到Sensor的错误确认对话框,此时需要带上头显,然后用RiftCV1自带的遥控手柄,将这个错误对话框点掉,不然这个对话框将会影响Rift CV1进入Unity VR应用程序

3.确保打开Unknown Sources选项

 

Unknown Sources选项

4.参照 关于带陀螺仪的刚体在Unity中的使用方法 章节中所提及的操作:对VR头盔进行贴点,添加刚体,设置重心,在SteamVR中设置VR头盔的地面高度与视点正方向

5.Rift CV1头显的显示刷新率为90帧,所以将FixedTimestep设置为0.011

6.Unity场景中的任意游戏对象上添加TrackThreadManager脚本,关于它的作用查看 动捕追踪线程与追踪日志CMTrackLog 章节中关于追踪线程

7.Unity中启用VR,并激活Open VR(具体操作见 关于带陀螺仪的刚体在Unity中的使用方法 章节),然后打开插件自带的示例场景OnlyRiftCV1Hmd,运行查看效果

4.5.2OCULUS Rift S 头显

Oculus Rift S头显与Rift CV1头显的区别是,它内置了定位,不需要外设sensor,但是仍然需要用连接线连接到电脑上。

1.连接Oculus Rift S头显到Oculus Home,然后按照VR里的提示,激活手柄控制器,设置地面高度,设置可玩区域

设置FloorHeight地面高度,根据头显里的提示将手柄放到地上,然后按Trigger键确定。

设置PlayArea可玩区域(防护边界),根据头显里的提示用手柄在地面上画一个框,尽量跟青瞳追踪空间的范围一样大。

注意:

如果在连接头显到电脑的时候出现,找不到头显的sensor,请多次尝试插拔USB

如果头显里面出现雪花点,亦或者是画面闪烁,请重启Oculus VR Runtime,然后再次打开Oculus Home,然后重新设置防护边界

2.确保在Oculus Home中打开Unknown Sources选项

3.参照 关于带陀螺仪的刚体在Unity中的使用方法 章节中所提及的操作:对VR头盔进行贴点,添加刚体,设置重心,在SteamVR中设置VR头盔的地面高度与视点正方向

4.Rift S头显的显示刷新率为80帧,所以将FixedTimestep设置为0.0125

 

5.Unity场景中的任意游戏对象上添加TrackThreadManager脚本组件,关于它的作用查看 动捕追踪线程与追踪日志CMTrackLog 章节中关于追踪线程的内容

6.最后在Unity中启用VR,并激活Open VR(具体操作见 关于带陀螺仪的刚体在Unity中的使用方法 章节),然后打开插件自带的示例场景OnlyRift S Hmd,运行查看效果

4.5.3OCULUS Quest 头显

Oculus Quest头显与Rift S头显的区别是,它不仅内置了定位不需要外设sensor,更重要的是这款头显不需要线缆连接到电脑,因为Rift S头显使用的Android操作系统,所以Rift S类似一个“手机”。

下面介绍一种无线串流方法,用RiftCat运行SteamVR里的Unity VR应用,但是需要比较好的网络环境,另外RiftCat无线串流是收费的

1.安装Oculus APP到手机(确保Oculus APPOculus Quest都在同一个局域网,并且两者登录的是同一个Oculus账号,然后打开Oculus 手机APP,进入更多设置,然后选择 开发者模式)

  

2.带上Quest头显,然后根据VR里面的提示,设置地面高度与可玩区域。同Rift S头显一样,需要将地面高度设置为追踪场景中的真实地面高度,可玩区域设置为与追踪场景的范围一样大

3.连接Oculus Quest头显到电脑,然后打开ADB命令行工具,首先输入adb devices命令检查Quest头显是否已经连接到Windows,如下图所示

 

红色框信息表示已经连接上了,如果没有连接上,请重新插拔连接线

4.VridgeQuest1.apk拷贝到ADB工具的根目录下

 

 

ADB命令行工具安装VridgeQuest1.apkQuest

 

戴上Quest头显,然后在Quest头显中打开刚安装的VridgeQuest1

5.安装RiftCatwindows上,打开RiftCat,选择用Wifi连接到Quest

 

 

 

连接成功后点击 播放按钮 就会进入SteamVR

 

6.参照 关于带陀螺仪的刚体在Unity中的使用方法 章节中所提及的操作:对VR头盔进行贴点,添加刚体,设置重心,在SteamVR中设置VR头盔的地面高度与视点正方向

7.Rift S头显的显示刷新率为72帧,所以将FixedTimestep设置为0.013

 

8.Unity场景中的任意游戏对象上添加TrackThreadManager脚本组件,关于它的作用查看 动捕追踪线程与追踪日志CMTrackLog 章节中关于追踪线程的内容

9.最后在Unity中启用VR,并激活Open VR(具体操作见 关于带陀螺仪的刚体在Unity中的使用方法 章节),然后打开插件自带的示例场景OnlyQuestHmd,运行查看效果

2.5.4Window Mixed Realit 头显

Windows Mixed Reality头显也称为MR头显。它与Rift S头显类似,不同的是它不需要翻墙去下载OculusHome

1.确保你的操作系统是Windows10,并安装了SteamVR

2.Steam里面安装Windows Mixed Reality for SteamVR

 

3.Windows10自带的 混合现实门户应用程序 中设置可玩区域

可以选择空间定位模式(可以在所设置的范围内走动)

可以选择站立模式(让我坐定和站立)

 

首次连接MR,VR里面可以进行可玩区域设置

4.使用Windows徽标器+Y手动切换,同时关闭 房间边界视觉效果

  

5.带陀螺仪的刚体在Unity中的使用方法 章节中所提及的操作:对VR头盔进行贴点,添加刚体,设置重心,在SteamVR中设置VR头盔的地面高度与视点正方向

6.Windows Mixed Reality头显的显示刷新率为90帧,所以将FixedTimestep设置为0.0111

 

7.Unity场景中的任意游戏对象上添加TrackThreadManager脚本组件,关于它的作用查看 动捕追踪线程与追踪日志CMTrackLog 章节中有关追踪线程的内容

8.Unity中启用VR,并激活Open VR(具体操作见 关于带陀螺仪的刚体在Unity中的使用方法 章节),然后打开插件自带的示例场景OnlyMRHMD,运行查看效果

4.5.5OCULUS Tocuh 手柄

OculusRiftCV1Rift SQuestVR设备中都使用的是OculusTouch手柄控制器,以下将简单说明在Unity中如何结合青瞳定位使用OculusTouch手柄控制器

1.确保在SteamVROculusTouch(左/右)手柄控制器是被识别到的

 

2.进入SteamVR设置面板的测试控制器界面

  

3.分别进行左手Touch与右手Touch控制器调试,操作Touch手柄上的按键,检查按键是否有反馈,如果无反馈请先按一下手柄上的Touch控制器的开关,如下图所示

 

4.Touch手柄添加Mark标记点,然后作为刚体放置到追踪场景中。确保Touch手柄刚体的正方向与追踪的正方向一致,并为其设置了正确的重心

5.然后在Unity中打开InputManager面板,添加按键映射,如下图所示

 

 

6.打开插件中的示例场景RiftCV1HMDWithTouchController,这个场景展示了结合CMTracker提供的定位信息使用Oculus Rift CV1头显与Oculus Touch控制器的简单效果

 

4.6 动捕追踪线程与追踪日志

4.6.1动捕追踪线程

TrackThreadManager脚本组件,用来管理动捕追踪线程的开启与关闭,动捕追踪线程用于通过VRPN从动捕服务器(CMTrackServer)实时获取动捕数据到Unity,所以在Unity中要启用全身动捕与刚体追踪功能,首先必须将该脚本组件实例化到场景中以便开启动捕追踪线程如下图所示

 

Unity断开与追踪系统的连接,只需要将TrackThreadManager脚本组件Destroy即可(编辑器中点击停止播放后,也会Destroy所有MonoBehaviour对象)

4.6.2追踪日志CMTrackLog

CMUnityEnableTrackLogbool IsEnableTrackLog)接口用来实时打印输出动捕追踪日志。IsEnableTrackLog=true,默认是激活状态。表示会在Unity项目的根目录下生成动捕追踪日志文件tracker_log.txt

 

4.7 外部配置文件

打包发布为.exe后,为了可以在外部修改HuamnIDBodyID,所以在插件中准备了Config.json文件,便于用户在打包后依然可以修改程序中所引用的HumanIDBodyID

1.Config.json”在Assets根目录下,注意在发布Unity应用程序时,Unity不会将其自动打包到发布程序的资产数据文件夹xx.data下,所以需要手动把该配置文件拷贝到该文件夹下

 

2.修改Config.json文件中的设置。图中的BodiesIMUBodiesHumans,都是数组类型。Bodies表示所有普通刚体的IDIMUBodies表示所有带陀螺仪的刚体的ID,例如VR头显。Humans表示所有动捕演员的ID

 

API函数

序号

函数名称

描述

1

void CMVrpnStartExtern()

开启 Vrpn 接口

2

void CMVrpnQuitExtern()

关闭 Vrpn 接口

3

void CMVrpnEnableLog(bool enable)

启用/禁用日志

4

double CMTrackerExtern(char* _address, int channel, int component, int frameCount, bool lockUpRotation = false)

获取刚体信息(带预测)

5

bool CMTrackerExternTC(char* _address, int channel, VrpnTimeCode *timecode, double T[3], double R_Quat[4])

获取刚体信息(非预测)

6

bool CMTrackerExternXYZTC(char* _address, int channel, VrpnTimeCode *timecode, double T[3], double R_Euler[3])

获取刚体信息(欧拉角+非预测)

7

bool CMHumanExtern(char* _address, int channel, int frameCount, double* attitude, int* segmentIsDetected)

获取 Human 信息(hips 全局位置+所有骨骼的局部旋转)

 

8

bool CMHumanGlobalTLocalRTC(char* _address, int channel, VrpnTimeCode *timecode, double* T, double* R, int* segmentIsDetected)

获取 Human 信息(所有骨骼的全局位置+局部旋转)

 

9

bool CMRetargetHumanExternTC(char* _address, int channel, int frameCount, VrpnTimeCode *timecode, double *position, double *quaternion, int* segmentIsDetected)

获取重定向 Human 信息(所有模型骨骼的全局位置+局部旋转)

10

bool CMPluginRegisterUpdateHierarchy(char* _address, void* userdata, UpdateHierarchyCallback func)

获取重定向骨骼层级信息

 

函数调用流程

1. 调用 CMVrpnStartExtern 来启动 Vrpn dll 的线程

2. 调用 CMPluginConnectServer 从而连接到动作捕捉的电脑。

3. 根据 CMVrpnEnableLog 来设置是否需要生成日志文件(默认不生成)

4. 如果需要获取重定向数据,需要通过 CMPluginRegisterUpdateHierarchy 注册函数来获取层级信 (调用 CMPluginUnRegisterUpdateHierarchy 取消注册)

5. 通过 CMTrackerExtern 来获取带预测的刚体数据

6. 通过 CMTrackerExternTC 来获取不带预测的刚体数据

7. 通过 CMHumanExtern 来获取 human 的数据(hips 全局位置+所有骨骼局部旋转)

8. 通过 CMHumanGlobalTLocalRTC 来获取 human 的数据(所有骨骼全局位置+局部旋转)

9. 通过 CMRetargetHumanExternTC 来获取重定向模型的数据(所有骨骼全局位置+局部旋转)

10. 通过 CMVrpnQuitExtern 来退出 CMVrpn dll 线程

常见问题回答(FAQ

6.1 没有找到加密狗,检查电脑USB端口的加密狗

 

6.2 加密狗没有授权,检查授权文件是否正确安装

 










登录后方可查看内容
联系我们

上海021-56472866 周一至周五  9:00-21:00

请随时在下面的表格中提出您的信息。我们将在 24 小时内回复您。