开发环境:
- Windows 10 专业版;
- UE4.27;
- ue插件:LiveLink / ControlRig / SteamVR
- Vive Pro 套件;
- Vive Tracker 3.0 (4个);
- Steam Valve Index (2个),主要为了添加手指控制;
- 虚拟Avatar:Daz3D人物模型;
开发步骤:
- SteamVR设备相关:参考[XR]动捕 UnityXR + FinalIK(VRIK) + SteamVR_GrimRaider的专栏-CSDN博客使用Final IK 控制人类骨骼实时同步动作。Unity + Final IKhttps://blog.csdn.net/GrimRaider/article/details/121699024?spm=1001.2014.3001.5501
- 获取Tracker数据:(2种方式: MotionController / LiveLinkSource,本例使用的MotionController)
- 拼ControlRig(全身):
- 6个控制节点:head / hip / left hand / right hand / left foot / right foot;
- 4个PoleVector:左右elbow,左右knee;
- 注意control节点要和骨骼初始Transform完全一致,因为后续需要使用Tracker同步数据;
- 简单的例子就是把手部和足使用BaseIK(TwoBonesIK)实现,头部简单处理成从Control获取Transform数据(GetTransform - Control)然后直接设置给对应骨骼( SetTransform - Bone),hip也同head;
- 自己不会拼ControlRig也可参考Daz3D插件自带的Genesis8SimpleCtrlRig,或ControlRigForDaz3D,如果发现模型四肢扭曲,先排除是不是导出时没勾选 "Fix bone rotations on imports" ;
- 拼ControlRig(手指):
- 主要使用DistributeRotation节点控制手指弯曲;
- 弯曲值从index传过来的 SteamVRFingerCurls(弯曲度)获取,Splays数据不会用;
- 在Tracker的MotionController下创建ControlRig里的control同步节点;
- 运行校准时,将所有Tracker和人物Avatar模型重合,使用GetSocketTransform提取对应骨骼世界Transform,将MotionController下的control节点设置为此数据,完成校准;
- 校准后,每Tick获取第6步的control节点世界Transform,设置到ControlRig对应control上,就完成动捕数据同步了,注意使用FromWorld转换一下坐标系。
- 面捕可以直接使用Daz3D插件自带的资源目录下找(DazToUnreal\Content)Genesis81ArkitExample,看不到的同学请安装Daz3D对应插件,并开启ViewOptions中的 "Show Engine Content" ,配合上 LiveLinkFace;
- index和Tracker\ Controller模型,可以使用OpenXR插件中的left_ValveIndexController、right_ValveIndexController,和Engine/VREditor/Devices/Vive,一般OpenXR/Devies下有大部分模型;
参考:
- 大佬github(里面有youtube视频讲解):https://github.com/Megasteakman/VRMocaphttps://github.com/Megasteakman/VRMocap
- 大佬文档:https://docs.google.com/document/d/1yg98JJIbE_FsXjfotas_DSuWrzXPzFthoK6CIOlKLMk/edit#https://docs.google.com/document/d/1yg98JJIbE_FsXjfotas_DSuWrzXPzFthoK6CIOlKLMk/edit#
- 日本基于AI算法的动捕软件MocapForAll:https://www.bilibili.com/video/av803800872https://www.bilibili.com/video/av803800872https://www.bilibili.com/video/av803800872
- 官方ControlRig视频1:[英文直播]UE4.26中使用Control Rig制作动画 | Animating with Control Rig in 4.26(官方字幕)_哔哩哔哩_bilibili虚幻引擎教学https://www.bilibili.com/video/BV1Fb4y1d7KV?from=search&seid=7884981084531326263&spm_id_from=333.337.0.0
- 官方ControlRig视频2:[英文直播]使用ControlRig样例工程创建动画 | Animating with the Control Rig Sample Project(官方字幕)_哔哩哔哩_bilibiliAnimating with the Control Rig Sample Projecthttps://www.bilibili.com/video/BV1nb4y1X7A5
- Daz3D相关1:[Distribution] Control Rig for Animations in Unreal Engine - Daz 3D ForumsTO USE THIS YOU MUST ENABLE FIX BONE ROTATIONS ON IMPORT: http://davidvodhanel.com/daz-to-unreal-fix-bone-rotations-option/ Hello guys,https://www.daz3d.com/forums/discussion/488811/distribution-control-rig-for-animations-in-unreal-engine
- Daz3D相关2:Daz To Unreal – Fix Bone Rotations Option – David Vodhanelhttp://davidvodhanel.com/daz-to-unreal-fix-bone-rotations-option/
- Daz3D相关3:Inverse Kinematics - Control Rig - Daz 3D ForumsHas anyone been successful at setting up IK in the Control Rig?https://www.daz3d.com/forums/discussion/502691/inverse-kinematics-control-rig
- 第3方动捕Manus:Setup | Polygonhttps://www.manus-meta.com/knowledge/setup-polygon#steamvr
- 其他1:https://github.com/guto88/ControlRigForDaz3Dhttps://github.com/guto88/ControlRigForDaz3D
- 其他2:https://github.com/guiglass/Unreal_Engine_5_Live_Production_Example/https://github.com/guiglass/Unreal_Engine_5_Live_Production_Example/