Skip to main content

Correct ZBrush to Arnold Displacement Map Tutorial

Rendering a high-res ZBrush model in other software can be a pain due to the high polycount. Displacement maps solve this by keeping your model light for smooth animation while preserving all the high-res details at render time. This tutorial shows you how to set up a 32-bit displacement map using ZBrush and Arnold.

Exporting Displacement Maps

Using the Multi Map Exporter

  1. Go to ZPlugin > Multi Map Exporter.
  2. Enable Displacement
  3. Adjust Settings:
    • Enable SubTools (to export from Subtools as well as the currently selected subtool)
    • Map Size: Set to your desired texture map resolution
    • Map Border: 16 (the padding in pixels outside of the UVs)
    • Flip V: Enable (otherwise maps are flipped vertically)
    • SubDiv Level: Usually 1 (should be set to the same subd level you exported your mesh as)
    • Smoothing UVs: Enable
    • Mid: Set to 0.5 (or 0, as long as it matches in Arnold - this is the mid value of your maps)
    • Enable 32Bit
    • Enable exr: If using merged maps, disable exr it exports as tiff instead.
  4. Export Maps: Click Create All Maps and save the files.

File Names

Click on File Names and UV tile ID format to <UDIM> to enable the UDIM workflow.

Setting Up in Maya

Import and Assign Materials

  1. Import your low-poly model into Maya.
  2. Assign a Standard Surface material to the model.
  3. Rename the material and mesh to keep your scene clean

Connect the Displacement Map

Under the model’s Shading Group, Create a File Node in the Displacement mat.

    Set UV Tiling Mode to UDIM (Mari) for multi-UV-tile maps.
    Change the Color Space to Raw

    Change Arnold Subdivision Settings

    This is where we tell Arnold to subdivide the model. Without this step, the displacement map from ZBrush would still displace the model but it wouldn't add any details.

    1. In the model's Shape Node, go to Arnold:
    2. Subdivision:
      • Type: catclark
      • Iterations: Same number as the amount of subD levels in ZBrush - usually 4-5
    3. Displacement Attributes:
      • Scalar Zero Value: 0.5 (Same as the Mid Value in ZBrush - if the Mid in ZBrush is set to 0, set this to 0)

    Render in Arnold

    That's the setup for correctly setting up a 32 bit displacement map between ZBrush and Arnold! These steps might seem complicated, but once you've done it a few times, it becomes second nature.

    Decimated Mesh from ZBrush
    Low poly model with displacement map

    Tips for a Clean Displacement Map Workflow

    1. Clean UVs: Avoid overlapping or stretched UVs. They create rendering artifacts.
    2. Clean Topology: If you have messy topology with stretching or messy loops, you might get artefacts while rendering in Arnold
    3. Stretched Polys: Ensure that your topology is nice and gridded. If polys are stretched (non-square) this can cause issues.
    4. Optimal Subdivision: Match subdivision iterations in Maya to ZBrush for best results - e.g if the map is generated from SubD level 1, export the mesh from SubD level 1 to ensure it matches.
    5. Avoid Interference: When generating maps, don’t disturb ZBrush. Pop-ups or interruptions can slow the process.
    6. Avoid using DPSubPix and Adaptive in the Multi Map Exporter settings. These slow down export time significantly without increasing the quality in any way. They simply subdivide the mesh at render times. If your mesh already has enough subdivision levels in ZBrush, the maps will work.

    FlippedNormals Products

    Henning Sanden

    3D Artist and Co-Founder of FlippedNormals. Lover of creatures.

    Leave a Reply