Jump to content
3DCoat Forums
Andrew Shpagin

Normalmaps compatibility test

Recommended Posts

Recently I made new settings related to normalmapping to improve compatibility with different software. And I really need your help to get best settings.

Please download the file, there is readme.pdf - instruction how to perform test. I think it will take 10-15 min per software. I very iterested in

Maya, Max, Blender, XSI, LW, Unity, Unreal Engine, C4D, ZB, any other package, different render and game engines.

After tests I will add normalmapping prests in preferences and in start menu (just list of software) - to choose compatibility settings esily.

http://www.3d-coat.com/files/CompatibilityTest.zip

Thank you!

Share this post


Link to post
Share on other sites

Hi Andrew.

 

Ok I started checking the test and noticed a flaw straight away in the tests.

 

The second stage test obj is not triangulated and therefore each program will triangulate the models differently on import .Objects should always be exported  triangulated if using a normal map to keep consistency.

 

In test 1 I have found neither max nor maya's normal map looks correct in 3DS Max's viewport ( using any of the viewport settings Nitrous or Legacy ) as both have very bad visible seams.

 

Although test1 using maya's normal map looks perfect in Unity (no visible seams at all)

 

and test 1 using max's normal map looks perfect in Unreal Engine 4

Edited by manticor

Share this post


Link to post
Share on other sites

On stage 1 the object should look perfectly on all engines except green channel should be inverted. So test (1) does not really helps to understand correct settings except requirement to invert green channel in normalmap. All other tests are more thin - they cover thin difference between engines.

In test (2) object is triangilated, so it determines tangent space method.

In test (3) object has quads, so it check tesselation method

In test (4) object has n-gont, so it check complex tesselation method.

I checked - test.obj form test (2) triangulates, so I see no prblem there.

Please show how object looks in Max. Is the difference between Maya's and Max's normalmaps just green channel inversion? Someone knows?

Share this post


Link to post
Share on other sites

I already did try inverting green on test 1 for max  either way they are not correct in max viewport display .Max doesnt use Mikk Tspace tangent basis as far as I know.Rendering the model also renders incorrectly using scanline or mental ray

 

http://s14.postimg.org/v37ttlp69/Max_Viewport.jpg

 

And as far as I know I dont think the difference between max and mayas tangent basis is just green inversion .I think there are more differences .I dont have maya here to confirm tho.

 

Softimage XSI is also displaying wrong.

 

Modo displays correctly using  this model

 

 

Also Unity does not use the Mikk tSpace tangent basis as I bake from Xnormal and I use this plugin for it when Im baking for Unity

 

http://www.farfarer.com/blog/2012/06/12/unity3d-tangent-basis-plugin-xnormal/

Edited by manticor

Share this post


Link to post
Share on other sites

I already did try inverting green on test 1 for max  either way they are not correct in max viewport display .Max doesnt use Mikk Tspace tangent basis as far as I know.Rendering the model also renders incorrectly using scanline or mental ray

 

http://s14.postimg.org/v37ttlp69/Max_Viewport.jpg

 

And as far as I know I dont think the difference between max and mayas tangent basis is just green inversion .I think there are more differences .I dont have maya here to confirm tho.

 

Softimage XSI is also displaying wrong.

 

Modo displays correctly using  this model

 

 

Also Unity does not use the Mikk tSpace tangent basis as I bake from Xnormal and I use this plugin for it when Im baking for Unity

 

http://www.farfarer.com/blog/2012/06/12/unity3d-tangent-basis-plugin-xnormal/

Are you sure that normal map used as tangent space normalmap, not as world space normal?

Maybe ou have idea how to change Maya's normalmap to get good render in test (1) in max?

Share this post


Link to post
Share on other sites

Hi Andrew

I have definately used it as tangent space ( option is shown on the screenshot ... although admitedly a little hard to see due to the resolution )

 

If the map was output as a local space normal map then it is possible to convert it to tangent space normal map using a freeware tool called  handplane3D http://www.handplane3d.com/  which outputs to most major tangent space formats ( including 3DS Max's).

Share this post


Link to post
Share on other sites

Xnormal provides feature smooth normals in HP slot (use exported normals, avarage and harden)

 

Will be -please- this option added at merge options ?

use exported normals is the hard edges/groups user set up on max/maya/softimage models

 

ty !

Share this post


Link to post
Share on other sites

Ok, Here is first test from  "CompatibilityTest / 1 folder"  Inverting of normal map color channels test.

 

Blender Cycles.

