When working in ZBrush I like to work iterative when it comes to baking. Because of this I dislike decimating my mesh as well as long export times.
Therefore I did a little benchmark using the same mesh (4.3 million polys). It took ZBrush 50sec to export the mesh as .fbx, while only 15sec when exported as .obj.
Marmoset on the other hand needed 11sec to load the .fbx, while 6sec for the .obj.
On the flip side the .obj is twice the size in disk space.
I assume this speed/size difference has to do with some sort of compression.
So from a speed perspective .objs seem to be superior, the question remains though, is the quality on par as well? I read that .objs don’t store normal information, but this should not be an issue, if working with undecimated meshes anyway.
Replies
The issue seems to be that by default .objs are exported from ZBrush with "unsmoothed" normals. Which results in the first cylinder from the screenshot, when imported into Marmoset (It's a decimated mesh).
regarding filesize vs speed. thats also one of the reasons why I prefer TGA over PNG, at least in substance painter it takes a lot longer to export PNG vs TGA
thanks for taking the time to answer my question. I think I need to elaborate a bit further exactly what I plan to do.
What I currently am doing is researching into possibilities to write a ZBrush->Marmoset pipeline plugin for ZBrush. Unfortunately ZBrush only allows to export .OBJS (like you pointed out ), to be exported via script.
The reason being that ZBrush only allows to run one plugin at a time, and other then the .obj exporter, the FBX exporter is a plugin on its own. So it can't work together with other scripts/plugins.
I usually bake from .fbx files exported from ZBrush. Because of the plugin through, I did some research - exported some of my sculpts as .objs and was amazed how much faster they were done.
Now just like you I usually don't export decimated meshes, but I asked in an other community and concerns were raised, that "...a 200 million poly mesh needs to be decimated, otherwise Marmoset would crash and when baking from decimated .objs they have bad smoothing".
This of course would be a no go. So I did some tests on my own and in fact the decimated meshes look bad when exported from ZBrush as .objs with the default export settings (represented by first cylinder in the image above).
I assumed that this must be an issue with the decimation (which it kind of is ), but while exporting I also saw the "Preferences>ImportExport>Export smoothed normals"-toggle. When exported with the toggle active (second cylinder), the same decimated cylinder looks good and just like the third one(same mesh but exported as .fbx with "Smoothed Normals Amount" set to 100).
In conclusion, .obj seems to be a legit alternative (if not a better format) to bake from after all. Especially when hearing that @Neox and @thomasp are using it regularly as well (thanks for your insights guys!).
Just like @CheeseOnToast pointed out, the only thing that seems to be objectively worse, is the fact that ZBrush can only either export all Subtools merged to one mesh, or all as individual files.
But this is actually something I could solve via script e.g. export all folders/visible/shared prefix/... to separate obj files.
If for some reason, i have a symmetrical object not aligned in zero, i can still sculpt on it with symmetrical tool in zbrush, then import it back at the right place. With obj, i'd have to center my object first or my symmetry axis gets offsetted.
This is how it works (there are a few more context sensitive buttons):
I attached a pre-release version below and would love to get some feedback. So if you have a minute to spare extract the .zip into
...\Pixologic\ZBrush 2019\ZStartup\ZPlugs64 and give it a try!