查看原文
其他

Unity 2019.1中的Animation Rigging资源包

Unity Unity官方平台 2022-05-07

Unity 2019.1正式版中加入了全新的Animation Rigging资源包,目前该资源包为预览版本。本文将介绍Animation Rigging资源包以及使用示例。


Animation Rigging资源包可以在运行时给动画骨架设置程序化动作你可以使用一组预定义的动画约束,为角色手动构建控制绑定层级,或使用C#代码开发自定义约束,这将帮助你在游戏中实现强大的功能,例如:世界交互,骨架变形绑定和基于物理的次级动画。


安装资源包

请通过资源包管理器在Unity项目中安装Animation Rigging资源包。安装时,在资源包管理器的Advanced标签选择Show Preview Packages。


Animation Rigging资源包的页面包含文档链接并提供了示例内容,帮助开发者学习使用该资源包。

 


这是面向Unity 2019.1发布的首个预览版资源包,开发者也可以尝试使用面向Unity 2019.2 Beta的新版本。通过使用新版本,开发者可以使用动画窗口,通过实时反馈来制作自定义约束动画。

 

请注意:该资源包的功能会随着版本更新而变化。请确保资源包能够满足实际的开发需求,反馈给我们资源包的使用效果,你将有机会影响资源包未来的开发过程。


Animation Rigging介绍

Animation Rigging资源包提供绑定约束库,你可以使用它在运行时创建程序化动作,这通常称为运行时绑定。约束在被称为Rigs的分组中设置,在资源的Animator根对象上的Rig Builder组件中结合。



约束可以在游戏时通过动画骨架实现强大的功能,例如:世界交互功能,角色的手交互物品,或在游戏世界瞄准目标。


通过使用针对骨架变形绑定的程序化控制骨骼,可以获得更高质量的绑定效果,例如:蒙皮网格角色上肩膀和手腕的扭动矫正。我们还有基于物理的约束,可用于角色绑定上的动态次级动画。


Bone Renderer组件

查看和交互场景视图中的骨架,对于在Unity编辑器中使用绑定会很有帮助。我们增加了Bone Renderer组件,它让你可以添加Transform列表,并可视化的展示列表的内容。


 

使用多个Bone Renderer组件有助于组织骨架的各个部分。下面示例中,同一角色拥有多个Bone Renderer组件,因此身体,手指和弯曲骨骼可以有各自的展示风格,这有助于方便不同的艺术家工作流程,例如:绑定设置,关键帧处理和游戏玩法的调试。


Rig Builder组件和Rigs组件

下面是设置角色上Rig绑定的步骤:


  • 我们添加Rig Builder组件到Animator根对象上,即附带Animator组件的对象,通常该对象的Transform是绑定层级顶部的Transform。


  • 我们创建一个新的子对象,在该对象上添加Rig组件。


  • 最后将Rig绑定对象指定到Rig Builder组件上的Rig Layers列表。

 

这是最简短的有效绑定设置过程。在此后的步骤中,我们会添加约束。


  

Rig Builder组件的优点在于:Rig Layers列表允许显示多个绑定,有助于创建可以在游戏时开启和关闭的特别行为。


为了使该组件更加实用,每个Rig绑定都有自己的权重值,因此Rig绑定可以和其它Rig绑定混合。


Rig Constraints绑定约束

Rig Constraints绑定约束是组合绑定的基础部分,用于在运行时生成程序化动作。绑定约束旨在实现模块化及通用性,从而使它们能够以不同的方法结合起来,解决运行时动画游戏设计的需求。

 

下图是该资源包提供的绑定约束列表。


 

下面是设置Rig Constraint绑定约束的步骤,我们在示例中使用了TwoBoneIK Constraint。

  • 首先给Rig对象添加一个子对象。 

  • 给子对象添加TwoBoneIK Constraint组件。

  • 指定骨骼和效应器到TwoBoneIK Constraint组件。

  • 最后按下Play按钮时,我们可以看到约束在运行时的效果。


绑定约束示例

开始学习Rig Constraints绑定约束使用的最佳方法是查看资源包中提供的示例。


在资源包管理器中,点击Import in project按钮可以把示例内容导入到项目中,每种约束都提供了一个场景用于展示使用方法。


游戏示例

运行时绑定过程发生在游戏期间,为了测试使用效果,我们使用一些现有的Unity示例内容,创建了一个简单的游戏原型。

 

 

我们实现了基础的玩家控制,使用Animation Rigging资源包轻松实现有趣的游戏机制。下图展示了效果。


功能详解

下面我们将介绍每个功能,帮助你了解制作运行时绑定的方法。


骨架变形绑定

忍者角色的骨架已经设置好弯曲骨骼和蒙皮权重以供使用,在Unity中,我们增加了TwistCorrection约束来处理手臂和双腿的变形效果。


 

下图展示禁用这些约束的效果。通过应用弯曲矫正功能,运动效果会感觉更加自然,就像真实的身体和服装一样。

 


垂直瞄准绑定:飞镖

忍者需要能够以360度的任意角度瞄准并投出的飞镖。我们首先添加一些新虚拟骨骼到忍者骨架上。


我们会添加新的Transform到骨架层级,然后使用预制件保存虚拟骨骼。虚拟骨骼可以像其它骨骼一样用来制作动画,因为虚拟骨骼仅在需要的动画剪辑有关键帧,所以它们可以看作是虚拟的,从而在不需要虚拟骨骼的时候节省内存。

 

然后,添加TwoBoneIK Constraint组件到左臂,并设置虚拟骨骼为IK目标。IK目标会在投飞镖的新动画剪辑中处理,该剪辑在忍者的Animator State Machine设为替换图层,按下按键时会激活该图层和垂直瞄准绑定。

 

