Blender needs a transfer vertex order feature

Hi blender artists, I guess this is my first post, I have been using blender since 2.49b

Blender desperately needs a Transfer Vertex Order feature, so that two objects that are exactly the same, apart from having different vertex orders, can have the vertex order transferred in much the same way that the Transfer UV feature works, by selecting the destination first, then selecting the source object last, then by pressing Ctrl and L, to bring up the make links menu, to see the Transfer Vertex Order feature.

Reasons for the Transfer Vertex Order, first of all you can literally find 100’s of forum questions relating to this very issue, by searching for terms such as “blender copy vertex order”, and “blender UV transfer problem” where people trying to help often misunderstand the issue or suggest outdated scripts and solutions.

The main issue is where people use the Transfer UV Maps feature, only to have the destination UV turn to a complete mess, because the vertex order is not taken into account before transferring the UV’s. The model can be exactly the same but the vertex order can get change for any number of reasons.

Either way I think alot of people would appreciate such a great solid feature and having the ability to fix such an annoying issue, potentially saving people 100 of hours of work. Not having such an important feature puts a major road block in a productive work-flow, specially when you have a number of different models, setup with different UV layouts, for projection painting, that take days to setup.

Additionally, There is already a feature called sort elements, the only thing is sort elements doesn’t sort the vertex order the same way on two copy’s of the same object, this makes sort elements completely useless as It Basically randomizes everything no matter what setting you use. Is the sort elements feature supposed to help with matching vertex orders? If so this could actually be a bug that needs to be reported, if not we need to above.

Maya has a Transfer Vertex Order, Can blender also have one?

1 Like

I made addon for transfering vert indices by topology. I will release it soon (free).

Even sort elements by axis gives different results ?

It really does need this. Thankfully, this should only be a few lines of python. Jose seems to have it covered.

Here it is. I had not time to test it on production meshes, but it worked on boxes :).
For vert id transfer, if two meshes have same vertices position, you can use object mode ‘ctrl+c’ menu. Just select target object, then source mesh and use ctrl+c to transfer ids.

If meshes have different vertices positions use editmode ctrl+c menu - Topo Vert id copy, and then paste on new mesh. You need to select two same faces on both meshes for it to work. And it has to be repeated per island (loose mesh parts - but I havet tested if it works ok)
Script is based on MagicUV Nutti uv topo transfer.
If you find it useful consider buying one of my paid addons :wink:

Edit: ok, it seems I will have to put some more work into edit mode vert id transfer… I doesn’t work so well on more complex shapes.

2 Likes

Do we have some way to see vertex index in the viewport?

Jose, thanks a lot on making and sharing this!! Much needed feature for blender.
I’ve needed this a bunch of times and always had to revert doing it in some other environments.
Will test this out as soon as I get a chance, thanks again!

Yes, run bpy.app.debug = True in the console and then check Indices in Mesh Display in edit mode. Also works for edges and faces.

woaa

I think that indices option must be visible by default. It’s hard to know a command like this and sometimes when you have problems in the mesh is good to check it.

I agree but untill this is the case you can simply paste the following script into a text editor and save it as debugMode.py (or something similar) and put the file into the startup scripts folder of your Blender version.

This startup scripts folder is in
Blender/2.79(or whatever version you are using)/scripts/startup


import bpy
bpy.app.debug = True

Thanks!!!

Yes, it gives different results on objects with the same topology and UV maps.

Okay, I just tested your script on a 13,000 face character mesh and it worked fine, its really amazing, thank you so much. I hope you can get it working for more complex meshes, and get it more publicly known, this is super important.

Edit: I am so sorry the above is untrue, I forgot the test it by also transferring the UV maps, ‘silly me’, I guess being to excited for a solution made me rush. Any ways it almost works, but unfortunately its not the solid solution we’re looking for, and furthermore solidifies why this feature needs to be part of the blender release.

Please excuse my late replies, being these are my first few posts I need to have moderation clearance.

I’m happy to see that im not the only one that requires such a feature.

If you have the add-on ‘measure it’, it has this under mesh debug, along with some other great stuff

I implemented this feature. You can also get the same thing by starting Blender with --debug argument.
I got pushback from Ton and others about making it available to users normally. He felt users shouldn’t have to know index numbers. But was OK making it available for developers for debugging. I still think he was wrong, as this thread shows.

that was a good idea in any case
only thing missing are the face’s index !
not certain why

there is also an addon that can show these index

thanks for this tool
and keep it coming

happy bl

It’s probably that it have few uses but it’s a suite 3D, you don’t hide options to the user. Because the user understands that the option don’t exist. I have needed sometimes to check why a mesh is giving me problems with UVs.

And also, if blender foundation thinks in make blender everything node like houdini it’s a basic function.

I don’t know, this is one of the things like face groups or edge groups that blender needs.

Thanks for the addon JoseConseco. Surprised the Data Transfer Modifier doesn’t handle this.

Likewise howardt for the feature. Can see the downsides though, like potential for unnecessary concern and bug reports from users who don’t actually require specific index orders. This thread is exclusively experienced / knowledgable users discussing default visibility. Any noobs want this or know why they would?

+1
I also think it was hidden for bad reasons. At that time, Mesh display panel was very long (one column, one item per row) .
Build modifier and particles emission are based on indices order.
It is not just useful to debug scripts.

This thread is exclusively experienced / knowledgable users discussing default visibility. Any noobs want this or know why they would?

You would want this anytime you will use Sort Elements operator.
And it is not a very advanced tool. I think that you may use it at an intermediate level.

And as howadt explained it, the advanced point was not that should be hidden because it was an expert level feature but a debug feature only meaningful for devs. That point is false.

Maybe the noobs consider a bug the extrude tool, or show normals, or show vertex color channels. Maybe we need to hide all this things because a noob don’t understand it.