Introduction

The Viewport is OpenCAGE's 3D view of the level — part of the script editor, shown above the composite display. Use it to place triggers, models, markers, and anything else that benefits from seeing the level in context.

This guide covers navigating the scene, selection, deep select, transform gizmos, and render filters.

OpenCAGE Viewport showing Advanced Deep Select with a nested entity selected

Using the Viewport

Basics

When you load a level, the Viewport appears automatically (unless you've disabled it — see below). While the scene is filling in, OpenCAGE shows a Populating … in viewport… progress state.

Selection and transforms you make in the Viewport are the same edits as in the rest of the script editor — hierarchy, parameters, and the 3D view stay on the same selection.

The Viewport toolbar covers Selection Mode, gizmo Control, Create (entity placement), State Info (navmesh / cover overlays), Transform Snap, and Rotation Snap.

Disabling the Viewport

Steam includes a launch option that starts OpenCAGE with the Viewport turned off. Use that if you want lower memory usage and faster load times, knowing you won't get the 3D view.

In Steam: open OpenCAGE's properties → Launch Options, and choose the option that disables the Viewport.

If you run several OpenCAGE windows for different game installs, Options → Manage Game Directories has Launch other editors without viewport so those extra windows skip the 3D view. See Multiple Game Installs.

Moving the Camera

To look around the scene, hold the right mouse button and drag. Whilst doing this, you can use W, A, S, and D to move the camera in 3D space. Q and E move down and up. Hold Shift to move faster.

Hold the middle mouse button and drag to pan the camera without changing your viewing angle.

Scroll the mouse wheel to adjust movement speed — a small readout appears in the corner when you change it.

Press Z to recenter the camera on whatever is currently selected.

When a level first loads, the camera will frame the level automatically unless you're already drilled into a nested composite with something selected.

Selection

Click an entity in the hierarchy or flowgraph and it highlights in the Viewport; click something in the Viewport and the hierarchy jumps to that entity.

Left-click an object in the Viewport to select it. By default, this selects the relevant entity in the composite you're currently viewing — for example, clicking a model inside a composite instance will select that composite instance entity, not the inner model directly.

Selected entities are highlighted in green. You can click empty space or press Escape to deselect.

Entities outside the composite you're currently editing are dimmed and can't be picked, which makes it easier to focus on the area you're working on. Step into a nested composite and the Viewport scope updates to match.

If Highlight Aliases is enabled under Options → Viewport (on by default), entities targeted by parameterized aliases in the active composite are shown with an orange highlight. The selected entity itself shows green rather than orange.

If Highlight Proxies is enabled, entities targeted by proxies are shown with a blue highlight when you've stepped into a nested composite.

You can click on render previews too — not just model references. Box volumes, position markers, character previews, spline paths, sound icons, and other filtered entity types are all selectable (see more below).

Deep Select

Sometimes you want to select something deeper in the hierarchy — an entity inside a nested composite, for example. That's what deep select is for.

Set the select mode from the Viewport panel's Selection Mode toolbar, or with these number-row keys (not the numpad):

  • 0Regular — left-click selects the entity in the active composite, as described above.
  • 8Deep Select — left-clicking the same target repeatedly steps one composite level deeper each time. Ctrl + middle-click steps into one composite instance at a time.
  • 9Advanced Deep Select — left-click jumps straight to the deepest entity on the pick chain. Ctrl + middle-click drills through the full hierarchy in one go.

Modes are chosen directly — you don't cycle through them with a single key.

Press - (minus) to step back out one level in the hierarchy — useful if you've drilled in too far. You can see the full hierarchy in the bar at the bottom of the OpenCAGE window, and also navigate back there too.

How aliases work with deep select

In Cathode scripts, entities inside a nested composite aren't directly selectable from the parent composite you're viewing — the script editor needs a path to reach them. That's what aliases are for: an alias in your current composite points at a chain of entities through composite instances, ending at the thing you actually want to work with.

Deep select creates that path for you automatically. When you deep-select something, OpenCAGE looks for an existing alias in the active composite whose path matches the entity chain you clicked through. If one already exists, it selects that. If not, it creates a new alias pointing at the right depth.

In Deep Select mode, each left-click on the same piece of geometry goes one composite level deeper — first click might select the composite instance, the next click the entity inside it, and so on. The alias's path grows to match. In Advanced Deep Select mode, a single click builds the full alias path straight to the deepest entity in one go.

Aliases created this way start out parameter-free — they're temporary helpers for navigation. If you click something else without having done anything to the alias, OpenCAGE removes it again so your composite doesn't fill up with unused aliases. Once you move an alias with the transform gizmo (which adds a position override), or otherwise give it parameters in the main editor window, it becomes a permanent part of your scripts — the same as if you'd created it manually in the flowgraph.

This is separate from the orange Highlight Aliases option, which shows entities that already have parameterized aliases in the composite you're editing. Deep select is about creating and navigating through aliases on the fly; the orange highlight is about visualizing overrides you've already set up.

Note — moving an entity via deep select (an alias) will override the position defined within the child composite. This works in a hierarchy, so aliases at the root level will override ones below. Read more about aliases in the Scripting Intro.

Moving Entities

Once you've selected an entity, you can move and rotate it in the Viewport with the transform gizmo. That updates the entity's position parameters like any other edit.

With an entity selected, choose a gizmo mode from the Viewport Control toolbar, or with these number-row keys:

  • 1 — Translate (World)
  • 2 — Translate (Local)
  • 3 — Rotate (World)
  • 4 — Rotate (Local)
  • 5 — Disable / None

Click and drag the coloured gizmo handles to transform the entity. The current mode is shown in a small HUD.

Use Transform Snap and Rotation Snap on the Viewport toolbar to snap movement and rotation to stepped values while dragging.

An entity with more than one transform parameter only has the relevant one updated when you drag it, rather than all of them.

Creating Entities

The Create dropdown on the Viewport toolbar turns the view into a placement tool. Pick a function type from the dropdown and the button changes to Create: <type>; clicking in the Viewport then creates a new entity of that type at the position you clicked, in the composite you're currently editing.

This is much quicker than adding an entity from the palette and then dragging it into place — particularly for the things you place by eye, like trigger boxes, position markers and pathfinding nodes.

Choose None to leave create mode and go back to normal selection.

Copy & Paste

Select an entity in the Viewport and Ctrl+C / Ctrl+V copies and pastes it, keeping all of its parameters. The same clipboard works on the flowgraph, so you can copy in one view and paste in the other, and entities can be pasted into a different composite entirely.

This replaces the old Duplicate option. See Cathode Scripting Introduction for what happens to links and node layouts when you paste on the flowgraph.

Hiding Entities

Need to temporarily get something out of the way while you work on geometry behind it? With an entity selected, press H to hide it in the Viewport. This is display-only — it doesn't delete or modify anything in your scripts.

Press Shift + H to unhide everything you've hidden in the current composite scope.

Hides reset automatically when you navigate to a different composite or step into/out of a composite instance, so you won't accidentally carry hidden state across contexts.

Previews & Render Filters

Not everything in a Cathode level is a rendered model. The Viewport draws previews for many function entity types so you can see triggers, markers, splines, characters, and more.

Preview types include:

  • Box volumes — semi-transparent boxes for triggers, nav areas, collision barriers, fog boxes, and similar volume entities
  • Position markers — torus-and-axis gizmos for position markers, pathfinding nodes, and related point entities
  • Character previews — simple capsule figures for character entities
  • Spline paths — point markers, connecting lines, and direction arrows
  • Icon billboards — icons for sounds, lights, particles, cameras, sound objects, and UI icons
  • Spheres and pyramids — for impact spheres, fog spheres, surface effect spheres, UI selection spheres, and similar radius-based entities
  • Environment maps — coloured spheres at probe positions

Each preview type has an associated render filter, colour-coded in the list. Use the docked Render Filters panel (alongside Search / Composite Browser by default) to toggle individual function types on or off. This is useful for decluttering busy levels — hide box volumes you don't care about, for example, while keeping position markers visible.

Coverage is broad: trigger and camera volumes, NPC and navmesh areas, cover and spotting exclusion areas, sound barriers, environment zones and network nodes, particle, ribbon and GPU emitters, decals, refraction and water surfaces, pickups, and the pathfinding node types all have their own filter.

Under Options → Viewport, enable Hide Nested Script Entities to stop showing entity previews defined in nested composites. ModelReference entities are always shown regardless of render filter settings.

Under Options → Misc, Reset Render Filters On Load clears your filter toggles whenever a level loads.

Occlusion & Collision Meshes

Two extra filters at the bottom of the panel aren't tied to a function type at all — they draw scene geometry the game never renders:

  • Occlusion Meshes — the invisible geometry the engine uses to cull what's behind it
  • Collision Meshes — what the player and physics actually collide with, which is not the same shape as the visible mesh

Both are drawn in a flat filter colour and are off by default. They're the quickest way to check that geometry you've moved or ported has collision where you expect it — see Save and Build.

Navmesh & Cover

The State Info dropdown on the Viewport toolbar draws generated NPC state resources over the level. For each of the level's states you can show either:

  • Navmesh — where NPCs are able to walk
  • Cover — the positions NPCs can take cover at

Levels have more than one state — geometry that opens, closes or changes as the mission progresses — and each has its own generated navmesh and cover, so pick the state you're interested in. Choose None to turn the overlay off.

This is what these systems will actually be at runtime, so it's the right place to check the result of a build.

Viewport Options

Most Viewport behaviour is controlled from Options → Viewport (also listed under Options):

  • Highlight Aliases — show orange highlights on entities targeted by parameterized aliases in the active composite
  • Highlight Proxies — show blue highlights on proxy targets when stepped into a nested composite
  • Focus on Selected — move the camera to frame an entity whenever you select one
  • Fix Camera to Selected Entity — keep the camera locked on the selection rather than framing it once. Turning this on turns on Focus on Selected too
  • Show Camera Position — display camera X/Y/Z coordinates while moving
  • Render Wireframe — draw ModelReference meshes as wireframe overlays
  • Hide Nested Script Entities — hide render previews for entities defined in nested composites (ModelReferences are unaffected)

Also useful:

  • Render Filters dock panel — toggle previews per function type, plus occlusion and collision meshes
  • Viewport panel toolbar — Selection Mode, Control (gizmo), Create, State Info, Transform Snap, Rotation Snap
  • Options → Misc → Reset Render Filters On Load
  • Options → Controls — open the controls dialog and check the Viewport Controls tab for a full shortcut list

Tips & Troubleshooting

  • If the 3D view looks wrong after edits, save and reload the level (or restart OpenCAGE).
  • Click the Viewport first before using camera/hotkeys — those shortcuts apply when the Viewport has focus.
  • If there's no Viewport at all, check Steam's launch options — you may have the disable-viewport option selected.
  • Opening several editor windows? Use Launch other editors without viewport under Manage Game Directories to save memory — more in Multiple Game Installs.