PromptProp

How-to · Cleanup

Collision Meshes for AI-Generated Props

Never use a dense AI mesh as collision. Make a simple proxy and use Godot's import suffixes, Unity's 255-triangle convex limit or Unreal's UCX_ naming.

Give every AI-generated prop a separate, simple collision shape instead of its visible mesh: primitives for most props, a convex hull where the shape needs it, and a trimesh only for static level geometry. Each engine documents its own rules for supplying a proxy, summarized below.

Version note. Engine names come from the Godot 4.7 (stable) docs, the Unity 6.0 manual and Epic’s FBX pipeline page, all read 2026-11-08. Epic’s pages are sometimes returned partially and mix version numbers. We have not run these steps ourselves; The one Blender step cited, Object > Apply > Scale, was read on the manual’s 5.2 release branch; our sources give no Blender menu path for creating the proxy shape itself.

Why not use the visible mesh

A raw AI export can be very dense; StraySpark, for one, reports a Meshy export of 271,174 triangles. Collision rarely needs that detail, and engines limit some shapes. Unity’s Mesh Collider, for instance, restricts Convex colliders to 255 triangles (Unity 6.0 manual). Concave (trimesh) shapes are limited in Godot to static bodies: its docs say concave shapes are for StaticBody or static RigidBody, and recommend primitives for dynamic bodies.

Making the proxy

Do this after the final scale is set (scale, pivot and axis fixes). Options, in order of preference for props:

  1. Primitives. A box, sphere or capsule roughly matching the prop. Cheapest, most stable.
  2. A hand-built low-poly hull. Model a coarse shape around the prop in Blender, using the visible mesh as a guide.
  3. A decimated copy. Duplicate the cleaned mesh and reduce it hard with the Decimate modifier in Collapse mode (the Ratio setting), then check it still covers the shape. See making LODs for Decimate options. This is quick and can leave holes or spikes; inspect it.

Avoid using any of your LOD meshes as collision; they are tuned for appearance.

Godot

  • Name suffixes on a mesh in the imported scene: -col (trimesh), -convcol (convex), -colonly (collision only, no visible mesh), -convcolonly (convex decomposition). Separators can be -, $ or _, and matching is case-insensitive.
  • Advanced Import Settings: Generate > Physics adds a PhysicsBody3D parent. Body Type: Static (StaticBody3D), Dynamic (RigidBody3D) or Area (Area3D). Shape Type shown in our source: Trimesh (static only) and Decompose Convex, with Decomposition > Advanced and a Precision control.
  • In the editor (mesh instance menu): Create Single Convex Collision Sibling (Quickhull), Create Multiple Convex Collision Siblings (V-HACD), Create Trimesh Static Body, Create Trimesh Collision Sibling.
  • The collision docs advise against translating, rotating or scaling a CollisionShape node, to keep the engine’s internal optimizations, so fix scale in Blender and re-import rather than scaling the shape in the editor. They call primitives the most reliable choice for dynamic objects, concave shapes “the slowest option but also the most accurate,” and say a single convex shape cannot describe something hollow such as a box with an inside.
  • Concave shapes work only inside StaticBody nodes; they do not work with CharacterBody or RigidBody unless the RigidBody’s mode is Static.
  • Import-level detail: AI 3D models in Godot.

Unity

Mesh Collider properties: Convex, Is Trigger, Provides Contacts, Cooking Options (None, Everything, Cook for Faster Simulation, Enable Mesh Cleaning, Weld Colocated Vertices, Use Fast Midphase), Material and Mesh. Convex is capped at 255 triangles. Non-default Cooking Options need a readable mesh (isReadable true). The page does not state rules for non-convex colliders on Rigidbody objects, so check the Rigidbody docs. It does say that for moving or dynamic objects primitive colliders can be more efficient because they offer more stability and better-performing physics simulation. The model importer has a Generate Colliders option (named in the Unity 2019.4 manual; we did not confirm it for 6.0); see AI 3D models in Unity.

Unreal

