I’ve mentioned before I’m a fan of using Zbrush’s Multi-Map Exporter (hereafter called MME) to pack up a finished sculpt for Blender/Cycles. (I use GoB to send base meshes to Zbrush initially, but I prefer settings things up my way back in Blender). MME has a normal map config panel like this (spoiler alert, rest of the post is describing why it’s configured the way it is in the picture):
Those 6 controls along the bottom control how the channel arrangement is done. Different 3D packages expect different arrangements, and the internet is pretty vague about which one you want for Blender. I’d previously read somewhere to use flipG only, but that was looking slightly weird. So I decided to consult with my dragon (see previous blog post) just wtf Cycles wanted here. Sometimes, it’s hard to tell if your map is weird. Some combos (like flipB) are obviously wrong and give black or patchy-shaded meshes so you KNOW they are wrong. Other combos though, they give normals that look ostensibly correct, but depict surface features going in the wrong directions. But if these features are small enough, sometimes they can get hidden under the displacement and color detail. Not this time though. I turned off the subsurf and displace modifiers, set a clay shader, and exported normal maps against lv1. We’re going to find out once and for all!
To start, this is the high-res model in Zbrush. Ideally, the surface will look as close as we can to this (shader differences aside. I didn’t bother to match the matcap):
First of all, flipG, as I’d read somewhere I can’t remember. This is obviously not it, you can see scales along the side of the thigh shift from raised to sunken!:
Ok, so if we’re getting shifts from up:down, clearly R and G need to match. What does flipRG give?
Well, shit. Now EVERYTHING is sunken!
So if flipRG gives sane normals, but with sunken details that should be raised, doesn’t that imply no flips at all is correct? Let’s see:
Yep, I think that might be it.
But let’s be thorough. What about that swRG button?
Nope, mix of raised and sunken scales again!
But what if we flipped AND switched??
This one gave me a bit of pause. I THINK this is still wrong, several details along the face seem sunken where they should be raised (and are in the no-flip version). So I’m going to go with no-flip is the correct way.
To cover some other options on MME while we are here:
FlipV/FlipU – Zbrush and Blender have opposite conventions for the V axis in texture space. Sending a mesh from one to the other will cause your textures to be inverted if you don’t flip your UVs along V. If this needs to be done, switch on flipV. Note that GoB will automatically flip V, so if you are mixing MME and GoB for your roundtripping, make sure you don’t double-flip. Blender and Zbrush (and Maya, incidentally) have the same convention for U, so as long as no other apps have touched this mesh, you can leave flipU disabled.
Tangent – This switch needs to match the “space” option on Cycles’ normal map node. Enable if using tangent space.
SmoothUV – There isn’t necessarily a right or wrong setting for this, but this switch, the corresponding one on the displacement map export, and the “subdivide UV” checkbox on your subsurf modifier back in Blender all need to match. Otherwise your UVs get distorted out from under the texture.