Page MenuHome

Cycles normal map baking issue with subdivided UVs - Margin
Closed, ResolvedPublic

Description

Hi,

This is the very first time I report something here so I really hope it is the good place.

I make a lot of character developement and now work nearly exclusively with cycles.
Since map baking is available with Cycles, normal maps look way better with this engine, more contrasted and accurate but...

whenever you try to bake a normal map from a multiresolution mesh with subdivide UVs option checked in the multires modifier.
Assuming you'll use margin to cover the UVs islands corners, Cycles is not able to interpolate these pixel correctly and create darken or transparent area on the bleeding pixels.

This generate seems when you then use these normal maps on your object.

If subdive UVs is desactivated, the margin works just fine.

Please let me know if you have any needs of exemples for this and if this is an already reported problem.

In anycase, thanks for your interest.

Event Timeline

Pierrick PICAUT (Pieriko) raised the priority of this task from to Needs Triage by Developer.
Pierrick PICAUT (Pieriko) updated the task description. (Show Details)
Pierrick PICAUT (Pieriko) set Type to Bug.
Julian Eisel (Severin) lowered the priority of this task from Needs Triage by Developer to Needs Information from User.Jul 30 2015, 11:39 AM

Hey @Pierrick PICAUT (Pieriko), yeah, a sample .blend file is always useful for us to recreate the issue. Would be good if you can give us one :)

Hi Julian,

So you'll find attached a simple blend file to test the normal baking with cycles.
Enable or disable subdivide UVs in the multires modifier and select the corresponding texture in the material nodes then click bake
(FYI, baking is on GPU, please double check rendering setup. CPU baking lead to the same result).

I've also attached a screenshot pointing the artifacts.
With subdivide UVS enabled, margin generate dark areas among the bleeding aread with variating alphas. This means you can't really use these baked texture for your model as normal map will show large seems problem.

I hope it will be clear enough to help.

Thanks for your interest
Pierrick

Julian Eisel (Severin) raised the priority of this task from Needs Information from User to Normal.Aug 3 2015, 10:13 PM

Hi Guies,

Did you have any time to have alook and identify the problem?

I don't know if you've ever tested substance painter but the way it generated bleeding is pretty amazing.
Extrapoling the pixels perpendiculary to the seem border till it cross another pixel.
Making totaly filled normals.

Hope you'll find your way around.
thanks for your care an dyour work.

For this case the solution seems to be to just bake with smooth subdivided UVs disabled, since a normal map is intended to be applied to the low res mesh and as such should be baked to the linear subdivided UVs. We can do that automatically.

The background should also be filled in neutral purple but it's not working due to a bug in the code, will fix that too.

Hi,

I may not have open this if it was that simple. Baking normal is not exclusively for lowpoly object. If you make hd character for animation you may not keep a 5 level multires modifier and convert it to displacement and normal map with a lower subdiv level.

If you don't subdivide UVs during baking you'll get distorsions on your map when applied to your subdivided model.

But there is a solution. You have to use a cage to bake your normals and it fixes the problem. It turns to be relevent for both hard and organic surfaces.

If you are baking a displacement map to apply to a subdivided model, then indeed it's not so simple. But tangent space normal maps are different in my opinion, they are tied to a particular mesh resolution with particular tangents. You bake it for either a low res or a high res mesh, a single normal map will not work without artifacts for both.

We don't currently support baking multires as a displacement map with Cycles baking, and probably need some other options as well. For that you have to switch to Blender Internal still. If we work on that then there will be some changes needed, but for the limited thing that this feature currently does, I think linear subdivided UVs are correct.

Hi Brecht,

I know that :) , I've been trying to find solution for a loong while.
Even for displacement, It's better to subdivide UVs to get a smoother result once applied.
It's a pretty subtle difference and blender internal deal with it pretty nicely. also with the normals map, but they are less contrasted than in cycles.

That's why I'm always trying to bake normals in cycles instead of internal.

It's difficult to get a perfect result from a simple baking, I can not agree more with you. I just wanted to point that without a cage, cycles normal baking turn to be buggy :)

Thanks for your consideration and thanks for all the work you and the team put into developping this software !