When you calculate a displacement map, ZBrush compares the current subdivision level to the highest level. It then maps the differences and creates the map. So you can’t really create a displacement map without going to level 1 first.
That much of your workflow is correct.
But you’re also missing a very important step.
When you subdivide your model, it contracts. When you change subdivision levels, the one you switch to updates to reflect any changes that have been made at other levels. So when you return to level 1, ZBrush will see that your higher levels have contracted and it will update level 1 to be smaller than what you had to begin with. (You can really see this if you take a 6 poly cube, divide it, then return to level 1. Your cube is going to be smaller.)
If you now create a displacement map, the map will be calculated based on the level 1 that you now have, rather than the level 1 you started with. As a result, if you apply that map to your original model you are going to get bloating and other unwanted effects.
It’s therefore necessary to restore your base mesh (the original version that wasn’t affected by subdivision editing, and which you’ll be applying your displacement map to) before you create your displacement map. There are three ways to do this:
-
After importing your model into ZBrush, immediately press Tool>Morph Target>StoreMT. Do this before you divide the mesh. Later, when you return to level 1 you press Tool>Morph Target>Switch. This restores your original mesh so that you can create an accurate map.
-
If you didn’t store a morph target when you imported the model, you can still create one later. Go to level 1 and press Tool>Morph Target>StoreMT. Now press Tool>Import and load your original mesh. Save your tool. You can now create a displacement map. If you want to go up to a higher level again, press Tool>Morph Target>Switch first, to return to multi-res version of level 1. (You don’t want to return to the higher levels while the original mesh is active, because that would change those levels!)
-
If you didn’t store a morph target prior to subdividing and the model was created in ZBrush so that you have nothing to import, then you can’t use the morph target approach. Instead, you would go to level 1 (or 2) and activate Tool>Geometry>Cage. ZBrush will now calculate a cage mesh. Create your displacement map and export both it AND the cage. If your level 1 has a low polygon count, then you’ll get better results if the cage is calculated and exported at level 2 rather than 1.
Between these three options you will always have a way to be able to restore your base mesh prior to calculating the displacement map. You’ll then get MUCH better results when you apply that map to your model in the renderer.