editor.staticmesh

Static mesh asset introspection: mesh info, LOD details, collision data, Nanite status, and material slots

← API Reference

editor.staticmesh.getInfo

Get comprehensive information about a static mesh asset.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path (e.g. /Game/Meshes/SM_Chair)

Returns:

NameTypeDescription
namestringAsset name
pathstringFull asset path
num_lodsnumberNumber of LOD levels
vertex_countnumberVertex count at LOD 0
triangle_countnumberTriangle count at LOD 0
boundsobjectBounding box/sphere (origin_x/y/z, extent_x/y/z, sphere_radius)
has_nanitebooleanWhether Nanite is enabled
material_slot_countnumberNumber of material slots
has_valid_render_databooleanWhether the mesh has valid render data

Example Request:

{ "jsonrpc": "2.0", "id": 1, "method": "editor.staticmesh.getInfo", "params": { "asset_path": "/Game/Meshes/SM_Chair" } }

editor.staticmesh.getLODs

Get per-LOD details for a static mesh (vertex count, triangle count, sections, screen size).

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path

Returns: lods (array of {lod_index, vertex_count, triangle_count, num_sections, num_tex_coords, screen_size})

Example Request:

{ "jsonrpc": "2.0", "id": 2, "method": "editor.staticmesh.getLODs", "params": { "asset_path": "/Game/Meshes/SM_Chair" } }

editor.staticmesh.getCollision

Get collision information for a static mesh (complexity, shape counts).

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path

Returns: has_collision (bool), collision_complexity (string), num_shapes (number), simple_collision_shapes ({spheres, boxes, capsules, convex, tapered_capsules})

Example Request:

{ "jsonrpc": "2.0", "id": 3, "method": "editor.staticmesh.getCollision", "params": { "asset_path": "/Game/Meshes/SM_Chair" } }

editor.staticmesh.setLODCount

Set the number of LOD levels for a static mesh.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path
countnumberYesNumber of LODs (1 to MAX_STATIC_MESH_LODS)

Returns: success (bool), num_lods (number)

Example Request:

{ "jsonrpc": "2.0", "id": 4, "method": "editor.staticmesh.setLODCount", "params": { "asset_path": "/Game/Meshes/SM_Chair", "count": 4 } }

editor.staticmesh.setLODScreenSize

Set the screen size threshold for a specific LOD level.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path
lod_indexnumberYesLOD index to configure
screen_sizenumberYesScreen size threshold (0.0–1.0)

Returns: success (bool), lod_index (number), screen_size (number)

Example Request:

{ "jsonrpc": "2.0", "id": 5, "method": "editor.staticmesh.setLODScreenSize", "params": { "asset_path": "/Game/Meshes/SM_Chair", "lod_index": 1, "screen_size": 0.5 } }

editor.staticmesh.generateLOD

Auto-generate a LOD level with reduction settings. Configures reduction parameters and rebuilds the mesh.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path
lod_indexnumberYesLOD index to generate (must be >= 1)
percent_trianglesnumberNoTriangle reduction ratio 0.0–1.0 (default 0.5)
max_deviationnumberNoMaximum allowed deviation in object space (default 0.0)
screen_sizenumberNoOptional screen size threshold for this LOD

Returns: success (bool), lod_index, percent_triangles, max_deviation, build_errors (array)

Example Request:

{ "jsonrpc": "2.0", "id": 6, "method": "editor.staticmesh.generateLOD", "params": { "asset_path": "/Game/Meshes/SM_Chair", "lod_index": 1, "percent_triangles": 0.5 } }

editor.staticmesh.setCollision

Set the collision complexity for a static mesh.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path
complexitystringYesDefault, SimpleAndComplex, SimpleAsComplex, or ComplexAsSimple

Returns: success (bool), collision_complexity (string)

Example Request:

{ "jsonrpc": "2.0", "id": 7, "method": "editor.staticmesh.setCollision", "params": { "asset_path": "/Game/Meshes/SM_Chair", "complexity": "ComplexAsSimple" } }

editor.staticmesh.setNaniteEnabled

Enable or disable Nanite for a static mesh. Triggers a mesh rebuild.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path
enabledbooleanYesWhether to enable Nanite

Returns: success (bool), nanite_enabled (bool)

Example Request:

{ "jsonrpc": "2.0", "id": 8, "method": "editor.staticmesh.setNaniteEnabled", "params": { "asset_path": "/Game/Meshes/SM_Chair", "enabled": true } }

editor.staticmesh.getMaterialSlots

List all material slots with their assigned materials.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path

Returns: slots (array of {index, slot_name, material_name, material_path}), count (number)

Example Request:

{ "jsonrpc": "2.0", "id": 9, "method": "editor.staticmesh.getMaterialSlots", "params": { "asset_path": "/Game/Meshes/SM_Chair" } }

editor.staticmesh.setMaterialSlot

Assign a material to a specific material slot by index.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path of the static mesh
slot_indexnumberYesMaterial slot index to assign to
material_pathstringYesFull asset path of the material to assign

Returns: success (bool), slot_index, material_name, material_path

Example Request:

{ "jsonrpc": "2.0", "id": 10, "method": "editor.staticmesh.setMaterialSlot", "params": { "asset_path": "/Game/Meshes/SM_Chair", "slot_index": 0, "material_path": "/Game/Materials/M_Metal_Chrome" } }

