FollowPhotoCameras Documentation

Version: 1.0.0 Engine: Unreal Engine 5.7

1) Overview

Follow Photo Cameras is a Runtime plugin that spawns one or more cameras to follow a target actor, move around it from dynamic angles, and save PNG screenshots.

It supports: Automatic interval capture Manual trigger capture Smart collision aware movement Performance friendly capture scheduling Exposure/post process controls Cinematic resolution presets

================================================== 2) Requirements and Platform ================================================== Unreal Engine 5.7 Win64 target platform Runtime only module

Important: The folder picker uses Windows APIs, so current runtime support is Win64.

================================================== 3) Installation and Setup ================================================== 1. Enable Plugin 2. Restart editor. 3. In a Blueprint graph, search for the nodes: Start Cameras Stop Cameras Take Photo

================================================== 4) Blueprint Node Reference ================================================== A) Start Cameras Signature: Start Cameras(WorldContextObject, ActorToFollow, Settings) bool

Behavior: Opens folder picker (Windows) to select save location. Spawns and initializes runtime camera manager. Starts automatic capture if manual mode is disabled.

Returns: true if start succeeded. false on cancel/failure/invalid actor/world.

B) Stop Cameras Signature: Stop Cameras(WorldContextObject) int32

Behavior: Stops all active FollowPhotoCameras managers in the current world.

Returns: Number of managers stopped.

C) Take Photo Signature: Take Photo(WorldContextObject) int32

Behavior: Triggers one capture pass for managers running in manual mode.

Returns: Number of photos captured in that trigger.

================================================== 5) Quick Start Workflow ================================================== Automatic mode: 1. Set bManualTriggerPhotos = false. 2. Call Start Cameras once. 3. Cameras capture every CaptureIntervalSeconds. 4. Optional: call Stop Cameras to stop early.

Manual mode: 1. Set bManualTriggerPhotos = true. 2. Call Start Cameras once. 3. Call Take Photo whenever needed (e.g. key press/event). 4. Call Stop Cameras to finish.

================================================== 6) Settings Reference (Every Setting) ==================================================

Cameras

CameraCount (default: 1) Number of runtime follow cameras to spawn. Higher count = more coverage + higher CPU/GPU cost.

bShowCameraActors (default: true) If true, camera actors are visible in the world. They are excluded from saved photos by plugin logic.

Capture

ResolutionPreset (default: R2K) Select preset output size: R1K = 1024x540 R2K = 2048x1080 R4K = 4096x2160 R8K = 8192x4320 R12K = 12288x6480 Custom = use ResolutionX/ResolutionY

ResolutionX (default: 1920, used only when preset=Custom) Custom width in pixels.

ResolutionY (default: 1080, used only when preset=Custom) Custom height in pixels.

CaptureIntervalSeconds (default: 1.0) Time between automatic captures. Ignored in manual mode.

bManualTriggerPhotos (default: false) false: automatic interval capture. true: capture only when Take Photo is called.

ShotsPerCamera (default: 25) Max number of shots each camera can save. Capture manager self stops when all cameras reach this limit.

Capture | Performance

bEnablePerformanceMode (default: true) Enables spike reduction behavior. Spreads capture workload and supports async compression/write.

MaxCamerasCapturedPerPass (default: 2) Max cameras captured in a single pass while performance mode is enabled. Lower value = smoother frame time, slower total throughput.

bAsyncPngCompressionAndSave (default: true) Compresses and writes PNG files in background worker threads.

MaxPendingAsyncSaveJobs (default: 12) Limits queued async save jobs. Prevents excessive RAM growth under heavy capture workloads.

Capture | Quality

bEnableCaptureExposureCompensation (default: true) Enables exposure bias for captured output.

CaptureExposureCompensation (default: 0.1) Positive values brighten, negative values darken. Useful for deep shadows.

bUseLinearToGammaConversion (default: true) Applies linear gamma conversion before PNG encoding.

CaptureOutputGamma (default: 2.2) Render target output gamma (typical monitor value).

Movement | Smart

bEnableSmartCollisionAvoidance (default: true) Collision aware camera placement. Helps avoid going inside walls/interior spaces. In tight space can move camera closer than MinDistance. Teleport recovery is used only for stuck/far abnormal cases.

Movement

MovementPreset (default: Balanced) Preset style for orbit/follow behavior: Cinematic Balanced Aggressive

MovementSmoothness (default: 0.7) Higher = smoother movement, softer retargeting.

bEnableCameraLag (default: true) Enables lagged follow behavior.

CameraLagStrength (default: 0.35) Higher = more lag/trailing.

bAdaptLagToTargetSpeed (default: true) Dynamically adapts lag follow rate based on target velocity.

Orbit

MinDistance (default: 150.0) Preferred minimum orbit distance from target.

MaxDistance (default: 1000.0) Preferred maximum orbit distance from target.

MinHeightOffset (default: 1.0) Minimum vertical offset (Z) from target.

MaxHeightOffset (default: 1000.0) Maximum vertical offset (Z) from target.

MinPitchDegrees (default: 10.0) Lower bound pitch for orbit placement.

MaxPitchDegrees (default: 25.0) Upper bound pitch for orbit placement.

Camera

FieldOfView (default: 90.0) Capture camera FOV in degrees.

Effects

bApplyPostProcess (default: false) Enables custom post process settings for capture.

PostProcessSettings (default: engine struct defaults) Custom capture post process values. Important: enable override flags for each field you want applied. Level PostProcessVolumes can still blend with the result.

================================================== 7) Performance Recommendations ================================================== For smooth gameplay while capturing: Keep Performance Mode enabled. Lower MaxCamerasCapturedPerPass if frame spikes appear. Keep async PNG save enabled. Use 1K/2K for live gameplay capture; use 4K+ mainly for offline data generation.

================================================== 8) Image Naming and Output ================================================== Output folder is chosen at runtime via folder picker. Filenames are generated with unique IDs. Existing files are not overwritten. Suitable for very large image datasets.

================================================== 9) Troubleshooting ================================================== Issue: I cannot see post process effect. Ensure bApplyPostProcess = true. In PostProcessSettings, enable override checkboxes for changed fields. Reduce/adjust conflicting level PostProcessVolume intensity.

Issue: FPS spikes during captures. Keep Performance Mode on. Reduce MaxCamerasCapturedPerPass. Reduce resolution or camera count.

Issue: Camera clips into walls. Ensure bEnableSmartCollisionAvoidance = true.

Issue: No photos saved in manual mode. Ensure bManualTriggerPhotos = true and call Take Photo node.

================================================== 10) Links ================================================== This Documentation: https://celestiadominance.com/followphotocameras documentation

Support: Discord