This document records the TODOS.phase-72.72.15.1.10 cinematic sequencer
sub-sequence composition contract. Parent sequences can nest reusable child
sequences, retime them on the parent timeline, inherit or override actor
bindings, and pass parameterized sub-sequences into child tracks or bindings.
Runtime Ownership#
- Runtime module:
V2Cinematics - Parameter spec:
FV2SequencerSubSequenceParameterSpec - Sub-sequence spec:
FV2SequencerSubSequenceSpec - Resolved instance spec:
FV2SequencerResolvedSubSequence - Composition evaluation:
FV2SequencerSubSequenceEvaluation - Issue enum:
EV2SequencerSubSequenceIssueType - Issue struct:
FV2SequencerSubSequenceIssue - Automation:
V2.Cinematics.Sequencer.SubSequenceComposition - CI checker:
V2/ue/Tools/check-v2-sequencer-sub-sequence-composition.py
Composition Model#
FV2SequencerSequenceSpec now owns a SubSequences array. Each
FV2SequencerSubSequenceSpec stores an instance id, referenced child sequence
id, parent start frame, parent duration, source start frame, playback rate,
looping flag, binding-inheritance flag, binding overrides, and parameter
overrides.
FV2SequencerSubSequenceParameterSpec carries typed parameter values and
targets them at a binding id, track id, or both. This lets a reusable child
sequence keep stable authoring data while the parent composition passes values
such as Param.Cassia.Intensity or Param.Camera.Mode.
Default Fixture#
BuildDefaultSequencerSubSequenceComposition creates
Seq.Composition.CouncilTrial with two child instances of
Seq.DataModel.CouncilIntro:
SubSeq.CouncilIntro.OpeningBeatruns from parent frame0through120at normal speed and passesParam.Cassia.Intensity.SubSeq.CouncilIntro.ReplayInsertruns from parent frame120through210from child source frame30at half-rate playback and passesParam.Camera.ModeasCameraMode.ReplayCloseup.
At parent frame 30, the opening beat maps to child frame 30. At parent frame
150, the replay insert maps to child frame 45.
Validation#
EvaluateSequencerSubSequenceComposition validates missing or duplicate
instance ids, missing child sequence ids, unavailable child sequence references,
invalid frame ranges, invalid playback rates, missing or duplicate parameter
names, missing parameter targets, invalid parameter value types, and recursive
composition cycles. The result lists every resolved child instance and the
active instance ids for the evaluated parent frame.
Verification#
Run:
python3 V2/ue/Tools/check-v2-sequencer-sub-sequence-composition.py
Adjacent verification should include
python3 V2/ue/Tools/check-v2-sequencer-actor-bindings.py,
python3 V2/ue/Tools/check-v2-sequencer-camera-tracks.py,
python3 V2/ue/Tools/check-v2-sequencer-event-tracks.py,
python3 V2/ue/Tools/check-v2-sequencer-audio-tracks.py,
python3 V2/ue/Tools/check-v2-sequencer-animation-clip-tracks.py,
python3 V2/ue/Tools/check-v2-sequencer-property-tracks.py,
python3 V2/ue/Tools/check-v2-sequencer-keyframe-interpolation.py,
python3 V2/ue/Tools/check-v2-sequencer-timeline-playback.py,
python3 V2/ue/Tools/check-v2-sequencer-data-model.py, and
python3 V2/ue/Tools/check-v2-cinematics-module.py.