BlueRoseNote/03-UnrealEngine/Animation/实时重定向与骨骼动画共用相关.md

79 lines
5.5 KiB
Markdown
Raw Normal View History

2023-06-29 11:55:02 +08:00
---
title: 实时重定向与骨骼动画共用相关
date: 2022-09-25 21:20:07
excerpt:
tags:
rating: ⭐
---
## IK Rig
本质上是分离了以前版本动画蓝图中的IK解算逻辑。
大致步骤为:
1. 创建IK Goal与Solver。
2. 选中IK Goal并在想要的解算器上右键Connect Goal To Selected Solver来指定Solver的目标。
3. 选中Solver并且在想要的骨骼上右键Set Root Bone On Select ed Solver来指定Solver的根骨骼目标。
### IK Goal
意为IK目标。
### Solver
解算器类型主要为:
- Body Mover**躯体运动解算器**。需要一个根骨骼和至少两个IK目标相连。主要用于地面对齐应作为第一个解算器与其他解算器配对使用Limb IK或者Full Body IK。
- ![BodyMover4.gif](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/BodyMover4.gif)
- Limb IK**手足/肢体 IK**。需要一个根骨骼和一个IK目标才能起作用。该解算器要求链中有**至少三根骨骼**才能正确工作。
- ![image.png](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/20230118103643.png)
- Full Body IK**全身IK**是个功能齐全的多IK Goal解算器。必须连接一个根骨骼和至少一个IK目标。
- ![FBIK1.gif](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/FBIK1.gif)
- 可以对指定的骨骼设置FullBody设置来限制一些骨骼的旋转/位移。
- ![image.png](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/20230121162327.png)
- Pole Solver**极解算器**,为单个骨骼链提供 **极向量Pole Vector** 控制。必须同时指定根骨骼和末端骨骼,右键点击根骨骼和末端骨骼并选择 **在选定解算器上设置根/末端骨骼Set Root / End Bone on Selected Solver**。在大多数情况中,应将"极解算器Pole Solver"与另一个解算器配对,并将"极解算器Pole Solver"设置为最后执行。
- ![Pole5.gif](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/Pole5.gif)
- Set Transform通常情况下最好将该解算器与其他解算器配对并设置为先执行"设置变换Set Transform"。在这个示例中,臀部的 **设置变换Set Transform** 与腿上的 **手足IKLimb IK** 进行了配对。
- ![](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/Transform2.gif)
解算器的添加顺序很重要因为解算器将根据名称旁边显示的数字按顺序执行。对于此IK系统肢体IK应该最后求值。
![Tut2.gif](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/Tut2.gif)
### IK Rig In Animation Blueprint
在为一个SkeletalMesh创建IK Rig之后还可以动画蓝图中进行控制。只需要使用IK Rig动画蓝图节点并且指定**Rig Definition Asset**。并在**IK Rig Editor**中将对应的**IK Goal**设置**Exposure Position/Rotation**。
![image.png](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/20230119102819.png)
## IK Rig Retarget
IK Rig的另一个作用就是IK Rig Retarget可以使用IK算法把部分从定性有问题的骨骼动画修正。比如穿高跟鞋=>不穿高跟鞋。大致步骤如下:
1. 为**Source/Target SkeletalMesh**分别设置**IK Rig**资产。
2. 在2个IK Rig资产设置用于重定向的**根骨骼**,一般是骨盆或者臀部骨骼。在对应骨骼上右键选择**Set Retarget Root**。
3. 为肢体部分分别创建骨骼链。
1. ![800](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/20230119105835.png)
4. 创建**IK Retargeter**资产。 需要设置**Source IKRig Asset**与**Target IKRig Asset**。
6. 在编辑器中的**Current Retarget Pose**设置重定向Pose如果为APose需要设置成TPose
7. 对于脚部部的穿帮可以设置**Fullbody IK**也可以是别的IK解算器与**IK Goal**并且在对应骨骼链中设置对应的IK Goal。
![image.png](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/20230121171015.png)
最后导出想要重定向的动画。
![image.png](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/20230121171445.png)
PS.
1. 在**IK Retargeter Editor**的details面部中可以通过**Retarget IK**来预览IK Targeting的效果。
2. ThirdPerson模板采用FullBody IK进行IK Retarget。
### UE5实时重定向
在执行以上步骤之后在新SkeletalMesh的动画蓝图中使用**Retarget Pose From Mesh**节点。再设置**IK Retarget**资产即可。
需要注意角色类需要2个模型一起挂载其中一个模型隐藏并且将**Visibility Based Anim Tick Option** 选项设置成**Alway Tick Pose And Refresh Bone**
### Skeleton Compatibility
官方翻译为**可兼容的骨架**,不同骨骼之间共享动画的功能。
https://docs.unrealengine.com/5.0/en-US/skeletons-in-unreal-engine/#compatibleskeletons
![image.png](https://cdn.jsdelivr.net/gh/blueroseslol/ImageBag@latest/ImageBag/Images/20230121214547.png)
这个功能可以用来共享动画,并且不需要重定向。
## 其他
UE5的新功能实时重定向
https://www.bilibili.com/video/BV1HZ4y117Yk/?spm_id_from=333.999.0.0&vd_source=d47c0bb42f9c72fd7d74562185cee290
可以用来制作一些角色特有的动画。也可以用于共享动画。
- https://docs.unrealengine.com/5.0/zh-CN/facial-animation-sharing-in-unreal-engine/
- https://docs.unrealengine.com/5.0/zh-CN/using-sub-anim-instances-in-unreal-engine/