Skip to content

UE5.3 Build Sequencer batching

You need to import your animation matching your Rig

TODO

Then you need to construct the 'set' of each shot

py
import unreal
UE_ASSET_SUBSYSTEM = unreal.get_editor_subsystem(unreal.AssetEditorSubsystem)
UE_EDITOR_SUBSYSTEM = unreal.get_editor_subsystem(unreal.UnrealEditorSubsystem)
UE_ASSET_TOOLS_HELPER = unreal.AssetToolsHelpers.get_asset_tools()
UE_EDITOR_ASSET_LIBRARY = unreal.EditorAssetLibrary()
# create level sequence
ue_asset_path = "/Game/Shots/yourShot/Set/SQ_SET"
ue_asset_class = unreal.LevelSequence
ue_asset_factory = unreal.LevelSequenceFactoryNew()
split_path = unreal.Paths.split(ue_asset)
dir = split_path[0]
name = split_path[1]

ue_asset = UE_ASSET_TOOLS_HELPER.create_asset(
    asset_name=name,
    package_path=dir,
    asset_class=ue_asset_class,
    factory=ue_asset_factory,
)


## Build Sequence Set
subsequence_track = None
UE_ASSET_SUBSYSTEM.close_all_editors_for_asset(ue_asset)
for track in ue_asset.get_master_tracks():
    if track.get_class().get_name() == "MovieSceneSubTrack":
        subsequence_track = track
    if not subsequence_track:
        subsequence_track = ue_asset.add_master_track(
            unreal.MovieSceneSubTrack
        )

if UE_EDITOR_ASSET_LIBRARY.does_asset_exist(asset_path=ue_asset_path):
    UE_EDITOR_ASSET_LIBRARY.delete_asset(ue_asset_path)

# TODO

rate = unreal.FrameRate()
rate.denominator = 1
rate.numerator=24 # FPS here

start_frame=
end_frame=
start_time=start_frame * rate.denominator / rate.numerator
endTime = end_frame * rate.denominator / rate.numerator

ue_asset.set_playback_end(end_frame)
ue_asset.set_playback_start(start_frame)
# set the end range before start because the sequencer clamp max value
# of start with the value of end.
ue_asset.set_view_range_end(endTime)
ue_asset.set_view_range_start(startTime)
ue_asset.set_work_range_end(endTime)
ue_asset.set_work_range_start(startTime)