Skip to content

Auto Warz — Blender Pipeline & Asset Standards

Document Type: Art & Audio Reference Version: 1.0 Status: Active Last Updated: 2026-03-24 Vault destination: 03_Art & Audio Parent Document: [01_Art Direction Document](<./01_Art Direction Document.md>) Related Documents: [05_Asset List & Delivery Specification](<./05_Asset List & Delivery Specification.md>) · [03_Prompt Library](<./03_Prompt Library.md>) · [01_Technical Architecture Document](<../02_Technical Documents/01_Technical Architecture Document.md>) Folder: 03_Art & Audio Consolidates: 02_Blender Pipeline Standards.md + 04_Blender Setup & Asset Standards.md (both superseded — delete them)


Table of Contents


Purpose

This is the single reference for all Blender work on Auto Warz. It covers scene configuration, mesh structure, naming, materials, export settings, and Godot import. Follow this guide for every building, character, and environment asset. There is no other Blender document — this supersedes all previous versions.


Blender Version

Use Blender 4.x (latest stable). The .glb exporter is most reliable in 4.x for Godot 4 imports. Do not use Blender 3.x — the GLTF exporter behaves differently and scale issues are common.


Scene Setup

Do this once when opening a new Blender file for any Auto Warz asset.

Units

  1. Open Scene Properties (camera icon in Properties panel)
  2. Under Units set:
  3. Unit System: Metric
  4. Unit Scale: 1.0
  5. Length: Meters

This makes 1 Blender unit = 1 metre = 1 Godot unit = 1 grid cell. A 2×2 building must measure exactly 2.0 m × 2.0 m at its base footprint. A 3×3 building is 3.0 m × 3.0 m. Never approximate.

Viewport Grid

  1. Open Overlay settings (top right of viewport, the two overlapping circles icon)
  2. Set Scale to 1.0 and Subdivisions to 2

This gives one large grid square per grid cell. Buildings should snap cleanly to grid squares.

Axes

  • X = right
  • Y = forward (into screen in top-down view)
  • Z = up

Godot uses Y-up. The exporter handles the conversion — do not rotate the scene to compensate.


Origin Point Rules

The origin point of every asset determines how Godot positions it on the grid. Getting this wrong causes floating buildings or misaligned grid snapping.

Asset Type Origin Point Location
All buildings Bottom-centre of the footprint at Y = 0
Resource nodes Bottom-centre of the mesh at Y = 0
Genesis bot Bottom-centre of the feet at Y = 0
Terrain tiles Bottom-left corner at Y = 0
Animated sub-meshes At the part's own pivot point (e.g. drill tip centre)
Particle empties At the intended emission point

How to Set Origin Correctly

  1. Select your mesh in Object Mode
  2. Move the mesh so its base sits at Z = 0 in world space
  3. Place the 3D cursor at the base-centre: Shift+S → Cursor to World Origin, then adjust if needed
  4. Object → Set Origin → Origin to 3D Cursor
  5. Verify in the N panel: Location should read (0, 0, 0) after origin is set

Mesh Structure

Every building is a collection of named child objects under a single root empty. This allows Godot to address individual parts for animation, colour changes, and particle attachment.

Root Object

Name: bld_[building_id] (e.g. bld_mining_drill) Type: Empty (Plain Axes) — this becomes the Node3D in Godot Origin: Bottom-centre of footprint at Y = 0

Required Child Meshes

Child Name Purpose Notes
body_mesh Main building body Always required
badge_mesh Thin flat band at base for faction colour Always required for buildings — Godot sets colour at runtime
emissive_mesh Glowing elements (indicator lights, screens, energy coils) Required if building has glow — separate material with emission

Optional Child Meshes

Child Name Purpose Notes
[part]_mesh Any animated part (e.g. drill_mesh, rotor_mesh) Origin must be at the part's pivot point, not the building centre
[part]_particles Plain axis empty marking a particle spawn point Named clearly, e.g. exhaust_particles, drill_particles

What NOT to Model

  • Module slots — modules are stacked programmatically in Godot at runtime. The building just needs a clean, flat rooftop. Do not model slots or recesses.
  • Connector ports — IoConnectors are placed as separate grid entities by the player. Do not add port geometry to buildings.
  • Health bars or UI elements — all UI is drawn by Godot's CanvasLayer system.

