Select Mirror and Other Updates
So, I’ve managed to put in some BMesh time. Recently I ported a bunch of selection tools, select linked flat faces, select random, select sharp edges (as in edges with folded faces around them, not edgesplit-sharp edges).
I also ported select mirror to bmesh, and in the process I decided to try my hand at writing a topological-based function to find the best mirror candidate for a vert. It works pretty well, except I’ve later learned that Campbell Barton beat me to it in svn trunk. I’ll have to take a look at the code, see how it compares with my method.
A good mirror-finding function is important. In a perfect world, the function would be entirely topological (e.g. no need to have your model in a t pose, perfectly split by the x axis), but I’m not sure if I’ll be able to do that anytime soon. What I’ve done is coded it to detect the best match among possible candidate vertices in a sphere around the vert’s mirrored location, based on how similar the topology around the candidate is to the topology around the source vert.
I’ll have to put up some illustrations later. I’ve not yet hooked this up to x-axis mirroring, weight paint, etc; I need to look at Campbell’s code, and decide if I should modify my version to use the same method. Mine isn’t completely perfect, and I suspect his approach would work better in certain situations. Most likely I’ll end up combining the two. This isn’t something I’ll likely be spending a lot of time on in the near future, though, since there’s lots of porting work and debugging to do.
I’ve also been chugging away at aforesaid porting work, and merging in recent changes from the main development trunk. I’ve decided to put off the dreaded loop to region tool (ctrl-e, for example, loop select a forearm and loop to region will select the hand) until later, since it seems few people use it and it’d be more effective to spend time on other parts of the code right now.
Entry filed under: Uncategorized.