First I had to increase the polygon count of the test obj model as Cycles has a termination shading problem on very low polygon models. Using a sub-d modifier does not solve the problem. This does not effect the application of the normal map as I exported the same uv map. I did not export any new normal maps but use the ones from "1 folder". I only used 3DC to increase the polygon count of the obj model.

 

#Note" The texture coordinates node here in this case is not needed as by default the texture node will pick up on the uv set used by the obj model.

 

1. Maya.tga normal map. In Cycles I had to invert not only the green channel but the red channel has well to get the correct rendering for the normal map. This is shown in pictures with my node setup and the obj model.

 

2. Max.tga normal map. In Cycles only the red channel needed to be inverted for the correct rendering of the normal map. No picture shown here as the results are the same as above.

 

I will test the other folders today or tommorrow.

post-518-0-01090100-1407167247_thumb.png

post-518-0-42005500-1407167261_thumb.png

Edited by digman

Share this post


Link to post
Share on other sites

Test 1

 

Blender Cycles

Max post-24378-0-85124300-1407166919_thumb.j

Maya post-24378-0-23547800-1407166934_thumb.j

 

Both are wrong, and it makes no difference if green chanel is invertet or not.

 

Blender GLSL

Max post-24378-0-95571400-1407166982_thumb.j

Maya post-24378-0-18869200-1407166996_thumb.j

 

Max is wrong and Maya looks nice. Maybe if i invert Green chanel Max would looks good, too.

 

Substance Desinger

Max post-24378-0-63483800-1407167063_thumb.j

Maya post-24378-0-62869800-1407167075_thumb.j

Maya Invertet post-24378-0-44753500-1407167092_thumb.j

 

Maya version have to be invertet green chanel, without it is wrong.

 

Substance painter

Max (with DirectX Option) post-24378-0-88006400-1407167109_thumb.j

Maya (with OpenGL Option) post-24378-0-69248400-1407167120_thumb.j

 

Max or Maya have to importet with the correct option OpenGL or DirectX. This is an automatic Green Chanel invert as far as i know.

 

Test 3

Quad Tris with naive have a wrong obj, there are two objects inlcudet.

Or how to work with that both objects?

Edited by Malo

Share this post


Link to post
Share on other sites

@Malo. I am not sure why your normal maps are not correctly rendering using Blender Cycles. Is this test only from folder "1" 

I was able to get them to render correctly. I shared by a image my node setup.

 

Can you show your node setup?

Edited by digman

Share this post


Link to post
Share on other sites

Yes, that is folder 1 only.

And i only played around with green chanel, you wrote something about red, too. That i have not testet.

Anyway, befor that "update" it was only the green chanel if you want to use 3d coat normalmaps in cycles.

 

The other is, why is GLSL different from cycles, this makes no sense to me.

This is stupid for a softrware if the normalmap get calculatet in one area in this way and in an other area in that way.

 

My setup is nearly the same.

I only use a RGB Curve between Image Texture and Normalmap Node instead of that 4 Nodes that you use.

Edited by Malo

Share this post


Link to post
Share on other sites

Test 2

 

Blender:

Triangulatet Normal 4

post-24378-0-80962700-1407179947_thumb.j

 

Quad Tris Delaunay Normal 1

post-24378-0-45825500-1407180039_thumb.j

 

Naive have a buggy obj => Out of contest.

 

Ngon Delaunay Noaml 4

post-24378-0-07562200-1407180142_thumb.j

 

Ngon Naive Noaml 4

post-24378-0-76741500-1407180146_thumb.j

 

Substance Painter/Designer

Triangulatet Nomal 4

post-24378-0-45992200-1407180213_thumb.j

 

Quad Tris Delaunay Normal 2

post-24378-0-48904500-1407180219_thumb.j

 

Naive out of contest see above

 

Ngon

post-24378-0-83432600-1407180224_thumb.j

Out of contest, Both programms dont support Ngons.

Edited by Malo

Share this post


Link to post
Share on other sites

For Andrew

Based on Substance Painter/Designer, this is for me much more important then Blender.

 

Result of tests:

Max

Triangulated -> norm4.tga -> perfect

QuadsTris -> Delaunay -> nearly perfect. There is a little shading problem . See picture above.

NGons -> n/a -> Ngons are not supportet.

Edited by Malo

Share this post


Link to post
Share on other sites

@ Malo. I never did have to invert the green channel for Blender Cycles when I used  Maya normals for the calculation method and Maya / Blender for the export in 3DC. This was of course before the new update.

 

I think we had this discussion once before but please do not take that I am correcting you. I just have never needed to invert the green channel when using 3DC / Blender Cycles workflow for normal maps.

