找回密码
 立即注册
查看: 270|回复: 6

虚幻5控制绑定(ControlRig)【基础篇:简述】

[复制链接]
发表于 2023-3-10 13:07 | 显示全部楼层 |阅读模式
前言

由于项目原因,浅显的去了解和研究了一下虚幻5的动画解决方案,这里只是记录了我所了解的,根据视频和文章进行了浅显、简略的概述了一下ControlRig和IK Rig与IK Retargeter。如有不对,还望大家指正。后续会继续完善文章,进行深入一点的解析。
当然,有机会研究一下源码肯定是极好的,但是,我菜啊,看不懂源码,当然这也不适合大部分应用层面的新人朋友。再者,我懒啊。我还要去打游戏!
一、Control Rig是什么

在虚幻引擎5中,直接为角色添加动画,创建自定义控制点,通道,以及角色的其它操作器。概念简单明了,当然是一看就会,有手就行~!


但是在工作流程和设计制作的过程中就没那么简单了。在美术流程中,需要动画绑定师在DCC中手动去绑定,繁琐且复杂。


1.1Control Rig概述

Control Rig首次亮相于GDC2019,在UE5之后,变得更加完善和强劲。
官方定义: 虚幻引擎提供了一套动画工具,供你直接在引擎中操纵和动画化角色,称为控制绑定(Control Rig)。
首先我们要了解,常规导入到游戏引擎的只有被烘焙的动画数据和失去约束效果的骨架,都是静态数据。而引入引擎内Rig资产的概念,就可以解决这个问题,约束功能从DCC内的辅助工具,变为可以提供引擎使用的数字资产。当我们使用ControlRig方案创建全身控制点后,可以为动画重定向提供中转骨架,这其中就包含了动态重定向和静态重定向两个部分,这时在ControlRig的工作流中,加入了反向计算,便可以让美术在引擎内进行动画调整。


1.2Unreal 的Control Rig方案




截自官方文档


  • 工具栏(Toolbar)
  • 视口(Viewport)
  • Rig层级(Rig Hierarchy)
  • Rig图表(Rig Graph)
  • 细节面板(Details)
上图是Control Rig的编辑器,在虚幻引擎5中,新增概念Rig Hierarchy,包含RigElement,子类有FRigBone,FRigControl等。新增概念Control Type,辅助分类配置控制器节点。

  • Rig Graph:
Setup:初始化
Forward Solve:正向计算,ctrl->bone
前向解算(Forwards Solve)是用于通过控制点、变量和其他绑定元素驱动骨架的解算方向。
Backward Solve:反向计算,bone->ctrl
后向解算(Backwards Solve)是用于从骨架驱动控制点的解算方向。它是前向解算(Forwards Solve)的反向操作,用于将动画序列中的动画烘焙到Sequencer中的Control Rig上。
重要节点:

  • ProjectTransformToNewParent:转换坐标空间输出Transform的节点
  • Get&SetTranform:读写节点Transform
  • Inital&Offset&Current Transform:节点内置概念,合理使用可以减少计算量
  • IKSolver:常用的BaseIK(TwoBone),FabrIK计算节点
  • GetControl:根据控制器类型获得返回值
  • SetToCurve:Facial Rig的写操作
二、IK Rig与IK Retargeter

2.1IK Rig概述

官方概述:IK Rig 系统提供了交互式创建 解算器 的方法,用于为你的骨骼网格体执行姿势编辑。然后,生成的IK Rig资产可以嵌入到任何动画系统中,例如动画蓝图,以便动态修改基于姿势的解算器参数。
此外,IK重定向 系统可以用于在不同比例的角色之间传输动画,无论是运行时还是离线创建新动画序列。
从定义上可以看出不同于ControlRig可以行为逻辑,IK Rig是通过解算器(Solvers)。同时IK Rig支持多种IK解算器,可以作用于各个骨骼层级。
而基于IK Rig的重定向系统,为我们在多个不同骨架之间共享动画数据,并且无需在虚幻引擎之外创建和管理新动画提供解决方案,通过结合解算器来进行IK重定向比仅仅只基于FK的重定向会达到更好的效果。
2.2IK Rig核心功能概述

基于UE 5.0版本介绍


  • IK目标
IK目标(IK Goal)是IK链的操控点和执行器点,在IK Rig编辑器中创建。IK目标与解算器一起使用,以修改传入姿势来到达目标位置。
本质上是控制器,与解算器一起使用,修改传入姿势来到达目标位置。同时我也可以选择将IKGoal和特定的解算器链接或者断开。



截自官方文档


  • 解算器(Solvers)
作用于各种骨骼层级。它们用于创建逆向运动学解决方案,从而在链中旋转和定位骨骼。可同时使用多个解算器进一步个性化IK效果。
我们经常会看到的是FullBodyIK,简称FBIK。是个功能齐全的多目标IK解算器,支持骨骼限制、刚度和首选角度的调整。如果你想为多个目标创建大规模IK系统,那么这个解算器就很有用。



截自官方文档


  • 极解算器(Pole Solver)
为单个骨骼链提供极向量(Pole Vector)控制,用于将中间关节设置为朝向IK目标,比如肘部或膝盖。
与其他解算器不同,"极解算器(Pole Solver)"必须同时指定根骨骼和末端骨骼。
举例来说,在一个简单的三骨骼链中,IK目标必须创建在根的第一个子骨骼上。这样它将置于中间的关节。



截自官方文档

在更长的链中,首个子项将不在中间关节上,这使得IK目标的位置更靠近根。



截自官方文档

在大多数情况中,应将"极解算器(Pole Solver)"与另一个解算器配对,并将"极解算器(Pole Solver)"设置为最后执行。在这个示例中,它与一个"IK手足解算器(IK Limb Solver)"配对。

