ZBrushCentral

Basic material questions

I have been using ZBrush for a few weeks for sculpting. Now turning to materials and shading, and have completely hit a wall. Just so different from anything else I’ve used.

Immediately, I have a project made up of several subtools. All of the subtools have been UV mapped. I would like to:

  1. create a custom material for each subtool.
  2. save the custom materials somewhere so I can reload them when I need them.
  3. assign one of the custom materials to each subtool.
  4. merge the subtools and export an OBJ with material assignments.
  5. import into Blender and/or Substance Painter for final shading.

Can’t find directions anywhere on how to do this.

Longer term, I’d really like to understand the ZBrush material/shading model. The docs are pretty spare. If someone could point me to a good resource to learn this, it would be much appreciated.

Hello @sboerner !

You have posted this in the ZBrush Core usage questions forums. Because ZBrush Core does not contain features related to texture creation or export, I will assume you are referencing the full version of ZBrush, and I will move your question to the appropriate forum.



Everything I’m about to go over can be found in the ZBrush Documentation:

http://docs.pixologic.com/getting-started/

I highly recommend reading the “getting started” documentation in its entirety, as well as for every feature you’d like to use.



  1. Materials | ZBrush Docs

ZBrush has a finite number of material slots available. A custom material will overwrite one of the other materials ZBrush loads with. To save a copy of the active custom material, use Material> Save As. That custom material can then be loaded over top of any active material in ZBrush (Material> Load), and any polygons that have that material slot applied will now show the new custom material instead.

Please understand what information is saved with what kind of file in ZBrush. A Ztl will save the geometry of the active tool and not much else. To save any applied custom materials in the file itself, you would need to save as a ZPR.

http://docs.pixologic.com/getting-started/basic-concepts/saving-your-work/



EXAMPLE: For instance, if you have applied the default red wax material to areas on your mesh and save it as a ZTL, it will load with the Red Wax applied because the ZTL format does not save custom material info, but it does remember which slot is applied. The red wax is the default material that occupies that slot.

If you overwrite the red wax slot with a custom material, apply it to a tool and save it as a ZTL, the tool will still load with the red wax material applied, because it remembers the slot, and not the custom material info. But if you select the red wax from the material menu and select Material> Load, your custom material will overwrite the red wax in that session and appear everywhere on your model where the red wax was applied.

If you fill your mesh with a custom material and save it as a ZPR, it will remember all custom material information applied to a mesh anywhere in the scene.



  1. Keeping in mind the points above, simply load your custom material into the session, and with the M or MRGB channels active, use Color> Fill Mesh. This will fill any visible, unmasked polygons with that material as polypaint. Please be sure to understand how polypaint works:

http://docs.pixologic.com/user-guide/3d-modeling/painting-your-model/polypaint/



Polypaint is essentially vertex paint where color is applied directly to mesh itself. Detail capacity will depend on the resolution of the mesh. Note that polypaint is entirely separate from UVs or Textures. If rendering in ZBrush, polypaint may be sufficient for rendering with ZBrush’s extreme polycount potential. If you are looking to render in an external application, you will probably need to convert that polypaint to a texture and export it.



  1. Dynamesh or Live Boolean can be used to fuse geometry together. After which, it would probably be a good idea to remesh your mesh into a multi-resolution form with clean, export-level base topology and multiple subdivision levels. Detail can be projected from a previous version of the mesh, onto the newly retopologized mesh, using one of the various methods for doing so.

If you are working with a process that will involve a lot of changes to the form and topology of the mesh, it is at this point it is recommended to create your UVs. UVs both affect the performance of the mesh at high polycounts, AND provide an opportunity for things to go wrong if applied to a mesh that will be undergoing heavy editing, so it is advisable to work without them until your topology is stable, and you are ready to create textures for export. Polypaint does not require UVs, and can be more easily transferred between different topologies, so it is better to rely on Polypaint while working rather than applied textures. That polypaint can be converted to a texture when your topology is stable and of higher quality.

Be sure to understand the difference between Material, Texture, and Polypaint. Materials in ZBrush refer to the surface qualities of a mesh when rendered. This is similar to shaders in other programs. Materials can sometimes be approximated between rendering engines, and there are exceptions–but generally speaking, each rendering engine does things its own way, and these arent going to transfer on a 1 to 1 basis from program to program. If you want to recreate the ZBrush Red Wax you can get pretty good approximations of it, but its not going to look exactly the same outside of ZBrush.

Textures are image maps containing color information. They will require UVs to display the color in the correct areas. Each program also has its own way of reckoning worldspace, which may require you to flip image coords along one or more axes to display correctly in your target program. Every program is different, and you will need understand your target program as well as ZBrush to get results.

Polypaint can be converted to a texture for export using the following process:

http://docs.pixologic.com/user-guide/3d-modeling/painting-your-model/texture-maps/

Good luck!

Thank you for the very detailed response! I have read the related documentation, but with your post in hand I will go over everything again. Especially your suggestions for step 5.

But I’m still left with the question: How do you export an OBJ with material groups from ZBrush?

I don’t care how the materials look in ZBrush; they are only intended as placeholders. No textures will be baked or exported. All I want is for the OBJ file to include the material groups so they can be referenced in another application (Blender, Maya, Substance Painter).

Perhaps this is not possible because ZB’s color model is fundamentally different from those of other applications.

The workaround I’m using is to make sure “Export Groups” is selected for OBJ export. My UV maps are all based on polygroups, so this allows me (in Blender, for example) to merge related groups and recreate all the material groups manually. Not perfect but it’s relatively fast and works.

Apologies for posting in the wrong forum, and thank you for moving this to the correct forum.

Perhaps a more straightforward example is called for here.

I can build a model in Blender and assign dummy materials to the various meshes and export it as an OBJ or FBX. When the model is imported into Substance Painter each material appears as a texture set, and the model can be shaded.

Can something like this be done with ZBrush?

Is simply importing the mesh with polygroups not working for you? You may have better luck with resources devoted to your target application for questions about how to make things happen in that program.

Good luck!

That’s the workaround I mentioned a couple of posts ago. So yes, it works, but some assembly is required.

There isn’t a direct corelation between polygroups and material groups. There are generally several polygroups per material. (The polygroups are used with UV Master to define the UV tiles, and there are several tiles per material.)

So I’ve been exporting from ZB (with groups), then importing into Blender to merge the groups and make material assignments, exporting again and importing into Painter. It sounds like this really isn’t a workaround but instead is a valid workflow. Bit cumbersome but it does work.

Gone over everything again and things are starting to make sense. I found that if I use the FBX plugin, the exported file contains all the info I need – groups and materials. (Should have tried that earlier.) Appreciate the link to the Project All help page; I hadn’t worked with that but now understand that it is an essential tool.

Thanks again for the detailed responses to all my newb questions. ZB is powerful and deep. Looking forward to really learning how to put it to work.