127 lines
7.4 KiB
Markdown
127 lines
7.4 KiB
Markdown
|
---
|
|||
|
title: AdvancedLocomotionV4学习笔记(1)——动画节点
|
|||
|
date: 2022-08-24 09:39:43
|
|||
|
excerpt: 摘要
|
|||
|
tags:
|
|||
|
rating: ⭐
|
|||
|
---
|
|||
|
# 前言
|
|||
|
本人最近在学习AdvancedLocomotionV4,并尝试将其中可用部分移植到自己的项目上。在此分享一些自己的心得。
|
|||
|
|
|||
|
## 学习建议
|
|||
|
首先应该从动画蓝图ALS_AnimBP看起,Editor为后处理动画蓝图可以跳过。个人建议从AnimatoinGraph开始看,你可以学习到状态机的层次逻辑、合理的动画图表折叠模式、IK的实现、动画融合逻辑(之后的文章我会举个例子说明)。
|
|||
|
|
|||
|
其中的相关变量驱动着状态机切换与动画融合,所以下一步你需要看UpdateGraph(AdvancedLocomotionV4将事件与更新逻辑分成了2个Graph),之后是EventGraph。这里是动画蓝图与角色类的数据沟通与变量更新逻辑都在于此。完成以上两个步骤后,你就了解了这个项目的总体脉络了,但还是推荐先把熟悉一下Ue4相关的动画要点。
|
|||
|
|
|||
|
## Anim Modifiers
|
|||
|
一种用于修改 Animation Sequence 或者 Skeleton Asset的蓝图类。
|
|||
|
例如,精确定位左脚或右脚踩到地面时的帧来创建自动脚部同步标记(等诸如此类的各种应用)。通过使用该信息,可以将 动画同步标记 添加到脚部骨骼处于最低点(或接触地面)时的帧。
|
|||
|
|
|||
|
在AdvancedLocomotionV4中有大量的同步组、AnimNotify、以及曲线,纯靠手动指定费事费力。所以本人尝试制作了相应的AnimModifier,将在下一篇文章中分享。相比之下AdvancedLocomotionV4的Anim Modifiers做的就十分的菜了,让人怀疑是不是作者在隐藏些什么。
|
|||
|
|
|||
|
## Virtual Bones
|
|||
|
有了它就无需因为要制作Ik、FK等效果,而将原始美术资源返工重做。不过4.24有个限制就是无法重复添加相同父骨骼与相同目标骨骼的虚拟骨骼。
|
|||
|
|
|||
|
注意:LHS_ik_hand_gun用在后处理类型的动画蓝图Editor。
|
|||
|
|
|||
|
## Anim Curve
|
|||
|
可以在SkeletonAsset编辑器中查看所有的Curve,并且进行添加。
|
|||
|
|
|||
|
之后就可以在AnimationSequence中添加Anim Curve。但有个尴尬的问题就是无法查看哪些AnimationSequence设置了指定Curve。没有很好的引用关系图,这让学习项目的人十分头疼。总不可能为了学习而去写一个编辑器插件吧……
|
|||
|
|
|||
|
## Pose Blend 与 Pose Driver
|
|||
|
这个两个东西和流程相关,如果没有特殊流程,只适合于制作表情系统或是较为简单的动画。(有大佬告诉我还可以做肌肉效果,毕竟表情也是一种肌肉效果……)
|
|||
|
|
|||
|
## 节点
|
|||
|
### FABRIK
|
|||
|
俗话说的正向动力学,关节弯曲效果。
|
|||
|

|
|||
|
|
|||
|

|
|||
|
|
|||
|
### 转换空间节点
|
|||
|
LocalSpace(局部空间):骨骼变换坐标系为其父骨骼所在坐标系。
|
|||
|
ComponentSpace(组件空间):骨骼变换坐标系为SkeletalMeshComponent所在坐标系。
|
|||
|
|
|||
|
使用他们的原因在于,动画蓝图默认处于 局部空间。但特定的混合节点和所有的Skeletal Controls节点都处于组件空间中。所以在使用这些节点时需要进行空间转换。
|
|||
|
|
|||
|
注意:空间转换会带来性能损耗,所以建议把Skeletal Controls节点都放在一起进行计算。
|
|||
|
### Skeletal Controls
|
|||
|
#### AnimDynamics
|
|||
|
这个节点是一个小型动力学解算器。可以给SkeletalMeshComponent提供一些次要的物理效果。可以用来给锁链、头发、披风加上简单物理效果。
|
|||
|
|
|||
|
需要注意:
|
|||
|
- 惯性效果是通过把骨骼转换为Box来计算的
|
|||
|
- 不计算碰撞,但计算在物理资源中设置的约束
|
|||
|
|
|||
|

