State Inheritance

One-checkbox author surface for cam-to-cam pose handoff during blends. When to enable it, what each body type does with it, and the common authoring gotcha.

State inheritance is an opt-in checkbox on each entry in a Blend Profile asset. When the box is ticked, the outgoing camera publishes a snapshot of its pose at the moment of transition, and the incoming camera’s Body stage adopts the snapshot through its own kinematic model. The blend then reads as a smooth drift instead of a swing.

When the box is unticked (the default), the incoming camera starts from its authored ideal — useful for cinematic shots where you want the camera to land at a specific framing regardless of where the outgoing camera was.

For the protocol mechanics, per-stage Get / Adopt implementations, and the matching m_inheritState field, see the Framework API reference.

 

Contents


When to Tick the Box

Tick it when…Don’t tick it when…
The two cams have similar framing intent (both follow the same target) and you want a seamless continuation.The destination cam is a cinematic shot authored at a specific pose.
The destination cam would otherwise “snap to its starting yaw / pitch” in a jarring way.The two cams have unrelated targets and the snap is the desired beat.
You’re blending between two orbital cams and want angular continuity.The destination cam is the first cam in a stage and there’s no source to inherit from.

The default is off so cinematic shots land at their authored poses unless you opt in.


What Each Body Does With It

Inheritance is body-only. The destination’s Aim stage runs fresh on the inherited body pose.

Destination BodyBehavior with InheritState = true
DefaultFollowBodyNo special handling — falls through to the standard visual blend.
OrbitBody (static orbit)Does not adopt — the authored yaw / pitch define the static shot’s identity. (It can be the source for inheritance into another orbit cam, providing clean angular state.)
DynamicOrbitBodyAdopts the source’s yaw / pitch directly when the source publishes angular state (e.g. another orbit body). Falls back to back-deriving yaw / pitch from world position when the source doesn’t. Preserves angular continuity across different orbit shape assets.
LeadingFollowBodyInherits the source’s facing at the body’s preferred standoff distance. The destination cam doesn’t lock to the source’s literal position (which could land off-band); instead it stands at band-natural distance in the direction the source was facing.
TrackBodyProjects the source’s position onto the dolly spline. If the source sits farther than the body’s threshold (default 5 m) from the spline, the adoption is rejected and the cam falls back to a standard blend (no teleport-snap).

The Common Gotcha

If the destination cam looks like it’s snapping to its initial-yaw seed instead of inheriting from the source, check the inherit flag on the matched blend entry. The symptom varies by body type:

BodySymptom of inherit-off
LeadingFollowBody“Cam orients behind player’s travel direction regardless of source facing.”
DynamicOrbitBody / OrbitBodyCam swings to authored yaw / pitch then blends from there.
TrackBodyDolly starts at its untouched starting spline parameter.

All three indicate the same root cause: the blend entry exists in the asset, but InheritState is unticked on it. Fix it in the asset.


Author Steps

  1. Open the relevant .camblendprofile asset in the Asset Editor.
  2. Find or add the blend entry for the From / To pair.
  3. Tick the Inherit State checkbox on that entry.
  4. Save the asset.

That’s the entire author surface. Everything else — pose snapshotting, body-stage Get / Adopt selection, ANGULAR vs POSITION derivation, the path-rejection threshold — happens automatically per body type.

For per-pair authoring at scale, share one blend profile across cams that should behave the same way, and use multiple profiles for cams that need different inheritance defaults.


See Also

Framework API:

Related basics pages:


Get GS_PhantomCam

GS_PhantomCam — Explore this gem on the product page and add it to your project.