UE – 使用TakeRecorder工具录制的Sequence中有关于Take轨道的开发笔记

内容纲要

在开发Sequence编辑器工具的时候,我们可能会遇到需要得到录制时自动创建的Take以用于得到录制时的时间码。

file
(这个是Take Recorder工具自己生成的)

想得到这个时间码的话,需要先对几个类进行区别。
UMovieSceneTakeTrack类是这个Take轨道的类。
UMovieSceneTakeSection类是UMovieSceneTakeTrack的Section。此Section中包含了图中的各类信息。
FMovieSceneIntegerChannel类是每个信息的载体,定义了大量数组用于处理帧之间的内容。
不懂得可以参考这里

//首先,得到MovieScene的所有资源绑定
TArray<FMovieSceneBinding> Bindings = \
    LevelSequenceEditorToolkit->GetSequencer().Get()-> \
    GetRootMovieSceneSequence()->GetMovieScene()->GetBindings();

// 循环Bindings,并在Binding中循环所有Tracks
    for (FMovieSceneBinding Binding : Bindings)
    {
        for(UMovieSceneTrack* MovieSceneTrack : Binding.GetTracks())
        {
            //找到Track的名称是否包含“MovieSceneTakeTrack”。
            //这里也可以用类来判断。
            if (MovieSceneTrack->GetName().Contains(TEXT("MovieSceneTakeTrack")))
            {
                //最后得到这个Track所有的Section,然后将Section转换为MovieSceneTakeSection。
                for (UMovieSceneSection* MovieSceneSection : MovieSceneTrack->GetAllSections())
                {
                    UMovieSceneTakeSection* MovieSceneTakeSection = Cast<UMovieSceneTakeSection>(MovieSceneSection);
                    //到此为止,就可以获得SceneTakeSection中的成员了。
                    //go to 11
                }
            }
        }
    }

Related Posts

发表回复

同步Schの秘密防空洞