CalmUI
Unreal Engine

World-space and render-target UI

Render a CalmUI View into a texture for monitors and diegetic panels.

Use this advanced Unreal workflow to put a View on an in-game monitor or panel. A render target is a texture that Unreal can draw into and your mesh material can display. Prepare a package View first; the same View can use game data and actions as a normal screen.

Create a surface

  1. Create a UTextureRenderTarget2D and choose the resolution required by the mesh material.
  2. Assign the texture to your material.
  3. Call Create CalmUI World Surface with the local Player Controller, package, Screen, render target, and optional bound primitive component. The compact node resolves the subsystems, loads the package when needed, derives the Local Player ID, and matches the render target's color space.
  4. Check its Boolean result, print Error if it fails, and save the Handle output if it succeeds.
  5. Call Destroy CalmUI World Surface when the owning gameplay object no longer needs it. World teardown also releases every remaining surface.

Device Scale converts physical target pixels into logical layout pixels. A 1024×512 target at scale 2 lays out a 512×256 View and retains a 2× raster density. Resizing the target is detected on the next tick. Select SRGB for a normal color render target or Linear only when bForceLinearGamma is enabled. The compact node chooses this automatically.

The optional bound component controls visibility and identifies the intended collision hit. Destroying that component invalidates and releases the surface. Enable Render When Component Is Hidden only when a hidden mesh must continue updating its texture.

Route input

Use one of three paths:

  • Route CalmUI World Surface Pointer Hit for an existing collision hit;
  • Trace CalmUI World Surface Pointer to let CalmUI line-trace and extract the selected UV channel.

Both compact nodes take the Player Controller and saved Handle directly.

Pass a stable pointer ID and the correct Local Player. Capture starts on Down and remains active outside the 0–1 UV range until Up or Cancel. A surface has one active interaction stream; different pointer IDs can interact with different surfaces concurrently. Respect Scene rejects a surface hidden behind an earlier trace hit, while Ignore Scene routes through it.

Wheel, directional navigation, Next/Previous focus, Accept, and Back have dedicated methods and use the same Core interaction behavior as viewport UI. The game's input system still decides which ray, hand, cursor, or controller owns each pointer ID.

Advanced surface control

Get the Calm Ui World Subsystem only when you need normalized UV routing, wheel input, surface counts, explicit color/occlusion policy, or the complete Calm Ui World Surface Options structure. These nodes are grouped under CalmUI | Advanced | World Surface. They control the same surface runtime as the compact Player Controller nodes.

Lifetime and limitations

A surface belongs to the current World and uses the selected local player's game data and actions. Changing maps or destroying the bound component releases it. Call Destroy when your own object no longer needs the surface.

VR stereo layers, curved UV generation, gaze/hand adapters, and platform-specific interaction are not supplied by CalmUI. The game may provide flat-surface UVs from its own geometry, but CalmUI does not claim those features.

Check the in-game panel

Assign the target to the actual mesh material, run the game, and test the panel's appearance and input at your intended viewing distances. Include the resolutions, display scales, and lighting/material settings your game uses.

On this page