"Join As Shapes" Shrinking Mesh

I have a rigged mesh, that I want to add shape keys to for facial animations. I’d prefer to use Zbrush to sculpt the shapes since I find the sculpting tools easier to use. I watched a tutorial that said you could import from Zbrush after sculpting, and use the “Join As Shapes” option to add the sculpt as a shape key. I’ve done all these steps, and a shape key is “successfully” created, however when I turn up the value the entire mesh seems to just collapse in on itself?

I exported the base mesh into Zbrush to sculpt on, so there are no differences in topology or vertice count. Have I missed a step within Zbrush to prevent this?


They have different object scales or something. Apply scale on both meshes before joining as shapes.

I tried as you said. Mesh no longer shrinks, but uh…

Your second pic is showing some topology disagreement, which should show up in the first pic as well (but doesn’t.). Are those identical other than the applied scale? If so, I’d have to see a file to investigate it to tell you anything.

Identical as far as I’m aware. I exported the model from Blender to Zbrush and back and only changed the facial expression. I’ll upload the file here if you wish to tinker with it.

https://drive.google.com/file/d/1iabO1ru7A0N28q04dGXo6C1grN_0VQrR/view?usp=sharing

In the saved file, you’ve already applied scale, so I can’t reproduce your first picture. Which I’d like to do. Because my thoughts on the problem are made invalid by the first image offered in this thread, if the only thing that happened was that the meshes’ scales were applied.

The two meshes do not have the same vertex order, so Blender cannot properly figure out which vertex on one model corresponds to a vertex on the other model. I was hoping that resorting the vertices (with a “sort” operation) could fix this, but it cannot.

It should be expected that an export/import cycle changes vertex order. It may be possible to preserve vertex order, but it would require knowing more about the exporter and importer functions that you’re using. I’m certainly not an expert in how a z-brush export affects vertex order…

If you can get the first image as a shapekey, you can just edit that shapekey-- it should be a simple scale operation, about the object origin, with a value that can be figured out exactly with math from vertex positions, or just to eye which is almost certainly good enough.

The first example, once the value was at 1, did have the mesh vertices squishing together, so it wouldn’t have been a case of scaling up, unfortunately.

The vertex order could be the reason. In the tutorial I saw, they used Goz/GoB to export and import between the programs but I couldn’t get the add-on to work and so just exported and imported manually. Perhaps the plugin manages to maintain that.

From the picture you got, it’s a case of scaling up. If you get me that file, then I can see what I can do.

This can probably help you out:

Here is a commercial variant

https://www.artstation.com/marketplace/p/A2Jg/transfer-vertex-order-blender-add-on

I found an option in the export settings, under the Geometry drop down, to preserve the vertex order, and using that seemed to do the trick and the shape key is working as intended. Thank you @bandages for suggesting that, it would have never crossed my mind otherwise.