【UE官方培训】Sequence相关

本文最后更新于:2025年1月14日 晚上

动画

MAYA导出FBX有许多需要注意的地方

模型的旋转,采样率

MAYA中起始帧需要是0

UE动画曲线默认是线性,MAYA是曲线,这个得改,不然时间数值对不上

如果不想改MAYA的这个曲线,就得增加UE的采样率(缺点是会增加内存)

UE动画数学是单精度浮点数,但是MAYA是双精度浮点数..

UE会自动压缩,可以关闭或者采用压缩破坏最小的选项

最佳实践总结如下

具体分类

Live Link插件

可以实时更新动画数据,达到所见即所得的工作体验。

Sequence其实就是时间和变量的对应,组织方式如下

用场(levelSequence)、次(take)来管理不同的Sequence

  • 长期存在的,总是会被镜头拍到的,比如建筑、地形(可理解为静态模型),这种最好是可控制对象绑定在Sequence里面,如果是一些特定时间在存在的,可以直接变成可生成对象。
  • 毛发可以先预先浏览,再导入精确的
  • 如何管理可见性:1.关卡可见性轨道 2.蓝图里面有函数和事件可以卸载和加载关卡,缺点是不够直观 3.世界分区,将整个关卡放在一个大的关卡,可以自动加载和卸载
  • 白模和资产制作可以并行制作,因为资源都是引用,后期再替换就可以了

如何用c++ Add Track?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// 添加一个新的 Track
FMovieSceneTrack* AddNewTrack(ULevelSequence* Sequence, UClass* TrackClass, FName TrackName)
{
// 获取 MovieScene
UMovieScene* MovieScene = Sequence->GetMovieScene();

// 创建新的 Track
FMovieSceneTrackMetaData MetaData;
MetaData.DisplayName = FText::FromName(TrackName);

FMovieSceneTrack* NewTrack = MovieScene->AddTrack(TrackClass, MetaData);

return NewTrack;
}

// 使用示例 - 添加一个 Transform Track
void AddTransformTrack(ULevelSequence* Sequence, AActor* TargetActor)
{
// 确保序列和Actor都有效
if (!Sequence || !TargetActor)
{
return;
}

// 添加 Transform Track
FMovieSceneTrack* TransformTrack = AddNewTrack(
Sequence,
UMovieScene3DTransformTrack::StaticClass(),
FName(*FString::Printf(TEXT("%s Transform"), *TargetActor->GetName()))
);

// 绑定 Actor
FGuid ObjectBinding = Sequence->GetMovieScene()->AddPossessable(
TargetActor->GetActorLabel(),
TargetActor->GetClass()
);

// 将 Track 添加到绑定对象
Sequence->GetMovieScene()->AddTrack(UMovieScene3DTransformTrack::StaticClass(), ObjectBinding);
}

常见的 Track 类型包括:

UMovieScene3DTransformTrack - 变换轨道

UMovieSceneFloatTrack - 浮点值轨道

UMovieSceneEventTrack - 事件轨道

UMovieSceneAudioTrack - 音频轨道

UMovieSceneCameraAnimTrack - 相机动画轨道

1
2
3
4
5
6
7
8
9
// 添加关键帧示例
void AddTransformKeyframe(UMovieScene3DTransformTrack* TransformTrack, FFrameNumber TimeFrame, FTransform Transform)
{
if (UMovieScene3DTransformSection* Section = Cast<UMovieScene3DTransformSection>(TransformTrack->CreateNewSection()))
{
TransformTrack->AddSection(*Section);
Section->AddKey(TimeFrame, Transform);
}
}

【UE官方培训】Sequence相关
https://rorschachandbat.github.io/游戏杂货铺/【UE官方培训】Sequence相关/
作者
R
发布于
2025年1月7日
许可协议