editor.staticmesh.getNaniteSettings

Returns all FMeshNaniteSettings properties for a static mesh.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path to static mesh

Returns:

NameTypeDescription
enabledboolWhether Nanite is enabled
explicit_tangentsboolStore explicit tangents
lerp_uvsboolInterpolate UVs when simplifying
separableboolSeparable flag
voxel_ndfboolVoxel NDF flag
voxel_opacityboolVoxel opacity flag
shape_preservationstring"None", "PreserveArea", or "Voxelize"
generate_fallbackstring"PlatformDefault" or "Enabled"
fallback_targetstring"Auto", "PercentTriangles", or "RelativeError"
position_precisionnumberPosition precision (MIN_INT32 = auto)
normal_precisionnumberNormal precision (-1 = auto)
tangent_precisionnumberTangent precision (-1 = auto)
bone_weight_precisionnumberBone weight precision (-1 = auto)
target_minimum_residency_kbnumberTarget minimum residency in KB
displacement_uv_channelnumberDisplacement UV channel index
num_raysnumberNumber of rays for voxel
voxel_levelnumberVoxel level
keep_percent_trianglesnumberPercentage of triangles to keep (0-1)
trim_relative_errornumberTrim relative error
fallback_percent_trianglesnumberFallback mesh triangle percentage (0-1)
fallback_relative_errornumberFallback mesh relative error
max_edge_length_factornumberMax edge length factor
ray_back_upnumberRay back up distance

Example Request:

{ "jsonrpc": "2.0", "id": 11, "method": "editor.staticmesh.getNaniteSettings", "params": { "asset_path": "/Game/Meshes/SM_Chair" } }

editor.staticmesh.setNaniteSettings

Applies a bulk partial-update of Nanite settings. Only fields present in the settings object are modified.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path
settingsobjectYesObject with any subset of getNaniteSettings fields

Returns: success (bool), fields_set (number)

Example Request:

{ "jsonrpc": "2.0", "id": 12, "method": "editor.staticmesh.setNaniteSettings", "params": { "asset_path": "/Game/Meshes/SM_Chair", "settings": { "enabled": true, "keep_percent_triangles": 0.8 } } }

editor.staticmesh.getNaniteFallback

Returns fallback mesh configuration (quick access to commonly-tuned values).

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path

Returns: generate_fallback (string), fallback_target (string), fallback_percent_triangles (number, 0-1), fallback_relative_error (number)

Example Request:

{ "jsonrpc": "2.0", "id": 13, "method": "editor.staticmesh.getNaniteFallback", "params": { "asset_path": "/Game/Meshes/SM_Chair" } }

editor.staticmesh.setNaniteFallback

Sets fallback mesh configuration.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path
fallback_targetstringNo"Auto", "PercentTriangles", or "RelativeError"
generate_fallbackstringNo"PlatformDefault" or "Enabled"
fallback_percent_trianglesnumberNoPercentage 0-1 (clamped)
fallback_relative_errornumberNoError threshold (min 0)

Returns: success (bool), fallback_target (string), fallback_percent_triangles (number), fallback_relative_error (number)

Example Request:

{ "jsonrpc": "2.0", "id": 14, "method": "editor.staticmesh.setNaniteFallback", "params": { "asset_path": "/Game/Meshes/SM_Chair", "fallback_target": "PercentTriangles", "fallback_percent_triangles": 0.25 } }

editor.staticmesh.getNaniteStats

Returns Nanite resource stats for a mesh.

Parameters:

NameTypeRequiredDescription
asset_pathstringYesFull asset path

Returns: nanite_enabled (bool), resource_size_bytes (number), lod0_triangles (number), lod0_vertices (number), num_lods (number), has_valid_render_data (bool)

Example Request:

{ "jsonrpc": "2.0", "id": 15, "method": "editor.staticmesh.getNaniteStats", "params": { "asset_path": "/Game/Meshes/SM_Chair" } }

editor.staticmesh.getNaniteCVars

Queries key Nanite runtime CVars (r.Nanite.*).

Parameters:

NameTypeRequiredDescription
prefixstringNoFilter prefix (must start with "r.Nanite.", default "r.Nanite.")

Returns: cvars (object, map of CVar name to current value as string), count (number)

Example Request:

{ "jsonrpc": "2.0", "id": 16, "method": "editor.staticmesh.getNaniteCVars", "params": { "prefix": "r.Nanite." } }

editor.staticmesh.setNaniteCVar

Sets a single Nanite CVar. Name must start with "r.Nanite." for safety.

Parameters:

NameTypeRequiredDescription
namestringYesCVar name (must start with "r.Nanite.")
valuestringYesValue to set

Returns: success (bool), name (string), value (string)

Example Request:

{ "jsonrpc": "2.0", "id": 17, "method": "editor.staticmesh.setNaniteCVar", "params": { "name": "r.Nanite.MaxPixelsPerEdge", "value": "1.0" } }

editor.staticmesh.listNaniteMeshes

Finds all Nanite-enabled static meshes in the project.

Parameters:

NameTypeRequiredDescription
path_filterstringNoPackage path filter (e.g., "/Game/Meshes")

Returns: meshes (array of {name, path, triangle_count}), count (number)

Example Request:

{ "jsonrpc": "2.0", "id": 18, "method": "editor.staticmesh.listNaniteMeshes", "params": { "path_filter": "/Game/Meshes" } }