源自官方文档
https://www.zhihu.com/video/1611348307732774912

  • 躯体运动解算器(Body Mover Solver)
躯体运动解算器(Body Mover Solver)可根据其他已连接的IK目标的位置(通常是脚)来平移和旋转根骨骼。"躯体运动解算器(Body Mover Solver)"让IK Rig能够生成大规模的整体身体运动,使得最终姿势更加自然。在四足或多足角色上,
躯体运动解算器(Body Mover Solver)"主要用于地面对齐,应作为第一个解算器与其他解算器配对使用,比如手足IK或全身IK。选择位于分配给躯体运动解算器的目标下方的目标设置(Goal Setting)影响乘数(Influence Multiplier) 用于增加或减少此目标对躯体运动解算器施加的影响程度,很适合用于将一个目标设置为相较于其他目标具有更大的影响力。而这在四足或多足角色上,效果将会更自然。

源自官方文档
https://www.zhihu.com/video/1611371270704230400

  • 手足IK(Limb IK)
"手足IK(Limb IK)"提供了一个性能较低的单链IK解算器。通常情况下,它适用于单个的四肢,如手臂和腿。
手足IK(Limb IK)需要一个根骨骼和一个IK目标才能起作用。它遵循典型的IK规则,需要指定起始骨骼(根)和结束骨骼(目标)。该解算器要求链中有至少三根骨骼才能正确工作。
在大多数情况下,需要指定 肩膀手臂 作为根, 作为目标。对腿部来说,需要指定 腿上部大腿 作为根, 作为目标。

  • 全身IK(Full Body IK)
"全身IK(Full Body IK)",简称FBIK,是个功能齐全的多目标IK解算器,支持骨骼限制、刚度和首选角度的调整。如果你想为多个目标创建大规模IK系统,每个目标都对全身施加自然影响,那么这个解算器就很有用。
全身IK(Full Body IK)必须连接一个根骨骼和至少一个IK目标,可添加多个目标,以允许骨架同时伸向多个位置。

  • 设置变换(Set Transform)
"设置变换(Set Transform)"将平移和旋转骨骼,使其匹配目标。该解算器不涉及IK系统,因为它只会平移并旋转单个骨骼及其子项。在大多数情况中,该解算器应与其他解算器配对使用,以实现更复杂的IK效果。
通常情况下,最好将该解算器与其他解算器配对,并设置为先执行"设置变换(Set Transform)"。在这个示例中,臀部的设置变换(Set Transform)与腿上的手足IK(Limb IK)进行了配对。
2.3IK 重定向

我们知道UE4的IK重定向繁琐复杂,而且时常会因为骨骼的适配度不高而出现一些奇奇怪怪的bug,然后看着被扭曲成奇形怪状的模型抓耳挠腮。而重点在于IK重定向的重要资产 IK Retargeter以及其于IK Rig资产。
IK Rig资产不在过多赘述。

  • IK重定向器(IK Retargeter)
IK重定向器(IK Retargeter)是一种资产和编辑器,它引用源和目标绑定,提供自定义重定向结果的功能。
当我们创建IK Retarget资产需要指定两个IK Rig资产,其中一个为重定向的源一个为重定向的目标。所以在IK Retarget中源IKRig资产与目标IKRig资产中是数据是绑定和对应关系。(PS:在我们制作IK Rig资产时,必须创建主要的肢体链,手指等次要肢体是可选的。如下图所示)



截自官方文档

这时,我们就可以将动画导出到兼容的动画序列,以用于该角色的骨骼。同时,在我们对目标角色的重定向结果不满意的时候,我们可以通过目标IK Rig的IK目标和解算器来对目标进行调整。
2.4跨骨骼运行时(动态)重定向

通过定义IKRig和IK Retargeter实现静态重定向的方法相信大家都已经掌握了,而动态重定向方法也是在定义IKRig和IK Retargeter的基础之上的,只不过我们不需要对动画资源再一一操作。
依赖于动画蓝图中新增的两个节点:RetargetPoseFromMesh(从网格体重定向姿势), CopyPoseFromMesh(从网格体复制姿势)



截自官方示例

注意:角色的参考姿态越相近,重定向的效果越好,如果它们的参考姿势差异很大,可以在Edit Pose模式下手动调整一下,也可以使用Pose资源
2.5 角色动画实时修改

在动画蓝图中添加IKRig结点,就可以对IKGoal和Alpha等属性进行实时设置,来实现比以往功能更为强大,整合度更高的实时IK解算效果。



截自官方文档


同时提供了IKRig组件来实时修改动画蓝图IKRig,可以批量修改。
三、ControlRig与IK Rig

IKRig资产和编辑器是为IK专门设计的简化过的绑定方案,而ControlRig则是可编辑性更强的通用实时绑定方案。
四、后记

此文章作为学习交流,感谢各位前辈提供参考与思路,同时也惊叹与虚幻引擎官方文档的详细和示例案例的详细展示,为新手入门打下坚实基础,也做为自己的学习记录,旨在提醒和督促自己不断学习。
五、参考


                                                                         未完待续.....
<hr/>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-3-10 13:12 | 显示全部楼层
[大笑]  不错不错
发表于 2023-3-10 13:13 | 显示全部楼层
感谢认可,继续努力[害羞]
发表于 2023-3-10 13:20 | 显示全部楼层
而你,我的朋友,你才是真正的你
发表于 2023-3-10 13:22 | 显示全部楼层
[害羞][害羞]
发表于 2023-3-10 13:25 | 显示全部楼层
虽然看不懂,但是作为一个正在学习UE的我来说,先收藏了,万一以后用的着呢
发表于 2023-3-10 13:30 | 显示全部楼层
感谢收藏[爱]
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 00:16 , Processed in 0.093484 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表