
PerceptionNeuron 插件提供了将Noitom 动捕设备PerceptionNeuron 发出的动捕数据传入UnrealEngine 来驱动相应的角色运动的功能。UnrealEngine可以使用两种数据源的动捕数据:
1)由Axis Neuron发出的动捕数据,其中包括Axis Neuron的实时动捕数据和Axis Neuron 播放的预录制动捕数据;
2)预先导入引擎的 BVH asset。
数据导入到UE4(非实时)
下面将详细地介绍 PerceptionNeuron 插件的具体使用方法。
创建测试工程
首先我们新建一个测试工程,为了简单起见我们建立一个基于蓝图的空白工程”MyProject”。

创建完测试工程之后我们关闭项目,将PN Pro的UE4对应版本插件放到工程根目录下的Plugins 文件夹(没有的话就自行创建)。重新启动编辑器,打开测试工程,打开菜单 Editor -Plugins 查看 PerceptionNeuron 插件是否安装成功并且已经随编辑器启动,如下图:

创建 Animation Blueprint
现在我们可以导入预先制作好的带有骨骼的模型了。我们导入一个 FBX,在导入配置中一定要选中”Skeleton Mesh”

- 现在在Content Browser中我们可以看到已经成功导入资源库的Avatar 和 Avatar_Skeleton,接下来在Content Browser中右键点击模型,基于模型创建一个动画蓝图。

现在在 Content Browser 中我们可以看到刚刚创建的 Avatar_Skeleton_AnimBlueprint,用鼠标左键双击我们刚刚创建的Animation Blueprint来对其进行编辑。在Anim Graph中点击鼠标右键来创建一个NewPoseCalc Node,将NewPoseCalc Node连接到Final Animation Pose Node上面。当然你也可以根据自己的需求对 NewPoseCalc Node 的输出做一些处理然后将最终结果输入Final Animation Pose Node,编译 Anim Graph。

Skeleton Retargeting PerceptionNeuron 插件定义了一套标准的骨骼结构。
标准骨骼结构由 59 根骨骼构成:


如果导入的骨骼不是标准骨骼那么你可能需要做一次Skeleton Ragergeting以保证最终动捕数据驱动的角色的动作能够符合预期。在Anim Graph中选中 刚刚创建的NewPoseCalc Node,在Details窗口中会显示Skeleton Ragergeting相关的编辑选项,如下图:

我们可以展开Bone Map项来编辑Skeleton Ragergeting,左边一列是 PerceptionNeuron 插件定义的标准骨骼名字,右边一列是我们自定义的Skeleton的骨骼名字,如果导入的 Skeleton 的骨骼名字完全符合 PerceptionNeuron 插件定义的标准骨骼名字,那么左右两列的骨骼名字会自动映射正确。如果自定义的 Skeleton 中包含标准骨骼中没有 定义的骨骼名字,那么插件将会自动使用 Invalid 映射此骨骼名字,并且此骨骼在动画播放的过程中会保持相对父骨骼静止。

我们可以通过点击左右两列中的骨骼名字来调整Skeleton Ragergeting的骨骼映射关系,Skeleton中每一根骨骼同时被多根PN骨骼驱动是没有意义的,所以右列中每一根骨骼的名字必须是唯一的。Bone Map中的骨骼数量可能要比实际导入的骨骼数量多,这是由于UE 将Mesh也识别成了骨骼的原因,也许这是一个 bug。必要的时候我们可以删除左列中名字为Invalid的骨骼映射来提高计算效率。我们可以手动添加和删除一对骨骼名字映射:

创建 Actor Blueprint
创建一个Blueprint Class,后续我们会使用这个Blueprint Class创建用于测试的角色。简单起见我们选择Actor作为Parent Class,并将新建Actor Blueprint命名为”AvatarBlueprint”。

鼠标左键双击AvatarBlueprint打开BP编辑器,开始编辑AvatarBlueprint。点击Add Component添加一个PerceptionNeuron Component组件,再次点击Add Component添加一个SkeletalMesh Component组件:

点击新添加的SkeletalMesh Component,在右侧的Details窗口中设置SkeletalMesh Component属性:

编译AvatarBlueprint并关闭BP编辑器。创建Actor Instance并设置数据源,拖拽新建的 AvatarBlueprint到场景中来创建一个Actor:

选中场景中刚刚创建的Actor,然后在Details窗口中选中Actor的PerceptionNeuron Component,我们会在Details中找到Perception Neuron下的属性Avatar Name和BVH Asset:

Avater Name当Actor使用网络数据源驱动动画的时候用于标识Actor使用的网络数据流的 名称(Axis Neuron发出的每个Avatar的动捕数据都使用一个Avatar Name来标识,我们可以使用Avatar Name属性来区分发给不同角色的数据)。当属性BVH Asset被赋值的时候 Avatar Name失效,Actor动画使用BVH asset数据源驱动。
BVH Asset
BVH Asset 属性为一个BVH asset的引用。BVH asset需要我们使用BVH动捕数据文件来创建。当属性BVH Asset被赋值的时候Avatar ID失效,Actor动画使用BVH asset数据源驱动。
BVH asset数据源
BVH(Biovision Hierarchy)是Biovision开发的一种用于存储动捕数据的文件格式。我们可以将BVH格式数据文件导入UnrealEngine来生成 BVH asset。BVH asset中存储着 BVH 文件中保存的动捕数据,将BVH asset作为数据源设置给Actor,Actor会自动读取其中的动捕数据来驱动动画。
导入BVH文件
我们可以通过三种方式来导入 BVH 格式数据文件:
1)将BVH格式数据文件直接放到工程目录下的Content目录下,UnrealEngine会自动检测 Content目录中文件发生改变,自动导入BVH格式数据文件来生成BVH asset;
2)直接拖动 BVH 格式数据文件到Content Browser窗口;
3)Content Browser窗口空白处点击鼠标右键,在右键菜单中选择Miscellaneous—BVH。

现在我们的BVH asset就创建成功了,我们可以将这个BVH asset作为数据源指定给Actor使用:

运行项目,此时模型可以跟随BVH文件运动了。
数据实时同步到UE4
使用网络数据源的时候我们需要先创建 Perception Neuron Manager 和 Perception Neuron Spawner
Perception Neuron Manager
负责创建网络通信环境和处理接收的动捕数据
Perception Neuron Spawner
用于指定创建 Actor 使用的 Class 类型、 Actor 出生的初始方位、Actor 使用的网络数据流 Name 等信息。

我们首先放置一个Perception Neuron Manager到场景中,设置Perception Neuron Manager 的 Network属性
- IP 是不可编辑的,插件内部会自动获取 Host IP 并显示;
- 如果使用UDP协议, Network 中要勾选Use UDP复选框,并将Port 设置为 Axis Studio 接收动捕数据使用的端口号;
- 此处设置必须与用来同步动捕数据的Axis Studio软件设置一致。

创建一个Perception Neuron Spawner用于指定 Actor 出生的初始方位,Avatar Name必须与Studio软件设置一致,Dynamic Actor Class是我们刚才创建的Actor蓝图类,Spawer会在初始位置生成我们引用的蓝图类。

运行项目,此时可以看到UE4中的模型与动捕软件的动作完全一致。