ZBrushCentral

Basemesh shrinkage, blendshapes workflow and displacement map creation questions

Hello there!

I have some questions and tried to find answers, literally reading tons of threads here at ZbrushCentral, at PolyCount and other forums, and each time i encountered an answer, it created more questions, so i decided just to make my own thread and ask some of them, which gave me a headache for a long time. So, before i ask them i’d want to apologize if there are answers to them here at ZC forums, i really tried to find them, but i couldn’t. Pff. Let’s get started:

What is correct workflow for creating displacement maps for use outside of ZBrush?

This question was asked tons of times, really, i have seen a lot of threads containing same question, but the answers were also the same, and none mentioned one thing(or i didn’t find that). That thing is: people only ask, how to make their base mesh look like it was before they subdivided their model, and they don’t ask how to handle shape changes.

Well, and the answers were like that:

1st - get back to level one, create morph target and reimport your base mesh.

2nd - before sculpting and dividing the mesh, store morph target, so your base mesh is stored, and you will just switch it before creating displacement map.

3rd - use cage button, which is actually good, at some point, but not always, and is not consistent.

Nice answers, they are really good, but, here are problems:

1st and 2nd options are good only when you just need to sculpt fine details, like scars, pores and so on and so forth, these options won’t work, if you change SHAPE of your model. Imagine you brought head with really short horns or ears, while sculpting, you adjusted their shape, and made them longer and bigger, they no more represent your base, because it’s changed. As soon as you create your displacement map for that adjusted model, using those two options, you will see that shape is the same as your ‘unchanged imported base mesh’, but it will contain all your fine details you sculpted. This is not good, and displacement can’t bring your forms you made (longer and bigger horns and ears) to your first base mesh.

So, in this case 3rd method works(sometimes), cage button will calculate a base for you after you’ve done your sculptings. This cage will take into account your adjustments, and all shapes and form will be presented, BUT, there are two problems:

1st - if we bring taboo’d xD MudBox here, when you import your base there, and subdivide, and then go back to first level (in MB its 0), you will see its unchanged, same happens if you subdivide your mesh in Maya, Max, Houdini, C4D. Its the cage mesh, but it’s consistent.

What i mean by word ‘consistent’: if you subdivide mesh in MudBox, and sculpt on some side, and go back to cage, only the vertices which were affected by your sculpt will be changed(positioned in cage due Multi-Res Mesh Editing stuff to represent higher level’s shape), and those vertices which were not affected by your sculpt will be in the EXACTLY same place, uchanged.

Now for ZBrush: If you use ‘cage’ button, it only APPROXIMATES vertex positions, which means if you sculpt one side, and 2nd side is not affected, then go back to level 1 and press cage, it will be calculated nicely, but these unaffected vertices from 2nd side will also change their positions, even if shape will be almost the same. This first problem can cause problems if you want to keep consistency of your mesh between DCCs, and can also cause problems in blendshapes creation.

2nd problem: cage button can (usually) position vertices at EXTREME scale, especially if your base is too low poly. It mostly happens in places where you have fine wrinkles in highest level, but level 1 mesh in those places is that low, so it makes spikes in mesh. This 2nd problem causes problems in rigging, causing bad deformations etc.

3rd problem: well, what if i didn’t make my base in other software, and sculpted my mesh entirely in ZBrush and after just retopologized it?
After retopo, my ‘retopo’d base’ will have SAME shape as highest level even without shrinkage problem, because i snapped my polys onto it. Then i use projection master to project details, go back to level 1, it represents my highest shape, but can’t be used in other soft without ‘Cage’ button enabled, because if i use my 1st level base without cage and bring it in maya, shape will be shrinked due subdiv algorithm, and this shape WON’T be the same as in ZBrush.

First two methods work really nice for hard surface stuff, imagine you have armor plate modeled outside ZBrush, you just bring it in, subdivide and sculpt your damage etc without changing shape, then go back to level 1 and reimport base and viola, perfect displacement for exactly same model, which will work as intended.

