DOCUMENTATION

Props that read as finished

How an AI agent should give a level real props instead of low-poly placeholders: when a blockout shape is fine, where finished props come from, and the checks that say a prop is done. A person can point their agent at this page, and it is written as instructions the agent can follow directly.

A Blueprint assembled from cubes, cylinders and spheres is a blockout. It is the right tool for deciding where things go and how big they are. It is never a finished prop, and a scene full of them reads as placeholder art however well it is lit. Agents fall into this because primitives are the fastest thing to place and every call succeeds. Success is not the bar. How it looks on camera is.

1. Decide what the prop is for

It is Use
Layout, scale, sightlines, gameplay space A blockout primitive. Name it BLOCK_<what> so it is obviously temporary, and list it for replacement
Anything a player or a camera will look at A finished prop, from step 2

Never present a blockout as the result. If finished art is not available yet, say in your report that the prop is a blockout.

2. Where a finished prop comes from, in this order

  1. Assets the project already owns. Search before you build: search_assets searches words in names, classes, folders and tags, and find_assets finds by class and path. Assets the user bought from a store or marketplace are licensed for use in a product and made by artists, so they beat anything assembled from primitives. If the project has no fitting asset, list what is missing and ask the user which asset to use or buy. Do not substitute a primitive silently.
  2. A modeled piece in Blender, when no owned asset fits. This suits a bespoke or story-specific prop. Model it properly (step 3), then move it across with mif_send_to_unreal, and back with mif_send_to_blender. Blender is the better modeler. Assembling a mesh out of primitives inside Unreal is not modeling.
  3. Never a generator if the project is non-generative. Text-to-3D or image-to-3D output is generated content, with the disclosure that comes with it. Ask before using one at all. See Using MifBridge without generative AI.

3. Modeling a prop properly in Blender

  • A real silhouette and detail at the scale it is seen. Bevel hard edges with bl_bevel_edges, or a bevel modifier through bl_add_modifier. Add the inset panels, lips, rims, seams and hardware the real object has. A bin has a lid lip, hinges, wheels with hubs and a pedal, not a box and a slab.
  • Topology that holds up. Check it with bl_mesh_quality, which reports thin walls, non-manifold geometry and stretched faces. Apply modifiers deliberately with bl_apply_modifier before export.
  • UVs and materials. Unwrap with bl_uv_unwrap so textures are not stretched. Use real-world-scale materials with wear: dirt in crevices, scuffs on edges, rust where water sits. A flat untextured color is a blockout look.
  • Kit pieces for repeated architecture. Walls, trims and railings come from bl_build_kit_piece, so a street is assembled from consistent modules and not from one-off boxes.
  • Real-world size. Measure the real object. A mailbox, a bin or a door is not guessed.

4. In Unreal

  • Turn on Nanite for large or dense meshes with set_nanite_settings.
  • Place props on the ground without interpenetration: snap_actors_to_ground, check_overlaps, and get_actor_bounds for size against neighbors.
  • Vary props with material instances (create_material_instance) for color and wear, so ten bins are not ten copies.

5. Done means seen

A prop is done when it has been looked at on camera. Use capture_camera from the player's height and distance, lit as the scene will be, and compare the result against a reference photo of the real object. If it still reads as a toy or a primitive, it is not done, however many calls returned ok.

See also Blender modeling and Blender and Unreal.