← All namespaces

static_mesh

Inspect, debug & data Core

Read a Static Mesh's bounds, materials, LODs, collision, and Nanite state.

What it’s for

This namespace answers questions about a Static Mesh asset without opening it in the editor. It returns read-only metadata as JSON: the mesh bounds (origin, extent, sphere radius), the material slots and what material is bound to each, the LOD count with per-LOD triangle and vertex counts, the lightmap resolution, and the collision setup (simple primitive counts and the collision trace flag).

Reach for it when your assistant needs facts about a mesh before it acts: is this piece light enough to instance across a level, which material slot to swap, whether it already has simple collision, or how big it is so it can be placed and scaled correctly. Because the read is loopback-fast, it is cheap to run mid-task against a single asset.

It returns the same JSON shape as the static_mesh.json sidecar written by an asset dump. Use this namespace for a quick live look at one mesh; use a folder dump when you want a durable, greppable snapshot of many meshes at once to compare before and after a change.

Examples

Check how heavy a mesh is

Ask for the triangle budget and LOD count before deciding whether a mesh is cheap to reuse.

You: How heavy is the gate mesh, and how many LODs does it have?

  call("static_mesh.describe", {assetPath:"/App/Track/Gate/gate"})
    → {lods:1, trianglesByLod:[2336], verticesByLod:[1382]}

Done. One LOD, 2,336 triangles at LOD0 — light enough to instance across the track.

See the material slots

Read which material sits in which named slot so an edit targets the right one.

You: Which materials are on the gate, and what slots are they in?

  call("static_mesh.describe", {assetPath:"/App/Track/Gate/gate"})
    → {materials:[{slot:"gate_01_mat", path:"/App/Track/Gate/gate_01_mat"}, ...]}

Done. Three slots: gate_01_mat, gate_02_mat, gate_03_mat.

Check collision and size before placing it

Confirm whether a piece has simple collision primitives and read its bounds in one call.

You: Does the tunnel piece have simple collision, and how big is it?

  call("static_mesh.describe", {assetPath:"/App/Track/Tunnel/tunnel_01"})
    → {collisionTraceFlag:"CTF_UseDefault", collision:{elements:{box:0, convex:0, sphere:0}}, bounds:{extent:{x:150, y:3.3, z:150}}}

Done. No simple primitives — it uses complex-as-simple. Extent is 150×3.3×150.

← Back to all namespaces