Naming Convention

All file and object names use lowercase with underscores. No spaces. No uppercase.

File Names

Type Pattern Example
Building bld_[id].glb bld_smelter.glb, bld_mining_drill.glb
Terrain ter_[name].glb ter_ground_base.glb, ter_rock_lg.glb
Resource node node_[id].glb node_metal_ore.glb, node_silicon.glb
Character char_[id].glb char_genesis.glb

Object Names Inside Blender

Object Name
Root empty bld_[id]
Main body body_mesh
Faction band badge_mesh
Glow elements emissive_mesh
Animated parts [part]_mesh (e.g. drill_mesh)
Particle empties [part]_particles (e.g. exhaust_particles)

Consistent naming is critical — Godot scripts reference child node names directly (e.g. $drill_mesh, $badge_mesh). Misspelling a name means the script silently fails to find the node.


Material Setup

Auto Warz uses flat colour materials only — no texture maps, no UV unwrapping required.

Standard Material

Each mesh surface gets one StandardMaterial3D equivalent in Blender (a Principled BSDF with all values zeroed except Base Color):

Property Value
Base Color The flat colour for this surface
Metallic 0.0
Roughness 1.0
Specular 0.0
All other properties Default / off

Use the building's category accent colour for the main body, and neutral greys/darks for secondary surfaces. See [01_Art Direction Document](<./01_Art Direction Document.md>) for the full category colour palette.

Emissive Material

For emissive_mesh surfaces:

Property Value
Base Color Same as emission colour
Emission Enabled
Emission Color The glow colour (e.g. amber for extraction, cyan for research)
Emission Strength 2.0–5.0 (adjust to taste — Godot will apply its own multiplier)

Badge Material

For badge_mesh:

Property Value
Base Color Any placeholder — Godot overwrites this at runtime
Alpha 0.85 (slight translucency)
Blend Mode Alpha Blend

Set up the translucency in Blender so it exports correctly, but the colour itself is irrelevant — the game sets it based on player faction.

Number of Materials Per Mesh

Keep it to one material per mesh object. Do not use multi-material slots on a single mesh — this creates extra draw calls and complicates runtime colour changes. If a part needs a different colour, make it a separate mesh object.


Export Settings

Export each asset as a separate .glb file. Never combine multiple buildings in one file.

How to Export

  1. Select the root empty and all its children (A to select all, or manually)
  2. File → Export → glTF 2.0 (.glb/.gltf)
  3. In the export panel, use these settings:

Export Panel Settings

Include tab: - Selected Objects: ✅ On - Visible Objects: ✅ On - Custom Properties: ✅ On (preserves metadata if any) - Cameras: ❌ Off - Punctual Lights: ❌ Off

Transform tab: - Y Up: ✅ On - +Y Up: ✅ On (Godot expects Y-up)

Data tab: - Apply Modifiers: ✅ On — apply all modifiers before export - UVs: ✅ On (even if unused — avoids import warnings) - Normals: ✅ On - Tangents: ❌ Off (not needed for flat colour) - Vertex Colors: ❌ Off - Textures: ❌ Off — flat colour only, no texture export

Animation tab: - Export animations only if the asset has a defined animation. Otherwise off.

Apply Transforms Before Export

Before exporting, always apply all transforms to avoid scale/rotation issues in Godot:

  1. Select all objects in the hierarchy (A)
  2. Ctrl+A → All Transforms
  3. Verify Location = (0,0,0), Rotation = (0°,0°,0°), Scale = (1,1,1) on all objects

If scale is not (1,1,1) after applying, the mesh will import at the wrong size in Godot.

Output Location

Save .glb files to the correct res://assets/ subfolder:

Asset Type Godot Path
Buildings res://assets/buildings/
Genesis res://assets/genesis/
Terrain res://assets/terrain/
Resource nodes res://assets/resources/

Godot Import Settings

After placing a .glb in the project, configure its import settings in the Godot editor.

  1. Select the .glb file in the FileSystem panel
  2. Open the Import tab (top of Inspector)
  3. Set these options:
Setting Value
Import As Scene
Root Type Node3D
Root Name (leave blank — uses filename)
Scale Mesh 1.0
Root Scale 1.0
Lighting Use scene lighting (no baked lightmaps)
Generate Shadow Meshes Off (cel-shader handles outline via inverted hull — M5.2)
Physics Off — collision shapes are added in Godot, not imported
  1. Click Reimport after changing any setting.

