zbrush to blender converter

I see your point my friends.
I still do some tests now. We’ll see.
I just want to say: a nice topology, a multires model about 500k, a normal map from this point!!!, all these should be enough in most cases. I would suggest a ~100k model not more. Topology is the key, I hate topology thats true LOL.

I completely agree for final output… and to be honest I’d probably go lower on the cage…

my interest though is for interoperability… to be able to import from z-brush with “point for point” accuracy then continue to sculpt in blender is a worthy production goal… (transferring back to z-brush is already quite easy… using “re-construct subdivision”)…

I’m afraid to say that my tests on point order and subdivision show that point order changes much more than I thought… and also that the python obj export/import is a weak link in blender for this kind of work…

:yes: Michael W,
“I’d probably go lower on the cage” :yes: too.

Is there anything in blender that acts like reshape in multirez but works as a modelling tool when in edit mode? Would be nice to be able to take a second model and generate a blendshape from it.(Seems irrelivent to the topic, but I’m thinking you can bring in the high, the low, and then another obj, which is the low, with the higher levels deleted in zbrush, then resubiv’d up to the higher level. You could then in blender, make a blenshape from the smoothed low to the high, and then multirez the low, mesh deform surface constrain it to the smooth low, and then blend that to the high. Then apply the modifier over the top of the multirez)

I don’t have a copy of zbrush, so I can’t really test any of this out at home. Maybe I’ll try come up with a test sample in my lunch break at work.

Edge walking is the way to go, its going to start getting fairly complicated when you try work out the indexing numerically. Tri’s will be different, ngon’s will be looooads of fun*. You can always limmit the mesh to Quads “Cause its good practice” however, personally I prefer the scripts I write to be a little more robust than that >.<

Edit: Not applicable, zbrush doesn’t do ngons.

If we’re talking about zbrush imports then forget ngons. ZB supports tris or quads

Cool wasn’t sure about ngons I’ve never even tried to import them into zbrush… makes me feel… dirty

ZB will import ngons converting them to tris or quads.


here is an algorithm, someone else can feel free to implment it. I can clarify for any questions

  1. Find vertices that do not contain exactly 4 edges - ie verts with 2,3,5 or more edges - these are your critical verts that determine the meshes topology

  2. find the shortest path between these vertices, based on the number of edges (2,3,5 etc) it has will be the actual base topology meshes.

  3. based on the found base topology calculate the nearest number of subdivisions needed to achieve the high level topology - if the vert and face count is the same we can make the short cut assumption that there are no additional loopcuts

  4. if they are not the same count the vertices that lie on the edge between these base mesh edges, those with more verts will be where additional loopcuts have been added (number of loopcuts can be determined by the ratio of verts on these edges)

  5. you can now determine the corresponding verts (you would require a hint as to orientation and enterline possibly for things like a cube)

This doesn’t require any knowledge of how either program subdivides.

meanwhile… this isn’t about zbrush, its about voxels model from 3DCoat. But same trick again, here’s a multires model in blender. A 2.5k basic model. Still waiting for a bl 2.5 mac build where sculpture is working. I use 2.49b here.


I like what I see, but could someone please explain in layman terms the advantage of doing it this way instead of using a disp. map and a normal map. What are the advantages to this method?


Right Paint Guy. Normal maps work fine in most cases (watch out for visible seams). I had some good results using displacement maps too. But IN MOST CASES, these maps have not the quality you wish. So many problems. Here we have no seams at all and a much much better displacement, in a matter of fact we have almost the real thing. Lets say you’ve imported a high poly sculpt (modeled in any app) as an obj. Lets say you want to re topo it. But you certainly don’t want to loose your already sculpt work. Displacement map means UVs, you don’t have them any more. This workflow is the solution. The use of a similar method is very common in zbrush actually (project geometry).

Thanks michalis,

Ok, so I export the same mesh from ZBrush 2x. Once at the highest sub-d level and once at it’s lowest sub-d level. So if I understand this correctly the low poly mesh takes the detail from the high poly mesh.

  1. I must be missing something because the reason Disp. and Normal maps are used is so that you don’t have to load high poly models into your 3D app. But you’re supposed to import the high poly mesh with this method. please explain.

  2. I exported a mesh from ZBrush at it’s highest sub-d level of 6 and the file is 24.3 mb. Blender is taking forever to load it. I must be doing something wrong.


Displacement maps require displacement which ends up with a high poly mesh, (at rendertime as you can “preview” at lower res) normal maps are a rendering trick to give the illusion of a high detail mesh, but the silhouette shows the truth!

The best compromise is to use a displacement for course detail (so the silhoette is correct enough to not be a distraction and to use a normal map to recreate the fine detail…

Once this is done the model is difficult to sculpt further… (normal maps are tricky to edit by hand and have to be done in a paint package) displacement of high frequency detail can be hit and miss as it’s only “along surface normals”

BUT now that blender sculpt has more power (and is getting more features over summer) it is becoming attractive to do some editing (or total character generation ) within blender… editing a model transferred via cage + displacement is a “lossy” exchange (think of doing 2d graphics and repeatedly saving your work as a jpeg)

You need a uv layout and a high resolution displacement map to recreate exactly what you had… even then, displacement displaces along normals which cannot re-create some kinds of details…

for this reason it’s attractive to import models from anywhere and turn them into manage-able “blender native multi-resolution” models with point for point accuracy…

so that they can be worked on and “finalled” within blender…

perhaps one day, rigging a multires base object and just rigging it (and rendering the high detail) will prove viable… (though I suspect it will usually be desirable to re-topologise to get good deformation… so we’d be back with displacement and normal maps for the final object :wink:

the idea though is to be able to have more flexibility in taking objects into and out of blender…a “perfect” transfer…

  1. I exported a mesh from ZBrush at it’s highest sub-d level of 6 and the file is 24.3 mb. Blender is taking forever to load it. I must be doing something wrong.


No, nothings wrong, it’s just that teh OBJ importer is written in Python not C and transfeering “heavy” meshes can take a LOooonnnggg time! (and sometimes you’ll just give up … or blender will!)

“No, nothings wrong, it’s just that teh OBJ importer is written in Python not C and transfeering “heavy” meshes can take a LOooonnnggg time! (and sometimes you’ll just give up … or blender will!)”

Is this obj importer in 2.5 the same with v2.49b? v2.49 is much faster. I used to import there and then open the .blend in 2.5

the importers were all ported/re-written for 2.5 … for a while 2.49 was way faster than 2.5…

recently I think things may have improved, at least anecdotally it seemed to perform as well as 2.49… on recent builds…

but in my experience above a million faces gets really slow on both… must do some tests for a proper comparison

Thanks Michael, OK, I understand now. No maps = Freedom to Sculpt! :slight_smile: I’m going to give this another try.


Our target should be a 2-10 k base model with subdivisions up to ~500 k. Topology is the more important thing here. For static sculpts, as mine, we could accept triangulated models too. These can also be subdivided for sculpting more details, displacement works fine too. A tri based decimated mess may describes much more details, what do you think about it?

BTW do you know that a multires model with UV map assigned in 2.49b looses UVs in 2.5x? Not compatible. Or, I’m doing something wrong.

michalis file a bug report,