But problems come with organic stuff, because when you sculpt it, you also change shape most of times.

So, considering all these problems, i’d like to ask my questions:

1 - How ’ in correct way ’ should i create my displacement map?

2 - How could i maintain same shape and details between ZBrush and Maya? I mean: i want to have same shape and details in Maya as in ZBrush when rendered.

3 - What drawbacks of using level 1 base changed by ZBrush (shrinked) instead of actual reimported base or level 1 with ‘cage’ enabled?

4 - What if i’d use level 2 as base?

5 - What if i have created mesh specially for animation purposes and rigging, which has nice topology flow and UVs, and just want to wrap that mesh(current production workflow), instead retopology, what displacement steps would it take with ‘wraping workflow’?

6 and last - What is the workflow for creating blendshapes in ZBrush, considering all the stuff i mentioned? Is it better to use dynamic subdiv to ‘preview’ your result when you sculpt your shapes or real subdiv(but last one will cause issues, because model is already rigged and real subdiv causes shrinkage)?

So, these problems bother me for really long time, and i didn’t want to bother other people with them, but, i couldn’t find solution on my own, so i made this thread, and i would be really grateful if someone could answer my questions.
These answers would help me and others, because here i gathered ‘main’ problems of ZBrush’s displacement and base mesh in one thread.

ZBrush is a very nice app to make your creative dreams come true, but it has steep learning curve.

I believe ZBrush community is one of the best in CG industry and i believe there will be someone who had same problems when they started to use ZBrush, and they solved them, and could give an advance for people like me, so we could solve them and continue our sculpting journey.

Thanks for your attention, have a nice time!

Hello @ReArts

Subdividing a mesh alters the mesh slightly at all levels of subdivision. This is a byproduct of the subdivision process itself. This isn’t a problem if you’re exporting the (altered) base level geometry directly from ZBrush, and applying the maps generated to it. This is only an issue if you’re trying to match the geometry in another file someplace exactly, so avoid doing this if you don’t have to and don’t want the extra hassle.

If you have to work this way, then it is necessary to restore the original geometry immediately prior to generating any maps, and without changing subdivision levels (which will again alter your original geometry. ) There are actually a couple ways to do this, but both involve the storing of a Morph Target, and the currently prescribed workflow is detailed both here, and in the Switch MT section of the MultiMap Exporter documentation. Simply follow the directions.


I don’t mean to make this sound overly simple. Successful application of displacement maps requires a reasonable amount of general 3d knowledge, and a certain level of expertise in both ZBrush AND your target application. Every program does things differently, and every artist you see showing off their flawless displacement maps has had to undergo a research process on how to get the best results in their target program. There are many things that can differ on either end, like UV smoothing (if you’re smoothing UVs in ZBrush, they also have to be smoothed in your target app) and world coordinates (this is why you sometimes have to flip textures vertically or horizontally–not every program reckons their worldspace in the same way). Even the way a program subdivides the mesh can vary between programs, leading to slight variance.

When trying to sort out the application-specific ways in which to coax the best results from displacement, resources dedicated to your target software are actually a better place to look. There you’re actually dealing with other people who have solved this process (ZBrush is a very widely used software), and know what does and doesn’t work. Here you’re dealing with a bunch of ZBrush users who may not be working with your target software, or who may not be using ZBrush for digital rendering at all. You’re likely to get frustratingly general advice.

Good luck!

So, as i understood you: if i use altered base (shrinked) as my new base - its ok? And if i need to just sculpt details for target mesh in other app, i will need to reimport prior making displacement, right? I have experience in displacement maps and 3d rendering, i only have these hassles in zbrush…
Also, if i’d like to use level 2 as my new base, i just need to set up slider in displacement settings to 2 level, right? The question i have if displacement will bring back those shape details i lost after subdividing that altered mesh in other dcc, as it will shrink a little more.

How do you make your displacement mapping actually?

Thanks for explanation!

P.S. sorry , i don’t know why my text is so big, i don’t use any tags etc.