How to make a ZBrush model Sketchfab ready
The trick of having a real Sketchfab ready Zbrush model is to get the polygon count down and put all the detail in texture maps. The problem however with most Zbrush models is that you end up with a model that has an enormous amount of polygons without the possibility of going down in subdivision levels. These models are so heavy, smartphones, tablets and sometimes even desktop pc’s can’t handle them.
The next tutorial shows you how to get all the details of the heavy model onto a low poly model. I will show you how to get a decent mesh that is small enough to work, but not so small you can see that it is low poly. I will show you how to make a good uv map that allows you to emphasize certain areas of your model and how to make both the diffuse, displacement and normal map to be used in Sketchfab. Everything is done in Zbrush and the techniques, with some minor modifications, can also be used to get decent models for animation (in other applications) and such.
The basic technique can be described in 4 steps:
- Create a lowpoly duplicate with ZRemesher
- Project highpoly details unto lowpoly model
- Create a UV map for the new lowpoly model
- Export texture and lowpoly model to sketchfab
This tutorial is focussed on just one subtool. If you are working with multiple subtools, these steps need to be followed for each subtool.
As an example I will use my African Bush Elephant. As I wrote on the page itself (click on the Sketchfab model above), this model is a few years old. The first version I uploaded was really heavy, too heavy in fact to show off. On my own pc it takes considerable time to load. It has 1.6M faces and 813.9k vertices. But the last version is very different. It loads almost immediately, no matter the device. You can’t see the difference in detail, it actually looks even more detailed than the old model. And that is because it is. At 52.5k faces and 52.5k vertices it shows everything I want it to show.
As you see in the screenshot above, the original model of this elephant, shown here on the ZBrush canvas, is very heavy. If you click on the + sign, you see additional information.
Copy the model
Go to Zbrush and open the model you want to upload to Sketchfab. The first thing to do is copy it. The copy will be the model you will eventually export to Sketchfab, let’s call it the work model. Then turn of the view of the original model so you don’t get confused.
Reducing the size
The next phase is more of an art than science. The aim is to reduce the amount of polygons as much as possible without ruining the shape of the work model.
We do this by using ZRemesher. ZRemesher can be found at the right side of the canvas in the original ZBrush gui under the “Geometry” panel. ZRemesher is basically a retopology plugin that can be tweaked to meet specific needs. It actually does a good job.
Luckily you can go back and forth (right above the canvas you can see your history) if the result of using ZRemesher isn’t what you hope it to be. The easiest way to see if it goes as planned is turning on “Draw Polyframe” with shift+F.
Since this tutorial is mainly to get a model efficiently into Sketchfab you might want to ignore the basic beauty rules of low poly (for example: the topology of the joints or even the eye sockets don’t need to be as good as when you are working for animation) and go for what gives the lowest polycount without losing (too much) detail.
The settings I tweak and use to get a really low poly model that still looks good are:
- Freeze borders
- Target polygons count (as low as possible. Most of the time “ 5” is enough for such a heavy model)
- Adaptive size (for Sketchfab I turn this down to about 11. Default is 50)
The rest of the settings I leave as is. Turning on “Freeze borders” makes sure the (larger) extremities are taken into account, “Target polygons count” does what you aim for: getting the numbers of polygons down to a manageable level and “Adaptive size” gives a more or less even distribution of the polygons. One thing to keep in mind when using ZRemesher, like most actions in Zbrush, is to check if you have a symmetric model or not. If you don’t make sure the “Activate symmetry” button (under the “transform” tab in the top of the screen) is disabled before you hit the ZRemesher button or else you’re in for a surprise.
Once you have a mesh that is acceptable, I got this model down to less than 10.000 points, you can start the next phase.
Copying the details
Go to the “Geometry” panel. Almost at the top of that panel you see a big “Divide” button. Hit that. This way you increase the polycount by subdividing the mesh. Do that several times, 5 times is a good amount. Make sure the smooth button is on from the beginning. By increasing the polycount on the work model you will get a model that is similar in polycount to the original model. This will make transferring the details of the original model easy.
Once you have done that, it’s now time to copy all the data from the original model. Make the original model visible again and go back to subdivision level 1 on your work model.
In the “Subtool” panel you see a tab “Project”. Project is used to copy both shape and texture onto the work model from the original model. It is actually similar to “baking” in Blender 3d if you are familiar with that application. Make sure you have your work model selected and set the distance a bit higher, 0.1 – 0.2 will do. Now click on “Project All”. Zbrush will ask if you want the texture copied too, so click yes.
Why do I begin at level 1 instead of all the way up to level 5? Because “Project” can cause artifacts. By copying the original model onto each level of the work model, with increasing accuracy and checking the mesh in between, you can get the artifacts before they cause too much trouble. I decrease the distance of the projection by each level, so that with each level of detail the produced artifacts are manageable.
Making a UV map
Once you have done that, the work model is ready to be unwrapped so you have a uv map you can use to put the displacement map, normal map and diffuse map on. The UV Master plugin of Zbrush is actually very good, but I prefer to have islands in my uv map that I can control. If you don’t, UV master will decide for itself and the best you can hope for is one island that you can’t manipulate anymore (which is also an option if you’re lazy/busy, and just want to upload a quick sculpt). Normally I turn to Blender to make seams on the model. But ZBrush has a similar function that is called “polygroups”.
Making polygroups for uv unwrapping
On the right side of the canvas you can find the “Polygroup” panel. This feature is actually essential if you want to make great models for any purpose, so it is a good thing to dive into. Polygroups are not only used to make islands for uv unwrapping, but can easily be used in your workflow if you need to hide (predictable) parts of you model to work on other parts for example. They can also be used to make extra subtools that follow the original model completely like clothes for example.
There are several different ways to make polygroups. I will go into each method briefly, the Pixologic ZClassroom has great tutorials regarding this if you want to explore further.
The easiest way to make polygroups, but not the most accurate way, is to use masking.
The other way is using the “Zmodeler” brush. Go to the Brush panel on the left of the canvas and search for the “Zmodeler” brush.
This brush works like the “edit” mode in most other 3d applications and works directly on the polygons. Stand on a poly with you cursor hit spacebar and you can select your action
The Zmodeler brush is great if you have a low poly model. If your model has a high polygon count, it will probably take too much time.
If you hide each polygroup you just made by clicking on it with Ctrl+Shift+Alt (or Ctrl_Shift if you want to hide everything else), you can work your way up the model and make as many polygroups needed. Once you are satisfied with the polygroups you can start with the uv process.
Go to the UV Master plugin in the Zplugin tab at the top and click on “work on clone”. Now you can work on a copied model without worrying that the work model will be damaged in some way.
Select “use existing uv seams” if you made the seams in another 3d application (f.e. Blender) or “use polygroups” if you made polygroups. If everything is ok, you now get as much islands as you made polygroups.
As you can see the UV Master plugin also has a button “flatten”. This one is actually very important. If you click it after unwrapping, you can see the actual uv map. And edit it if needed. How do you do that? If you haven’t used polygroups already, you can now go to the panels on the right side and search for polygroups. Open the panel and click on “auto groups”. Now each island is a polygroup. And you can manipulate them anyway you want to.
Moving, rotating and resizing polygroups within the UV map
Open the “Masking” panel and make sure everything is cleared of masks. Then in the top row make sure “Move” is highlighted. Now go the the polygroups you want to move and do Ctrl+click. This action masks all other polygroups so you can move the one you selected. By clicking “clear” in the “Masking” panel all other polygroups are freed again and you can select another polygroups to move. Rotation and Scaling work the same way. I adjusted the uv map a bit so the body, head and trunk had more space. I have also noticed that sometimes the uv map made via the UV Master plugin has overlapping islands. By flattening the uv map and editing it to your liking you can adjust that too.
If the uv map is done you can “Copy UVs” from the copied model and go back to the work model. “Past UVs” onto the work model.
Diffuse map, Displacement map and Normal map
Now the uv map is copied onto the work model you are ready to make the diffuse map and displacement and or normal map.
For the diffuse map you need to set the subdivision level to the highest level. Then go to “Texture Map” panel and open the “Create” tab. There you see several buttons. For our goal you need “New from Polypaint”. Click it and you see the diffuse map.
For the displacement map (and the normal map too) you need to set the subdivision level to the lowest level. Go to the “Displacement Map” panel and click “Create Dispmap”.
And that’s it!
Export your model
Now you are ready to export your model to Sketchfab. If you don’t want to use another application, there are two ways to do this: via the Sketchfab Uploader (if you already installed it you can find it under Zplugins at the top of the gui. If not here is the installation instruction) or via an exported obj. I assume most of you know how to upload an obj, so I focus on the Sketchfab uploader.
The Sketchfab uploader at this point is the easiest way but it will always upload your lowest subdivision level. If you don’t want that (the lowest subdivision level of a Zbrush model most of the time isn’t smooth enough) you can delete that level temporarily so (original) subdivision level 2 is exported.
With the work you have done above you only need to make sure you have:
- your api registered in the plugin.
- the texture maps and displacement maps on “On” (if you don’t your model will probably display the vertex colors. Nice, if that is your aim.)
You could set the model to private if you want to adjust it before it goes public. And it is always good to limit the map size. But other than that all you have to do is to click on:
And you’re done!
You now have a great working Sketchfab model with the detail of a real Zbrush model! The texture maps are already in you model. If you want to use the displacement map instead of the normal map, you will have to upload it seperately but that’s all.
In the 3d settings of your Sketchfab model you can adjust all the stuff you need, give it a good background, make sure you have the right map for the details (if you made both displacement map and normal map, the normal map is used, so you will have to upload the displacement map separately but that’s all) and use the maps you have to tweak your model to the best.
Looking forward to all the new and improved Zbrush models!