Verifying Scale in Godot

After import, drag the scene into the world and verify: - A 2×2 building occupies exactly 2×2 grid cells - The building base sits at Y = 0 (not floating, not sunken) - Child nodes (body_mesh, badge_mesh, etc.) are present and named correctly in the scene tree

If scale is wrong, the issue is almost always un-applied transforms in Blender. Go back and apply transforms, re-export.


Building Mesh Breakdown

Reference breakdown for common building types.

Mining Drill (2×2)

Object Type Notes
bld_mining_drill Empty (root) Origin at bottom-centre of 2×2 footprint
body_mesh Mesh Main drill housing, amber accent colour
drill_mesh Mesh Rotating drill head — origin at drill tip centre
emissive_mesh Mesh Amber indicator lights
badge_mesh Mesh Thin band at base
drill_particles Empty Placed at drill tip — dust/rock particle spawn point

drill_mesh rotates on its Y axis via AnimationPlayer or script in Godot. The origin being at the tip centre is what makes it spin in place.

Smelter (3×3)

Object Type Notes
bld_smelter Empty (root) Origin at bottom-centre of 3×3 footprint
body_mesh Mesh Main smelter body, orange-red accent
emissive_mesh Mesh Glowing furnace vents / firebox windows
badge_mesh Mesh Thin band at base
exhaust_particles Empty Placed at chimney top — smoke/heat shimmer spawn

Genesis Bot

Object Type Notes
char_genesis Empty (root) Origin at foot level Y = 0
body_mesh Mesh Main body
emissive_mesh Mesh Visor panel — colour driven by equipped skin
thruster_mesh Mesh Optional thruster nozzle if hover effect is added
thruster_particles Empty Thruster particle spawn point

No badge_mesh for Genesis — faction colour is not displayed on the character.


Animation Rigs

For assets with animated parts (e.g. Mining Drill):

  • Animate in Blender using Object-level keyframes (not armature/bone rigs) for simple rotations. This is simpler to import and drive from GDScript.
  • Name each animation clearly: drill_spin, rotor_idle, door_open, door_close.
  • Keep animation loops clean — first and last frame should match for looping animations.
  • Export animations with the mesh. In Godot, access via AnimationPlayer.

For complex character animation (future — Genesis movement), armature rigs will be needed. That is out of scope for Phase 1 buildings.


Checklist Before Export

Run through this for every asset before exporting. Do not skip.

Blender: - [ ] Unit system set to Metric, scale 1.0 - [ ] All transforms applied — Location (0,0,0), Rotation (0°,0°,0°), Scale (1,1,1) - [ ] Origin at bottom-centre of footprint at Y = 0 - [ ] All child objects named correctly (body_mesh, badge_mesh, emissive_mesh, etc.) - [ ] One material per mesh object — no multi-material slots - [ ] No texture maps — flat colour Principled BSDF only - [ ] Badge material set to alpha blend, ~0.85 opacity - [ ] Emissive material has Emission enabled with correct colour and strength - [ ] Animated part origins are at their own pivot points, not the building centre - [ ] Particle empties placed and named correctly - [ ] No cameras, lights, or other scene objects selected at export time - [ ] Export settings: Y-up on, Apply Modifiers on, Textures off - [ ] File saved to correct res://assets/ subfolder with correct naming convention

Godot: - [ ] Import settings verified — Scale 1.0, Physics off, Shadow Meshes off - [ ] Asset placed in world scene — base sits at Y = 0, not floating or sunken - [ ] Correct grid cell footprint — 2×2 building occupies exactly 2 grid cells - [ ] Child nodes visible in scene tree with correct names - [ ] badge_mesh colour can be changed via script (set_surface_override_material) - [ ] emissive_mesh glows at runtime - [ ] Animated parts respond to script control


Revision History

Version Date Changes
1.0 2026-03-24 Consolidated from 02_Blender Pipeline Standards.md and 04_Blender Setup & Asset Standards.md. Both source documents are superseded — delete them from the vault. Full pipeline from scene setup through Godot import. Added animation rigs section, badge material spec, and Godot import settings.