Share this post


Link to post
Share on other sites

Maybe. Let me explain it a little bit more detailed.

My pipeline is based on Blender 2.49, and i choose my programms to follow that pipeline.

This pipeline is based on that Max Normalmap that we should use in this test.

So, Blender 2.49, Crytek, Unreal, Gamebyro, Gimp Normalmap Plugin, Photoshop Normalmap plugin, Substance Designer, Mudbox and 3d Coat. Uses that Max Normalmap. And i think Unity, Zbrush and some others too.

Since Blender 2.50 the devs have choosen to work with that invertet Green Chanel as base. And now all my programms that i have ever used, are now incompatible for me if i use Blender to render.

 

For me, only Blender is on the wrong side, based on my pipeline. For you, should be the Unreal Engine on the wrong side.

I am not sure, how i should explain it. For me it is easier to invert the green chanel for Blender as to always invert it for my game engines and gimp or photoshop or Substance Designer.

 

Sure, i always use the word "wrong" but thats not correct. The word "wrong" is only based on my pipeline and workflows.

If anybody else, like you, have a differnt pipeline and workflow, then Blender works correctly. I hope you understand what i mean. It is nothing agianst Blender, it is more a 1-4 difference.

Blender 2.50 -> Maya

Blender 2.49 -> Max

Gimp -> Max

Photoshop -> Max

Substance Designer -> Max

You see, if i export a Normal as always from 3d Coat, i could use this normalmap directly in 4 differenct programms, only in Blender 2.50 and above i have to invert the green chanel.

If i would switch to the Maya export like you mentoined, i could only work in Blender 2.5+ directly with that normalmaps.

Blender is for me not in the first place of my workflow.

Edited by Malo

Share this post


Link to post
Share on other sites

Marmoset Toolbag 2

 

1 - Maya. Tangent Space Maya

post-10142-0-96312400-1407184177_thumb.j

 

1 - Max. Tangent Space Max 

post-10142-0-17039100-1407184180_thumb.j

---------------------------------------------------

Triang Maya - NM1

post-10142-0-19223200-1407183681_thumb.j

 

Triang Maya - NM2

post-10142-0-10739100-1407183680_thumb.j

 

Triang Maya - NM3

post-10142-0-00250400-1407183679_thumb.j

 

Triang Maya - NM4

post-10142-0-92144500-1407183677_thumb.j

 

Best result

Triang Maya = NM2

 

---------------------------------------------------

Triang Max - NM1

post-10142-0-18161800-1407184691_thumb.j

 

Triang Max - NM2

post-10142-0-06157100-1407184690_thumb.j

 

Triang Max - NM3

post-10142-0-92916300-1407184688_thumb.j

 

Triang Max - NM4

post-10142-0-82375800-1407184687_thumb.j

 

Best result

Triang Max = ?

Share this post


Link to post
Share on other sites

Marmoset Toolbag 2

Tangent Space Maya

 

QuadTrisMaya-DelaunayNM1

post-10142-0-64599900-1407185243_thumb.j

 

QuadTrisMaya-DelaunayNM2

post-10142-0-53904700-1407185242_thumb.j

 

QuadTrisMaya-DelaunayNM3

post-10142-0-14334100-1407185241_thumb.j

 

QuadTrisMaya-DelaunayNM4

post-10142-0-02704300-1407185240_thumb.j

---------------------------------------------

 

QuadTrisMaya-NaiveNM1

post-10142-0-27141600-1407185472_thumb.j

 

QuadTrisMaya-NaiveNM2

post-10142-0-15849200-1407185471_thumb.j

 

QuadTrisMaya-NaiveNM3

post-10142-0-03569500-1407185470_thumb.j

 

QuadTrisMaya-NaiveNM4

post-10142-0-90644000-1407185468_thumb.j

Share this post


Link to post
Share on other sites

Marmoset Toolbag 2
Tangent Space Max

 

QuadTrisMax-DelaunayNM1

post-10142-0-42743000-1407185834_thumb.j

 

QuadTrisMax-DelaunayNM2

post-10142-0-36198900-1407185833_thumb.j

 

QuadTrisMax-DelaunayNM3

post-10142-0-27321300-1407185832_thumb.j

 

QuadTrisMax-DelaunayNM4

post-10142-0-20871400-1407185831_thumb.j

-----------------------------------------

 

QuadTrisMax-NaiveNM1

post-10142-0-72512000-1407186041_thumb.j

 

QuadTrisMax-NaiveNM2

post-10142-0-62473300-1407186040_thumb.j

 

QuadTrisMax-NaiveNM3