In an FBX, name the collision mesh with a prefix that matches the render mesh name: UBX_ (box), UCP_ (capsule), USP_ (sphere), UCX_ (convex hull). Example from Epic: UCX_Tree_01_00. The name must match the render mesh. Boxes and spheres do not work on non-uniformly scaled meshes. If a file has several meshes with custom collision, only the first mesh’s collision is imported. The pipeline uses FBX 2020.2. Epic’s shape definitions: a box must be a regular rectangular 3D object (do not move its vertices to deform it); a capsule must be a cylinder capped with hemispheres and the page suggests about 8 segments; a sphere also suggests about 8 segments and is converted to a true sphere, used only for rigid-body collision and zero-extent traces; a convex hull can be any completely closed convex shape. Number extra hulls UCX_Tree_01_00, UCX_Tree_01_01 and so on. Multiple hulls give the best results when they do not intersect, and Epic warns that breaking a non-convex mesh into convex primitives “is a complex operation, and can give unpredictable results.” The page publishes no hull vertex limit. Epic’s FBX options reference describes Auto Generate Collision as generating collision for the static mesh, skipped when the FBX already contains custom collision; Generate Missing Collision was not on that page. See AI 3D models in Unreal.

A procedure for a Blender-made proxy

The sequence follows the cited engine rules; the shape-creation step is your own modeling.

  1. Finish scale first: select the cleaned prop and use Object > Apply > Scale (Blender 5.2 manual, Object Mode). Epic notes that boxes and spheres do not work on non-uniformly scaled meshes, and Godot advises against scaling shapes after import.
  2. Model the proxy as a separate object in the same position, with origin matching the visible mesh. Keep it closed and convex for a hull; keep each hull at 255 triangles or fewer if Unity convex colliders are the target.
  3. Name it for the engine: UCX_<RenderMeshName>_00 for Unreal (the render mesh name must match exactly), or add -convcolonly to the object name for Godot (a convex-decomposition shape with no visible mesh) or -colonly for trimesh. For Unity there is no naming rule on the page we read; assign a Mesh Collider with Convex, or a primitive collider, after import.
  4. Export both objects in one file. Unreal imports only the first mesh’s custom collision if the file holds several render meshes, so export one prop per file.
  5. Check in the engine: Godot’s Advanced Import Settings Generate > Physics, Unity’s collider gizmo, Unreal’s collision view.

Troubleshooting

These are causes implied by the cited rules, not measurements.

Symptom Likely cause Fix
Unreal ignores your UCX mesh Name does not exactly match the render mesh, or it is not the first mesh in a multi-mesh file Match names; export one prop per file
Unreal box or sphere is the wrong size The mesh is non-uniformly scaled Apply scale, or use a UCX hull
Unity will not let a mesh collider be Convex or rejects it Mesh exceeds 255 triangles Reduce the proxy below 255 triangles
Unity Cooking Options error or warning Non-default Cooking Options need a readable mesh Turn on the model importer’s Read/Write Enabled setting (name from the Unity 2019.4 manual; not checked in 6.0)
Godot RigidBody falls through the floor with a trimesh Concave shapes are for static bodies Use primitives or convex pieces on dynamic bodies
Godot convex shape fills a hollow A single convex shape cannot be hollow Create Multiple Convex Collision Siblings or Decompose Convex

What goes wrong

Likely causes, from general physics-setup practice rather than the cited pages:

  • Collision floats or sinks: the proxy’s scale or pivot probably does not match the visible mesh. Fix before building the proxy.
  • Prop slips through the floor: the proxy may be too thin or have holes.
  • Characters and deforming props: a static proxy does not follow an animated mesh. That is outside this page’s scope (rigging).
  • A convex hull fills in a concavity (a mug handle, an archway). Godot’s Create Multiple Convex Collision Siblings and Decompose Convex options split a shape into several convex pieces.

When to stop

A proxy is done when the prop behaves right in play: it rests on surfaces, can be walked around, and does not cost frame time. Whether convex or trimesh performs better on noisy AI meshes has not been measured here.

This page is part of the Cleaning Up AI 3D Models section.

Sources

  1. Godot documentation: Node type customization using name suffixesPrimary · read 2026-11-08
  2. Godot documentation: Advanced Import SettingsPrimary · read 2026-11-08
  3. Godot documentation: Collision shapes (3D)Primary · read 2026-11-08
  4. Unity 6.0 manual: Mesh ColliderPrimary · read 2026-11-08
  5. Unreal Engine documentation: FBX static mesh pipelinePrimary · read 2026-11-08
  6. Unreal Engine documentation: FBX import options referencePrimary · read 2026-11-08
  7. Blender manual source (5.2 release branch): ApplyPrimary · read 2026-11-08
  8. StraySpark devlog (vendor of MeshPrep)Secondary · read 2026-11-08