View tools¶
See the scene: captures with entity boxes, debug views, multi-view sheets, selection and the editor camera.
9 tools in the view category. Badges: read-only tools never change the project; mutating tools are undoable and attributed; open-world tools reach outside the engine and MCP clients ask before running them.
| Tool | Summary |
|---|---|
viewport_capture |
Render the scene and return a PNG plus every visible entity with its on-screen box [x, y, w, h]. |
viewport_pick |
Which entity is at pixel (x, y) of a capture with the given size (editor camera). |
camera_set |
Point the editor camera (what the human sees and the default capture view). |
viewport_quality |
How the live editor viewport renders while editing: fast (default; lower internal resolution, no screen-space GI/reflections or light shafts, near foliage shadows, coarser LODs) keeps heavy worlds responsive; balanced; full (what the game and captures show). |
viewport_debug_view |
Show a debug visualization in the live editor viewport (the human sees it too), or list every view with its color legend (list=true). |
selection_get |
Entities the human currently has selected in the editor ("this", "these" usually means them). |
selection_set |
Select entities in the editor to show the human what you mean. |
viewport_multi |
One image with four views of the scene (or an entity): perspective (top-left), top (top-right), front (bottom-left) and side (bottom-right). |
scene_audit |
Quality gate before filming or screenshots (read-only, CPU, no GPU needed). |
viewport_capture¶
Look at the scene read-only
Render the scene and return a PNG plus every visible entity with its on-screen box [x, y, w, h]. annotate=true (default) draws each entity's #id on the image so you can match what you see to ids. Choose the view: the editor camera (default), the game camera (view="scene"), or any eye/target. probe=
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
width |
integer | Image width (default 768, max 2048) | ||
height |
integer | Image height (default 432, max 2048) | ||
view |
string | Editor orbit camera or the scene's primary camera | editor scene |
|
camera_entity |
integer | string | Render from this camera entity | ||
eye |
number[3] | Custom camera position | ||
target |
number[3] | Custom look-at point (with eye) | ||
fov |
number | Vertical field of view in degrees for the custom view (lens: 25 tele .. 90 wide) | ||
aperture |
number | Custom view depth of field f-stop (1.4 shallow .. 16 deep; default off) | ||
focus_distance |
number | Custom view focus distance in meters (default: autofocus on the center) | ||
tilt_shift |
number | Custom view tilt-shift miniature look: 0..1 blur above and below a sharp band across the middle of the frame (aerial 'toy town' shots; combines with aperture) | ||
annotate |
boolean | Draw entity id labels (default true) | ||
overlays |
boolean | Editor grid & selection highlight (default true) | ||
samples |
integer | Supersampling: jittered sub-frames accumulated (default 4; 1 = fastest preview, 16-32 = final-quality stills with noise-free GI and reflections) | ||
clay |
boolean | Render every surface as matte white clay (judge form and light; film 'sketch to fill' beats) | ||
debug_view |
string | Diagnostic view instead of the final image. Buffers: albedo, normals, material (roughness red / metallic green), gi, reflections, ao, depth, lighting. Shading: unshaded, lighting_only (white material), emission, specular. Geometry: wireframe, overdraw (heat map), lod (green 0 .. red 3), uv_checker, texel_density (green = 512 texels/m). Lights: shadow_cascades (red/green/blue/yellow), light_complexity (lights per pixel heat map), shadow_atlas (point/spot shadow maps, outlined per light: green re-rendered, blue cached, orange waiting; see shadow_atlas_info), reflection_probes (which probe lights each pixel, their volumes; see probe_info). Motion: the velocity buffer (hue = direction, strength = speed). Also sketch, impostors. Full legend: viewport_debug_view | final albedo normals material gi reflections ao depth lighting sketch impostors wireframe overdraw unshaded lighting_only shadow_cascades light_complexity lod emission specular uv_checker texel_density motion shadow_atlas reflection_probes vehicles skeleton ik_targets groom_roots sss_mask |
|
quality |
string | Viewport quality tier (default full; fast/balanced preview what the editor shows while editing) | full balanced fast |
|
include_image |
boolean | Return the image (default true); false = only the entity list | ||
save_path |
string | Also write the PNG to this project-relative path | ||
alpha |
number | While playing: render the in-between frame a real-time display shows this far between the last two ticks (0..1; render interpolation). Default 1 = the exact tick state | ||
frame_handlers |
boolean | While playing: also run the cosmetic on frame Wander handlers for this image (camera shake, UI tweens); their writes are undone afterwards |
||
probe |
integer | string | Return this reflection probe's captured cubemap instead (6 faces as a horizontal cross: +Y on top; -X, +Z, +X, -Z across; -Y below) | ||
probe_mip |
integer | With probe: roughness level 0 (sharp) .. 5 (the diffuse ambient) |
viewport_pick¶
Pick at pixel read-only
Which entity is at pixel (x, y) of a capture with the given size (editor camera). Use with the boxes/annotations from viewport_capture.
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
x |
number | yes | Pixel x | |
y |
number | yes | Pixel y | |
width |
integer | Capture width (default 768) | ||
height |
integer | Capture height (default 432) |
camera_set¶
Move editor camera read-only
Point the editor camera (what the human sees and the default capture view). Use frame to fit an entity (or "all"), or set eye/target, or orbit with yaw/pitch/distance.
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
frame |
integer | string | Entity to frame, or "all" | ||
eye |
number[3] | Camera position | ||
target |
number[3] | Look-at point | ||
yaw |
number | Orbit yaw degrees | ||
pitch |
number | Orbit pitch degrees | ||
distance |
number | Orbit distance |
viewport_quality¶
Viewport quality read-only
How the live editor viewport renders while editing: fast (default; lower internal resolution, no screen-space GI/reflections or light shafts, near foliage shadows, coarser LODs) keeps heavy worlds responsive; balanced; full (what the game and captures show). Play mode always renders full.
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
quality |
string | Editing quality (omit to read) | fast balanced full |
viewport_debug_view¶
Viewport debug view read-only
Show a debug visualization in the live editor viewport (the human sees it too), or list every view with its color legend (list=true). Views: wireframe, overdraw, unshaded, lighting_only, shadow_cascades, light_complexity, lod, emission, specular, uv_checker, texel_density, plus the buffers albedo, normals, material, gi, reflections, ao, depth, lighting and sketch/impostors. "final" turns it off. For a one-off image use viewport_capture {debug_view}. Example: {"view": "overdraw"}.
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
view |
string | Debug view to show (final = normal image); omit to read the current one | final albedo normals material gi reflections ao depth lighting sketch impostors wireframe overdraw unshaded lighting_only shadow_cascades light_complexity lod emission specular uv_checker texel_density motion shadow_atlas reflection_probes vehicles skeleton ik_targets groom_roots sss_mask |
|
list |
boolean | Return every view with its kind and color legend |
selection_get¶
Get selection read-only
Entities the human currently has selected in the editor ("this", "these" usually means them).
Takes no arguments.
selection_set¶
Select entities read-only
Select entities in the editor to show the human what you mean.
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
entities |
integer | string[] | yes | Entities to select (empty clears) |
viewport_multi¶
Four-view capture read-only
One image with four views of the scene (or an entity): perspective (top-left), top (top-right), front (bottom-left) and side (bottom-right). Orthographic views make layout, alignment and spacing problems obvious — use it to check level layouts.
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
focus |
integer | string | Entity to frame (default: whole scene) | ||
size |
integer | Size of each view in pixels (default 384) |
scene_audit¶
Audit what the camera sees read-only
Quality gate before filming or screenshots (read-only, CPU, no GPU needed). Builds the frame a camera sees and reports: visible builtin PRIMITIVE meshes (cube, sphere, capsule, cylinder, plane, cone, quad, torus) with entity and screen coverage % (occlusion-aware: a ground plane hidden under terrain or water does not count); PRIMITIVE CHARACTERS (an animator / character controller / nav agent on primitive meshes, or primitive parts arranged like a body, e.g. a sphere head on a capsule) with a kit character to replace them; DEFAULT grey or UNTEXTURED materials on visible meshes; missing texture / material / HDRI files; big meshes without LODs; texel-density outliers; a default sky; lights without shadows on hero meshes. Returns pass and warnings [{severity, code, message, hint, entity}]. Views: camera {eye, target, fov}, several cameras, camera_entity, view (editor | scene), or a sequence (path or sequencer entity) at times (seconds; default: 12 evenly spaced shots). strict=true fails when primitives (or default materials) cover more than 0.1% of any view (default limit 2%); override with max_primitive_coverage (percent). stylized=true accepts flat-colored materials (a deliberate stylized look). Examples: {"view": "scene", "strict": true}, {"sequence": "sequences/hero.sequence.json", "times": [1, 4, 8], "strict": true}, {"camera": {"eye": [0, 1.7, 5], "target": [0, 1.2, 0], "fov": 40}}.
| Argument | Type | Required | Description | Values |
|---|---|---|---|---|
camera |
object | Custom view | ||
cameras |
object[] | Several custom views [{eye, target, fov, label?}] | ||
camera_entity |
integer | string | Audit through this camera entity | ||
view |
string | Editor camera (default) or the scene's primary camera | editor scene |
|
sequence |
any | Sequence path (.sequence.json) or an entity with a sequencer: audit its live camera | ||
times |
number[] | Sequence times in seconds (default: 12 shots across it) | ||
strict |
boolean | Fail when primitives or default materials cover more than 0.1% of a view (showcase bar) | ||
max_primitive_coverage |
number | Primitive coverage limit in percent (default 0.1 strict, 2 otherwise) | ||
stylized |
boolean | Deliberately stylized look: flat-colored materials are info, not warnings | ||
width |
integer | Frame width for the aspect ratio (default 1920) | ||
height |
integer | Frame height (default 1080) | ||
resolution |
integer | Coverage raster width in pixels (default 320, max 1280); higher = finer coverage | ||
details |
boolean | Include per-view details when auditing several views (default true) |