Blender To Unity



Believe me or not Unity 3D will be the next hype in the indie game industry and once you have discovered this tool and exported your 3D scenes to your iPhone, Android or even Flash (thanks to the new Molehill support) you will understand why. But that’s not the point of our discussion 😉 There is a topic that comes very often in forums concerning the export/import of textures in Unity 3D: how to export 3D objects or geometry made with Blender (up to 2.5) in Unity with textures? Yes with textures… The problem is that the workflow is not very clear and often textures are missing what is pretty annoying because once imported in Unity 3D you will need to assign them manually over the Material options… it’s a real pain but fortunately there is a nice solution…

Let’s get started!

Prerequisite:

You will need to download following software to be able to realize this tutorial:

  1. Do you use Blender with Unity? Then this is your group! Weather you are an artist, programmer, tech, or anything else, this is the place for all thing blender.
  2. Unity natively imports Blender files. This works under the hood by using the Blender FBX exporter. To get started, save your.blend file in your project’s Assets folder. When you switch back into Unity, the file is imported automatically and will show up in the Project View. To see your model in Unity, drag it from the Project View into the Scene.

You can control the scale of your object to sync with unity in blender by going to Scene - Units and making sure the Unit system dropdown is set to Metric. After exporting your model, click once on the prefab to see it in the inspector menu. Now, go to Model - Scene - Scale factor and set it to 1. Also make sure Convert units is on.

  1. Blender 2.5 (http://www.blender.org/download/get-blender/)
  2. Unity 3D 3.5 (will also work on 3.4.2) (http://unity3d.com/unity/download/)
  3. Autodesk FBX Converter (http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=10775855)

Good knowledge of UV Unwrap and modeling with Blender, but don’t panic you will be able to download the final textured files.

Step 1: Open Blender and build a simple 3D model

This won’t be the house of your dream, but just a simple grungy 3D house.

As you will see our house is composed by two objects: the roof (I’ve simplified it) and the building part that will contain windows and a door.

Select the object (let’s say the roof) and go into Edit Mode and UV Unwrap to get the single unwrapped texture. Depending on your model, you will need to put some seams in order to get a nice unwrap. Save the unwrapped parts as a picture and edit it in your favorite painting program like Photoshop.

Unity

How To Import Blender Asset Into Unity

You will have these two textures:

Texture 2: the roof (very simplified!)

Blender To Unity Units

After a few minutes of modeling and texturing, our nice house is finished. To polish your textures you can apply a small blur on it and put some shadows in order to give more volume. This trick is used in almost every 3D game you’ve played.

Note: For the purpose of this tutorial I have built a house with two textures. Why? To show one option you shouldn’t miss when exporting out of Blender.

Step 2: Export preparation

So now we have finished modeling our house. In order to simplify the export and the import into Unity 3D, I always remove the Lamp and the Camera from the Blender scene.

Notice the removed lamp and camera

Now go into Object Mode and select (Shift + Right Mouse Button) the roof and the building part. You have now selected each object of the scene thus forming the house.

All objects (geometries) are selected (roof and building)

Step 3: Blender export with the FBX format

I use to export my Blender under the FBX (http://en.wikipedia.org/wiki/FBX) format because it’s one of the input formats of Unity 3D along with 3DS and other ones. By the way FBX can also be used by the Microsoft XNA SDK (a framework for building XBox and Windows games) or even with the newest Adobe Flash Molehill frameworks (http://www.mixamo.com/adobe-molehill). If you are interested check this webpage: http://msdn.microsoft.com/en-us/aa937791, so you can import your 3D monster, house or whatever you’ve modeled with Blender directly into your game conception environment. Nice isn’t it?

Let’s continue: check that your have correctly selected all objects of your house. Go to File -> Export -> Autodesk FBX

A window will open and there are some parameters to check and uncheck. Get sky go on tv. Here is how your Blender export panel should look like:

FBX export settings in Blender 2.5

Blender To Unity

Allegro vivaldi 356 sheet music. Give a name to your file (house.fbx) and press on Export. Voilà now you have your house in FBX format.

Step 4: Autodesk FBX Converter

Addon

Now you will ask yourself: hey why do we need to reconvert our house.fbx in *.fbx format again with the Autodesk FBX Converter? Good question! The problem is if you are going to import it into Unity3D you won’t get any texture on your house and it will look grey and not very nice, because Unity won’t be able to know where your texture files are saved and will not automatically import them…

Oh… no texture in Unity 3D 🙁 Don't panic there's a solution!

What we are going to do with the Autodesk FBX Converter is to embed the media. To make it short we are packaging all our textures and our 3D model into one file. The advantage is also that you can send a colleague or a friend a single FBX file containing all the textures and the 3D model without having to worry about the texture’s paths, because they are directly embedded into the *.fbx file.

Blender To Unity Units

The technical background is the following one: if you open your house.fbx with a text editor you will see following lines that show the relative path to the textures.

Now open the Autodesk FBX Converter and drag’n’drop your house.fbx in the left side. You will see on the right side (Destination File) that there are some options. Check “Embed Media” and “FBX Save Mode” Binary. Press “Convert” and voilà you will get a brand new *.fbx and if you check the size of the converted file, it’s bigger. In fact you have embedded all the textures within this new *.fbx.

Settings in Autodesk FBX Converter with the options Embed media and Save Mode as Binary selected

Step 5: Importing into Unity

Now it’s a piece of cake: open Unity and create a new scene and project (you can import some other packages and assets later, like a Terrain or a Skybox later) and of course drag’n’drop your new house.fbx into the project panel. During the import you will see a small gauge with the name of the embedded media being imported (it’s a good sign that your texture will be correctly imported into the project).

Hurray, now you have your fully textured house imported into Unity. Nice isn’t it? We are almost finished: select the House object and in the Inspector panel under “Animations” select “Don’t import” and click on “Apply”.

Now you can drag’n’drop your House prefab into the scene:

Our house in Unity 3D. Notice that our texture files were directly converted into materials and correctly imported.

Blender to unity with textures

Step 6: Unleash your creativity with Unity 3D

At this point you have now successfully imported your Blender generated and created house into Unity 3D with all the correct textures. It’s time for some tweaking: we are going to add a Lamp (or better said a sun) a Terrain and of course a nice Skybox. Here is my final result (with some shadows and a tree. Use the Arrow Keys and your mouse to move into the scene):

Final house in Unity 3D with skybox and tree. Click on the picture to load the 3D scene with Unity 3D webplayer

Download the tutorial’s files

Liked this tutorial? Here are the important files (house.fbx, house.blend and the two textures) in a zip file: