ZBrushCentral

unwanted concavity with displacement map generation

Here’s a problem I’m trying to overcome. I’ll attempt to illustrate:

[IMAGE] http://moloart.net/posted/sign_probs.jpg [/IMAGE]

any thoughts as to how I might fix this? The hack I’ve made in the meantime is to use decimation master on the high-subD version, but would love to not clog up my renders with too many polys.

thanks in advance for your help.

-m.

Perfect 90 degree joins in the low poly are anathema to displacement and normal map generation. If you look at the problem map you’ll probably notice a gradient extending from one edge loop on the side, around the edge and to a loop on the front face as the bake process tries to interpolate between only three points.

Building low poly models with bevels instead of 90 degree turns avoids the problem, but if you want to stay as light as possible you can trick the bake process. Add holding edge loops around the edges before you bake, and use the resulting map on your original low poly. It’ll be interpolating across five verts instead of 3, and the unwanted gradient effect will be cut off.

While you’re technically changing the topology, the new loops are entirely contained by the old topology and creates a result that still maps to the original correctly.

Thanks internet Friend, very helpful!

Just to make sure I totally understand you: Are you saying to add edge loops within Zbrush, or in a different package? (in my case, Modo.)

What I did was added two holding loops around the problem edges, and saved this as a different mesh. Since I was using loop slice, the existing UV’s didn’t jump (a good thing).

What DID get funky, was trying to replace the original base mesh with the new, extra edge-loop mesh. Zbrush had trouble transferring the high-resolution detail (see screen grab):

I managed to get something to work by appending the old mesh to the new, and using Project All to transfer the high-res detail. Then generating a new displacement map.

Is there a more efficient way to do this? Or a way to avoid the distortion when I’m trying to update the base mesh?

Thanks for any further insight.

-m.

Attachments

meshWonkiness.jpg

I do my map baking in Maya or xNormal, so I’m not really sure about that mesh exploding there. Working like I do I’d just export the highest subdiv, decimated if it’s going to Maya, duplicate my low poly to add the extra loops and bake those together. Usually I have to do some retopo in Maya after sculpting anyway so this doesn’t interrupt my workflow.

You could try adding edge loops by making polygroups in zBrush and adding loops to them and see if it works any better, but beyond that I don’t know without experimenting myself.

The other thing that works is making your sharp angles a little less than 90 degrees; bevel, bend, taper or bulge things just a bit and you can avoid adding loops altogether. Now you know to plan ahead for this in the future :slight_smile: .

ZBrush will preserve sharp edges better when generating normal/displacement maps if you crease the edges at subdivision level 1.

Sorry to bump a solved thread but over on the Polycount forums someone recently made a great post explaining this kind of problem, why it happens and how to plan for it. Not zBrush specific but a good read for hard surface modeling. The skewing issue is what happened in the case of baldwin’s sign.