Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| 3d:export-runtime [2026/03/04 09:32] – [Large sets of little objects] mh | 3d:export-runtime [2026/03/13 14:57] (current) – [2. Non-Emissive Bottles / Jars] mh | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Exporting for Real-Time Engines ====== | ====== 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 ===== | ===== Baking Textures ===== | ||
| Line 139: | Line 176: | ||
| * Export | * Export | ||
| - | ====== Large sets of little objects ====== | + | ===== 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, | ||
| + | |||
| + | * Static decorative elements can be merged per spatial section to reduce node count. | ||
| + | * Think in terms of: Bookshelf_Section_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/ | ||
| + | |||
| + | 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 " | ||
| + | |||
| + | 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 | ||
| - | | + | ----- |
| - | - **Group by Logical Zones** not By Asset Type Think in terms of: Bookshelf_Section_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. | ||