I got this character model that when opened in Blender (using the real time renderer engine Eevee) it looks very high quality and photorealistic. However, when I open it in Unity, it doesn’t look the same, it looks bad.
So I was thinking about it and my assumption is that the reason for that is that each 3D software has its own set of shaders that will build up the final look of the different kinds of materials.
And, if that’s the case, it means (I presume) that the exact “original look” of a 3D model can only be seen in the original software where the model was created and it will never look exactly the same in any other 3D software. In other words, a model created in Blender cannot look the same in Maya, or in Unity, or in Unreal etc and vice versa. Am I right? Thank you!
Materials are engine-specific, shader-specific. Different engines/shaders will end up drawing different materials in different ways.
Sometimes, you’re going to see engines and shaders stick to things that are somewhat standard. A good example of this is Blender’s PBR shader: it’s designed to standards that should be handled, more or less, the same way in a lot of different engines. (Not all engines.)
There are almost always going to be some materials that can be recreated perfectly between engines. There aren’t that many different ways to draw a 1.0 white emission material…
I mentioned shaders in addition to engines, because it’s not just that like models look a single way even in Unity. Unity lets you use different shaders. And whatever materials you make are going to look different in each shader. (That’s kind of the point.)
You should be able to get it to look pretty close, since Eevee is meant to mimic current gen game engine. If you reproduce your light settings and shader inputs pretty well. Some things to note about Unity:
1)The Standard shader requires certain inputs (I believe it was specularity or metallicity) to be put into an Alpha channel of color (Albedo) texture. Game engines are required to conserve video memory, so it is a waste to have a separate 24 bit map to do the same task 1 8 bit channel can. Newer Unity versions include Shader Graph (material node editor), that lets you plug whatever inputs into wherever you want, but you’ll still have to recreate your shader manually.
2)Standard shader also doesnt support many features of Principled shader, such as Subsurface or Clearcoat. Again, either Shader Graph or custom shader coding will be required.
3)Depending on your settings, Unity may downgrade the viewport display quality.
4)Import Settings of a texture asset need to be set up properly. Normal Map texture in Unity needs to be marked as Normal before it will work as intended; textures with Alpha channel have to be marked as Transparent, etc.