Any one using both UE4 and Unity 5?

Started by
10 comments, last by Scouting Ninja 8 years, 4 months ago

I recently accepted a 3d modeling job for a indie developer that uses Unity 5, I don't have Unity 5.

I am wondering how different Unity 5 materials are from Unreal 4?

The last time I used Unity was just before Unreal was free, did it change a lot?

Most of the comparisons on the internet, between UE4 and Unity also appears to be this old.

I don't plan on using Unity for my own games, so buying it just to do work for indie developers feels like a waste.

because indie developers can't pay my normal fees I give them a discount, this means that paying for Unity to make models will yield little profit.

Is there a Unity material viewer I can use as a backup option?

Advertisement
Unity 5 has a "personal edition", which is free. That should work as a material viewer :)

And yes, the materials and shaders in UE4/U5 are very different.


Unity 5 has a "personal edition", which is free. That should work as a material viewer

Yes thanks, I believe this would be the best option. Although having a full game engine to correct materials feels redundant.

I have a obligation to the customer, so I will have to do it.

Is the materials the same for Unity 5 personal edition as the professional?

Past experience with Unity taught me that the payed option often included asset importing fixes, including material fixes.

Is the materials the same for Unity 5 personal edition as the professional?
Past experience with Unity taught me that the payed option often included asset importing fixes, including material fixes.

Yeah the free U5 is almost the same as the paid one now. The old free version of unity was terrible, lacking most features smile.png

The right way to set up your materials will depend on whether the game is using the 'standard' shaders, or if they've written their own. Their appearance will also depend on the kind of lighting/GI system the game has decided to go with... It would be safest to ask them to send you a unity scene that you can test your materials inside of.

Although having a full game engine to correct materials feels redundant.

It's pretty much required these days. Material textures / parameters are inputs to the shaders, so it's not usually possible to just re-use texture maps/etc that have been created for another game, because every game/engine/renderer/DCC uses different shading techniques. The best material workflow always includes viewing the final materials inside the game itself.


It's pretty much required these days. Material textures / parameters are inputs to the shaders, so it's not usually possible to just re-use texture maps/etc that have been created for another game, because every game/engine/renderer/DCC uses different shading techniques. The best material workflow always includes viewing the final materials inside the game itself.

I should have known.

Normally when color correcting or fixing albedo maps in Unreal I would turn off all the lights so I can get that flat look, to see where the dark spots are. I was hoping Unity just used the same rendering as Unreal.

I have noticed a few strange quirks of Unity's materials, pointing it out for other artist.

Although Unity has sharper reflections, the materials feel more like the old shaders than the new PBR shaders. Especially the gloss input.

When using standard normal maps I have to multiply by two to see scratches and small marks, easy to fix but strange. Doesn't happen with the detail normal map, I think it's related to texture size.

When I used a simple brick image for a base measurement, I found that the shadows from the photo didn't cause problems like in Unreal.

The emission material causes strange pixel blur on old monitors.

The materials appear to have the cubemap mapped to the normals, this causes a similar effect as matcaps. A nice peach fuzz effect on smooth surfaces, however highlights where meshes intersect.

The above are just a few things I have noticed, some could be because of my inexperience with Unity.

Has any one encountered any other strange material behavior in Unity?

Rendering is quite different in Unity 5.

As a background, I used Unity till this Fall, including Unity 5, and have switched now to Unreal Engine 4.8. I am using 3D Coat for sculpting, texture painting and Retopo / normal baking at the moment, which handles the differences between the two engines for me.

In the process I tried importing models baked for Unity 5 into UE4, and also the other way round. You will isntantly see lots of shading errors without adjustements

Normal Maps are especially standing out. They seem to follow different standarts (I guess DX vs OpenGL)... but I am not 100% sure it is only the normal map, could also be that the normals are claculated differently. Now, this could very well be a problem with the way 3D Coat exports models to FBX/OBJ, or with the import settings in both engines (which I usually leave at the standarts for UE4 with good results, but need careful tweaking in Unity 5)...

In the end following Hodgmans recommendation would be wise. Unity is MUCH more fickle when it comes to which models get rendered correctly and which exhibit all kind of weird shading errors than any other of the 3 big engines I have tested to date. It is certainly not the fire-and-forget process that is importing 3D models to UE4. Also, their PBR Rendering shaders ARE kind of different than what UE4 does. And then there are the different renderers... Forward, Deferred, Legacy deferred... each influencing how stuff looks aside from performance impacts. Whereas UE4 AFAIK just gives you deferred.

Unity seems to stick to incremental updates to their original engine from 2007(?), whereas Epic seems to rewrite the engines more or less from scratch, which might explain some of these oddities.

Get the free version of Unity 5, and test your model with the same setting as the client needs. Maybe let the client provide you with a "test setup", some kind of project that allows you to drop your model in, add it to a testscene that will then use the exact same postprocessing and camera settings as the final product to make sure your model does work with his settings.

That might not work 100% as there might be some things your client cannot share (like 3rd party assets from the asset store), but it is definitely worth talking to the client to see how you can best test your models for Unity 5 to give him a smoother expierience with your services.

EDIT: Oh, and VERY IMPORTANT:

There are thousands of different 3rd party shaders in Unity, especially the different PBR shading systems are still widely in use AFAIK. Some of these are quite different than the Unity 5 standart shader, so definitely make sure you ask your client what shader he/she uses exactly. That might make a big difference on how useful your model is to him/her

