We've generated a scanned model in PhotoScan, refined and unwrapped it in ZBrush. We now have everything we need to start creating our textures. It's very important not to underestimate this step as if we create some bad textures all of our work will be in vain. Let's get on with it.
1. Create and export Normal and Displacement maps from ZBrush - after exporting our model, while still in ZBrush we will use the Multi Map Exporter to get both the Normal and the Displacement maps. We will go through the settings for both of these so we can use their full capacity later in 3DS Max:
01. In the ZPlugin palette, expand the Multi Map Exporter(?) subpalette, and make sure the Displacement and Normal buttons are highlighted.
02. Set the Map Size slider to the image resolution that best suits your needs. Recommended 2048 or higher.
03. Set 'Flip V' to ON. Setting this to ON compensates for the way ZBrush handles UV maps internally - which is flipped along the vertical axis compared to programs like Maya and Max.
04. Click the 'Export Options' button to reveal additional map options.
05. Displacement Map(?) Options :
01. Set the 'SubDiv Level' slider to the subdiv level you want your low resolution basemesh to be. Lowest possilbe is advisable.
02. Set 'Adaptive' to OFF. Setting this to ON is supposed to produce a higher-quality displacement map. However it could be unreliable and generally unnecessary at larger resolutions. At times it can even result in a displacement map that is completely useless - So I recommend leaving it OFF.
03. Set 'DPSubPix' to '0'. This setting determines the accuracy of the displacement map created for the object. Higher values cause a higher-quality displacement map to be generated, but will take longer to generate. However, if your high-res mesh is in the millions quality won't suffer at all if you leave this setting at 0.
For a quick example for when to use this setting:
If you would like to have a 1K texture map your high-poly mesh needs to be at least 1MIL polys otherwise you will get artifacts in the map.
Here is a list with map sizes and corresponding polycounts:
1K = 1MIL
2K = 4MIL
4K = 16MIL
8K = 64MIL
So, if you have a 1MIL object but you need a 4K Displacement you can use a value of 2 for DPSubPix which means that the model will be devided twice (equalling 16mil polys and therefore any value above 2 is uneeded) during texture creation.Â
This will take up some more time but it is supposed to procude better quality texture. If it's not a very heavily detailed model you will never see the difference.
04. Set 'SmoothUV' to OFF. Setting this to OFF disables UV Smoothing on our low res mesh. We'll match this setting in our renderer to ensure an accurate mapping of displacement details.
05. Set 'Mid' to '0'. Setting this to 0 makes the displacement map pixel value of 0.0 act as the mid point where no displacement is being applied - which is what we want for an accurate floating-point displacement map.
06. Set '3 Channels' to OFF. Setting this to OFF stores our displacement information using only the RED channel of our generated displacement map. 32bit Displacement only needs one channel to store its info, so this setting will slightly reduce file sizes without losing any info.
07. Set '32 Bit' and 'EXR' to ON. Setting this to ON enables the export of a 32bit floating-point displacement map. And why do we need 32 Bit Displacement? Because it's "automatic". More info on the topic: https://www.cggallery.com/tutorials/displacement/
08. Set 'Scale' to '1'. This setting determines the scale of the generated displacement map's pixel values. Since we want an exact 1:1 match, we'll leave this at a default value of 1.
04. Normal Map(?) Options:
01. Set 'Tangent' to ON. If pressed, the normal map coordinates are tangential (local) to the object; if un-pressed, they are world-space (global).
02. Set 'Adaptive' to OFF. Same reason as with the Displacement map.
03. Set 'SmoothUV' to OFF.
04. Set 'SNormals' to ON. This smooths the lowres normals and helps with artifacts.
05. Set 'FlipG' to ON. We need to flip the Green Channel for the normals to be displayed correctly in 3ds Max.
06. All other flip and switch buttons need to be OFF
05. Click the 'Create All Maps' button, choose a filename and directory to save your map to. (Don't worry if the filetype says TIF, since we enabled the EXR button it will in fact be saving in EXR format)
Quick video for navigation and setting adjustments reference:
2. Create the Diffuse Map in PhotoScan:
01. Import our retopologised and unwrapped model into our PhotoScan project, replacing the old mesh. Whether we import our high-poly or low-poly version doesn't make a difference in the texture but will make difference in terms of import time. So use the low-poly version if you don't have a good reason to do otherwise.
02. Replace high-contrast photos with low-contrast photos. If you've created two sets of photos now is the time to use the low-contrast set to create a more diffuse/uniform texture.
03. Create the diffuse map. Important thing to note here is to remember to set the Mapping mode to Keep uv so the program utilises the correct UVs.
Video showing the process:
With this we conclude this stage and can continue to final one - object and material setup in 3DS Max.