(题图与文章无关)
上次为大家介绍了使用 Vive 做 Vtuber,其中用到 FinalIK 作为 IK(Inverse Kinematics,反向运动学)的方案。除了 FinalIK 之外,IKINEMA 的 Orion 也是常用的 IK 中间件。IKINEMA 深耕 IK 十多年,合作伙伴几乎覆盖所有游戏大厂,2017 年推出的 Orion 基于 Vive Tracker,硬件成本大大降低,效果也很不错,使得独立开发者也有机会在工作中体会到动捕带来的便利。
今天我们就来用 Orion 在 Unity 中进行全身动捕。由于我们只是演示 Orion 的功能,所以你并不需要 Vive Tracker。最终结果如下(左侧是 Orion 画面,右侧是 Unity 画面)。
让我们开始吧。
导入 IKINEMA Orion
Orion 可至官网下载。
提供 14 天的试用。试用期之后每年授权费 400 英镑,要注意的是授权是绑定席位的,意味着一次授权只能在一台电脑上使用。
安装 Orion 后,新建一个 Unity 项目,并且将 Orion 安装目录下 UnityStream/Assets 下的这些文件复制到我们的项目中。
另外我们还需将 IKinema OrionIKinemaMaleIKinemaMale.unitypackage 导入我们的项目。
Orion 功能简介
启动 Orion 后出现如下界面。
图中红框部分用于选择我们的 Vive Track 配置,Orion 支持十多种佩戴方式,可以根据 Tracker 数量以及是否需要佩戴头显选择适合自己的。
https://ikinema.com/index.php?mod=documentation&show=317&id=351
Options 中有几个 tab 比较重要。其中之一是 Input 选项。
用于选择是进行现场动捕,还是回放预先录制好的捕捉数据。回放便于我们调试与 Unity 或者 Unreal Engine 之间的协作。
Output 选项中可以指定输出端口,我们将在 Unity 中通过该端口接收数据,使用默认值即可。
另外一个常用选项是 Output Avatar。
这里的 Output Avatar 需要和你在引擎中使用的 Avatar 相同。这也是我们需要导入 IKinemaMale 的原因。
使用 IKinemaMale
将之前导入的 IKinameMale 拖动到场景中。
我们为其添加名为 IKINEMA VRPN 的组件。这个组件将负责从 Orion 接收数据。
所有设置保持默认即可。如果你之前在 Orion 的 Output 选项中修改了配置,则需要在这里做出相应的修改。
回到 Orion 中,我们在 Input 选项中选择回放。
之后点击开始按钮。
再开始预览我们的项目,我们场景中的 IKinemaMale 已经跟随 Orion 中的模型舞动了起来。
使用 UnityChan 模型
在 Orion 的 Output 选项中,我们可以看到 Orion 还支持 UnityChan 的 Avatar,让我们来试一下。
首先我们在这里下载 UnityChan 的数据包。
http://unity-chan.com/download/index.php
图中红色部分。
导入项目后可能会发现系统报错。
改为下面的代码即可。
using UnityEngine;
using System.Collections;
using System.Security;
将 UnityChan > Models 下的 unitychan fbx 拖动到项目中
同样添加 IKINEMA VRPN 组件,并保持默认值不变。
在 Orion 的 Output Avatar 中选择 Unity-chan 并开始回放。
预览我们的项目,你就可以看到类似我们文章开始的结果了。
保存 Animation
现在我们的模型已经可以从 Orion 取得动作数据,但是除了实时演示之外,我们还需要把数据保存起来的方法,这样才能进一步使用。
在 Unity 中,保存动画数据常用以下两个插件
https://github.com/newyellow/Unity-Runtime-Animation-Recorder
https://assetstore.unity.com/packages/essentials/unity-recorder-94079
可惜它们都不支持 Humanoid 类型的动画。而为了在模型间共享动画,Humanoid 型是必须的。
这次我们将使用下面这个插件。
https://github.com/duo-inc/EasyMotionRecorder
作者是日本一家叫 ZIZAI 的公司,如果你对 VTuber 有所了解,可能听说过 ミライアカリ,就是 ZIZAI 运营的。
扯的有点远。从 github 下载代码后,将其中 Assets > EasyMotionRecorder 下的所有文件复制到我们的项目即可。
我们首先将 IKinemaMale 的 Rig 调整为 Humanoid。
之后为场景中的 IKinemaMale 添加 Motion Data Record 组件。
将组件中的 Animator 改为我们的 IKinemaMale,其他选项保持不变。
在 Orion 中回放动画,并且开始预览我们的项目。预览过程中按下 “R”以及“X”开始和结束录制。
之后,我们在 Resources 目录下可以看到动作数据。选中数据,并在 Inspector 上点击右键,我们可以导出选项。我们选择导出为 Humanoid 动画。
之后,可以使用其他 Humanoid 模型预览导出的动画。
这样我们便能将动作捕捉的数据用于我们的游戏或者动画中了。
以上大致介绍了 Orion 的用法。如果你已经拥有 Vive 的话,只需额外购买三个 Vive Tracker 以及 Orion 就可以获得一套过得去的全身动捕设备,比起诺亦腾 Perception Neuron 之类的便宜不少。
但是不知道大家注意到没有,除了每年 400 英镑的授权费之外,Orion 还有个坑,就是对于 Unity,它只支持 IKinemaMale,Unity-chan 等少数几个 avatar 的输出,这意味着,如果你想在场景中使用其他模型,将没法实时看到动作捕捉的结果。IKINEMA 可以将你自定义的模型添加到 Orion 中,但是需要收取 200 英镑一个的费用。这显然不是办法。下一次我们就来介绍另一种添加自定义模型的方法。