This is an old revision of the document!
Exporting for Real-Time Engines
Baking Textures
Step 1 – Apply All Modifiers
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).
Step 2 – Join Into One Object
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 Mode →
A→M→ By Distance - With everything still selected
SHIFT + Nto recalculate normals
Step 3 – UV Unwrap Properly
Now that it's one object:
- Edit Mode →
A→U→ Smart 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
Step 4 – Create Bake Target Texture
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.
Step 5 – Bake Maps
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
Step 6 – Create a New Game-Ready Material
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.
Step 7 – (Optional but Recommended) Apply Transforms
- Object Mode →
Ctrl + A→ Apply 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.
Correct Modifier / Boolean Order
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
Large sets of little objects
General Principles
- 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.
Bottles / Jars Workflow for Real-Time Export
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.
1. Emissive Potion Bottles
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.
2. Non-Emissive Bottles / Jars
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
Final Export Checklist
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
Scene Categories
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.
Result
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. ```