最后,我们制作了1D Blend Tree,用于驱动Aim Vertical虚拟骨骼,它是IK目标的父对象。1D Blend Tree由玩家输入控制,即游戏手柄控制器上左侧拇指摇杆的垂直轴。



因此,该动画图层覆盖在忍者播放的其它动画之上。该动画图层总是有效,无论忍者是在奔跑、跳跃、蹲下或甚至用刀进行攻击时,他都可以立即扔出飞镖。



垂直瞄准绑定:武士刀

忍者的武士刀也需要可以垂直地瞄准,从而击中地面或空中的目标。我们基于飞镖绑定制作武士刀的绑定,武士刀使用了相同的1D Blend Tree控制瞄准过程。

 

刀的动画增加了新的要素:水平角度。水平瞄准呈完美的直线非常重要,这会使刀的尾迹效果看起来平滑。


仅仅使用骨架动画很难使它看起来呈直线运动,因为即使姿势是完美的,在子帧数也经常会有瑕疵,原因在于手臂的FK骨骼链的插补解算方式。最好的解决方法是使用Multi-Aim Constraint多重瞄准约束。

 

 

我们设置了一个新虚拟骨骼,使它在武士刀之前移动,然后指定虚拟骨骼为Multi-Aim Constraint的目标。该组件的源对象是右手抓握的骨骼部分,即武士刀模型的父对象。

 

然后,我们添加另一个虚拟骨骼作为瞄准目标的父对象,使用Position Constraint位置约束来使它的中心在忍者的胸部。


最后,我们打开挥舞武士刀的动画剪辑,添加用于旋转瞄准目标父对象的关键帧,使关键帧和手臂的动作同步。

 

结果是Multi-Aim Constraint会矫正刀水平旋转弧度的瑕疵。在动画变慢并添加下图中的粒子效果后,刀的砍击动作总是笔直而逼真的。



熟悉的蝴蝶绑定

下面示例展示Rig Constraints绑定约束如何帮助我们制作跟随角色。


我们使用DampedTransform Constraint,从而让蝴蝶跟随忍者预制件内的目标Transform。蝴蝶使用了Multi-Aim Constraint来实现聚光灯效果,无论忍者走到何处,聚光灯总是照着忍者前方的目标。

 


蝴蝶模型是《Unity 2018.3 Shader Graph着色器视图新功能:Lit Master Node》中展示的相同模型。蝴蝶会给忍者提供升级效果和特殊攻击。更重要的是,在忍者穿行于超大城市时,蝴蝶会伴随着忍者。


开发者可以创作各种炫酷的游戏机制,而Animation Rigging资源包会使实现方法变得简单。


起重机示例

动画绑定约束既可以用于角色,也可以用于其它对象。在起重机示例中,我们使用约束来创建未来风格的起重机绑定,目标是创建出完全由输入和运行时约束驱使的绑定。


起重机示例中没有动画剪辑,因为所有动作都来自二个手柄摇杆的输入,其中有一个按钮用于夹住和松开集装箱。


 

下载起重机示例项目:

https://github.com/Unity-Technologies/animation-rigging-crane-example/tree/2019.1

 

如果使用Unity 2019.2 Beta版,请下载项目的更新版本:

https://github.com/Unity-Technologies/animation-rigging-crane-example/tree/master

 

起重机的操控方法如下表所示。



ControlRig控制绑定

本示例中,我们使用了创建二个绑定的方法。


首先是ControlRig,在动画流即ControlRig中,输入和解算理想的结果,ControlRig会模仿模型层级。


绑定的红色部分表示输入或理想目标,而绿色部分表示实际或当前的结果。



DeformRig变形绑定

第二个是DeformRig变形绑定,它会取得ControlRig的最终结果,给它应用模型层级和活塞二阶运动。绑定的最终结果会应用到场景的模型或关节。



绑定结构

通过使用简单的脚本和Rig Transform组件,起重机的输入会驱使绑定效应器,使它得到合适的场景或输入评估,然后这些输入会衰减到第二个效应器。包括集装箱旋转和夹钳在内的其余效应器是衰减结果的子对象。

 

在起重机示例中,ControlRig使用15个约束:Damp约束用于输入,2BoneIK用于起重臂,多个约束用于夹钳和集装箱的释放。DeformRig使用了简单的约束列表:Multi-Aim和Multi-Position约束用于活塞,Multi-Parent Constraints用于绑定到模型的重新映射过程。

 

起重机示例还可以使用多种绑定方法,实现相同或类似的结果。请记住,绑定层级即场景内的游戏对象顺序,控制着约束作用的顺序。在这类情况中,绑定层级非常重要,特定约束需要以特别顺序发挥作用。


小结

本文为你介绍了Animation Rigging资源包以及使用示例,我们希望可以帮助你理解如何管理输入,Rig Transform和不同类型的绑定及约束。


关于Animation Rigging资源包的反馈,请访问:

https://forum.unity.com/threads/new-animation-rigging-preview-package-available-for-unity-2019-1.661975/


更多Unity新功能介绍,尽Unity Connect平台(Connect.unity.com)。


下载Unity Connect APP,请点击此处。 观看部分Unity官方视频,请关注B站帐户:Unity官方


推荐阅读


官方活动

Unity将举行六一儿童节特别活动-动画工作坊,我们将带领孩子们进入动画制作的世界。欢迎小朋友们报名参加,家长可陪同参与。


活动时间5月25日 10:00-16:00 (星期六)

报名链接

https://connect.unity.com/events/animationworkshop


点击“阅读原文”访问Unity Connect

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存