The third-person orbit camera resolves a gameplay camera pose around a target
location. It is authored as a deterministic V2Gameplay data evaluator so
Blueprints, tests, and release gates can use the same orbit math.
Runtime Surface#
FV2ThirdPersonOrbitCameraLimitsconfigures distance, pitch, yaw, sensitivity, inversion, FOV, target height offset, side offset, and blend time.FV2ThirdPersonOrbitCameraStatestores the target location plus current yaw, pitch, and distance.FV2ThirdPersonOrbitCameraInputcarries yaw, pitch, zoom axes, and frame delta seconds.FV2ThirdPersonOrbitCameraEvaluationreturns the pivot, camera location, camera rotation, arm vector, resolved yaw, pitch, distance, FOV, camera manager mode spec, and validation issues.
Orbit Rules#
- The pivot is
TargetLocation + TargetHeightOffset. - Yaw and pitch input are multiplied by their sensitivity and
DeltaSeconds. - Positive zoom input reduces distance, which moves the camera closer.
- Pitch and distance are always clamped to authored limits.
- Yaw is normalized by default and clamped only when
bClampYawToLimitsis enabled. - Non-blocking clamp issues are reported when distance, pitch, or yaw are adjusted by limits.
- Invalid ranges, non-finite state, or negative delta time produce blocking issues and no valid camera pose.
Camera Manager Export#
EvaluateThirdPersonOrbitCamera fills ModeSpec with a
EV2CameraModeType::ThirdPersonOrbit mode using id camera.third_person.orbit.
BuildThirdPersonOrbitCameraMode can also export a custom id, priority, and
active flag for a camera manager stack.
Validation Commands#
Run these targeted checks when touching the orbit camera:
bash
python3 V2/ue/Tools/check-v2-third-person-orbit-camera.py
python3 V2/ue/Tools/check-v2-camera-manager.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/Gameplay/Camera/ThirdPersonOrbitCamera_V2_Contract.json
python3 -m py_compile V2/ue/Tools/check-v2-third-person-orbit-camera.py