ZBrushCentral

Displacement Incorrect after Re-Import of base OBJ

I am getting incorrect displacement maps after re-importing my base obj.

Heres a step by step of what I am doing.

PART 1

  1. Import nice fully quaded head.obj with no overlapping UVs in ZB3.
  2. Store morph.
  3. Subdiv up a couple of levels and sculpt some loverly details.
  4. Drop it down to subdiv 1 and switch morph
  5. Create displacement map.
    Brilliant it works perfectly a loverly rendered result in my 3D app I couldn’t be happier :slight_smile:

PART 2

  1. I slightly change the shape of my head in my 3D app and rexport a new head.obj, the point order and uvs are the same they have not got messed up.
  2. Open my ZTL that I saved from PART 1 above
  3. Make sure I am on subdiv 1 and re-import my new head.obj with the shape change.
  4. Excellent it works so I store a morph and move up my subdiv levels, everything looks fine all my sculpting work is still there and looks good.
  5. Now all I need to do is update my displacement map, so down to subdiv 1 again and switch morph and bake displacement.
    Unfortunatltly the result I get when baked looks more like an incorrect bump map and nothing like the displacementmap from PART 1

I tried this with just a simple mesh to see what was happening.

  1. import a simple obj
  2. store a morph
  3. subdiv up a few levels
  4. don’t sculpt anything
  5. drop down to subdiv 1 and switch morph
  6. bake displacement, it should be flat because you haven’t sculpted anything
  7. re-import the same simple obj to replace your existing subdiv 1
  8. store a new morph
  9. rebake new displacement, the resulting bake now has details a bit like a bump map when it should be flat like the first one because nothing has changed.
    I guess I am doing something wrong can anyone help?

cheers

Skip step 9.

What’s happening is that when you return to level 1 and switch to the stored morph target you’re reestablishing the base mesh that you want the displacement map to be calculated for. When you import the new, slightly modified model, that becomes the new base mesh. You can simply calculate your displacement map, which will be based on the differences between your new level 1 and your highest level (which is still unchanged).

The problem with your steps is that as soon as you change subdivision levels the changes made at level 1 by importing the new shape get transferred across levels. That actually does change those levels, which will of course change the results of your displacement map when you come back to level 1 and create it.

If you need to return to higher levels after importing the new version of your mesh, don’t store a new morph target. Simply switch to the one that was already stored. That has the effect of turning off the base mesh so that it won’t affect your higher levels when you go back to them. Later, when you return to level 1 just switch back to the stored target as usual before calculating the map.