Blend Profiles

How to create and use GS_PhantomCamBlendProfile assets to control transition timing, easing, and interpolation between Phantom Cameras.

Blend Profiles are data assets that define how the camera transitions when control shifts from one Phantom Camera to another. Without a Blend Profile, transitions are instantaneous. A well-authored Blend Profile is often the single largest contributor to a camera system feeling polished rather than mechanical.

For architecture details, asset structure, and extending the system in C++, see the Framework API reference.

Cam Blend Profile asset in the O3DE Asset Editor

 

Contents


What a Blend Profile Contains

Each GS_PhantomCamBlendProfile asset defines the shape of a single camera transition:

FieldPurpose
DurationHow long the blend takes, in seconds.
Position EasingThe easing curve applied to position interpolation. Controls how the camera accelerates and decelerates as it moves toward the new position.
Rotation EasingThe easing curve applied to rotation interpolation. Can be set independently from position easing.
FOV EasingThe easing curve applied to field-of-view interpolation.

Position, rotation, and FOV each have independent easing settings. This makes it straightforward to compose transitions that feel distinct in each axis — for example, position eases out slowly while rotation snaps quickly, or FOV leads the transition while position lags.


How Blend Profiles Are Referenced


Creating a Blend Profile Asset

Blend Profile assets are created from the Asset Browser in the O3DE Editor:

  1. Right-click in the Asset Browser where you want to store the profile.
  2. Select Create Asset → GS_PhantomCamBlendProfile.
  3. Name the asset descriptively — for example, CombatCameraBlend or CinematicSoftBlend.
  4. Open the asset to edit duration and easing curves.
  5. Assign the asset to one or more Phantom Camera components in the level.

Easing Curve Reference

Easing curves control the acceleration profile of an interpolation. Common choices and their camera feel:

CurveFeel
LinearMechanical, even movement. Rarely used for cameras.
EaseInStarts slow, accelerates. Camera hesitates before committing.
EaseOutStarts fast, decelerates. Camera arrives gently.
EaseInOutSlow start and end, fast through the middle. Most natural for most transitions.
EaseOutBackSlight overshoot before settling. Adds energy to arriving at a new view.

ScriptCanvas — Triggering a Blend

Blends trigger automatically when the dominant Phantom Camera changes. To trigger a blend from script, simply change which camera is active or dominant:

[Custom Event → EnterCombat]
    └─► [EntityId → Set Active (combat camera entity)]
            └─► Cam Manager detects priority change
            └─► Blend Profile on combat camera governs the transition
            └─► Cam Core interpolates position, rotation, FOV over blend duration

There is no separate “start blend” call. The blend begins the moment the Cam Manager determines a new dominant camera and ends when Cam Core finishes interpolating.


Quick Reference

NeedHow
Create a blend profileAsset Browser → Create Asset → GS_PhantomCamBlendProfile
Assign a profile to a cameraSet the Blend Profile reference in the Phantom Camera component properties
Make a transition instantLeave the Blend Profile reference empty on the Phantom Camera
Share one profile across many camerasAssign the same asset reference to multiple Phantom Camera components
Change blend timing without changing camerasEdit the Blend Profile asset — all cameras referencing it update automatically

Glossary

TermMeaning
Blend ProfileA data asset defining duration and per-axis easing curves for camera transitions
Position EasingThe easing curve controlling how the camera accelerates/decelerates in position
Rotation EasingThe easing curve controlling rotation interpolation independently from position

For full definitions, see the Glossary.


See Also

For the full API, component properties, and C++ extension guide:

For related systems:


Get GS_PhantomCam

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