I haven’t tried this process before, and was wondering if anyone could help. I’m making a game character model in Blender that will be exported to Unity. I was wondering if I would have to bake any specific type of map, and being unsure of what the differences between ambient occlusion, normal, texture and such are, to allow the lighting in Unity to be able to interact with the model materials and textures. Usually I would make an AO map and put it into Photoshop to make the texture, but since I heard AO maps are only for the AO lighting within Blender and doesn’t react with any other lighting, I figured it would be incorrect to use this mapping. Can anyone tell me what’s the correct way to go about texturing models for game engines?
Each rendering engine (in this case, Blender’s Internal, probably, and Unity’s real-time renderer) operates differently in terms of depicting surfaces of models. In general, they don’t share exactly the same methods/algorithms for generating the look of a model, so you usually have to adapt one to the other.
The main common ground between Blender & Unity (and other 3D packages and game engines) is that image-based textures create the diffuse portion of the surface appearance. Image textures that are UV-mapped in Blender show up the same in Unity, with the qualification that Blender’s and Unity’s lighting will be different, so the overall appearance will be somewhat different.
For Material properties like Specular, Emit, etc., some game engines have options for adjusting these, and most will allow the use of image textures to modify the look of these properties. But most game engines do not have the broad number of Materials options that Blender does, so you have to plan accordingly. In general it’s better to create materials that play to the game engine’s strengths rather than trying to get the game engine to match a Blender rendering. With some practice and experimentation it’s not too difficult to set up lighting and Materials in Blender which provide a reasonable match to what the game engine can produce, and this can become a useful working environment for developing game models.
Unity’s lighting is much more limited than Blender’s since it has to operate in real time. Best way to understand this is to do some testing, then set lights up in Blender than try to imitate the game environment, so as you develop your models you’re not planning something that won’t work in-game.
In general, the baking of lightmaps, AO maps, spec maps, etc., is a way of transferring the effect of a certain Blender rendering option to an image map that the game engine can incorporate to imitate that effect. How the game engine does this is usually specific to that engine, so you’ll have to do some research on the methods. A common example is normal maps (technically “tangent space” normal maps), that affect the surface appearance of a model. These can be baked in Blender, and used in Blender, and also in game engines, to increase the amount of apparent surface detail in a model without increasing its geometry density. But Blender’s implementation of normal mapping will likely be different than Unity’s (though the overall effect is the same), so you have to do some tests to see the results and adjust accordingly.
AO is a case where how the effect will be used is very important - you wouldn’t bake an AO map for a character model in exactly the same way you might for a game environment model, because one is dynamic, the other static. Same is true for such items as lightmaps, shadow maps, etc. Very usage-specific. But a common denominator is that these effects are frequently baked to image textures of one sort or another because in the game engine they are not dynamic properties. As image textures, they can be used in a number of ways in the game engine (see its docs for details) to imitate what could in Blender be a dynamic effect in an animation.
Learn what Unity can do all on its own in terms of materials, then adapt your Blender work to take advantage of these features.
Thanks so much! I appreciate the detail in your reply, I hope to put this information to good use!