Thanks for all the advice.

I have confirmed that we will be using the standard shader in Unity.


Now, this could very well be a problem with the way 3D Coat exports models to FBX/OBJ, or with the import settings in both engines (which I usually leave at the standarts for UE4 with good results, but need careful tweaking in Unity 5)...

I don't think it's your exporter.

I found that black spots, the ones that normally form when you bake from a high poly to a inaccurate low poly, look like dents with the Unreal shader.

With the Unity shader they cause large black shadows, making the model unuseable, this happened with both Blender and Max. It just means that each mesh would have to be double checked before export.

I have found some similarities between Unity and Unreal shader:

The metal map is very similar, only needing a small contrast tweak between Unity and Unreal.

Unreal appears to use a Parabola curve with it's metal settings. Values lower than 0.25 and higher than 0.75 have a lager impact on the shader than in-between values.

Unity appears almost linear with it's metal map.

Specular, emission, Alpha is the same for both. It's just basic gray scale

The Unreal albedo map works for both. A small amount of shading can be added to the Unity albedo for effect.

Dark artifacts in the albedo causes problems with Unreal less with Unity.

Unreal uses a new kind of gloss map, that prefers precise values. Unity uses the old gloss map even with PBR materials, this means you can play around with the values more.

In Unity you can use the same texture for fallback shaders, from my experience no one has ever made textures for the fallback shader so it's a small advantage.

Because I use a lot off assets markets, I want to find a way to make models that look good in both Unreal and Unity.

At the moment I am busy, when I have time I will report my full findings and provide a example model that works with both game engines.

Interesting findings... I found it difficult to grasps the differences between the way Unity and Unreal interprets the input maps and models. What you didn't mention (don't know if this is also true for your models):

At least the models baked in 3D Coat, for Unity 5 vs Unreal Engine 4, seem to have a different normal / normal map setup.

- Normal maps baked for Unity look "flat". A flat surface will be a uniform color. The corresponding model unshaded will also shows a uniform lighting behaviour.

- Normal maps baked for Unreal look "rounded". Even on a flat surface, the normal map looks like a gradient. The corresponding model will show a similar lighting behaviour, leading to the same flat surface looking "rounded" (or smooth shaded).

In general, I found the UE4 renderer to be much more forgiving. Baking for Unity meant a lot of back and forth correcting baking errors. In UE4, apart from the occasional big error, things are pretty much looking good from the first try.

That, more than the broken PhysX Version gimped compared to the one in Unity 4 with little hope to fix it save writing your own physics engine and no 3rd party alternative, or the fact that performance of Unity 5 was still not that great and DX12 support not yet talked about, made me switch engines in the first place. Having to spend even an additional 3 hours per model fixing stupid baking errors would add up to A LOT of additional time when not having to do that thanks to UE4.

Pretty much what I liked about the Esenthel Engine, a Kickass renderer that will just take any input and make it look as good as possible... just this time in a big commercial Engine with a large community.

Anyway, best course of action would be to check if the tool you are using for baking can use presets for the different Game Engines. 3D Coat does that for me, making it possible to create the sculpt and lowpoly mesh, teawk the mesh until the bake looks good in Unity 5, then go back, bake the normals and mesh for both Unity 5 and Unreal Engine 4... still leaves the other maps, but as the diffuse/albedo pretty much should be the same, I guess you only have to worry about the metallicity and roughness .... given that there are still many people that went the gloss/colored specular path the standard shader in Unity 5 also offers for PBR, you will most probably want to spend some more time here anyway.

[Double post]


At least the models baked in 3D Coat, for Unity 5 vs Unreal Engine 4, seem to have a different normal / normal map setup.
- Normal maps baked for Unity look "flat". A flat surface will be a uniform color. The corresponding model unshaded will also shows a uniform lighting behaviour.
- Normal maps baked for Unreal look "rounded". Even on a flat surface, the normal map looks like a gradient. The corresponding model will show a similar lighting behaviour, leading to the same flat surface looking "rounded" (or smooth shaded).
The flat color( 0.5, 0.5, 1) indicates that your baking tool is adding virtual loops, or using a different kind of smooth shader or no smooth shader. This produces a normal map that looks like a Gray scale to Normal map image.
You would get the same effect if you used unrealistic sharp bevels on your model.
The advantage of this is that it prevents shading artifacts like black spots, the disadvantage is that the shading often can look flat and reveal polygons.
I agree that Unreal is much more forgiving when importing normal maps. Unity has always been a pain when importing, it's a bit better now but not by much.

Anyway, best course of action would be to check if the tool you are using for baking can use presets for the different Game Engines. 3D Coat does that for me, making it possible to create the sculpt and lowpoly mesh, teawk the mesh until the bake looks good in Unity 5, then go back, bake the normals and mesh for both Unity 5 and Unreal Engine 4... still leaves the other maps, but as the diffuse/albedo pretty much should be the same, I guess you only have to worry about the metallicity and roughness .... given that there are still many people that went the gloss/colored specular path the standard shader in Unity 5 also offers for PBR, you will most probably want to spend some more time here anyway.
The problem I am facing is that after I sell a asset it's out of my hands, I can no longer correct the model or textures. The only other solution I can think of is providing full texture sets for both Unity and Unreal.
Or I could sell Unity models and Unreal models on there respective marketplaces, however I hate both markets for different reasons.

This topic is closed to new replies.

Advertisement