3d:export-runtime

This is an old revision of the document!


Exporting for Real-Time Engines

Select all objects.

  • F3 → “Convert to Mesh”

OR

  • Object Mode → Object → Convert → Mesh

This applies all modifiers (including bevel) destructively.

If you prefer manual control: Select one → Modifier tab → Apply Repeat for all (less efficient).

Select all objects. Select one last as active (it becomes the base object)

Ctrl + J

All objects become one mesh.

Clean-up:

  • Check for duplicate vertices
  • Edit ModeAMBy Distance
  • With everything still selected
  • SHIFT + N to recalculate normals

Now that it's one object:

  • Edit ModeAUSmart UV Project

Adapt projection method if needed for geometry.

Adjust angle limit if needed.

Open UV Editor and confirm:

  • No overlapping islands
  • Good space usage

If you want optimal packing: UV → Pack Islands

Switch to Cycles (baking only works in Cycles).

In Shader Editor:

  • Add Image Texture node
  • Click New
  • Choose resolution (512 - 2048 or 4096)
  • Name it “Object_Baked_BaseColor”

IMPORTANT:

Leave this Image Texture node selected (highlighted).

This tells Blender where to bake.

Bake Base Color (Albedo)

In the Render tab (Cycles selected)

  • Open Bake section
  • Bake Type: Diffuse
  • Disable:
    • Direct
    • Indirect
    • Leave only Color checked
  • Press Bake.

IMPORTANT:

Save the image afterward in Image Editor.

If it's not saved to disk it can be lost.

Repeat the process for Normal Map:

  • Create new Image Texture → “Object_Baked_Normal”
  • Select that node
  • Bake Type → Normal
  • Space → Tangent
  • Bake

Repeat the process for Roughness (if needed)

  • Bake Type → Roughness

Create a clean Principled BSDF:

  • Plug BaseColor texture into Base Color
  • Plug Normal texture → Normal Map node → Principled Normal
  • Plug Roughness texture into Roughness

Remove all procedural nodes.

You now have a lightweight material that works in any engine.

  • Object ModeCtrl + AApply Rotation/Scale.

In most cases don't apply location if your object is not an independent asset placed at world origin.

GLTF likes clean scale = 1, rotation = 0.

Game engines prefer clean transforms.

For example when a window is applying a difference boolean on a wall for easy placement

Recommended Order:

  • Finish modeling
  • Apply Boolean on wall (for window cutout)
  • Clean topology
  • Apply bevel
  • Join bricks (if needed)
  • UV unwrap
  • Bake
  • Apply transforms
  • Export
  • Empties and helper hierarchies are modeling tools only → remove them before export.
  • Objects that require runtime control (animation, emission, transparency, etc.) should remain separate meshes.
  • Static decorative elements can be merged per spatial section to reduce node count.
    • Think in terms of: Bookshelf_Section_Accessories_01/Workbench_Accessories_01/BackWall_Accessories_01
    • Frustum culling works better by spatial grouping. If a bookshelf is off camera, the whole cluster disappears.
    • If everything is one giant “AllDecor” mesh, nothing gets culled.
  • Avoid procedural materials in exported assets → use simple BSDF or baked textures.

Two main bottle structures exist in the scene:

  1. Emissive potion bottles
  2. Non-emissive bottles/jars

Each type should be prepared differently for export.

Structure per bottle:

  • Bottle Glass (transparent material)
  • Liquid (emissive material)
  • Cork (opaque material)

Recommended mesh structure:

  • Merge Cork + Bottle Glass → single mesh
  • Keep Liquid as a separate mesh

Final object group:

Bottle_CorkGlass
Bottle_Liquid_Emissive

Reasons:

  • Liquid emissive strength will be animated later in Kinetic.
  • Glass transparency should remain separate from emissive geometry for proper rendering order.
  • Cork does not require runtime control and can be merged with the bottle.

Material rules:

  • Glass → simple transparent BSDF
  • Liquid → emissive material (shared datablocks per color if possible)
  • Cork → simple opaque BSDF

Important:

  • Do NOT merge liquids from multiple bottles together.
  • Each emissive liquid remains an independent mesh for animation.

Structure per bottle:

  • Bottle glass
  • Liquid (simple colored BSDF)
  • Cork (optional)

Recommended mesh structure:

  • Merge all parts together into one object.

Final object:

Bottle_Static

Reasons:

  • No animation required
  • No emissive control required
  • Transparency sorting remains stable because liquid and glass share the same object.

These static bottles can then be merged with other decorative elements in the same spatial section.

Example:

Bookshelf_Accessories_01
Workbench_Accessories_01

Before exporting to GLB:

  • Remove empties
  • Apply Rotation + Scale (not Location for placed scene objects)
  • Ensure materials are simple BSDF (no procedural nodes)
  • Verify shared materials use the same datablocks
  • Confirm normals are correct
  • Merge static decorative objects by scene section
  • Keep emissive bottles and other runtime actors separate

Objects in the scene fall into three groups:

Static scenery

  • books
  • static bottles
  • clutter
  • merged per section

Dynamic visual actors

  • emissive potion liquids
  • magical orbs

Hero props

  • telescope
  • cauldron
  • large standalone objects

Each category follows a different export strategy.


Clean GLB structure with:

  • low object count for scenery
  • independent meshes for runtime effects
  • shared materials
  • predictable pivot points

This structure is optimal for real-time engines such as Kinetic, Unity, or Unreal. ```

  • 3d/export-runtime.1773407057.txt.gz
  • Last modified: 2026/03/13 14:04
  • by mh