Summary
UE 5.8: exporting a Level Sequence to FBX from Python (SequencerTools.export_level_sequence_fbx) writes every spawnable as bare transform or attribute nodes with none of its meshes or data.
A spawnable camera loses its camera attribute, a spawnable static mesh loses its geometry, etc. Maya/other DCCs import them as empty transforms.
Worked in 5.7. Only scripted/headless export is affected; the manual editor “Export…” path and possessables are fine.
What Type of Bug are you experiencing?
Other
Steps to Reproduce
Create a Level Sequence with a spawnable, e.g. a static-mesh sphere, or a CineCameraActor (leave the Spawn track at default: constant “spawned”, no toggling keys).
Run in the Python console:
import os
import unreal
editor_subsys = unreal.get_editor_subsystem(unreal.UnrealEditorSubsystem)
world = editor_subsys.get_editor_world()
output_dir = "C:/tmp"
if not os.path.exists(output_dir):
os.makedirs(output_dir)
seq = unreal.LevelSequenceEditorBlueprintLibrary.get_focused_level_sequence()
params = unreal.SequencerExportFBXParams()
params.sequence = seq
params.root_sequence = seq
params.world = world
params.fbx_file_name = f"{output_dir}/{seq.get_name()}__test_export.fbx"
unreal.SequencerTools.export_level_sequence_fbx(params)
Import the FBX into Maya (or inspect it), the spawnable is an empty transform: no mesh, no camera.
Compare: with the sequence open, RMB the binding → “Export…” → the FBX contains the full object.
Expected Result
Python export includes each spawnable’s mesh/camera/etc., matching 5.7 and the editor’s “Export…” result.
Observed Result
Python export writes spawnables as bare transforms with no component data. Editor export is correct.
Affects Versions
5.8
Platform(s)
Windows
Additional Notes
Regression from 5.7. Not type-specific, affects all spawnables (verified with a static-mesh sphere and a CineCamera).
Root cause: the spawnable is never spawned in the player Python creates, so there’s no live actor to export from. In 5.8, FAllSpawnableRestoreState::SaveStateForSpawnable (MovieSceneToolHelpers.cpp, ~line 4682) added a ShouldSectionBeModified() guard that only force-spawns when the Spawn track has toggling keys.
UE 5.7 force-spawned unconditionally. For a constant Spawn track, bWasChanged stays false, so the SetPlaybackPosition(StartTime) spawn eval in SequencerTools.cpp:309 is skipped, and the fresh ULevelSequencePlayer from CreateLevelSequencePlayer (SequencerTools.cpp:347) is never evaluated.
ExportLevelSequence/ExportLevelMesh then find no live component and write a bare transform. The editor path works only because it reuses the already-open Sequencer, whose spawnable is already live (LevelSequenceFBXInterop.cpp:255).
Workaround: temporarily add two differing keys to each spawnable’s Spawn track before export.