State Inheritance
Categories:
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 Body | Behavior with InheritState = true |
|---|---|
DefaultFollowBody | No 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.) |
DynamicOrbitBody | Adopts 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. |
LeadingFollowBody | Inherits 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. |
TrackBody | Projects 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:
| Body | Symptom of inherit-off |
|---|---|
LeadingFollowBody | “Cam orients behind player’s travel direction regardless of source facing.” |
DynamicOrbitBody / OrbitBody | Cam swings to authored yaw / pitch then blends from there. |
TrackBody | Dolly 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
- Open the relevant
.camblendprofileasset in the Asset Editor. - Find or add the blend entry for the From / To pair.
- Tick the Inherit State checkbox on that entry.
- 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:
- State Inheritance — Framework API —
CamPoseSnapshottrait, per-body Get / Adopt implementations. - Body Stage Variants — per-variant detail on what each body does on inherit.
- Blend Profiles — Framework API — the field’s home in the asset.
Related basics pages:
- The Basics: Blend Profiles — the asset that hosts the toggle.
- The Basics: Cam Core — the system that runs the handoff.
Get GS_PhantomCam
GS_PhantomCam — Explore this gem on the product page and add it to your project.