|
|||
|
#### Apply a Percentage of Rotation
|
|||
|
从指定骨骼获取旋转值,并按照指定比例应用到目标骨骼上。
|
|||
|
|
|||
|
#### Copy Bone
|
|||
|
将指定骨骼数据复制到另一个骨骼上。将上面的模拟效果复制到另一侧的弹药包上。
|
|||
|
|
|||
|
#### Observe Bone
|
|||
|
在界面中显示指定骨骼的Translate信息。
|
|||
|
|
|||
|
#### Spline IK
|
|||
|
样条 Ik解算。用于模拟类似脊椎之类的样条结构骨骼动画效果。
|
|||
|
|
|||
|
#### Spring Controller
|
|||
|
弹簧控制器,用于模拟因为前一个动作所造成的反作用力效果,就好像指定处的骨骼换成了弹簧。
|
|||
|
|
|||
|
#### Trail Controller
|
|||
|
轨迹控制器,可以用于类似贪吃蛇之类动画效果。
|
|||
|
|
|||
|
#### Look At
|
|||
|
让指定骨骼朝向目标骨骼位置。
|
|||
|
|
|||
|
#### Modify Curve
|
|||
|
修改指定名称的曲线值(在Animation Sequence中),曲线值可以在材质、Niagara、蓝图中获得。
|
|||
|
|
|||
|
#### Rigid Body
|
|||
|
使用在物理资源中设置碰撞体数据进行物理效果模拟。
|
|||
|
|
|||
|
在使用此节点之前,先在骨骼大纲视图选中所有需要模拟骨骼,点击右键将其设置为 Simulated 类型。
|
|||
|

|
|||
|
|
|||
|

|
|||
|
|
|||
|
#### Hand IK Retargeting
|
|||
|
对应用了IK效果的骨骼进行重定向。按照给定参数向指定的FK骨骼进行偏移。
|
|||
|
|
|||
|
#### Two Bone IK
|
|||
|
适用于两根骨骼的反向动力学解算节点。
|
|||
|
|
|||
|
#### CCDIK
|
|||
|
4.21加入的节点。轻量级,可用于驱动一段骨骼链。CCDIK提供了定义角约束的功能,需要在解算中限制任意骨骼的旋转时较为实用。
|
|||
|
|
|||
|
#### Bone Driven Controller
|
|||
|
通过其中一个骨骼信息来设置另一个骨骼的信息。
|
|||
|
例如B.Localtion.x=A.Localtion.y;
|
|||
|
|
|||
|
https://docs.unrealengine.com/4.27/en-US/AnimatingObjects/SkeletalMeshAnimation/NodeReference/SkeletalControls/BoneDrivenController/
|
|||
|
|
|||
|
### 视频推荐
|
|||
|
Cesar SC制作了UE4 Skeletal Controls系列视频,里面有简单演示过程,可以帮助你理解以上节点。
|
|||
|
https://youtu.be/FrwB6iVh_DY
|
|||
|
|
|||
|
## PhysicalAsset
|
|||
|
刚体类型:有用于碰撞的、也有用于模拟的(用来做肚子上的肥肉效果)如果模拟中出现乱弹现象可以通过删除部分重叠刚体的碰撞来解决。4.18改善了编辑器,可以更好地观察刚体、约束、骨骼之间的关系。操作也方便了。具体的可以去看官方的视频。
|
|||
|
|
|||
|
## 布料与碰撞
|
|||
|
通过在PhysicalAsset中创建胶囊来实现布料碰撞(布料只支持胶囊体)
|
|||
|
|
|||
|
注意:我在这个过程中遇到了碰撞失效的问题,后面发现是因为根骨骼的scale值不为1造成的,动画外包在导出文件时候,场景单位和导出单位设置有问题造成的。
|
|||
|
### biped骨骼与rootmotion
|
|||
|
Biped骨骼的根骨骼会强制定义为Biped001,且无法修改。所以为了匹配Ue4的RootMotion动画规则。我们需要在在Biped001根节点外面再加一条Root骨骼。
|
|||
|
|
|||
|
经过测试,其他商城中的RootMotion动画也可以正确地重定向Biped骨骼中。
|
|||
|
|
|||
|
### 布料与环境碰撞
|
|||
|
想要与环境碰撞,比就必须要StaticMesh的mobility 设置为Static。
|
|||
|
|
|||
|
在角色的SkeletalMesh中检查cloth-Collide with Environment是否勾选。并且关闭Collide with Attached Children选项。
|
|||
|
|
|||
|
## 其他有用功能
|
|||
|
自动重新导入功能,在编辑器设置-General-Loading & Saving-Auto Reimport。动画师会十分喜欢这个功能,因为在DCC保存动画数据后,Ue4就会自动更新,不用再去点ReImport了。
|