在Sequence(定序器)中将两个动画合并为一个动画,并且两个动画的位置要衔接上,要求用C++的形式,写成插件,这样可以合并任意的两个两个动画。不采用UE4自带的编辑器动画混合,虽然网上有很多动画混合的案例。
通过查找UE4源代码,下面这些类需要我去理解
1.常用的类 一个actor的类和一个实际控制播放的类.我们在代码中这么控制获取他们.
常用的类 一个actor的类和一个实际控制播放的类.我们在代码中这么控制获取他们.
ULevelSequencePlayer* SequencePlayer //实际控制播放的类
ALevelSequenceActor* currentLevelSequenceActor //actor的类
2.
查看定序器的源代码
//一个UMovieScene是由若干个Track(UMovieSceneTrack)组成
//Track由UMovieSceneSection组成
//UMovieSceneSection就是一个Track中间的某一段,它保存了一个Section的开始FrameNumber和结束FrameNumber,
3.
CreateLevelSequencePlayer创建一个新的关卡序列播放器
Initialize the player.初始化播放器
UMovieSceneTrack UMovieSceneSection
AnimSequcenceInstances动画实例
UMovieSceneSequence电影场景动画基类,定义一些绑定、解绑对象的虚函数
4.
LevelSequenceBindingReference::Resolve()通过上下文获取该数据绑定的对象,此外FLevelSequenceBindingReferences数据结构体
FGuid 要抑制的签名
5.现在已经初步了解到要做需求的功能,可能会用到的类,接下来需要整理思路和逻辑。目前形成了两个思路
1.animation composite 动画合成资源
2.选择这个动画合成的骨骼
3.编辑第二个动画,复制出来与第一个动画合成
4.原始的动画序列一个个拖拽到合成区(
5.选择任意一个子序列
1.生成(获取)定序器
2.把两个动画添加到定序器中
3.取得第一个动画的骨骼根节点的XYZ
4.把第一个动画骨骼的根节点给第二个动画骨骼的根节点
5.混合两个动画