delta layers
Delta clips are authored relative to ‘CFrame.identity’. Identity means no effect, translation and rotation are an offset applied to the current local transform.
local delta_state = { binding = animation.bind_animation(recoil_asset, rig.desc), time_position = 0, weight = 1,}
local prepared_deltas = solver.prepare_delta_tracks({ { asset = recoil_asset, state = delta_state, mode = "additive", },})The frame order is always:
solver.solve_prepared(rig, native_prepared)solver.apply_delta_prepared(rig, prepared_deltas)Modes and order
Section titled “Modes and order”For each bound target, Reel first applies the delta weight from identity. It then chooses the operation:
additive: base * weightedDeltasubtractive: base * inverse(weightedDelta)Delta preparation preserves the array order you supply. It does not sort by priority. Rotation composition is not commutative, so layer order is observable:
base * aim * inverse(correction) * recoilAn immediately adjacent additive and subtractive use of the same weighted delta cancels exactly.
Authoring notes
Section titled “Authoring notes”- Author a neutral channel as
CFrame.identity - Add an identity key at time zero when the layer should begin neutral
- Missing channels leave that rig target unchanged, allowing partial-body overlays
- Keep the binding paired with the same asset that created it
The animation loader duplicates a channel’s first key at time zero when that key starts later. For delta clips, an omitted identity key can therefore make a non-identity offset active immediately.
Delta tracks do not use native blend scratch. Their cost is proportional to their bound channels.