Blender to Unity Modelling Process


 

 

I’ve been using Blender to create assets for my game in Unity. I’ve learnt a lot of do’s and don’ts over the years. Here’s a quick guideline of what I follow when I create my models.

This guideline covers important steps in the game model creation process.
This doesn’t cover rigging (for animating) but that integrates into this process.
This assumes you are familiar with Blender and it’s terminology. If not, the terms are laid out so you can familiarise yourself.
This assumes the texturing process is done entirely outside of Blender, using software such as Z Brush or Substance Painter.


Modelling

  • Plan your design ahead of time. Mobile poly count ranges ~500. Desktop poly count ranges ~10 000.
  • Create model. Pretty self explanatory.
  • Fix geometry. Look into triangulate, make planar.
  • Smooth geometry. Look into subdivide, edge crease, dissolve face, edge loops.
  • Shading style. Helpful to get smooth shading and save on poly count. Look into: shade flat/smooth, auto smooth. I avoid edge split because it gets messy quick.
  • Apply scale. Is your model accurately sized in real world values?
  • Alignment. Does the object’s forward align with blender’s forward? Whatever faces Vector3.Forward needs to be facing blender’s forwards.
  • Don’t apply mirror & array modifier. If you apply them now, duplicated objects won’t automatically share the same UV space.
  • Apply mirror modifier. To prevent your texture creating a noticeable seam at the centre, separate your ‘centre’ mesh from the parts you want mirrored. 
  • Finalise model. Changes after this point may require redoing processes ahead.

UV Unwrapping

  • Apply rotations and scale. Fixes UV island scales and makes everything proportionally sized.
  • Mark seams. For UV unwrapping. Takes a bit of skill to create good seamless UVs.
  • Unwrap. I recommend margins 0.03 or above. You should only have one texture map unless you specifically require more.

For unwrapping, I recommend using the Texture Atlas plugin already included with blender. It automates the following steps, which were quite tedious.

  • Assign separate objects into vertex groups. Makes it easier to separate later.
  • Join everything into one object. When we unwrap, all UVs are organised into the same texture map.
  • Separate objects by vertex groups. Separated objects now share the same texture maps, but are separate meshes now.
  • Remove excess modifiers. When we join every object, modifiers may duplicate themselves onto other objects. Remove them.
  • Apply locations. When we join every object, the pivots change so we need to reapply them. If an object should pivot on an edge, set it there.

It’s not perfect though, the automatic unwrap will add it’s own erroneous seams. Much like the Smart UV Project function.

  • Check UVs. Do this by setting UV image to an image (colour grid), and set rendering to textures.
  • Finalise UVs. If you want to change something about the UVs, now is the time.
  • Detail Mask. If you want to apply a ‘skin’. Select the UVs you want to show details in the image editor, and Export UV Layout.

 


Cleaning Up

  • Set vertex groups. When coming back to make small changes, you’ll save time and thank yourself.
  • Set pivots. So wheels spin at their centre, etc. Look into: geometry to origin, snap to selected, geometry to cursor.
  • Apply modifiers. Mirror & Array will get wonky if their pivots are changed. So set them back and then apply. This is somewhat irreversible, so save a copy.
  • Finalise. At this point, you should be ready to export.

Exporting

  • Don’t apply locations. Will mess up your pivots (they are the same thing).
  • Rotate X by -90. Apply rotation. Rotate X by 90. DON’T apply rotation. Fixes Unity’s orientation so everything will be 0,0,0.
  • Don’t apply scale. If you followed these steps, your scale shouldn’t change. But doesn’t hurt to reapply.
  • In FBX export, set FBX scale ignore (hat icon). Fixes Unity’s scaling so child objects will be 1,1,1.
  • Export as FBX. I might’ve missed some other export settings.
  • Import into Unity. 
  • Are any faces inverted?
  • Are children rotations 0,0,0?
  • Are children scales 1,1,1?
  • Are pivots placed at intended locations?
  • Are materials showing up appropriately?
  • CONGRATULATIONS YOU MADE YOUR VERY OWN MODEL.

Extras

  • If opting for material colour palette style instead of textures, set (sub) materials on the mesh.