Hello @thoiberg,
Most scale mismatch issues in ZBrush are the result of improper import procedure. I have pasted a lengthy explanation below. Please click on the link to expand it if you want the full explanation.
Click here for more information
The effective working space in ZBrush is finite. Meshes that are drastically over or undersized, or off-center, will perform poorly in ZBrush in a number of ways, making them difficult or impossible to work with. The following video describes just some of the things that can go wrong, and I’m aware of others as well:
https://www.youtube.com/watch?v=VeqX7b5S5AE
This is why when a model is imported into ZBrush, either with no active 3d tool, or with an active tool with zero values in the Tool> Export menu (like the default polymesh3d Star), the mesh will be auto centered and auto-scaled to the optimal size in ZBrush–a Tool> Geometry> Size XYZ value of approximately 2. The values required to restore the mesh to its original size and offset are recorded in that Export menu, and the mesh will be returned to its original size when exported. This is designed to happen seamlessly, without requiring input from the user. Altering the size of the mesh through sculpting in the program will change the size of the exported mesh, but it will still be proportional to its original scale.
However, when an active tool has non-zero values in that menu, any mesh imported while that tool is active or appended into the tool, will inherit those values and be scaled accordingly. This is a necessary feature designed so that meshes created to be used together, but imported separately, can still match up. For instance, if you had a character head mesh, and a hat to fit on that head, but are not exporting them as part of the same file, the proper procedure would be to select the polymesh3d star for each tool in turn, import them separately, and then append the hat to the head mesh so the hat will inherit the head’s scaling. This is because the amount of scaling necessary to reduce the hat mesh to a size of approximately 2, and the amount required to do the same thing for the head will be different values. Since we know the hat has a certain size relationship to the head, and the head had to be scaled by , say 35%, to reach optimal ZBrush size, then in this case we want the hat to be scaled by 35% as well so it will again fit on the head.
This is also why the default polymesh3d star tool is commonly used as an import target. Selecting this tool prior to importing any mesh will ensure you have a clean slate.
Where problems arise is when a tool with non-zero values in the export menu is used as an import target . A common scenario would be that the user is working on an existing tool with its own scaling factor defined in the export menu, and then imports a mesh without switching to the polystar first. This would end up replacing that mesh while inheriting the original tool’s scaling, rather than the scaling it needs to export back to the correct size. Any operations depending on the export scaling for that tool being accurate, will now also be off. So if you append a mesh to that tool, it will also inherit the wrong scaling, and cause a size mismatch.
So the takeaway is this–always select the polymesh3d star prior to importing any mesh, unless you actually want to replace a mesh–for instance to replace UVs. In that scenario, both meshes should be the same size, so inheriting the tool’s scaling won’t be an issue. If you keep that rule in mind, most other things should sort themselves out. It isn’t the PolyMesh3d star itself that’s important, but rather the fact that it’s easily available, and has a zero value in the Tool> Export> Scale menu.
Good luck!