{"id":566,"date":"2015-10-13T15:07:33","date_gmt":"2015-10-13T15:07:33","guid":{"rendered":"http:\/\/avastar.online\/?page_id=566"},"modified":"2015-10-13T15:07:33","modified_gmt":"2015-10-13T15:07:33","slug":"copy-bone-weights","status":"publish","type":"page","link":"https:\/\/avalab.org\/avastar\/legacy\/help\/copy-bone-weights\/","title":{"rendered":"Copy Bone Weights"},"content":{"rendered":"<p>The Weight copy tool is used to copy the mesh weights from sibling meshes and from other bones within the mesh skeleton (rig). Actually we support Weight copy at 3 different places:<\/p>\n<div class=\"symple-toggle state-closed \"><h3 class=\"symple-toggle-trigger \">1.) While attaching a Mesh<\/h3><div class=\"symple-toggle-container symple-clearfix\">\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<p>During parenting a mesh to an Avastar rig you can enable an initial Weight copy from all visible siblings to all bones of the parented mesh. In the image on the right you see the armature (yellow) and the shirt(semi transparent) selected. Initial weight copy will project the weights of the upper body into the weights of the shirt. For more detailed information see the Reference guide<\/p>\n<p><strong><a href=\"\/?page_id=11645\"><i class=\"fa fa-text\"> <\/i> Binding(Assign to Armature)<\/a><\/strong>.<\/p>\n<\/div>\n<div class=\"span6 rhcol\"><span style=\"color: #99ccff;\"><a href=\"\/?page_id=14708\" rel=\"attachment wp-att-14708\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-14708 aligncenter\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/boneWeightCopyOnRigging.png\" alt=\"boneWeightCopyOnRigging\" width=\"220\" height=\"303\" \/><\/a><\/span><\/div>\n<\/div>\n<\/div><\/div>\n<div class=\"symple-toggle state-closed \"><h3 class=\"symple-toggle-trigger \">2.) While skinning a Mesh<\/h3><div class=\"symple-toggle-container symple-clearfix\">\n<div class=\"row-fluid\">\n<div class=\"rhcol span7\">\n<p>Avastar supports 2 different skinning patterns for animating an SL mesh character:<\/p>\n<ul>\n<li>Via weighting the mBones<br \/>\n(also named <em><span style=\"color: #ff6600;\">Classic Weighting<\/span><\/em>)<\/li>\n<li>Via weighting the cBones<br \/>\n(also named <em><span style=\"color: #ff6600;\">Fitted Mesh Weighting<\/span><\/em>).<\/li>\n<\/ul>\n<p>Avastar can pre configure a Mesh to use either of the weighting patterns. For details read the<strong> <a title=\"Skinning\" href=\"http:\/\/blog.machinimatrix.org\/avastar\/help\/skinning\/\"><i class=\"fa fa-text\"> <\/i> Skinning<\/a> <\/strong>section.<\/p>\n<\/div>\n<div class=\"rhcol span5\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/05\/weighting-06.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-19992\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/05\/weighting-06.png\" alt=\"weighting-06\" width=\"189\" height=\"326\" \/><\/a><\/div>\n<\/div>\n<p><span style=\"color: #ff6600;\"><strong>Note:<\/strong> <\/span>Of course you can mix mBones and cBones manually. In that case you want to use the Fitted Mesh weighting Preset. For more detailed information see the Workflow<\/p>\n<p><strong><a href=\"http:\/\/blog.machinimatrix.org\/avastar\/help\/classic-skinning\/\"><i class=\"fa fa-know\"> <\/i> Skinning with Weight Copy<\/a><\/strong><\/p>\n<\/div><\/div>\n<div class=\"symple-toggle state-closed \"><h3 class=\"symple-toggle-trigger \">3.) Weight Copy Tools in Weight Paint Mode<\/h3><div class=\"symple-toggle-container symple-clearfix\">\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">While working on the weights of a mesh in Weight Paint mode you can do a weight copy on a bone by bone base. The details are described in the weight copy tool reference below.<\/p>\n<p><strong><span style=\"color: #ff6600;\">Note:<\/span><\/strong> The Selector in the Mirror Opposite Bones button is new with Avastar-1.3<\/div>\n<div class=\"span6 rhcol\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/weight_copy_01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24216\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/weight_copy_01.png\" alt=\"weight_copy_01\" width=\"251\" height=\"352\" \/><\/a><\/div>\n<\/div>\n<\/div><\/div>\n<h3>The Weight Copy Tool Reference<\/h3>\n<p>Below you find all Copy tools explained in more detail.<\/p>\n<div class=\"symple-toggle state-closed \"><h3 class=\"symple-toggle-trigger \">Selected to Active Bone<\/h3><div class=\"symple-toggle-container symple-clearfix\">\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<p>If you want to copy from another bone, then you must ensure that you have selected exactly 2 bones, where the source bone must be selected first while the target bone is SHIFT Selected second (so the target bone becomes the active bone!)<\/p>\n<p><strong>Note:<\/strong> The target bone&#8217;s weights will be entirely replaced by the weights from the source bone, not added or merged!<\/p>\n<\/div>\n<div class=\"span6 rhcol\"><a href=\"\/?page_id=14711\" rel=\"attachment wp-att-14696\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-14696 aligncenter\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/boneWeightSelectedToActiver.png\" alt=\"boneWeightSelectedToActiver\" width=\"219\" height=\"268\" \/><\/a><\/div>\n<\/div>\n<\/div><\/div>\n<div class=\"symple-toggle state-closed \"><h3 class=\"symple-toggle-trigger \">Mirror from Opposite Bone<\/h3><div class=\"symple-toggle-container symple-clearfix\">\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<p>If you want to mirror copy then you only have to select the target bone(s). You can select a set of bones. Avastar will perform the mirror function on each selected bone.<\/p>\n<\/div>\n<div class=\"span6 rhcol\"><a href=\"\/?page_id=14712\" rel=\"attachment wp-att-14697\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-14697 aligncenter\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/boneWeightCopyMiror.png\" alt=\"boneWeightCopyMiror\" width=\"219\" height=\"268\" \/><\/a><\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\"><span style=\"color: #339966;\"><strong>New in Avastar-1.3:<\/strong><\/span> You now can specify if your copy shall use <span style=\"color: #ff6600;\"><em>Topology mirror <\/em><\/span>or <em><span style=\"color: #ff6600;\">Vertex Mirror<\/span><\/em>. Please be aware that topology mirror can only be used when the mesh is not symmetric! For perfect symmetric meshes you will always use Vertex Mirror.<\/div>\n<div class=\"span6 rhcol\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/weight_copy_06.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24218\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/weight_copy_06.png\" alt=\"weight_copy_06\" width=\"269\" height=\"135\" \/><\/a><\/div>\n<\/div>\n<h4><\/h4>\n<p><strong><span style=\"color: #ff6600;\">Note:<\/span><\/strong> If you have Sparkles-Pro (to be released soon), then you get one additional option <span style=\"color: #ff6600;\"><em>Shape Mirror Copy<\/em><\/span> which is less accurate but works in any case even if the topology is completely different on both sides of the mesh.<\/p>\n<h4>Details about Mirror Copy<\/h4>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">A common pitfall with Weight Copy happens when your mesh is slightly asymmetric. on the next image you see an example:<\/p>\n<p>The boots look pretty much equal, so you have the impression that a weight copy should be no big deal. But actually i have moved the left boot slightly out of symmetry, so all vertices have a small offset from perfect symmetry. And you can not see this slight asymmetry by just looking at it.<\/p>\n<p>Lets assume you have carefully weighted the left boot and now you want to mirror copy the weights from the left ankle to the right ankle.<\/p><\/div>\n<div class=\"span6 rhcol\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/weight_copy_02.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24207\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/weight_copy_02.png\" alt=\"weight_copy_02\" width=\"278\" height=\"400\" \/><\/a><\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">So you will select the right ankle bone, and then perform a <em><span style=\"color: #ff6600;\">Mirror from Opposite Bone<\/span><\/em>. But you end up with the weights not mirrored. In the image you see the weights are not copied to the right ankle as expected, but the weights remain on the original vertices.<\/p>\n<p>Whenever you see this happen you can be sure that your mesh is not exactly symmetric. In that case you can try a topology mirror copy, but unluckily this has its own pitfalls as well&#8230;<\/p><\/div>\n<div class=\"span6 rhcol\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/weight_copy_04.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24208\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/weight_copy_04.png\" alt=\"weight_copy_04\" width=\"278\" height=\"400\" \/><\/a><\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">So lets try to do a mirror copy with topology mirroring enabled (select Topology in the selector right to the Bone Mirror Copy Butto). In my case i ended up with a very strange result as you can see in the next image.<\/p>\n<p>The problem with topology mirroring is that the used function needs a more complex mesh to identify the mirrored vertices. I have not fully understood how it works, but apparently it does not work for low polygon meshes, hence Topology mirroring is in general not suitable for game engine development.<\/p><\/div>\n<div class=\"span6 rhcol\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/weight_copy_05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24209\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/weight_copy_05.png\" alt=\"weight_copy_05\" width=\"278\" height=\"400\" \/><\/a><\/div>\n<\/div>\n<h4>Stepping out of the pitfall<\/h4>\n<p>So if you have the situation that i just have explained above, then you have 2 options to proceed:<\/p>\n<ol>\n<li>Either you decide to use Blender&#8217;s Symmetrize function (in edit mode Mesh -&gt; Symmetrize)<\/li>\n<li>Or you can decide to delete half of your mesh and use a Mirror modifier to fix this issue. Using the mirror modifier has the nice extra advantage that your weights get automatically mirror copied when you apply the modifier.<\/li>\n<\/ol>\n<p>However, if you are working with slightly asymmetric meshes, then you might not be able to use mirror weight copy. Then you only can weight both sides of your mesh manually.<\/p>\n<p><strong>Sidenote: <\/strong>In our new Blender Addon Sparkles-Pro we have added an additional <em>Shape Mirror Copy<\/em> which is less accurate but works in any case even if the topology is completely different on both sides of the mesh. So if you are lazy and you want the one click solution, you may want to check out the Sparkles Pro tool.<\/p>\n<p><span style=\"color: #ff6600;\">Note:<\/span> If you select a bone AND its mirrored bone, then only one of the bones will be mirrored. That is: We do NOT swap the weight data and thus you always end up with a symmetric result! This may not be what you want in all cases.<\/p>\n<\/div><\/div>\n<div class=\"symple-toggle state-closed \"><h3 class=\"symple-toggle-trigger \">Swap Collision with Deform<\/h3><div class=\"symple-toggle-container symple-clearfix\">\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<p>Each classic mBone is related to a corresponding fitted mesh cBone. Hence when you select any of the Deform bones the tool knows which is the counterpart bone according to the table below.<\/p>\n<p>Each time when you call the tool, the weights of the selected Bone(s) will be swapped with the weights of their corresponding counterpart.<\/p>\n<\/div>\n<div class=\"span6 rhcol\"><div class=\"symple-box  yellow none \" style=\"text-align:left;width: 100%;\"> \n<strong><span style=\"color: #99ccff;\">Note:<\/span><\/strong> The tool will revert exactly to the initial configuration when you call it twice. You should always double check how your Vertex Groups get renamed after you called the tool!<br \/>\n<\/div><\/div>\n<\/div>\n[symple_toggle_sub title=&#8221;The relation table&#8221;]\n<table>\n<tbody>\n<tr>\n<th>Classic<\/th>\n<th>Fitted Mesh<\/th>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mCollarRight, mCollarLeft<\/span><\/td>\n<td><span style=\"color: #ff6600;\">R_CLAVICLE, L_CLAVICLE<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mShoulderRight, mShoulderLeft<\/span><\/td>\n<td><span style=\"color: #ff6600;\">R_UPPER_ARM, L_UPPER_ARM<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mElbowRight, mElbowLeft<\/span><\/td>\n<td><span style=\"color: #ff6600;\">R_LOWER_ARM, L_LOWER_ARM<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mWristRight, mWristLeft<\/span><\/td>\n<td><span style=\"color: #ff6600;\">R_HAND, L_HAND<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mHead<\/span><\/td>\n<td><span style=\"color: #ff6600;\">HEAD<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mNeck<\/span><\/td>\n<td><span style=\"color: #ff6600;\">NECK<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mChest<\/span><\/td>\n<td><span style=\"color: #ff6600;\">CHEST<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #808080;\">mChest<\/span><\/td>\n<td><span style=\"color: #808080;\">UPPER_BACK<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #808080;\">mChest<\/span><\/td>\n<td><span style=\"color: #808080;\">RIGHT_PEC, LEFT_PEC<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mTorso<\/span><\/td>\n<td><span style=\"color: #ff6600;\">BELLY<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #808080;\">mTorso<\/span><\/td>\n<td><span style=\"color: #808080;\">RIGHT_HANDLE, LEFT_HANDLE<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #808080;\">mTorso<\/span><\/td>\n<td><span style=\"color: #808080;\">LOWER_BACK<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mPelvis<\/span><\/td>\n<td><span style=\"color: #ff6600;\">PELVIS<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #808080;\">mPelvis<\/span><\/td>\n<td><span style=\"color: #808080;\">BUTT<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mHipRight, mHipLeft<\/span><\/td>\n<td><span style=\"color: #ff6600;\">R_UPPER_LEG, L_UPPER_LEG<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mKneeRight, mKneeLeft<\/span><\/td>\n<td><span style=\"color: #ff6600;\">R_LOWER_LEG, L_LOWER_LEG<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"color: #ff6600;\">mAnkleRight, mAnkleLeft<\/span><\/td>\n<td><span style=\"color: #ff6600;\">R_FOOT, L_FOOT<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Important: <\/strong>The grey relations are not ambiguous thus they are ignored by the Swapping Tool!<\/p>\n[\/symple_toggle_sub]\n<\/div><\/div>\n<div class=\"symple-toggle state-closed \"><h3 class=\"symple-toggle-trigger \">Remove weights<\/h3><div class=\"symple-toggle-container symple-clearfix\">\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">This is obvious: The weight groups of all selected bones will be reset (made empty). You may want to do that when you decide to restart a bone weighting from the beginning.<\/div>\n<div class=\"span6 rhcol\"><\/div>\n<\/div>\n<\/div><\/div>\n<div class=\"symple-toggle state-closed \"><h3 class=\"symple-toggle-trigger \">Copy from Rigged<\/h3><div class=\"symple-toggle-container symple-clearfix\">\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<p>If you want to copy weights from other meshes (weight sources) to a mesh (weight target), then all source meshes and the target mesh must be siblings of the same armature. (all meshes must be attached to the same armature). All currently selected bones will become Copy targets in that case.<\/p>\n<p><strong>Note:<\/strong> Only visible weight sources are taken into account. Hence at least one weight source (mesh) must be visible.<\/p>\n<p><strong>Note:<\/strong> If you want to do a full weight Copy, then you only need to select all SL Bones (the blue ones) as seen in the image to the right.<\/p>\n<p><strong>Note:<\/strong> Custom meshes can also be used as Sources for a Weight Copy, provided they are siblings of the active Mesh!<\/p>\n<p><strong>Note:<\/strong> the topology of the source meshes and the target mesh may be different!<\/p>\n<\/div>\n<div class=\"span6 rhcol\"><a href=\"\/?page_id=14716\" rel=\"attachment wp-att-14716\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-14716 aligncenter\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/08\/copyAllBones.png\" alt=\"copyAllBones\" width=\"220\" height=\"413\" \/><\/a><\/div>\n<\/div>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The Weight copy tool is used to copy the mesh weights from sibling meshes and from other bones within the mesh skeleton (rig). Actually we support Weight copy at 3 different places: The Weight Copy Tool Reference Below you find all Copy tools explained in more detail.<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":100,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[4],"tags":[],"class_list":["post-566","page","type-page","status-publish","hentry","category-help"],"_links":{"self":[{"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/pages\/566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/comments?post=566"}],"version-history":[{"count":0,"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/pages\/566\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/pages\/100"}],"wp:attachment":[{"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/media?parent=566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/categories?post=566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/tags?post=566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}