Why is Blender so bad at maintaining X-axis symmetry?

While working on creating human and human-like characters on Blender one of the most important lessons I’ve learned is to strive for and preserve X axis symmetry on the base mesh because it literally cuts the amount of work in half. Any creation and change you make on one side be it on the mesh itself, a shape key, weight paint, texture paint, etc; such change will be applied identically mirrored on the opposite side so you can move on without having to redo it again on the other side.

But boy, Blender manages to stress the hell out of me even with me working to maintain such symmetry and having base meshes initially X-symmetrical and perfectly centered on the world. Lets list some examples I can think on top of my head:

  • Sculpting (any brush) does not perfectly mirror on the other side. The algorithm works by redoing the brush on the same opposite position, not by reapplying the vertex change symmetrically. Problem is that the clone brush does not care about symmetry accuracy at all, so you basically get a “close enough” change on the opposite X axis, but your accurate symmetry is gone to hell.

  • Some times, “Mirror Shape Key” isn’t accurate. Create a shape key named “left side change”, do the change, now do a “Duplicate and Mirror Shape Key” and name the new one “right side change”. Go to “left side change” rename to “full change” and select the opposite side of the mesh and “Blend From Shape” on the “right side change”. Now check for symmetry by selecting one half and mirroring the selection, there will be some vertexes that will fail to be selected.

  • Making a pose (with x-axis symmetry enabled) and saving or applying the armature modifier as a shape key, even if you have perfectly mirrored bones and weight paints, the new shape key will basically have no accurate symmetry. If you check the symmetry by selecting the left side of the mesh and attempting a mirror selection, it will fail for 90% of the selected vertexes.

Since the differences in position symmetry on the vertexes are usually small, most of the time the issue can be solved with selecting the badly mirrored points and doing a “Snap to Symmetry” from edit mode. However, when you have lots of vertexes very close together blender will fail to select the correct opposite vertex and will snap to symmetry a close neighbor one because the software apparently have issues dealing with small numbers like 0.001 or smaller (can’t remember the correct precision)

If you don’t pay attention if the changes on the mesh are being correctly mirrored on the opposite side of the X axis, those small inaccuracies will compound until you have problems on everything else that require good X symmetry. And, man, it’s very tiring and time wasting to keep constantly checking if the software is doing correctly what it’s supposed to do. It’s not the end of the world, but I did lost many hours trying to fix these issues.

1 Like

Is there evidence that this is how Blender does it according to the source-code?

If so (to the devs), is there a reason why Blender can’t just use a more straightforward and/or methodical method like an automatic application of snap to symmetry, perhaps it would be faster as well?

Well I am not exactly going to try to defend Blender here. But there are two things that come to mind.

One is that if you are planning to use a robust solution for symmetry. I would personally not rely on as many nuances and delicate techniques that you are describing, considering that I have always had some issues with automatic symmetry in every software I ever used. For this reason I find ways to either use a Mirror modifier or in other ways simply leave the exact symmetry to the end of the process and then mirror the model.

Basically don’t try to rely too much on software.

Second. Ok so you think it should work better anyway.

Hop on the dev channel and take up each one of these issues with examples and repeatable bugs to bring it to their attention.

That’s going to take a while and be a lot of work.

In the meantime refer to my first point and simplify your workflow so that these things are not creating problems.

2 Likes

I’ve had the least symmetry problems out of Blender because it’s so easy to open 12 more viewports and point them at the parts of the model you hope you don’t lose symmetry on. Make a change, inspect the change from all angles via the other viewports, undo if there’s a problem. But that only helps with basic modeling and sculpting. You’re obviously doing more advanced stuff than I’ve ever done.

I don’t do it this way, so perhaps a different technique may help. I create the full combined key of left and right (which uses full symmetry). Then duplicate the key, and from there remove the verts I don’t wish to be a part of the key (example - I select all the verts on the opposite side of the key) by blending back to the base.

No sculptor here so I can’t offer help other than: With any task, cg or otherwise, being flexible, adaptive, creative with your work flow or methods is beneficial.

I find that idea of applying a reversed brush to the other side interesting. As an option where the user knows what it does of course. That allows a non-symmetrical mesh to get semi-symmetrical sculpting.