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