Show pageOld revisionsBacklinksFold/unfold allBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Exporting for Real-Time Engines ====== ===== 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. ---- ===== 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 + N'' to 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” <WRAP round important 30%> **IMPORTANT:** Leave this Image Texture node selected (highlighted). This tells Blender where to bake. </WRAP> ==== 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''. <WRAP round important 30%> **IMPORTANT:** Save the image afterward in Image Editor. If it's not saved to disk it can be lost. </WRAP> 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: - Emissive potion bottles - 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, or kept separate and joined together as a "transparent" set. 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 ----- 3d/export-runtime.txt Last modified: 2026/03/13 14:57by mh