unity animator 动画 结束后保持位移_使用 IKINEMA Orion 在 Unity 中进行全身动作捕捉...

122b06ce-4813-eb11-8da9-e4434bdf6706.png

(题图与文章无关)

上次为大家介绍了使用 Vive 做 Vtuber,其中用到 FinalIK 作为 IK(Inverse Kinematics,反向运动学)的方案。除了 FinalIK 之外,IKINEMA 的 Orion 也是常用的 IK 中间件。IKINEMA 深耕 IK 十多年,合作伙伴几乎覆盖所有游戏大厂,2017 年推出的 Orion 基于 Vive Tracker,硬件成本大大降低,效果也很不错,使得独立开发者也有机会在工作中体会到动捕带来的便利。

今天我们就来用 Orion 在 Unity 中进行全身动捕。由于我们只是演示 Orion 的功能,所以你并不需要 Vive Tracker。最终结果如下(左侧是 Orion 画面,右侧是 Unity 画面)。

222b06ce-4813-eb11-8da9-e4434bdf6706.png

让我们开始吧。

导入 IKINEMA Orion

Orion 可至官网下载。

https://ikinema.com/orion

提供 14 天的试用。试用期之后每年授权费 400 英镑,要注意的是授权是绑定席位的,意味着一次授权只能在一台电脑上使用。

安装 Orion 后,新建一个 Unity 项目,并且将 Orion 安装目录下 UnityStream/Assets 下的这些文件复制到我们的项目中。

442b06ce-4813-eb11-8da9-e4434bdf6706.png

另外我们还需将 IKinema OrionIKinemaMaleIKinemaMale.unitypackage 导入我们的项目。

Orion 功能简介

启动 Orion 后出现如下界面。

552b06ce-4813-eb11-8da9-e4434bdf6706.png

图中红框部分用于选择我们的 Vive Track 配置,Orion 支持十多种佩戴方式,可以根据 Tracker 数量以及是否需要佩戴头显选择适合自己的。

https://ikinema.com/index.php?mod=documentation&show=317&id=351

Options 中有几个 tab 比较重要。其中之一是 Input 选项。

5c2b06ce-4813-eb11-8da9-e4434bdf6706.png

用于选择是进行现场动捕,还是回放预先录制好的捕捉数据。回放便于我们调试与 Unity 或者 Unreal Engine 之间的协作。

Output 选项中可以指定输出端口,我们将在 Unity 中通过该端口接收数据,使用默认值即可。

632b06ce-4813-eb11-8da9-e4434bdf6706.png

另外一个常用选项是 Output Avatar。

652b06ce-4813-eb11-8da9-e4434bdf6706.png

这里的 Output Avatar 需要和你在引擎中使用的 Avatar 相同。这也是我们需要导入 IKinemaMale 的原因。

使用 IKinemaMale

将之前导入的 IKinameMale 拖动到场景中。

732b06ce-4813-eb11-8da9-e4434bdf6706.png


我们为其添加名为 IKINEMA VRPN 的组件。这个组件将负责从 Orion 接收数据。

762b06ce-4813-eb11-8da9-e4434bdf6706.png

所有设置保持默认即可。如果你之前在 Orion 的 Output 选项中修改了配置,则需要在这里做出相应的修改。

792b06ce-4813-eb11-8da9-e4434bdf6706.png

回到 Orion 中,我们在 Input 选项中选择回放。

802b06ce-4813-eb11-8da9-e4434bdf6706.png

之后点击开始按钮。

842b06ce-4813-eb11-8da9-e4434bdf6706.png

再开始预览我们的项目,我们场景中的 IKinemaMale 已经跟随 Orion 中的模型舞动了起来。

892b06ce-4813-eb11-8da9-e4434bdf6706.png

使用 UnityChan 模型

在 Orion 的 Output 选项中,我们可以看到 Orion 还支持 UnityChan 的 Avatar,让我们来试一下。

首先我们在这里下载 UnityChan 的数据包。

http://unity-chan.com/download/index.php

图中红色部分。

8a2b06ce-4813-eb11-8da9-e4434bdf6706.png

导入项目后可能会发现系统报错。

8f2b06ce-4813-eb11-8da9-e4434bdf6706.png

改为下面的代码即可。

using UnityEngine;
using System.Collections;
using System.Security;

将 UnityChan > Models 下的 unitychan fbx 拖动到项目中

942b06ce-4813-eb11-8da9-e4434bdf6706.png

同样添加 IKINEMA VRPN 组件,并保持默认值不变。

9d2b06ce-4813-eb11-8da9-e4434bdf6706.png

在 Orion 的 Output Avatar 中选择 Unity-chan 并开始回放。

9f2b06ce-4813-eb11-8da9-e4434bdf6706.png

预览我们的项目,你就可以看到类似我们文章开始的结果了。

保存 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 运营的。

a52b06ce-4813-eb11-8da9-e4434bdf6706.png

扯的有点远。从 github 下载代码后,将其中 Assets > EasyMotionRecorder 下的所有文件复制到我们的项目即可。

我们首先将 IKinemaMale 的 Rig 调整为 Humanoid。

a92b06ce-4813-eb11-8da9-e4434bdf6706.png

之后为场景中的 IKinemaMale 添加 Motion Data Record 组件。

ab2b06ce-4813-eb11-8da9-e4434bdf6706.png

将组件中的 Animator 改为我们的 IKinemaMale,其他选项保持不变。

b42b06ce-4813-eb11-8da9-e4434bdf6706.png

在 Orion 中回放动画,并且开始预览我们的项目。预览过程中按下 “R”以及“X”开始和结束录制。

之后,我们在 Resources 目录下可以看到动作数据。选中数据,并在 Inspector 上点击右键,我们可以导出选项。我们选择导出为 Humanoid 动画。

bb2b06ce-4813-eb11-8da9-e4434bdf6706.png

之后,可以使用其他 Humanoid 模型预览导出的动画。

bf2b06ce-4813-eb11-8da9-e4434bdf6706.png

这样我们便能将动作捕捉的数据用于我们的游戏或者动画中了。

以上大致介绍了 Orion 的用法。如果你已经拥有 Vive 的话,只需额外购买三个 Vive Tracker 以及 Orion 就可以获得一套过得去的全身动捕设备,比起诺亦腾 Perception Neuron 之类的便宜不少。

但是不知道大家注意到没有,除了每年 400 英镑的授权费之外,Orion 还有个坑,就是对于 Unity,它只支持 IKinemaMale,Unity-chan 等少数几个 avatar 的输出,这意味着,如果你想在场景中使用其他模型,将没法实时看到动作捕捉的结果。IKINEMA 可以将你自定义的模型添加到 Orion 中,但是需要收取 200 英镑一个的费用。这显然不是办法。下一次我们就来介绍另一种添加自定义模型的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值