{"id":500,"date":"2015-10-13T08:19:40","date_gmt":"2015-10-13T08:19:40","guid":{"rendered":"http:\/\/avastar.online\/?page_id=500"},"modified":"2015-10-13T08:19:40","modified_gmt":"2015-10-13T08:19:40","slug":"skinning","status":"publish","type":"page","link":"https:\/\/avalab.org\/avastar\/legacy\/help\/skinning\/","title":{"rendered":"Skinning"},"content":{"rendered":"<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<h3>Skinning (weighting your mesh)<\/h3>\n<\/div>\n<div class=\"rhcol span6\">[PS Showtime url=&#8221;\/wp-content\/uploads\/2014\/09\/map_skinning.png&#8221;]<\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<p><span style=\"color: #ff6600;\"><i>Skinning<\/i><\/span> is the process of creating an association between a Mesh (the Skin) and a Rig. More specifically in the <em>Skinning<\/em> process we define associations for each bone of the Rig&#8217;s <em><span style=\"color: #ff6600;\">Skeleton<\/span><\/em> to each vertex of a mesh. In practice, for a polygonal mesh character, each bone is associated only with a subset of the character&#8217;s vertices.[break]\nPortions of the character&#8217;s skin can be influenced by 2 or more bones, where each vertex of the affected area gets an influence factor to each associated Bone. This factor is also called <em><span style=\"color: #ff6600;\">Vertex Weight<\/span><\/em>. Thus the influence of each bone on a specific Vertex is defined by its Vertex Weight.<\/p>\n<\/div>\n<div class=\"span6 rhcol\">\n<p>The process of Skinning includes:<\/p>\n<ul>\n<li><em><span style=\"color: #ff6600;\">Binding<\/span><\/em> the Character to the rig in a specific Pose (basically establishing an association between the Rig and the Mesh)<\/li>\n<li><span style=\"color: #ff6600;\"><em>Weighting<\/em><\/span> the Mesh to the Armature bones (create the Vertex Weights)<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n<h3>The Skinning Panel<\/h3>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<p>Once you have bound your custom mesh to an Avastar rig, the Skinning panel changes as displayed in the image aside. We now see 3 subsections:<\/p>\n<ul>\n<li><em><span style=\"color: #ff6600;\">Avastar Sliders<\/span><\/em>: To attach the selected Custom mesh to the Avastar Slider System<\/li>\n<li><em><span style=\"color: #ff6600;\">Adjust Weight Groups<\/span><\/em>: To automatically create weight presets for the selected Custom Mesh<\/li>\n<li>An <em><span style=\"color: #ff6600;\">Unbind from Armature<\/span><\/em> Button to disconnect the Custom mesh from the Avastar Armature<\/li>\n<\/ul>\n<\/div>\n<div class=\"span6 rhcol\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/skinning_01.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-22876\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/skinning_01.png\" alt=\"skinning_01\" width=\"193\" height=\"308\" \/><\/a><\/div>\n<\/div>\n<h3>Avastar Sliders<\/h3>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">By default the Avastar sliders are not enabled for Custom meshes. In that case the Skinning panel shows just the <em><span style=\"color: #ff6600;\">Attach Sliders<\/span><\/em> Button.<\/div>\n<div class=\"span6 rhcol\">\n<div id=\"attachment_22241\" style=\"width: 197px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/skinning_02.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-22241\" class=\"wp-image-22241 size-full\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/skinning_02.png\" alt=\"skinning_02\" width=\"187\" height=\"77\" \/><\/a><p id=\"caption-attachment-22241\" class=\"wp-caption-text\">Sliders inactive (not attached to Custom mesh)<\/p><\/div>\n<\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<p>When you click on the <em><span style=\"color: #ff6600;\">Attach Sliders<\/span><\/em> Button, then Avastar will generate 2 Shape Keys:<\/p>\n<ul>\n<li>The <em><span style=\"color: #ff6600;\">Neutral Shape<\/span><\/em><\/li>\n<li>The <em><span style=\"color: #ff6600;\">Bone Morph<\/span><\/em><\/li>\n<\/ul>\n<p>These 2 Shape keys in combination create the mesh shape that will be used in SL when you wear the custom mesh with the same SL Shape as you use within Avastar.<\/p>\n<\/div>\n<div class=\"span6 rhcol\">\n<div id=\"attachment_22249\" style=\"width: 238px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/skinning_041.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-22249\" class=\"wp-image-22249 size-full\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/skinning_041.png\" alt=\"skinning_04\" width=\"228\" height=\"257\" \/><\/a><p id=\"caption-attachment-22249\" class=\"wp-caption-text\">You find the Shape Keys panel in the Custom Mesh Data properties<\/p><\/div>\n<\/div>\n<\/div>\n<p><strong><span style=\"color: #ff6600;\">Note:<\/span><\/strong> Avastar&#8217;s default Shape is exactly the same as the SL Default shape that you get when you create a new Shape in the SL Viewer.<\/p>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<div id=\"attachment_19790\" style=\"width: 294px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/05\/Image008.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-19790\" class=\"wp-image-19790 size-full\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/05\/Image008.png\" alt=\"Image008\" width=\"284\" height=\"416\" \/><\/a><p id=\"caption-attachment-19790\" class=\"wp-caption-text\">Avastar Default Shape<\/p><\/div>\n<\/div>\n<div class=\"span6 rhcol\">\n<div id=\"attachment_21483\" style=\"width: 267px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-21483\" class=\"wp-image-21483 \" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2012\/11\/default_shape.png\" alt=\"default_shape\" width=\"257\" height=\"416\" \/><p id=\"caption-attachment-21483\" class=\"wp-caption-text\">SL Default Shape<\/p><\/div>\n<\/div>\n<\/div>\n<div class=\"symple-toggle state-closed \"><h3 class=\"symple-toggle-trigger \">More about Shape keys<\/h3><div class=\"symple-toggle-container symple-clearfix\">\n<p>We have decided to use shape keys here because this method allows us to modify the Mesh shape in a non destructive way. That means: If you are not satisfied with your changes, then you can detach the custom mesh from the slider System at any time. And you get back your original mesh as it was when you attached it to the sliders. We only need to delete the Shape keys in that case.<\/p>\n<h4>Some more details<\/h4>\n<ul>\n<li>The <em><span style=\"color: #ff6600;\">Basis<\/span><\/em> contains your original mesh (as it was when you attached the sliders)<\/li>\n<li>The <em><span style=\"color: #ff6600;\">Neutral Shape<\/span><\/em> key stores the difference Shape that will convert the <em><span style=\"color: #ff6600;\">Basis<\/span><\/em> into a Mesh for the SL Rest Pose<em><span style=\"color: #ff6600;\">(1)<\/span><\/em>.<\/li>\n<li>The <em><span style=\"color: #ff6600;\">Bone Morph<\/span><\/em> key stores the difference shape that will convert the neutral shape into the final shape as it will be seen in the SL Viewer.[break]<\/li>\n<\/ul>\n<p>The shape keys work &#8220;on top of each other&#8221;, that is: First the Basis gets morphed into the Neutral Shape, then the Neutral shape gets morphed into the final Bone Morph Shape (That is why the <span style=\"color: #ff6600;\"><em>Relative<\/em><\/span> option is ticked in the Shape keys panel, see image).<\/p>\n<p>Note: If you want to compare Avastar with SL then you have to ensure that you use the exact same shape values in Avastar and in SL. You can export the SL Shape from the SL Viewer and upload it to Avastar, see <span style=\"color: #ff0000;\">TODO: link to shape document<\/span><\/p>\n<p><span style=\"color: #ff6600;\"><em>(1)<\/em><\/span>: The SL Rest pose only exists somewhere deep in the SL Viewer code. You will never actually see it! You can not even configure it in the SL Viewer. However, when you create a new default Shape in SL then this shape is actually exactly the same shape as we use for the Avastar default shape. we often see statements that the Avastar Shape is wrong, but that is just not true. In fact the Avastar Shape is always an accurate replica of the SL shape.<\/p>\n<\/div><\/div>[break]\nWhen the Sliders are attached, then 3 user interface elements appear:<\/p>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">\n<p>The <em><span style=\"color: #ff6600;\">Apply Sliders<\/span><\/em> Button applies the current Slider settings (the shape keys actually) to the mesh and removes the now no longer needed shape keys. This button changes your Custom mesh on vertex level.<\/p>\n<\/div>\n<div class=\"span6 rhcol\">\n<p><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/skinning_03.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-22242 size-full\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/skinning_03.png\" alt=\"skinning_03\" width=\"232\" height=\"99\" \/><\/a><\/p>\n<\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">The <em><span style=\"color: #ff6600;\">X<\/span><\/em> icon to the right of the Apply Sliders Allows you to revert all your Slider changes and return back to the settings as they have been when you attached the Sliders.<\/div>\n<div class=\"span6 rhcol\">The <em><span style=\"color: #ff6600;\">Refresh Shape<\/span><\/em> Button propagate any changes in the Custom mesh weight maps to the Sliders <em><span style=\"color: #ff6600;\">(1)<\/span><\/em>.<\/div>\n<\/div>\n<p><em><span style=\"color: #ff6600;\">(1)<\/span><\/em>: The Refresh shape button only makes sense when Collision Volume Bones are weighted. That is because only Collision Volume Bones are capable to scale the meshes. When there are no Collision Bones marked as Deform Bones (Classic Mesh weighting), then this Button is greyed out to mark it as unneeded.<\/p>\n<div class=\"symple-toggle state-closed \"><h3 class=\"symple-toggle-trigger \">More about the Refresh shape Button<\/h3><div class=\"symple-toggle-container symple-clearfix\">\n<p>Now this is rather complicated to explain. The most important point here is that the Bone weight Panels do a lot more than just controlling how the mesh bends when animated. In fact Bone weights are used to apply the entire &#8220;Joint Matrix&#8221; of the influencing bones to the mesh. That is in simple words, Bone weights can be used to scale your meshes as well.<\/p>\n<p>You might be very astonished about this, because the Avastar Armature does not use Bone scaling at all. Also the default Avatar that you see in the workbench or in avatar.blend does not have Bone Scales (all are set to 1.0). But the SL viewer makes heavy usage of Bone Scaling in its Shape editor.<\/p>\n<p>Now back to Avastar: Avastar does not use Bone scaling like the SL Viewer does, but rather directly scales the Meshes and thus keeps the Bone scaling always at 1.0. So, whenever a slider is modified, Avastar determines the exact Bone Joint matrix for every Bone in the mesh and applies that matrix directly to the mesh and finally resets the Joint matrix to a neutral scale ( 1.0 ). However, we have to take into account that some vertices are controlled by more than one bone. That is where the weight maps come into play again. They simply determine the relative influence of each bone Scale when the influence on a vertex is calculated.<\/p>\n<p>If you do not understand right away what that is, please ignore me here. Or if you are curious about this, then you will want to dive deeper into the principles of<em><span style=\"color: #ff6600;\"> Skeletal Animation<\/span><\/em>. Please Google your way to the knowledge in this case. We currently do not have tutorials about this topic.<\/p>\n<h4>Why we apply the Scales to the Mesh<\/h4>\n<p>Applying the Bone Scales has one remarkable benefit, that is when you reset your Rig to rest pose, you will not loose the current Slider settings because these settings have been stored within the Shape keys of your custom Meshes (and within the Avastar Meshes them self for the Avastar Dummy character).<\/p>\n<h4>And what is the Gotcha please ?<\/h4>\n<p>When the weights are modified, then Avastar needs to apply the modified weights to the mesh as well. So modifying the Sliders and modifying the Weights of your mesh both influence the shape of your mesh (<strong><span style=\"color: #ff6600;\">also in Rest Pose!<\/span><\/strong>) . And hence any change of your weight maps needs to be propagated to the Mesh as well.<\/p>\n<p>But these calculations are expensive. Because of this we do not propagate any change of the weights immediately to the mesh. Instead of this we provide the Refresh shape Button. So you would do some changes on your weight maps and then hit the Refresh shape Button to see how the mesh shape changed. then return back to modify the weights, and hit the Refresh button again, and so on &#8230;<\/p>\n<p>Note: There is a keyboard shortcut ( ALT +Q )that you can use instead of clicking the Refresh Shape Button.<\/p>\n<\/div><\/div>\n<h3>Adjust Weight Groups<\/h3>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\">The Adjust Weight Groups panel allows you to create initial weights for your Custom Mesh. Weights can come from various weight sources. And each weight source can have different Properties as explained below.[break]\nFinally, after all settings have been adjusted, you can generate the appropriate Weights by clicking on the <em><span style=\"color: #ff6600;\">Apply<\/span><\/em> Button<\/div>\n<div class=\"span6 rhcol\"><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/skinning_05.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-22878\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/skinning_05.png\" alt=\"skinning_05\" width=\"195\" height=\"173\" \/><\/a><\/div>\n<\/div>\n<h4>A Gentle reminder<\/h4>\n<div class=\"symple-box  yellow center \" style=\"text-align:left;\"> \n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\"><span style=\"color: #ff6600;\"><strong>Avastar can not create perfect weights! <\/strong><\/span><br \/>\nEspecially when you try to copy weights from other meshes you have to refine the weights manually in almost every case. All that you can achieve is to get a starting point for your work. This may work nicely, or not.<\/div>\n<div class=\"span6 rhcol\"><span style=\"color: #ff6600;\"><strong>For Fitted Mesh: <\/strong><\/span><br \/>\nIf you are trying out the Fitted Mesh Weighting, then we recommend to avoid using the default Avatar weights. Please consider to use Automatic Weight from <em><span style=\"color: #ff6600;\">Bones<\/span> <\/em>instead. That gives better results in many cases. Blindly using the weights from the default Avatar never works!<\/div>\n<\/div>\n<\/div>\n<p>The example below shows 3 identical meshes: The left mesh is weighted to the classic mBones, the right mesh is weighted to the Collision Volumes (cBones) using the same weight values.<\/p>\n<p><a href=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/sls-4-35.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-24554 size-full\" src=\"http:\/\/blog.machinimatrix.org\/wp-content\/uploads\/2014\/09\/sls-4-35.png\" alt=\"sls-4-35\" width=\"619\" height=\"339\" \/><\/a><\/p>\n<p>The character in the center gets the full treatment of mBone weights plus mesh deforms (shape keys). Thus this character is equivalent to the default Avatar in SL using the same Gnome shape.<\/p>\n<p>For Fitted Mesh (Collision Volume Bone weighting) you can get much better results when you hand optimize the weights.<\/p>\n<h4>Panel Properties<\/h4>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\"><em><span style=\"color: #ff6600;\">Copy From Avastar<\/span><\/em>: Use the Avastar character Meshes as Weight Sources. For this option you can exactly specify which of the Avastar Dummy Meshes shall be taken into account. it does not matter if the Avastar meshes are visible or not.<\/div>\n<div class=\"span6 rhcol\">\n<ul>\n<li>Keep Groups<\/li>\n<li>Clear weights<\/li>\n<li>Selected verts<\/li>\n<li>Interpolate<\/li>\n<li>Weights from Avastar (selection table)<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\"><em><span style=\"color: #ff6600;\">Copy From Meshes:<\/span><\/em> Use All meshes which are also attached to the same Avastar Armature and which are currently Visible.<\/div>\n<div class=\"span6 rhcol\">\n<ul>\n<li>Keep Groups<\/li>\n<li>Clear weights<\/li>\n<li>Selected verts<\/li>\n<li>Interpolate<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\"><em><span style=\"color: #ff6600;\">Automatic From Bones<\/span><\/em>: Use Blender&#8217;s internal Weight generator by calculating the weights from the Bone configuration. This works remarkably well in most cases. However you often need some minor adjustments especially where the Custom Mesh shall behave similar to the underlying SL Avatar mesh (for tight clothes).<\/div>\n<div class=\"span6 rhcol\">\n<ul>\n<li>Keep Groups<\/li>\n<li>Clear weights<\/li>\n<li>Selected verts<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"rhcol span7\">\n<p><em><span style=\"color: #ff6600;\">Move Weight Groups:<\/span><\/em> Depending on the SL Rigging Style:<\/p>\n<ul>\n<li>for <em><span style=\"color: #ff6600;\">Classic Rig<\/span><\/em>: If there are Weights Groups available for Collision Volume Bones, then these weight groups are moved to the corresponding SL Base Bone&#8217;s weight groups.<\/li>\n<li>for <em><span style=\"color: #ff6600;\">Fitted Mesh Rig<\/span><\/em>: If there are Weight Groups available for the SL Base Bones, then these weight groups are moved to the corresponding Collision Volume Bone&#8217;s weight groups.<\/li>\n<\/ul>\n<\/div>\n<div class=\"rhcol span5\">No options available<\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"span6 rhcol\"><em><span style=\"color: #ff6600;\">Swap Weight Groups:<\/span><\/em> Exchanges Weight Gr0ups for Collision Volumes with the corresponding Weight Groups for the corresponding SL Base Bones (moves mbone Weight Groups to cBones, and cBone Weight Groups to mBones)<\/div>\n<div class=\"rhcol span6\">\n<ul>\n<li>Keep Groups<\/li>\n<li>Clear weights<\/li>\n<li>Selected verts<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<div class=\"row-fluid\">\n<div class=\"rhcol span7\"><em><span style=\"color: #ff6600;\">Create Empty Groups:<\/span> <\/em>Checks all deform Bones for existing Weight Groups. Adds missing Weight Groups as empty Groups where needed.<\/div>\n<div class=\"rhcol span5\">No options available<\/div>\n<\/div>\n<h4>The weight Generator Options<\/h4>\n<ul>\n<li><em><span style=\"color: #ff6600;\">Keep Groups<\/span><\/em>: When during the copy process some previously existing weight groups get empty, they will be deleted by default. If this option is set, all empty weight groups will be kept.<\/li>\n<li><em><span style=\"color: #ff6600;\">Clear weights<\/span><\/em>: Normally the weight copy is additive, that is, when Weights already exist in the Target mesh, then weights which are not copied from the source but wexist in the target will be kept. When this option is set, the source weight groups will be cleaned before the copy takes place.<\/li>\n<li><em><span style=\"color: #ff6600;\">Selected verts<\/span><\/em>: Normally the weight Copy copies the entire weight groups. when this option is set, then only weights for the selected verts (in the target meshes) will be replaces or added.<\/li>\n<li><em><span style=\"color: #ff6600;\">Interpolate<\/span><\/em>: Normally weights are copied from the source meshes by determining the closest vertex to the destination mesh. When this option is enabled, then weights are interpolated from neighboring source verts as well. This can give smoother results at times.<\/li>\n<li><em><span style=\"color: #ff6600;\">Weights from Avastar<\/span><\/em>: (Only available when Copy from Avastar is set as weight source) You can specify exactly which Avastar meshes shall contribute in the weight copy.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Skinning (weighting your mesh) [PS Showtime url=&#8221;\/wp-content\/uploads\/2014\/09\/map_skinning.png&#8221;] The Skinning Panel Once you have bound your custom mesh to an Avastar rig, the Skinning panel changes as displayed in the image aside. We now see 3 subsections: Avastar Sliders: To attach the selected Custom mesh to the Avastar Slider System Adjust Weight Groups: To automatically create [&hellip;]<\/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-500","page","type-page","status-publish","hentry","category-help"],"_links":{"self":[{"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/pages\/500","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=500"}],"version-history":[{"count":0,"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/pages\/500\/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=500"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/categories?post=500"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/avalab.org\/avastar\/legacy\/wp-json\/wp\/v2\/tags?post=500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}