Modelling for unity confuses me
Lets say i want to make a space ship model for unity.Assume i am using blender. I have to make the model first then i have to apply textures and uv maps and other things. The thing that confuses me is should i only model the shape and apply materials and textures on unity, or should i make everything in blender and import?
If i apply them on blender, would it effect the performance? Is it better to import naked models and apply materials in unity later?
What is best modelling steps for performance? I am not doing any fancy stuff that will effect the performance but i want to do it the most correct way.
2d is crystal clear, applying 2048px atlas'es over sprites. Easy.
But 3d modelling is very wide area. I am also open for any information or advice related 3d modelling, not just the topic. Thanks for any help.
Answer by JVene · Aug 28, 2018 at 07:17 PM
I've not used Blender myself, I use 3D Studio, but the issues are similar (the specifics may differ). The one thing that never imports exactly is materials. There's a good reason behind it, and a disappointing absence of a solution. While I can't say with any authority about Blender, 3DS Max and Maya (both related) have complex and a wide variety of materials intended for their rendering systems, and there are optional (3rd party) renders that can be added, which can bring their own material systems. None of those material systems are understood by Unity. Only the basic parameters of materials are recognized by Unity, and even then the Unity renderer can't be expected to behave like the renderer in the modeling tools (the modeler isn't a real time system). This means the results on the modeler (when it renders an example) will not appear exactly as it will in Unity.
The only ideal way 'around' this would be a plugin for the modeling tool which gives that software a full, complete and identical material system that Unity understands (essentially, importing that rendering portion of Unity, and creating Unity specific materials in the modeling tool). Such a solution is possible, but at this point I don't know of any for Unity, but you may well search for any Unity plugins for your modeling software, as one may become available (or one is available I've not heard of).
In all other cases, where the modeling software uses it's own materials, the most you can expect is that basic material details are all that will transfer, and that will differ based on the modeling tool's likeness or similarity of the basic material parameters. In 3DS, for example, the basic parameters of color and texture images (of some few basic image formats and types) do come through the export process (to an FBX file in my case), and are imported into Unity.
Among the most important parameters that do make it through the process of export to FBX and import into Unity are texture coordinates. This may be the most important material oriented task you'll perform in the modeling tool, so it is fortunate this works fairly well. That is to say, if you position a texture specifically on a model, scale it, etc., Unity will import and correctly present those mapping coordinates correctly. There are exceptions. In 3DS (and I can't say much about this from Blender), the nature of mapping channels does not make it through exactly. That is, if I have multiple materials to apply to an object, and place them on separate channels in the mesh, Unity does not understand the method 3DS Max specifies the channels. What does work, however, are material ID's (in other words, there are two sets of parameters I apply in Max, and only one of them makes it through to Unity). I can make it work, but there are several such "squeeze and force fit" processes I had to discover through trial and error
Another important annoyance is with textures with alpha channels. The method Unity uses to specify materials with alpha channels differs from the modeling tool, so while I can get such a texture working well in 3DS Max, there does not appear to be any means of importing that to Unity. Unity is very particular about the modeling parameters and texture formats to make this work correctly in Unity, and the modeling tools don't use those same methods, and there's no way to communicate that to Unity. I have to apply those textures in Unity, and I find no alternative.
Bottom line, there are some limited material parameters that make it from the modeling software to Unity, but you will likely have to work through the materials within the Unity editor and re-apply textures (and select specific rendering options, like selecting shaders) within Unity.
This is also related to the fact that shaders are an important aspect of Unity materials and special effects. The 3D modeling tools do not use the same shader technology (if they do so at all, some materials in 3D tools don't have any concept of shaders while others do). The more complex the material or effect, the more likely that you'll have to perform that material application inside Unity.
We can hope for and look forward to some plugins for the modeling tools which give the entire Unity material system to those modeling tools through plugins, but until one appears, materials in the modeler are simply not compatible with material specifics of the Unity game engine.