Bone Weight Copy addon

Hi,

I’ve written a 2.57 version of the 2.49 Bone Weight Copy script. Basically it allows you to copy vertex groups from one mesh to one or more other meshes. It’s very useful for transfering bone weights from a base figure to some clothes for example.

It’s still a bit work in progress but I’d really appreciate some feedback on it.

It’s here: http://dl.dropbox.com/u/710852/space_view3d_copy_bone_weights.py

To use simply put in the addons folder and enable in the user preferences. The panel will appear in the tool panel when a mesh object is selected. It copies the bone weights of the active object to all the selected objects (if they are meshes)

It’s a bit slow for high levels of interpolation (3 or 4 is the most you’ll probably need) and I can’t work out how to get Blender to display a progress bar so be patient.

Any suggestions / optimisations etc. welcome! I know the nearest vertex search is a bit clunky for example

This is a must have tool for me . Thanks . If i remember the old one was also slow.
Humm? When I parent the clothes to the armature, I select empty groups? Then the first object is the active object ? Select the model then the clothes ? I must be doing something wrong all I got was to spots under the armpits to paint with weight.
Thanks

awesome, certainly needed, thanks :slight_smile:

Hey Jester - awesome - i have also been in serious need of this … but i cant see it in the add-ons window after adding it to my add-ons directory. Does this mean it doesn’t work for us Mac users? :0(

My mistake Jester - apologies. I tried installing it again after a good nights sleep and i can see it fine - thanks! :0D

Hello Again. A few questions and feedback re the script:

Firstly, i should say that my tests have been very basic as i’m new to weighting in Blender. I’ve just been copying vertex groups between simple primitives.

Would anyone be able to explain to me what the Interpolation slider does? (I only understand interpolation within the context of animation and function curves). I notice that the script tends to throw an error when i have the interpolation on 0, which is why i ask (presumably you are supposed to be able to have it on 0 or the option wouldn’t be there, but maybe i am doing something else wrong…?). I’ve kept a screen-shot of the error message, so if you’d like me to email you it Jester, let me know.

Also, initially i thought the script was sometimes losing certain vertex groups during the copy, but on further inspection, it appears to be merging two into one sometimes.

(I did also notice it copies the vertex groups over in a different order - not exactly high on my gripe-list, but maybe worth a mention as i guess this could become cumbersome if you have lots, and you want to maintain their order without fiddling)

Re the progress bar - it would be nice, although would a message saying ‘…working…’ then ‘complete’ be easier in the meantime…?

The other thing i was thinking would be really awesome, is the ability to copy vertex groups between meshes in different files by just saving/loading. It’s super-useful, and one of the only things i miss about 3DS Max :0D And it would give this script the edge over the Copy Attributes add-on which atm seems to do the same thing with vertex groups.

Finally another question, as i’m new to weighting in Blender: am i right in thinking that vertex groups will be influenced by bones with identical names? (ie: vertex group ‘top_right’ will automatically be influenced by bone ‘top right’.)

Anyway, thanks again for this script Jester, i’ll be checking back for further developments! :0) It would be cool to hear some feedback from other people, since i’m quite new to Blender so maybe not the best qualified to spot if something’s going wrong or not… but i’ve done my best.

(PS: i’m on OSX, in case this is pertinent to any of the errors i’ve had…)

Yes, you are correct. And be careful, they are case sensitive! (that gets me all the time xD) The names have to be exact.

Also, it’s great to hear this is in the works. The lack of this option is one of my largest quarrels with 2.5, as I have been constantly switching back and forth between 2.49 and 2.57 in order to use the old Boneweight copy.

Keep up the great work my friend, I salute you.

This thread seems to have gone kind of dead :0( - is it because the Copy Attributes add-on offers similar functionality?
That’s kind of a shame, as I think a well thought out weight-copy Add-On is well worth something in its own right. As i say, the most useful would be to be able to export the vertex weights from a mesh in one file and load them onto an identical mesh in another - without having to mess about copying and pasting between with two meshes in one file.

Oh and PS: Thanks for the tip Primantis! :0D

I opened a thread asking about it a long time ago and no one answered, my bad breath? it works wonderfully thanks !!! that´s one of things that kept me going back to 2.49, now stride bone walkcycles is the only thing I want, but that´s another issue…
Thanks a lot man!!!

I may be doing things wrong, but I was trying to add some clothing to a rig, and tried to use this script. When I leave interpolation at 0, I get an error (I’m assuming because there are different vertex counts. When I set interpolation to 1, it seems blender never responds (I’ve left it going for 5ish minutes before killing the process). I’m playing with imported Make Human figures, so maybe my vertex counts are way too high?

If other folks are using this, how long does interpolation take for you guys? Anybody else have experience using it on MH?

Copy Attributes doesn’t seem to have any interpolation capability.

Thanks!

This is broken in Blender 2.59 !!! release 39616, almost sure is a API change

It takes awhile to do the number crunching… I generally leave the Interpolation at around 3 for good copy quality, and simple stuff can take 5-10 minutes, stuff with lots of vertices can take much longer. (and theres no progress bar, so even if it looks like Blender hangs, it’s still chewing away)

Just had a look. Blender SVN of just lately only supports Matrix * Vector but the addon uses Vector * Matrix.
Meaning that in Bl 2.59 you have to revert the order of operands …
At least line 77: WSTargetVertsCo = [v.co*targetObject.matrix_world for v in targetObject.data.vertices]

I have contacted the author of the script, and he kindly wrote will look into it. yay!!!

I have contacted the author of the script, and he kindly wrote will look into it. yay!!! :smiley:

Great to hear. I’ve been switching back and forth between 2.58 and 2.59 for some rigging now. Still much better than having to resort to 2.49, but nice to hear the author might get it working on 2.59.

Thanks for the hint. I have it working in 2.59 now. :slight_smile:

@ashasekayi would you like to share it? or just trolling :smiley:

@Antholocousse: it works fine after PKHG correction :

line 77: WSTargetVertsCo = [v.co*targetObject.matrix_world for v in targetObject.data.vertices]

By the way, very cool script, thanks!

what should I do? there are multiple places that probably must be rewriten in that script, the line that you wrote is exactly the same line as the original script, I know very little about scripting man, could you share your updated script? or just wait for a real solution.

nah forget it I´ll wait for the real scripter