1
$\begingroup$

I'm working on cleaning a character, because even though its mostly symmetrical, the vertices are a bit off comparing both sides. The character has unique uvs with unique textures on each side, even some mesh parts are non-symmetrical. This cleanup will greatly help with cloth creation and rigging later on:)

So I'm searching for a way to mirror the characters symmetrical parts so that uvs are preserved, excluding the non-symmetrical parts.

I'd imagine I need a custom script but I have no experience in scripting in blender (but in other languages). The script could search for mirrored vertices by roughly the same position and align them perfectly, perhaps even providing some way to manually adjust the mapping. Maybe a vertex group filter could help for non-symmetrical parts, but I guess I could isolate them manually before.

Does such a script/plugin already exist? If not, can anyone get me a real quick start on how to approach this, e.g. how to iterate over vertices, create and store lists of mappings, waiting for user to call for a remap, ... It will probably include alot of stuff I have to dive into if this does not exist already only for this one occasion:(

$\endgroup$
  • $\begingroup$ When you move a vert with the G key or by using the transform manipulator, UVs stay where they are. When you move with G+G, UVs move too. when you set x,y,z from a script UVs stay where they are unless you set u and v too. You can do it without writing a script, It will be painful for a high poly mesh. Select a vert, press N, copy x, y and z, go to the equivalent vert in the other side of mesh, paste x, y and z. This won't move UVs, if they are only tens of verts and not hundreds maybe you can simply do it this way. $\endgroup$ – Hatoru Hansou Feb 24 '16 at 12:53
  • $\begingroup$ Yep, unfortunately it is a high poly mesh (a few thousand verts). Also I'd like to apply this on multiple clothing variations I have. That means a sum of up to 30 thousand verts. I'd be also great if I could make changes afterwards quickly. That means scripting is the way to go, right? I would do a script but there's more to it than just a few hundred lines of code, I would have to make research in so many areas (UI, scene UI integration, vertex groups, custom properties, etc.) that it's simply not acceptable for me unfortunately:( $\endgroup$ – Seneral Feb 25 '16 at 20:21
  • $\begingroup$ I never do proper UI for my simple scripts. I leave some global variables to control Its behavior then just run It from the text editor. For this case I would define an axis of symmetry then apply the method to iterate through all verts of the mesh, for each vert at the right consider same the more similar vert of the left taking into account that x is inverted. Then copy y and z from vert of the right, and the inverted x. Iterate all verts (sorry for not providing an example): blender.stackexchange.com/questions/2776/… $\endgroup$ – Hatoru Hansou Feb 26 '16 at 2:14
  • $\begingroup$ I already implemented this for my characters in Unity, for a character system. But this doesn't always turn out well, there might be deformations that destroy the result. I imagined an UI to adjust this, but specifying vertex groups (both left and right, vertices match exactly) and creating the mirros in 'local space' to these vetex groups is easier. So instead of making a global x-mirror, all vertex group's centers are aligned (logically, not in practice) and then the mirror is applied to them locally. What I hope I can achieve is to export that mirror as a file to reuse;) I'll give it a go! $\endgroup$ – Seneral Feb 27 '16 at 8:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.