UE4插件

一、系统要求

  • UE 4.27版本

  • Windows 7 SP1 及以上版本。

二、开发准备与插件下载

  • 请首先确保UDEXREAL HandDriver 软件已经成功安装,如果还未进行此操作,请先安装。

  • 下载HandDriver插件包到本地,插件包下载地址为(提取码: kt3a):

1. 与HandDriver2.1.2之后(含)版本搭配使用注意事项

请在HandDriver端数据发送中勾选“旧插件”。

HandDriver 2.2.2

2. 兼容性说明

如果您之前打包应用时所对应的HandDriver为2.0.5之前(含)版本(即不支持创建角色的HandDriver),而您又暂时不能升级UE插件,请您使用HandDriver2.1.2之后的版本,并在HandDriver端角色名称中使用格式为DeviceX_XXXX的角色名,例如Device1_5555。

三、快速开始

3. 运行 UDEXREAL HandDriver软件

在电脑上运行UDEXREAL HandDriver软件,确保手套正确连接并使用。软件使用方法参见HandDriver软件介绍

3.1. 数据发送设置

不同版本的HandDriver数据发送功能设置详见:

数据发送chevron-right

4. 在Unreal中新建工程

当你启动虚幻引擎(UE4)后,会自动显示虚幻项目浏览器。

  1. 新项目类别(New Project Categories) 下,选择最适合所在行业的开发类别。下面示例中选择了 游戏(Games)

  1. 为项目选择模板,然后单击 下一步(Next)。将显示 项目设置(Project Settings) 页面。

  1. 项目设置(Project Settings)页面,可选择质量/性能级别、目标平台、是否包含初学者内容等。

  1. 最后,选择要存储项目的位置,并为项目命名。单击 创建项目(Create Project) 完成创建。

5. 安装插件

首先将 UE 插件 SDK文件夹整个复制到新建工程的Plugins文件夹下。如果新建工程目录下没有 Plugins 文件夹,则新建Plugins文件夹即可。

然后打开工程,UE 编辑器会提示发现新插件,此时在编辑器窗口点击 Edit(编辑)->Plugins(插件)打开插件管理窗口,搜索框搜索 HandDriver 插件,并保证 其左下角 Enabled 已经勾选。

  1. 确保手套与MoStream HandDriver软件为开启状态,且手套与MoStream HandDriver软件连接成功

  2. 展开 窗口(Window) 选项卡并点击 实时链接(Live Link),启动 实时链接(Live Link) 工具。

  1. 打开之后,如果展开 源(Source) 窗口,将会看到 HandDriver 显示为新源。

  1. 展开 HandDriver 源(HandDriver Source) 选项,查看与其关联的IP和Port设置(与MostreamHD中填写的IP与Port相对应,是MostreamHD所在端的IP和Port),点击OK选项,此时下方会出现对应的设备Device1Device2如果只连接一副手套则只显示Device1)以及绿色小圆点,表示与HandDriver软件连接成功,如未出现绿色原点,检查IP与port是否对应,或检查网络。

  1. 导入模型,注意要勾选骨骼网格体和导入网格体,并将SkeletalMesh模型拖入场景中。

  1. 选中SkeletalMesh模型,在细节(Detail)栏的Actor下先添加Hand组件,再添加组LiveLinkController,主题表示(Role)中选择需要接收的设备(Device1Device2)即可,如果只连接了一副手套,则仅显示Device1且只能选择Device1

7. 测试Demo

