Skip to content

CCTV Settings

CCTV feed appearance is controlled by a single UI Material assigned in project settings. Each camera renders into a CanvasRenderTarget2D, then a dynamic material instance sets the Texture parameter for UMG Image widgets.

flowchart LR
  Capture["Scene Capture"] --> RT["Render Target"]
  RT --> MID["Material Instance Dynamic"]
  Settings["UOperatingSystemCCTVSettings"] --> Mat["M_UI_CCTV"]
  Mat --> MID
  MID --> UMG["Image widget in WBP_CCTV"]

Open Edit → Project Settings → CCTV Settings (section provided by UOperatingSystemCCTVSettings).

PropertyDefault assetDescription
UI MaterialOperatingSystemContent/CCTV/M_UI_CCTVParent material for all camera feeds

The C++ constructor sets this default path:

/OperatingSystemSimulator/OperatingSystemContent/CCTV/M_UI_CCTV.M_UI_CCTV

  1. Duplicate M_UI_CCTV into your project Content folder.
  2. Edit the duplicate — keep a Texture parameter named Texture (case-sensitive).
  3. Point Project Settings → CCTV Settings → UI Material at your duplicate.

Your UI material must:

  1. Expose a Texture parameter (used by GetMainViewMID / GetGridViewMID).
  2. Be suitable for UMG — typically User Interface domain or unlit sampling of the render target.
  3. Optionally add post-process style effects (scan lines, noise, vignette) in the material graph for a surveillance aesthetic.
flowchart TB
  subgraph material["M_UI_CCTV graph (conceptual)"]
    Tex["Texture param"] --> Sample["Texture Sample"]
    Sample --> FX["Optional: noise · scanlines · tint"]
    FX --> Emissive["Emissive / Final Color"]
  end
  RT["Camera Render Target"] -.->|"SetTextureParameterValue"| Tex

On any BP_CCTV_Actor instance, expand Advanced and set Override Material UI to a different material. Useful when one camera should show thermal imaging while others use the standard feed.

If left unset, the actor loads the material from CCTV Settings at first MID creation.

Resolution is set per camera, not in project settings:

LayoutPropertyDefault
Single viewMain View Size2048 × 1024
Grid tilesGrid View Size512 × 256

Higher resolutions improve clarity but cost GPU memory and capture time. Tune on BP_CCTV_Actor, not in CCTV Settings.

Blueprint example — runtime material swap

Section titled “Blueprint example — runtime material swap”
On Night Vision Toggled
→ For Each (Get All CCTV Actors)
→ Set Override Material UI (M_UI_CCTV_NightVision)
→ (Next capture recreates MID with new parent)