Import UDIMs in Zbrush by Xuan Prada

One of the most common tasks once your colour textures are painted is going to Zbrush or Mudbox to sculpt some heavy details based on what you have painted in your colour textures.
We all use UDIMs of course, but importing UDIMs in Zbrush is not that easy. Let's see how this works.

  • Export all your colour UDIMs out of Mari.
  • Import your 3D asset in Zbrush and go to Polygroups -> UV Groups. This will create a polygroups based on UDIMs.
  • With ctrl+shift you can isolate UDIMs.
  • Now you have to import the texture that corresponds to the isolated UDIM.
  • Go to Texture -> Import. Do not forget to flip it vertically.
  • Go to Texture Map and activate the texture.
  • At this point you are only viewing the texture, not applying it.
  • Go to Polypaint, enable Colorize and click on Polypaint from texture.
  • This will apply the texture to the mesh. As it's based on polypaint, the resolution of the texture will be based on the resolution of the mesh. If it doesn't look right, just go and subdivide the mesh.
  • Repeat the same process for all the UDIMs and you'll be ready to start sculpting.

Clarisse UV interpolation by Xuan Prada

When subdividing models in Clarisse for rendering displacement maps, the software subdivides both geometry and UVs. Sometimes we might need to subdivide only the mesh but keeping the UVs as they are originally.

This depends on production requirements and obviously on how the displacement maps were extracted from Zbrush or any other sculpting package.

If you don't need to subdivide the UVs first of all you should extract the displacement map with the option SmoothUV turned off.
Then in Clarisse, select the option UV Interpolation Linear.

By default Clarisse sets the UVs to Smooth.

You can easily change it to Linear.

Render with smooth UVs.

Render with linear UVs.

Zbrush displacement in Clarisse by Xuan Prada

This is a very quick guide to set-up Zbrush displacements in Clarisse.
As usually, the most important thing is to extract the displacement map from Zbrush correctly. To do so just check my previous post about this procedure.

