← All ideas
  • Published 29 Aug 2024

Refactor topology based symmetry/Add attribute based symmetry

There are two options in edit mode for symmetry editing: position based and topology. And the topology option, in theory very useful, is broken - at least from user view point.

What do I mean? It often doesn't work for many vertices in the mesh, even if it comes straight from the mirror modifier, and it's not considered a bug - official developer explanation is that it's based on "unique topology", but what does it even mean? Does it assign hidden attributes to the mesh? Does it compare faces and edges in real time?

This type of symmetry has weird and forgotten inner workings, and it seems like nobody actually knows how it technically works. And it creates many headaches for the user, because from their perspective it just doesn't work.

So what I propose is to refactor how it works or add another symmetry type based on assigned attributes (assign an ID to every vertex on demand and store it in attribute data, then use matching IDs to determine which vertices are matching for the symmetry) - to be more reliable to user, to have good solution for edit mode symmetry that doesn't depend on perfectly aligned positions.

100%

Development Status: Open

Upvote 2 Downvote 0
rytelierofficial
29 Aug 2024

3 Comments

mau.memoli

I had exactly the same thought when I tried the topological Symmetry in Blender and I wrote an add on and I put together a set of Geometry Nodes to assist with symmetrizing a mesh. The add on is doing exactly what you are suggesting in this post. It is adding a mesh attribute in the point domain and for each vertex is storing the opposite one. I also decided to do something similar to Maya where you must pick the middle edge to track the symmetry. In case you have multiple elements in the mesh they will not be tracked and their value will be -1, but if you run the operator again you can track the symmetry one them and it will maintain the ones already tracked. If you want to give it a go you can download it for free here: mmemoli.gumroad.com/l/meshTopologyAttributeCreator There is also a video where I explain how to make it work

Lauloque

I think the topology mirror option is pretty well explained on the manual.

From Tool Settings - Blender 4.2 Manual :

Topology Mirror

Note
For Topology Mirror to work, at least one of the three Mirror Axis must be enabled.

When using any of the three Mirror Axis options to work on a mirrored Mesh Geometry, the vertices that are mirrored must be perfectly placed. If they are not exactly positioned in their mirror locations then the Mirror Axis will not treat those vertices as mirrored.

Topology Mirror tries to address this problem by determining which vertices are mirrored vertices not only by using their positions but also by looking at how those vertices are related to others in the Mesh Geometry. It looks at the overall topology to determine if particular vertices will be treated as mirrored. The effect of this is that mirrored vertices can be non-symmetrical and yet still be treated as mirrored.

Note
The Topology Mirror functionality will work more reliably on mesh geometry which is more detailed. If you use very simple geometry, for example a Cube or UV Sphere , the Topology Mirror option will often not work.

Example

For an example of how to use Topology Mirror open up a new Blender scene, then delete the default cube and add a Monkey object to the 3D Viewport.

  1. Press Tab to put the Monkey object into Edit Mode .

  2. With all the Mirror Axis options disabled move one of the Monkey object’s vertices slightly.

  3. Then Turn the X Axis Mirror on but leave Topology Mirror disabled.

  4. If you now move that vertex again, the X Axis Mirror will not work and the mirrored vertices will not be altered.

  5. If you then enable Topology Mirror and move the same vertices again, then X Axis Mirror should still mirror the other vertex, even though they are not perfectly positioned.

What do you mean by "another symmetry type based on assigned attributes"? This isn't self-explanatory either.

rytelierofficial Author

The topology mirror is weird even in complex meshes - when I subdivided a mesh, it now makes one of front vertices in the middle edge loop snap to a vertex in the back. That description is still pretty vague, because doesn't explain what these relations exactly are and why it would fail in so many cases.

For attribute based symmetry (I'll add in the main post as well) - assign an ID to every vertex on demand and store it in attribute data, then use matching IDs to determine which vertices are matching for the symmetry. This can be achieved with geometry nodes, but it's not realtime or is restrictive - it must be a modifier or a tool that must be called every time to force symmetry.