Asset pipeline (Blender → DAE)

11.1 Purpose

  • Specify authoring conventions for custom meshes and collisions using Collada (.DAE).
  • Keep exported assets predictable in scale, material assignment, collision, and LOD behavior.

11.2 Authoring standards

  • Scale: real‑world meters; Z‑up.
  • Transforms: apply scale/rotation before export.
  • Topology: clean normals, no non‑manifold edges for colliders, reasonable triangulation.
  • Pivots/origins: place them where the object should rotate, snap, or align in the World Editor.
  • Naming: use stable lowercase names for objects, meshes, and materials.

Before export, check:

  1. Object scale is applied.
  2. Rotation is applied where appropriate.
  3. Mesh faces point outward.
  4. Object origin is useful.
  5. Mesh material names match planned BeamNG material mapTo names.
  6. Collision and LOD helper objects follow the expected naming convention.

11.3 UVs and shading

  • Provide at least one UV set for materials/decals.
  • Maintain consistent texel density across assets of similar size.
  • Smoothing: coherent edge splits and normals for believable shading.
  • Avoid tiny UV islands that waste texture space or create visible mipmap artifacts.
  • Keep UV orientation consistent for trim sheets and tileable materials.

Normal maps are sensitive to tangent space and smoothing. If an asset looks faceted or inside-out, check normals, smoothing groups/edge splits, and tangent export before changing the material.

11.4 Materials and naming

  • Align mesh material names with mapTo names in main.materials.json.
  • Use PNG textures with relative paths; consistent prefixes and domains.
  • Reuse shared materials for modular kits and repeated props.
  • Avoid creating a unique material for every object unless the object really needs unique textures.

Example relationship:

Blender material name: garage_wall
BeamNG Material mapTo: garage_wall

If these names do not match, the mesh may render with a warning material.

11.5 Collisions

  • Provide simplified collision meshes for heavy assets (separate mesh or flags according to workflow).
  • Keep collider topology simple and watertight where applicable.
  • Avoid high-poly visible mesh collision for large props and buildings.
  • Use collision only where gameplay needs it.
  • Remove collision from tiny decorative objects where safe.

Good collision meshes are:

  • simpler than the visible mesh
  • stable for tires and vehicle bodies
  • split logically for large structures
  • not full of small decorative holes, bevels, bolts, or trim

Test collision by driving into and over the asset at normal gameplay speeds.

11.6 LODs

  • Author LOD1/LOD2 for large or detailed assets; reuse materials where possible.
  • Set switch distances to avoid visible popping at driving speed.
  • Keep object silhouette recognizable at distance.
  • Reduce material count as LODs get simpler.
  • Use far LODs/impostors for large repeated scenery where appropriate.

A useful rule is to reduce both polygon count and material complexity with each LOD step. Do not only delete small details; also simplify shapes that are no longer readable at distance.

11.7 Export (Collada .DAE)

  • Triangulate on export; include normals and tangents if using normal maps.
  • Export selection only; keep hierarchy clean and origins at logical pivots.
  • Export to the level’s art/shapes folder or a clear subfolder below it.
  • Keep source files in /source, not in the packaged runtime asset folder.

After export:

  1. Place the .dae in the level art folder.
  2. Open or reload the level.
  3. Place it as a TSStatic.
  4. Assign or create matching materials.
  5. Verify collision mode.
  6. Save and reload to confirm the asset persists.
The engine can create cached shape data such as .cdae, but authors normally keep working from source .dae exports and let the engine/tooling handle caches.

11.8 Validation criteria

  • Imported asset appears at correct scale/orientation.
  • Materials resolve correctly with PNG textures; no missing paths.
  • Collision behaves as intended; LODs switch unobtrusively.
  • The object can be saved, reloaded, and packaged without relying on local source files.

See also: TSStatic , Material JSON files , Cached Collada (.cdae) .

Last modified: June 24, 2026

Any further questions?

Join our discord
Our documentation is currently incomplete and undergoing active development. If you have any questions or feedback, please visit this forum thread.