我们在插件中准备了一个测试关卡,以便您在正式使用UDEXREAL手套到项目前测试效果。

  1. 打开已正确安装好插件的工程,在Plugins——Map中打开UdexrealTest关卡。

  1. 点击开始,运行关卡。

  1. 关卡中包含的模型为:UE官方VR手模型、MetaHuman女性身体标准骨骼模型。场景中模型所采用的手部数据调节参数,可作为参考在您的工程中使用。

  2. 橙蓝两组手模型相同,但使用的调节方法不同。橙色手使用的是调节Hand组件参数(参数已内置在插件内),蓝色手使用的是叠加动画(参考方法:MetaHuman手部骨骼调整方法。可继续阅读文档学习两种手部效果调整方法,以选择更适合您的方法。

8. 使用插件实现全身动捕整合

  1. 全身模型要求:与全身动捕进行整合,第一步要将数据手套的手部骨骼定义与全身模型的手部骨骼定义相匹配,为了实现最佳效果,全身模型的手部骨骼及模型需要满足以下要求:

    • 手腕关节及以下所有子关节骨骼轴向一致(即选中每个关节时,坐标系方向相同)。

    • 模型手部所有骨骼局部旋转值归零后,手部模型的初始形态为四指并拢且伸直。

    • 模型手部所有骨骼局部旋转值归零后,手指所有骨骼(不包含手腕关节,但包含拇指所有关节)的坐标系轴向需指向其子关节。

  2. 当数据手套和全身动捕系统一起联合使用时,我们提供了一个单独的动画蓝图节点来一键整合动捕系统数据和手套数据:选中SkeletalMesh骨骼网格体,右键创建动画蓝图:

  1. 双击打开动画蓝图,在动画蓝图中分别导入全身动捕的节点(Livelink实时链接姿势)和数据手套的节点Udexreal Hand Pose,再导入一个Blend Hand Data In Mocap节点,分别将动捕的数据和手套的数据导入该节点,输出连接到输出姿势(OutputPose),最后点击编译即可。

  1. 注意:对于有复杂动画蓝图的工程,如果您无法正确设置动画蓝图,建议先保持“Udexreal Hand Pose”-“Blend Hand Data In Mocap(Hand)”-“OutputPose(输出姿势)”的节点顺序,而将其他节点与“Blend Hand Data In Mocap(Mo Cap)”进行关联,此时如果能顺利驱动手部动作,再尝试根据您工程的实际情况调整动画蓝图。例如下图:

  1. 选中SkeletalMesh模型,将蓝图中的骨骼模型配置为动画蓝图驱动,在动画类选项中选择刚刚创建好的动画蓝图:

  1. 将数据手套定义的手部骨骼名称和全身模型的手部骨骼名称匹配。将模型左右手手部骨骼关节名称一一复制到Hand组件对应的配置框中,即可完成名称匹配。同理,参照上述方法,在UE中也可以通过蓝图类建立骨骼关节点匹配,并将人物模型放置到场景中。

9. 坐标系校订:对模型手指关节的Pitch Axis(俯仰角)、Yaw Axis(偏航角)、Roll Axis(旋转角)进行校订。

  • 建议先校订手指俯仰角,再校订偏航角和旋转角;

  • 校订俯仰角时,可先打开模型的骨骼树状图,将坐标系改为对象坐标系,然后随意选择一根手指的关节,按住W键,确认其俯仰角所对应的坐标轴(偏航角与旋转角同理)。例如,手指关节向下翻转角度对应的轴向指向X轴的正方向,即手指关节的俯仰角X,在坐标系栏中选择对应轴:Pitch=X;五指向外张开的方向指向Y轴的负方向,则手指关节的偏航角为-Y,在坐标系栏中选择对应轴:Yaw=-Y;那么旋转角对应的则是Z轴,从手指关节的坐标系来看Z轴指向的是负方向,那么手指关节的旋转角为-Z,在坐标系栏中选择对应轴:Roll=-Z;

  • 校订完成后,即可展示手部动作,如果关节方向旋转不正确,可反复校对直到取得正确的结果(偏航角与旋转角的数值通常不同,但在某些情况下需一致才能实现正确的效果,如下图):

10. 大拇指参数调整:

  1. 拇指根节点系数 Thumb Coefficient:

调节大拇指在实时串流时的向内弯曲系数(系数范围0-1),拇指根节点系数的值越低,向内弯曲程度越小;拇指根节点系数的值越高,向内弯曲程度越大。

  1. 拇指根节点偏差(Thumb Pitch/Yaw/Roll Offset):

调节大拇指X、Y、Z轴在旋转时的偏差系数(本偏差实为角度,可将光标放入输入框内拖动,或直接填入角度数值观察效果),在实时串流时可以通过调整三轴的数值对大拇指的旋转方向进行调整,以达到最优效果(注意:想要看到调整后的效果,需在调整数值后松开鼠标方可观测到)。

  1. 拇指根节点旋转坐标系(Thumb Pitch/Yaw/Roll Axis):

勾选Adjustment For Thumb Axis后启用,可以单独校订大拇指的Yaw、Pitch、Roll的旋转坐标系,不会影响其他四个手指的旋转坐标系。

11. 有关手指曲张的调整

有些模型,其默认初始状态为五指弯曲且张开,因此需要进行手指参数调整。

  1. L/R Finger Yaw Offsets

  • Index:食指偏航调整;

  • Middle:中指偏航调整;

  • Ring:无名指偏航调整;

  • Pinky:小指偏航调整;

  • 以上数值,建议可在手指伸直并拢时进行调整,即调整手指伸直并拢时的手指间距。参考经验值如上图所示(分别为-10,0,-12,-18),但请依据实际情况进行调整。

  1. StraightenFinger

该选项为“拉直手指”,启用后会自动将弯曲手指拉直(仅针对于MetaHuman,其他模型不保证效果),请依据实际情况选择是否开启。

  1. L/R Finger Coefficient

该参数为“手指间距参数”,建议可在握拳时进行调整,即调整握拳时的手指间距。参考经验值为5,但请依据实际情况进行调整。

  1. L/R Finger Pitch Offset

该参数作用于手指无法伸直的情况,即用户实际手指已伸直,但模型未伸直。该参数作用于四指的根关节和中间关节的俯仰。本插件已经针对MeteHuman模型可开启“StraightenFinger”选项,通常情况下无需调整本参数

  1. 补充说明:以上参数调整可基本满足手指伸直并拢和握拳的状态,不过可能会因各人手型、标定准确度、手套匹配度等不同而表现一定差异。

  2. MetaHuman手部参数的经验值(以左手为例)

经我们调整,得出了一组较为适合的MetaHuman手部的参数,可供参考。

12. 退出UE时关闭源(source)

当完成操作需要退出UE时,请按以下步骤操作关闭HandDriver插件:

  1. 展开 窗口(Window) 选项卡并点击 实时链接(Live Link),启动 实时链接(Live Link) 工具。

  2. 打开之后,点击HandDriver LiveLink localhost 后的删除图标,将HandDriver LiveLink删除即可。

每次重启软件后,会出现LiveLink“源”被清空,需要重新添加“源”人物才能动的情况。

解决这种情况的问题,请按以下步骤操作(本方案为参考方案,若有问题敬请反馈):

  1. 确保需要手部动捕的Actor的 LiveLinkComponentController 组件 中的SubjectRepresentation已选中了手套的 Device1 (显示为None的话,需先操作上文步骤中的手套LiveLink连接)

  1. 打开需要手部动捕的Actor的 蓝图,在 事件开始运行(Event BeginPlay)后依次添加节点“延迟(Delay)---Create HandDriver LiveLink Source at Runtime”

  2. 右键点击 Create HandDriver LiveLink Source at Runtime 的返回值 Handle 提升为变量命名为 HandDriverSource ,并连接。

  3. Create HandDriver LiveLink Source at Runtime 的变量 ConnectString中输入 0.0.0.0:5555。

  1. 事件结束运行(Event End Play)后添加节点 “RemoveSource” ,HandDriverSource 作为参数连入。

  1. 编译保存,此时 实时链接(Live Link)列表中没有HandDriver源也可驱动Actor手部动捕。

Last updated