PhantomCam Change Log
GS_PhantomCam version changelog.
Categories:
Logs
PhantomCam 1.0.0
Major refactor. The “pick one of N subclass cams” model is replaced by a single GS_PhantomCameraComponent that hosts a composable Body → Aim → Reposition additives → Noise additives stage pipeline. A new channel system scales projects from single-cam through 4-player split-screen co-op without changing the per-cam authoring surface.
Stage pipeline (replaces subclass cams)
- New
IBodyStage/IAimStage/IAdditiveStageinterfaces — stages are reflected polymorphic types picked from the editor’s type-picker. - Body variants:
DefaultFollowBody,OrbitBody,DynamicOrbitBody,LeadingFollowBody,TrackBody. - Aim variants:
DefaultLookAtAim,ClampedLookAim(plus extensions fromgs_performer). - Additive variants:
CollisionReposition,OcclusionReposition(stub),TugAimListener,TugBodyListener,PerlinNoise,ImpulseNoise. - Three staged pose snapshots —
m_desiredPose(pre-Reposition),m_stablePose(post-Reposition pre-Noise),m_finalPose(committed).
Retired components
ClampedLook_PhantomCamComponent→ replaced byClampedLookAimaim stage variant.StaticOrbit_PhantomCamComponent→ replaced byOrbitBodybody stage variant.Track_PhantomCamComponent→ replaced byTrackBodybody stage variant.- Their legacy doc URLs redirect to the new stage variant pages via Hugo aliases.
AlwaysFaceCameraComponentis unchanged.
Channels and instancing
m_enableInstancedChannelsmaster gate onGS_CamManagerComponent. Three authoring tiers (single cam → single-player rig → multi-channel).- New
CamChannelScopeenum (Local/AllChannels/TrueUnique) authored per phantom cam. ChannelStampComponent— runtime plumbing for stamp-walk channel resolution. Author never sees it.- Per-channel rig spawning, per-channel target binding via
SetChannelTarget(channelId, entity). - Cross-channel cinematic dispatch via
DispatchCamToCamCore/ReleaseCamCoreDispatch. - Active main-view selection via
SetActiveChannel/SetActiveCamCore. - Channel-aware
SettingNewCamOnChannelnotification replaces legacySettingNewCamwhen instancing is on.
Blend Profiles
- New asset extension
.camblendprofile(registered throughPhantomCamDataAssetsSystemComponent). - Three new fields on
PhantomBlendentries:BlendShape—Linear/Cylindrical/Spherical(powered by the new Orbital Solver).PivotSource—Source/Destination/Sharedfor cross-cam blend pivot resolution.InheritState— opt-in cam-to-cam pose handoff.
PhantomBlendreflected at Version 4 with version converter for pre-v3 and pre-v4 assets.
State Inheritance
- Universal
CamPoseSnapshotpose-handoff struct. - Per-body Get / Adopt implementations — Orbit Get-only, DynamicOrbit full ANGULAR+POSITION, LeadingFollow facing-seeded standoff, Track path-project with rejection threshold.
- Handoff runs before
StartBlendso the destination’s body adopts the seed pose before the blend captures source / destination poses.
Mid-blend Interrupt Correction
- New
m_interruptCorrectionfield on Cam Core (default0.03). - Y-blend correction window between the cam’s snapshot-at-interrupt and the new blend’s natural pose at the velocity-matched curve point.
- Replaces the legacy
BlendFromCorehard-anchor approach.
Group Targets
- New
GroupTargetComponent— weighted-centroid focal entity. Cams point at it like any other target. - Centroid modes:
WeightedMean/BoundingBoxCenter/BoundingSphereCenterwithm_weightBiasblend. - Orientation modes:
Identity/SpreadAxis/WeightedAverageForward. - Registered globally via Cam Manager (
RegisterGroupTarget/FindGroupTargetByName). - Pair with shared
TrueUniquecams to triggerOnAllChannelsActivatedSharedCamon collapse.
Tug Fields
- Three-component decoupled spatial reposition system —
CameraTugVolumeComponent,CameraTugSourceComponent,TugFieldProxyComponent. - PhysX layer-gated (
TugProxy↔TugFieldcollision-group pair). No central registry. - Listener stages
TugAimListenerandTugBodyListenerconsume engagements in the Reposition phase.
Noise & Impulse
- New asset extension
.camnoiseprofile— six-axis layered Perlin noise stacks. StarterTelephoto_MildandTelephoto_Intenseprofiles ship ings_phantomcam/Assets/Noise Profiles/. PerlinNoiseadditive — continuous handheld feel.ImpulseNoiseadditive — event-triggered burst, ADSR-gated. Fire viaTriggerCameraImpulse(strength)on the cam.
Orbit Profiles
- New asset extension
.camorbit—CameraOrbitShapewith three bands (low / mid / high) and a Roundness power-bulge family slider (diamond → sphere → cube). Arc-length reparameterization for constant spatial speed. - Consumed by
DynamicOrbitBody.
Camera Input Reader
- New
GS_CameraInputReaderComponentimplementing theOrbitInputProviderbus. - Per-axis
AxisvsDeltastyle for joystick / mouse handling. ResetPendingInputinvariant prevents accumulated mouse delta “bursts” after dormancy.
Influence Fields
AddCameraInfluencesignature changed — now(sourceEntity, targetEntity, camName, influence). Influences are routed to the channel that owns the target entity; influences whose target isn’t channel-bound are silently dropped.
Orbital Solver (GS_Core)
- New
GS_Core::Mathutility —BlendPositionAroundPivot,BlendPoseAroundPivot,ResolveCrossCamPivot. Powers the new blend shapes,DynamicOrbitBodydamping, andLeadingFollowBodyband response. See Orbital Solver.
PhantomCam 0.5.0
First official base release of GS_PhantomCam.
Cam Manager
GS_CamManagerComponent— camera system lifecycle, active camera trackingCamManagerRequestBus/CamManagerNotificationBusGS_PhantomCamSystemComponent— system-level registration
Phantom Cameras
GS_PhantomCameraComponent— virtual camera with follow target, look-at, FOV, and priorityPhantomCameraRequestBusPhantomCamData— camera configuration data structure- Priority-based switching: highest priority active phantom camera drives the real camera
Cam Core
GS_CamCoreComponent— reads from the active phantom camera each frame and applies to the engine cameraCamCoreRequestBus/CamCoreNotificationBus
Camera Behaviors
ClampedLook_PhantomCamComponent— look-at with clamped angle limitsStaticOrbitPhantomCamComponent— fixed-distance orbit around a targetTrack_PhantomCamComponent— follows a spline or path trackAlwaysFaceCameraComponent— keeps an entity billboard-facing the active camera
Blend Profiles
GS_PhantomCamBlendProfile— asset defining camera transition easing and duration- Smooth interpolation between camera positions on priority switch
Influence Fields
GlobalCameraInfluenceComponent— global persistent camera modifierCameraInfluenceFieldComponent— spatial zone that modifies camera behavior on entryCamInfluenceData— influence configuration data (offset, FOV shift, tilt)