Once your displacement maps are exported follow this mini tutorial.

  • In order to keep everything tidy and clean I will put all the stuff related with this tutorial inside a new context called "hand".
  • In this case I imported the base geometry and created a standard shader with a gray color.
  • I'm just using a very simple Image Based Lighting set-up.
  • Then I created a map file and a displacement node. Rename everything to keep it tidy.
  • Select the displacement texture for the hand and set-up the image to raw/linear. (I'm using 32bit .exr files).
  • In the displacement node set the bounding box to something like 1 to start with.
  • Add the displacement map to the front value, leave the value to 1m (which is not actually 1m, its like a global unit), and set the front offset to 0.
  • Finally add the displacement node to the geometry.
  • That's it. Render and you will get a nice displacement.

Render with displacement map.

Render without displacement map.

  • If you are still working with 16 bits displacement maps, remember to set-up the displacement node offset to 0.5 and play with the value until you find the correct behaviour.

Quick Lidar processing by Xuan Prada

Processing Lidar scans to be used in production is a very tedious task, specially when working on big environments, generating huge point clouds with millions of polygons. That’s so complicated to move in any 3D viewport.

To clean those point clouds the best tools usually are the ones that the 3D scans manufacturers ship with their products. But sometimes they are quite complex and not artist friendly.
And also most of the time we receive the Lidar from on-set workers and we don’t have access to those tools, so we have to use mainstream software to deal with this task.

If we are talking about very complex Lidar, we will have to spend a good time to clean it. But if we are dealing with simple Lidar of small environments, props or characters, we can clean them quite easily using MeshLab or Zbrush.

  • Import your Lidar in MeshLab. It can read the most common Lidar formats.
  • This Lidar has around 30 M polys. If we zoom in we can see how good it looks.
  • The best option to reduce the amount of geo is called Remeshing, Simplification and Reconstruction -> Quadric Edge Collapse Decimation.
  • We can play with Percentage reduction. If we use 0.5 the mesh will be reduced to 50% and so on.
  • After a few minutes (so fast) we will get the new geo reduced down to 3 M polys.
  • Then you can export it as .obj and open it in any other program, in this case Nuke.

Another alternative to MeshLab is Zbrush. But the problem with Zbrush is the memory limitation. Lidar are a very big point clouds and Zbrush doesn’t manage the memory very well.
But you can combine MeshLab and Zbrush to process your Lidar’s.

  • Try to import your Lidar en Zbrush. If you get an error try this.
  • Open Zbrush as Administrator, and then increase the amount of memory used by the software.
  • I’m importing now a Lidar processed in MeshLab with 3 M polys.
  • Go to Zplugin -> Decimation Master to reduce the number of polys. Just introduce a value in the percentage field. This will generate a new model based on that value against the original mesh.
  • Then click on Pre-Process Current. This will take a while according with how complex is the Lidar and your computer capabilities.
  • Once finished click on Decimate Current.
  • Once finished you will get a new mesh with 10% polys of the original mesh.

Zbrush displacement in Modo by Xuan Prada

Another of those steps that I need to do when I’m working on any kind of vfx project and I consider “a must”.
This is how I set up my Zbrush displacements in Modo.

  • Once you have finished your sculpting work in Zbrush, with all the layers activated go to the lowest subdivision level.
  • Go to the morph target panel, click on StoreMT and import your base geometry. Omit this step if you started your model in Zbrush.
  • Once the morph targer is created, you will se it in viewport. Go back to your sculpted mesh by clicking on the switch button.
  • Export all the displacement maps using the multi map exporter. I would recommend you to use always 32bit maps.
  • Check my settings to export the maps. The most important parameters are scale and intensity. Scale should be 1 and intensity will be calculated automatically.
  • Check the maps in Nuke and use the roto paint tool to fix small issues.
  • Once in Modo, import your original asset. Select your asset in the item list and check linear uvs and set the amount of subdivisions that you want to use.
  • Assign a new shader to your asset, add the displacement texture as texture layer and set the effect as displacement.
  • Low value and high value should be set to 0 and 100.
  • In the gamma texture options, set the value to 1.0
  • We are working in a linear workflow, which means that scalar textures don’t need to be gamma corrected.
  • In the shader options, go to the surface normal options and use 1m as value for the displacement distance. If you are using 32bit displacements this value should be the standard.
  • Finally in the render options, play with the displacement rate to increase the quality of your displacement maps.
  • 0.5 to 1 are welcome. Lower values are great but take more time to render, so be careful.
  • Render a displacement checker to see if everything works fine.

Zbrush insufficent memory error! by Xuan Prada

You have probably experienced this error a few times already, haven’t you?
It is quite common specially when you are working with huge assets.

It happened to me last week a lot of times when working with a 40 UDIM asset and trying to export a 32 bit displacement maps.
My machine couldn’t handle it and Zbrush started to giving error saying “Insufficent memory error”.

If this happens to you and don’t know how to extract your displacement maps out of Zbrush, don’t worry, this small trick could help you.

  • Execute Zbrush using your root account in Mac or Administrador account in Windows.
  • In Windows just right click on the Zbrush icon and select “run as administrator”.
  • In Mac start a terminar and logging as root.
  • Then execute Zbrush.
  • Then in Zbrush go to Preferences -> Mem and increase the Compact Memory.
  • That’s it. It should work now.
  • Unfortunately this trick only worked for me with simple displacement, but it didn’t work with vector displacement :(

Zbrush to Maya and Vray 2.0 by Xuan Prada

I know how tricky can be sometimes to make your Zbrush displacements look great outside Zbrush.
Maya, Softimage, Vray, Renderman or Arnold, just to name a few treat Zbrush displacements in a different way.
Let me explain to you my way to export displacement from Zbrush to Maya and Vray 2.0

- First of all, if you are working with a final asset you will have to export your displacement using your base geometry imported in Zbrush. If you did the scult from scratch in Zbrush you may want to export your lowest subdivision mesh, create a good uv mapping and re-project your sculpted detail in that mesh.
If this is the case, check this.

  • Go to the lowest subdivision level.
  • Turn off all your layers.
  • Export as .obj
  • This is the object that you are about to render. If you had imported a base mesh before, you won’t need to export it again, it would be in your 3D application already.
  • Go back to the highest subdivision level.
  • Turn on all your layers.
  • Go down to the lowest subdivision level.
  • Store a new morph target and import the previous exported .obj or your original base mesh from your 3D application.
  • Your sculpted model will be substituted by the original mesh with no sculpt information.
  • Click on switch morph target to activate again your sculpted mesh.
  • You are ready to export the displacement maps, just check my settings below for 16 bits, 32 bits and vector displacement.
  • Finally to set-up your shaders and render settings for Zbrush displacements in Maya and Vray 2.0 check my previous post about it.

Projecting details in Zbrush by Xuan Prada

  • Export the lowest subdivision model.
  • Export the highest resolution model.
  • Work on the uv mapping using the lowest resolution model.
  • Go back to Zbrush and import the high resolution model.
  • Now import the low resolution model.
  • Select the high resolution model and go to Subtool -> Insert -> and select the low resolution model.
  • Once inserted you will see both models overlapped in the viewport.
  • You need to be complete sure that only the two models that you’re interest on are shown. All the additional stuff that you would have in your zbrush scene should be hidden.
  • Select the low resolution model and subdivide it as much as you need.
  • Store a Morph Target so you can always come back to the starting point in case that you need it in the near future. (and you will).
  • With the low model selected go to Subtool -> Project -> Project All
  • The most important parameters are Distance and PA Blur. Try to use low values as Distance and keep blur to 0. This is a trial and error process. Default distance value is a really good starting point.
  • Once the projecting process is done, check your model.
  • If you find big errors in the mesh try to use a Morph brush to reveal your original mesh. Remember that we stored a Morph Target while ago. Revealing the original model you can easily remove projection artifacts and sculpt quick fixes.
  • You are ready to export the displacement maps for this model. Just select the low resolution model and go back to the lowest subdivision level.
  • Check the screenshots to see the parameters that I’m using for 16bits 32bits and vector displacement.
  • Check the final displacement maps.

You can watch a detailed video tutorial with all these steps here, only available in Spanish.

Si quieres puede ver aquí un videotutorial con todos estos pasos y explicaciones más detalladas.