Decentraland_Building_Onboarding
Decentraland Onboarding Asset Creation (Blender)

1. Assets

  • first off, an overview of general rules that apply to any game ready-models

Geometry:

  • Mesh consists only of triangles or quads (game engines can triangulate them automatically if the quad is very stretched, tris is always the better option) NO NGONS! (face with more than 4 vertices) -> render engine cannot process them correctly
    • Modeling with tris is not recommended because it's very difficult to manipulate
    • So, model in quads as clean as possible and triangulate mesh later if necessary
  • As lowpoly as possible! -> start simple, you can always add more detail later, removing detail later is not easy
  • Preferably work with edge loops for better edge flow
  • You can shade either flat or smooth
    • Arrange auto smooth for how it works for your model
    • By adding sharps you can let specific edges render flat instead of smooth but keeping the rest in smooth
  • Delete faces that are not going to be seen -> cranks up the poly count!
  • Exceptions for animated and weight-painted objects: parts where joints are will need more vertices!

Textures:

  • Maximize use of UVspace, wasted texture space is wasted memory
  • Textures are always in power of 2 (1024x1024, 4096x4096)
  • UVs face size should be appropriate for the face size of the object
  • Usually, a single object has a single material that can contain multiple texture maps, typical PBR would be: albedo/diffuse, normal, roughness/glossiness, specular, metallic -> texture maps explained: https://help.poliigon.com/en/articles/1712652-what-are-the-different-texture-maps-for
  • In blender you can give the material e.g. roughness a value between 0 and 1, this applies to the whole object, only through a texture map you can give specific parts this value
  • NO textures that actually change an object's geometry or are procedural!
  • The rest of the pipeline depends heavily on which type of engine you create for, what type of asset you're doing etc.
    • e.g. rigged first-person arms will have more vertices and much higher res textures and multiple texture maps than a static book prop which will just lay on a table for decoration

1.1 Meshes

  • Decentraland specifics:
    • Objects have bounding boxes around meshes (not the vertices in the meshes themselves)
    • If these stick out of the parcel (f.e. rotation at a corner) they will be marked red -> https://docs.decentraland.org/3d-modeling/meshes/ explains this in more detail, but has not been a problem yet!
    • If transforms are applied anyway, bounding boxes will not be overly big and rotated in the right direction
    • 10.000 Triangles for all models PER Land (2 Land = 20.000, 4 Land (2x2) = 40.000 etc..)
    • Since there can only be 300 Meshes and 200 Entities per Land, it is preferable to make every asset mostly consist of one mesh (exceptions can be made, but need to keep an eye on the mesh count)
      • Entities: the thing you export as .glb/.gltf (you can export multiple meshes that are then fixed in one file/entitiy)
      • Mesh: a single object/geometry in blender

1.1.1 Collider

  • To give your entities colliders, parent a mesh as a child of that object
    • Naming convention should be: name_collider
    • You can either duplicate your object to make the collider exact or use primitive shapes that cover all vertices -> last one is probably more efficient, but also depends what the mesh will be used for in your scene!
    • In this example, it makes sense to use a more primitive and covered shape for something like a statue because there will be no possibility to go into it or nearer to the middle
    • For something like a chair you want to jump/sit on it so more detailed collider is needed
  • Make sure to uncheck the visibility before exporting!

1.2 Textures/Materials

  • Textures and materials were till now the most complicated, there has been alot of problems with emission and transparency, as well as figuring out texture size and which workflow to texture with, in the following all known possibilities will be explained

1.3 Export

  • Models need to be .glb/.gltf (for dcl-edit currently only .glb works)
  • 2 different possibilities:
    • Either export with embedded materials (covers then the respected material slots for the scene, regardless if you use the same material for multiple objects, it will always be counted as an additional material)
    • Or export a .gltf with external texture file -> this way you can reference one single material to multiple objects and save material space!
  • How to export:
    • ALWAYS put mesh and collider in scene origin -> [shift][s]
    • Then apply all transforms [Strg][A] -> all values need to be 0!
    • To make sure the colliders are included:
      • Don't just export the main mesh, even when the collider is a child
      • DO export the whole thing, you need to select every mesh AND all the children like this:
Copy link
On this page
1. Assets
Geometry:
Textures:
1.1 Meshes
1.2 Textures/Materials
1.3 Export