Skip to content

Modular Kit Auditor

Module: Modeling · Category: Assembly · Tool ID: ModularBuildingTool

A level-wide audit for modular kit-built environments. Catalogs every static mesh actor by type, flags placement issues (off-grid, unsnapped rotation, floating, overlapping), and estimates draw-call savings if identical meshes were converted to Instanced Static Meshes. Includes one-click batch fixes for the snap and rotation issues — all undoable.

Screenshot 01 — Hero shot — Tool open after a scan, showing populated Piece Library, Placement Issues with mixed severity, and ISM Conversion Estimates with savings numbers.


  • Final pass on a level built from a modular kit — catch every floating wall, unsnapped pillar, rotation that drifted to 89.9° instead of 90°
  • Performance budgeting — see at a glance how many of “the same” mesh you placed and what ISM conversion would buy you
  • Onboarding to an inherited level — get a manifest of every kit piece used and how often
  • Pre-cook validation — placement issues that pass visually still bake into nav-mesh and lighting holes
  • Don’t use this for non-kit levels — single hero meshes will all show as “1 placed” and clutter the report
  • Don’t use this to build kits — this is the audit side; placement happens in your level editor or a kit-spawning tool

  1. Open the EQLabs Hub and search for Modular Kit (or browse to Modeling → Assembly)
  2. Click the tool card to open the panel
  3. Make sure the level you want to audit is open

A scroll panel with one configuration section, two button rows, and three result sections. Top to bottom:

FieldWhat it doesDefault
Grid Size (UU)Modular grid spacing in Unreal Units. Standard kits are 100 or 200.100
Snap ToleranceHow far an actor’s position can drift before it’s flagged as off-grid (in UU).5
Rotation Snap (deg)Increment used to test rotation snap. 90 for square kits, 45 for octagonal, 15 for fine.90
ButtonBehavior
Scan LevelWalks every static mesh actor in the level, groups by mesh, builds the Piece Library with placement counts.
Validate PlacementRuns the off-grid / unsnapped-rotation / floating / overlap checks against the current settings.
Estimate ISMComputes draw-call reduction if every group of identical meshes were converted to Instanced Static Meshes.
ButtonBehavior
Fix All Off-GridSnaps every off-grid actor to the nearest grid point. Wrapped in a single transaction — Ctrl+Z undoes the lot.
Fix All RotationsSnaps every actor to the nearest rotation increment. Same undoable batch.
Copy ResultsFull audit (pieces + issues + ISM estimates) to clipboard as plain text.
Export ManifestSaves the Piece Library as a JSON manifest for team docs or pipeline tooling.

A list of every unique mesh found in the level with placement counts, socket counts, and triangle count per piece.

ColumnWhat it shows
MeshAsset name
PlacedHow many actors of this mesh exist
SocketsSocket count on the source asset
TrianglesTri count of the source mesh
ActionsPer-row actions (e.g., select-all-instances)

Single-click pings the mesh in the Content Browser. Double-click opens the Static Mesh editor.

A filterable list of every flagged actor in the level.

ColumnWhat it shows
TypeOffGrid / BadRotation / Floating / Overlap
ActorActor name
DescriptionSpecific values — e.g., “off grid by 7.3 UU”
ActionsPer-row Focus / Fix actions

Single-click selects the actor in the viewport. Double-click selects and flies the camera to it.

Per-mesh draw-call accounting:

ColumnWhat it shows
MeshAsset name
ActorsHow many separate actors exist
Current DCDraw calls today
ISM DCDraw calls if converted to Instanced Static Mesh
SavingsDifference (the win)

Screenshot 02 — Annotated panel — Full panel with each numbered region called out (settings, primary buttons, fix buttons, piece library, issues, ISM).


The tool operates on the active editor world. Load the level you want to audit before scanning.

Set Grid Size to match your kit. Most kits use 100 or 200. Rotation Snap at 90° is right for square kits.

Click Scan Level. The Piece Library populates with every unique static mesh actor and how many times each is placed.

Click Validate Placement. The Issues list populates. Use the search box to narrow by mesh name or issue type.

Screenshot 03 — Issues list with filter — Issues list filtered to "OffGrid", showing 5–10 entries with measured offset values.

Step 5 — Fix in batch (or review one by one)

Section titled “Step 5 — Fix in batch (or review one by one)”

Two paths:

  • Fast path: click Fix All Off-Grid and Fix All Rotations. Both are single transactions; Ctrl+Z reverses if anything looks wrong.
  • Careful path: double-click an issue to fly the camera there, decide per-actor whether to fix.

Click Estimate ISM. The third list populates with current vs. ISM draw calls. A high Savings column on a frequently-placed mesh is your highest-leverage optimization target.

Click Export Manifest to save the kit catalog as JSON — useful for team docs, asset tracking, or feeding a custom build script.


FieldRangeDefault
Grid Size (UU)1 – 10000100
Snap Tolerance (UU)0.1 – 505
Rotation Snap (deg)1 – 18090

Settings are persisted to [Project]/Saved/EQLabs/Settings/ModularBuildingTool.json.


  • In-panel results — Piece Library, Issues, ISM Estimates (all cleared on each new scan)
  • Level editsFix All Off-Grid and Fix All Rotations mutate actor transforms in-place. Mark dirty until Save.
  • Undo — every fix is wrapped in a ScopedTransaction. Ctrl+Z walks back. Batch fixes are a single undo step.
  • ClipboardCopy Results writes the full audit as plain text
  • JSON fileExport Manifest writes a kit manifest to disk (location depends on the platform’s file dialog default)

  • Run Scan before Validate — the Issues check needs the Piece Library populated first.
  • Snap Tolerance is a budget, not a hard limit5 UU is fine for most kits; tighten to 1 UU for archviz precision, loosen to 15+ UU for organic placements.
  • Floating and Overlap issues need manual fixes — auto-fix handles only off-grid translation and unsnapped rotation. Floating actors need a drop-to-surface, overlap needs human judgment.
  • ISM conversion is an estimate — it tells you the opportunity, not the recommendation. A 200-actor mesh with 200 draw calls today and ~1 draw call as ISM is a real win. A 5-actor mesh barely moves the needle.
  • Single-click on a Piece Library row pings the mesh asset; double-click opens the Static Mesh editor. On Issues rows, single-click selects the actor in the viewport; double-click flies the camera to it.

  • World-Scale & Traversal Checker — gameplay-side validation: can the character actually walk this layout?
  • Mesh Intelligence Dashboard — broader mesh analysis (stats, batching, pivots) outside the kit-placement context
  • Level Analysis Suite (Design module) — actor inventory, map size, room metrics

Report an issue with this tool

Opens our feedback form in a new tab with the tool name pre-filled.