Unreal里的动画

Unreal里的动画这么理解:

动画资源:AnimSequence, AnimMontage, BlendSpace...  其中,AnimSequence是我们导入的最基础的AnimClip,AnimMontage和BlendSpace都是在Unreal的Personal里用AnimSequence进一步制作的。

动画控制:AnimationBlueprint。 

AnimationBlueprint包含两部分:Anim Graph和Event Graph。  

Anim Graph: 动画状态转换(动画状态机)、动画混合(支持简单混合,目前还没有强大的混合树功能)。

Event Graph:可以自定义一些Event。或者处理某些AnimSequence、AnimMontage里插入的某些Event。

Unreal将角色逻辑和动画逻辑分开来处理,这样子处理有他的道理,只不过用户需要多了解Character和AnimInstance的通信机制。以CharacterBlueprint和AnimationBlueprint为例。

用户输入控制行走:

CharacterBlueprint里接受用户输入,由Character的MovementComponent得到Character的Speed。 而这个Speed是决定AnimationBlueprint里Idle-Walk-Run的参数。AnimationBlueprint如何从CharacterBlueprint获取信息呢?


其实看到了两种模式,(1)Try Get Pawn Owner节点得到当前的Player,由Player可以得到Velocity设置给AnimBP的Speed; 

(2)另一个就是需要做类型转换,将获取的Character转换为我们的MyCharacter,也就是我们已经用到的CharacterBP类型,此时就能获取MyCharacter 这个CharacterBP里的成员,变量、函数、Event,只要有访问权限,都能调用。

另外Try Get Pawn Owner节点可以换为Get Owning Actor节点。Get Owning Actor获取的是使用这个AnimationBlueprint的Actor。在这里这两个节点获取的对象是相同的。


动画状态机里一些动画状态的转换条件由AnimationBlueprint的一些Variable控制。而这些Variable又经常受用户输入影响,也就是这些Variable的值需要从CharacterBlueprint获取。 本质和前文的“用户输入控制行走”无差。


不用状态机转换,用Slot来控制:

需要制作AnimMontage,在AnimGraph里将Slot连接到Final Animation Pose。那么接下来不管是在AnimationBlueprint里的Event Graph里用Montage Play节点调用Montage,还是在CharacterBlueprint里用Play Anim Montage节点调用Montage,都可行!

注意,但在CharacterBlueprint里用PlayAnimMontage节点调用带RootMotion的Montage时,播放时可能会出现角色只出现位移没有播放相应动作的现象。 建议动画的处理还是尽量放在AnimBlueprint里。CharacterBlueprint只是告诉AnimBlueprint播放什么动画就好了。



完全不用AnimationBluerpint,直接在CharacterBlueprint里用Play Animation节点调用最原始的AnimSequence

注意,Play Animation节点是可以在CharacterBlueprint里用的,不过得注意去掉Context Sensitive。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值