Exporting for Real-Time Engines

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.


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, or kept separate and joined together as a “transparent” set.

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

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