1
$\begingroup$

I want to repack multiple objects to single UV and transfer textures to that new UV. All maps works correctly, only the normal map doesnt work, and I think Blender doesnt recalculates tangents correctly. I watched almost all tutorials on youtube and most of them only transfer color map, only person who transfer Normals doesnt notice that shading problem ))) So is there any way to do that?

I created new UV channel, just rotated UVs, created new blank texture and set color space to none. I activate first UV channel and selected new one. Selected mesh and blank image texture node. Under render tab, selected Cycle, and under bake tab selected normal map, influence space set to tangent and hit bake.

When I look at new normal texture it looks like Blender did something about tangent recalculation. The angle to bottom side of the texture is red and top is green as in original, but it still has that shading problem.

I tried to invert green channel, red channel nothing works. Rebaked with -y option, it made only one side of the mesh correct but top and bottom was still problematic.

It works if I dont rotate UV shells, and if only change positions. I can of course export model to Xnormal and bake there, but I really really really hate to import export things, just want make everyting in single place )))

enter image description here enter image description here

$\endgroup$

2 Answers 2

1
$\begingroup$

Looks like Blender only use tangent space from first UV channel, same as UE for example. So if I change rotation of UV shells in second UV channel normal map in that channel will be wrong. May be after converting it to object space normal I can make it work somehow.

About transferring normal map to different UV correctly, the only way I found is:

Duplicate mesh and assign material, create blank image texture and select it. Unwrap duplicated model as needed. Choose Normal under bake type and activate Selected to active in the bake menu.

Give small extrusion number or use cage and be sure original normal texture is connected to original mesh material. Select original and then duplicated mesh which we want to bake to and blank texture still selected hit bake button.

It will create almost exact normal map with new UV map. I noticed new normal intensity is a little softer, we can always increase intensity of normal anyway.

$\endgroup$
0
$\begingroup$

Not 100% sure if this applies to your scenario, however, in all my testing with UV maps recently, I have found that a lot of problems can be avoided by directly specifying the UV Map for BOTH the material AND the baking image within your material (if a Normal Map node is used, don't forget to also specify the correct UV Map in the node!).

In the shader editor, go to Add > Input > UV Map to add a UV Map node. Use this instead of the standard "Texture Coordinate" node, because now you can specify EXACTLY which UV map to use for your Source UV map (the map you will be baking FROM).

Source UV Blender

Now, add a second UV Map node in the material, specify the UV Map you will be baking TO and plug it into the new Image Texture you will use for the bake. In the image below, I have put the Image Texture used for baking inside a node group, that way when I add the group (and its UV Map node) to all the other materials assigned to my object, I can simply open the group and change the image I will be baking to, which will then automatically change that image in ALL the other materials that node group is found in. Don't forget to select the Group Node (or the baking image itself if you are not using a Group Node) before you are ready to bake:

Baking UV Map Blender

Lastly, make sure you have selected the UV Map you will be baking TO in the Object Data Properties tab:

Multiple UV Maps Blender

I hope some of this info helps!

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .