Author Topic: Need Help with Displacement Workflow ZBrush/Substance/Blender  (Read 1391 times)

I'm trying to figure out the proper workflow for working with displacements in ZBrush and Substance and it's been a headache.

Ok so some assumptions

- We are mainly trying to get proper workflow and output from ZBrush and Substance, I'm rendering in Blender but this is applicable to most renderers
- Substance can't bake displacement from high-res so I'd have to reproject and bake the initial displacement from high-res in ZBrush and import this into Painter
- I have a low poly remeshed model with UVs to project detail to and later animate
- I have a model in ZBrush with all the large frequency detail, and I want to do things like fine wrinkles, pores, and things in Substance as well as all the painting and texturing
- I'd want any additional large scale detail I paint in Painter to export to the displacement map


From what I've read you want separate high and low frequency detail maps, first modeling the main forms (silhouette) into the model, then using the displacement map for medium details, and a normal map for the fine details on top of the disp map, things like skin pores, very fine wrinkles etc. If I understand correctly the normal map shouldn't have large frequency detail to avoid doubling up of large forms with the displacement map.

How do I properly import the displacement into painter (and have a workflow where smart materials/tools work correctly) then export large and small frequency detail to separate Displacement and Normal maps for use in blender or any other renderer?   :-\

Another note, blender supports combined displacement and bump so if splitting the frequency detail between normal and displacement isn't possible I can make do, but I'd like to figure out the proper 'industry standard' way of doing it if possible.

If I understand correctly the normal map shouldn't have large frequency detail to avoid doubling up of large forms with the displacement map.
That actually depends on how the displacement is performed. Mainly if when the geometry is displaced, are the vertex normals updated on your base geometry ?
It's not the case in Substance Painter, so you want low frequency details in your normal map as well otherwise you won't get the correct shading even after applying displacement.

then export large and small frequency detail to separate Displacement and Normal maps for use in blender or any other renderer?   :-\
If you sculpt all your details in the Height/Displacement channel you can retrieve those channels individually after the export. You can keep the Mesh normal map on the side as well.
Don't forget your log file. It can be exported from the Help menu of the software.
-----------
Fabrice Piquet aka Froyok. Product Manager, Technical Artist and Documentation at Adobe.

If I understand correctly the normal map shouldn't have large frequency detail to avoid doubling up of large forms with the displacement map.
That actually depends on how the displacement is performed. Mainly if when the geometry is displaced, are the vertex normals updated on your base geometry ?
It's not the case in Substance Painter, so you want low frequency details in your normal map as well otherwise you won't get the correct shading even after applying displacement.

then export large and small frequency detail to separate Displacement and Normal maps for use in blender or any other renderer?   :-\
If you sculpt all your details in the Height/Displacement channel you can retrieve those channels individually after the export. You can keep the Mesh normal map on the side as well.

Interesting, so import the diplacement from ZBrush to a fill layer and still bake the normal map from the high poly then? or better to make that disp map into the normal?

I've been experimenting with maps from XNormal and ZBrush. XNormal only wants to export somewhat wonky positive value maps starting with 0 (black) instead of a greyscale 50% mid-value that allows depressions like ZBrush can export. If I import the 0 balanced map into a fill layer in painter it looks ok-ish as long as there are no negative values. If I import a proper 50% mid-value map from say ZBrush, I get displacement and 'puffiness' of the entire model.

Other issues:

Zbrush requires you to reproject detail on to a multi-res model to export a height map, no direct high to low poly bake which is a pain in the ass if you get projection issues in tight spaces.

XNormal is old/clunky and it doesn't look like I can get a proper linear heightmap with 50% mid-value.

Still need to figure out the proper workflow in painter to bring height data in and have everything work as expected from there. If Substance just supported height map baking from high-poly it would fix all the problems.

Hmm, ok, figured out if I add a levels adjustment and set the input black value to 0.500 it looks right. Let me know if there's any reason this could produce bad maps.