post-10142-0-51544600-1407186039_thumb.j

 

QuadTrisMax-NaiveNM4

post-10142-0-42707000-1407186038_thumb.j

 

Share this post


Link to post
Share on other sites

Marmoset Toolbag 2
Tangent Space Max

 

NGonsMax-DelaunayNM1

post-10142-0-15227100-1407186348_thumb.j

 

NGonsMax-DelaunayNM2

post-10142-0-00919800-1407186347_thumb.j

 

NGonsMax-DelaunayNM3

post-10142-0-85459500-1407186345_thumb.j

 

NGonsMax-DelaunayNM4

post-10142-0-69211800-1407186344_thumb.j

-----------------------------------------------------

 

NGonsMax-NaiveNM1

post-10142-0-44017500-1407186528_thumb.j

 

NGonsMax-NaiveNM2

post-10142-0-34464800-1407186527_thumb.j

 

NGonsMax-NaiveNM3

post-10142-0-25160900-1407186526_thumb.j

 

NGonsMax-NaiveNM4

post-10142-0-10696200-1407186525_thumb.j

 

Share this post


Link to post
Share on other sites

Quixel Suite DDO

 

1 - QuixelSuite_Maya

post-10142-0-48062600-1407189328_thumb.j

 

2 - QuixelSuite_Max

post-10142-0-30905400-1407189329_thumb.j

Share this post


Link to post
Share on other sites

I dont understand the quad model tests .... as every external package may treat the quadrangulation differently when importing the model which will result different normal information on the model and then the normal maps wont display correctly.

Secondly a test on only 2 different models is not really enough to determine whether the normal map is completely correct for the given platform .I tested the maya map with the first model in unity and it looks correct but its exported from 3DCoat which Im pretty sure uses Mikk TangentSpace which is not 100% correct for Unity ( I know this from experience ) a lot of the time it will shade correctly but in some instances seams will appear or the shading will be a little off.

 

I think this was already posted a while back by Don Nash(AbnRanger) but here is the link again that explains the problems and correct working practices with normal maps

 

https://www.youtube.com/watch?v=OONQzKcWeMY

 

and this is a video from the Handplane3D videos section that explains  the fundamentals of normal maps

 

https://www.youtube.com/watch?v=m-6Yu-nTbUU

 

this is more in depth about controlling shading and efficiency

 

https://www.youtube.com/watch?v=ciXTyOOnBZQ

 

 

This is another video showing  normal maps baked in different packages displayed in Unity with different results

 

https://www.youtube.com/watch?v=UWToeCw1B24

 

In short  -

 

for the normal maps to display correctly the model should be triangulated so the normals wont change .The external package must import model with the normal information  and the correct tangent basis should be used for the external package to display it correctly.

 

 

I hope this helps

Edited by manticor
  • Like 1

Share this post


Link to post
Share on other sites

I ran all the test from the PDF instruction (Maya folder) in Linux Blender 2.71 Cycles. It appeared that all the test seem to get the same result by subjective looking at the images as far as I good see.

 

The first normal map used in each test seem to work as well as the others.

 

Each normal map did have a problem with black seams areas showing on some edges in the shadow areas. I uploaded a picture.

 

I do not have the time for a complete in depth test as my normal way is, Sorry about that.

 

I did not test Blender's older internal renderer.

post-518-0-23356200-1407366767_thumb.png

Edited by digman

Share this post


Link to post
Share on other sites

Here is a test of Octane Renderer, all of the maya tests worked, none of the max tests worked (I did all of them).  Here are the 1 examples:

 

post-38101-0-89811700-1408085961_thumb.p

 

post-38101-0-06295800-1408085979_thumb.p

 

There might be a way to get the max files to work, Octane has a lot of options for obj import.  I don't have max so I can't test that.

Edited by Grimm

Share this post


Link to post
Share on other sites

Test 1:

 

(I always use Maya-like nmaps in modo, they render the best, I provide the max for comparison)

 

Maya

post-1232-0-50241100-1408660266_thumb.pn

 

Max

post-1232-0-51895700-1408660276_thumb.pn

_________________________________________________

 

Test 2 - Triangulated (all maya style):

 

NM1

post-1232-0-80425900-1408660614_thumb.pn

 

NM2

post-1232-0-87353000-1408660625_thumb.pn

 

NM3

post-1232-0-21651000-1408660638_thumb.pn

 

NM4

post-1232-0-96616200-1408660646_thumb.pn

 

 

RESULT: NM2 is the best result of bunch. I would call it good, but not perfect (see image)

Share this post


Link to post
Share on other sites

×