{"id":292,"date":"2026-05-29T21:24:59","date_gmt":"2026-05-29T21:24:59","guid":{"rendered":"https:\/\/rivals2.com\/workshop-dev\/?post_type=knowledgebase&#038;p=292"},"modified":"2026-07-28T16:35:05","modified_gmt":"2026-07-28T16:35:05","slug":"sockets-and-zapped-skeleton","status":"publish","type":"knowledgebase","link":"https:\/\/rivals2.com\/workshop\/knowledge-base\/character-creation\/sockets-and-zapped-skeleton\/","title":{"rendered":"Rig Your Character"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">With your character modeled and UV unwrapped it is time to start thinking about animation, however altering the scale of a character once you&#8217;ve begun animating it can be tricky, be sure to apply any transforms to your character mesh ( Select your mesh and click object\/Apply\/Scale) and check it against ROA2 character models before proceeding.<span class=\"c3\"><\/span><\/p>\n\n\n\n<!--more-->\n\n\n\n<ol class=\"wp-block-list\">\n<li>Prepare the mesh. Ensure that the character mesh is facing the right way and is correctly scaled,then apply transforms<\/li>\n\n\n\n<li>Set up the armature (Either from scratch or use <a href=\"https:\/\/docs.blender.org\/manual\/en\/2.81\/addons\/rigging\/rigify.html\" target=\"_blank\" rel=\"noreferrer noopener\">Rigify<\/a>)<\/li>\n\n\n\n<li>Bind character to this skeleton (armature) and adjust skin weights. <\/li>\n\n\n\n<li>Set up control rig for animation<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Prepare your Mesh<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"607\" height=\"268\" src=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/Screenshot-2026-06-09-124241.png\" alt=\"\" class=\"wp-image-1050\" srcset=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/Screenshot-2026-06-09-124241.png 607w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/Screenshot-2026-06-09-124241-300x132.png 300w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Each Scale axis of your mesh should have a value of 1. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The dimensions are the true size of your object and will be a proper representation of real world scale.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"256\" height=\"430\" src=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-145.png\" alt=\"\" class=\"wp-image-1705\" srcset=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-145.png 256w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-145-179x300.png 179w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ensure that<span class=\"c3\"> the character is facing the -Y direction in Blender and compare it to other character models\/scenes in the workshop project to get a sense of it&#8217;s scale. Often a character will feel smaller once it is in an idle pose, so consider this when checking your proportions.<\/span><\/p>\n\n\n\n<div class=\"wp-block-media-text is-stacked-on-mobile\" style=\"grid-template-columns:38% auto\"><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"607\" height=\"1024\" src=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/CharacterOverview-6-607x1024.png\" alt=\"\" class=\"wp-image-72 size-full\" srcset=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/CharacterOverview-6-607x1024.png 607w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/CharacterOverview-6-178x300.png 178w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/CharacterOverview-6.png 676w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><\/figure><div class=\"wp-block-media-text__content\">\n<p class=\"wp-block-paragraph\">Before a character can be posed the geometry must be bound or &#8220;skinned&#8221; to a skeleton of joints called an armature. The armature is then connected to a series of animation controls called a &#8220;Rig&#8221;. <br><br>While it is possible to animate your character&#8217;s armature directly, it is highly recommended to instead build a control rig for your character, and animate using these controls.<br><br>Rigging is an advanced skill set that can be daunting to learn, however Blender plugins can help immensely with getting started quickly.<\/p>\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.blender.org\/manual\/en\/2.81\/addons\/rigging\/rigify.html\">https:\/\/docs.blender.org\/manual\/en\/2.81\/addons\/rigging\/rigify.html<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Easy Rigging Using RIGIFY in Blender\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/RdTuAY23vzk?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.blender.org\/manual\/en\/latest\/animation\/index.html\">https:\/\/docs.blender.org\/manual\/en\/latest\/animation\/index.html<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/dev.epicgames.com\/documentation\/unreal-engine\/fbx-skeletal-mesh-pipeline-in-unreal-engine\">https:\/\/dev.epicgames.com\/documentation\/unreal-engine\/fbx-skeletal-mesh-pipeline-in-unreal-engine<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Set up the Armature<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Characters, mesh effects and articles are all authored facing down the front axis. (Maya +Z)(blender -Y)(Unreal +Y).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are no strict limits to how many bones can be present in a skeletal mesh however it is important to be efficient and only use as many as needed to. <br>For reference Rivals of Aether 2 characters all have joint counts in the 120-200 range.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also keep in mind that skinning influences are limited to 8 bones per vertex and skin weights with values less than 0.01 are removed on import to editor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Hierarchy<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A character\u2019s skeleton can be named\/structured however necessary as long as there is a single joint at the root. For best results when retargeting animation or matching other Rivals Characters it is recommended to follow a similar bone structure with the following joint hierarchy (optional bones marked in yellow:<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;6a7c147d16a57&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"6a7c147d16a57\" class=\"wp-block-image aligncenter size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"999\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-98-999x1024.png\" alt=\"\" class=\"wp-image-869\" srcset=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-98-999x1024.png 999w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-98-293x300.png 293w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-98-768x787.png 768w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-98-1499x1536.png 1499w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-98.png 1962w\" sizes=\"auto, (max-width: 999px) 100vw, 999px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Additional limbs\/features as well as sibling joints can be added at any point in this hierarchy, and existing limbs\/extremities can be removed if not needed but the existing order of parent child relationships should be respected if animation retargeting is desired.<br><a href=\"https:\/\/dev.epicgames.com\/documentation\/en-us\/unreal-engine\/animation-retargeting-in-unreal-engine\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Animation-retargeting-in-unreal-engine<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Twist Bones<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"802\" height=\"899\" src=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-99.png\" alt=\"\" class=\"wp-image-871\" style=\"width:318px;height:auto\" srcset=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-99.png 802w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-99-268x300.png 268w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-99-768x861.png 768w\" sizes=\"auto, (max-width: 802px) 100vw, 802px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The optional joints listed (ShoulderPart_1-3,ElbowPart 1-3, HipPart1-3, KneePart_1-3) are twist joints, these exist on each character and allow for smoother twisting and bending of limbs, these are not necessary, however for characters that do make use of them, when setting up the <a href=\"https:\/\/rivals2.com\/workshop\/knowledge-base\/character-creation\/setting-up-hurtboxes\/\" data-type=\"knowledgebase\" data-id=\"544\">Hurtbox Physics Asset<\/a> be sure to mount capsules to joint closest to center between parent and child &#8211; in the case of the image above \u201cElbowPart2_R\u201d in order to ensure accurate alignment with visuals.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Face Joints<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Face Joints can be laid out however necessary for the character in question. As with the body following the established structure will yield best results for retargeting from existing characters.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"459\" src=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-85-1024x459.png\" alt=\"\" class=\"wp-image-323\" srcset=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-85-1024x459.png 1024w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-85-300x134.png 300w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-85-768x344.png 768w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-85-1536x689.png 1536w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-85.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Grab Bone<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">ROA2 Characters use a grab bone to move their target during throw states. When a character is thrown the defender&#8217;s root position is attached to the attacker&#8217;s grab bone allowing the attacker to determine their position throughout. The name of this bones is arbitrary and any bone in your armature can be used. This will be explored more in depth in the <a href=\"https:\/\/rivals2.com\/workshop\/knowledge-base\/character-creation\/setting-up-a-throw\/\" data-type=\"knowledgebase\" data-id=\"913\">Setting up a Throw<\/a> document, however for now if you don&#8217;t have one add a bone for this purpose and give it a sensible name.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Notes on <span class=\"c23 c14\">Joint Scale<\/span><\/h3>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"378\" height=\"478\" src=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-101.png\" alt=\"\" class=\"wp-image-1051\" srcset=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-101.png 378w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/image-101-237x300.png 237w\" sizes=\"auto, (max-width: 378px) 100vw, 378px\" \/><\/figure>\n\n\n\n<p class=\"is-style-text-annotation has-accent-1-background-color has-background is-style-text-annotation--1 wp-block-paragraph\"><mark style=\"background-color:#FFEE58\" class=\"has-inline-color\">WARNING: Your joints should have a dimensions of 1 on each axis before exporting your character to unreal, you should apply any scale on your joints during the rigging process. Failure to apply scale at this stage can cause challenges later on involving animation adjustments.<\/mark><\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"607\" height=\"268\" src=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/Screenshot-2026-06-09-124241.png\" alt=\"\" class=\"wp-image-1050\" srcset=\"https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/Screenshot-2026-06-09-124241.png 607w, https:\/\/rivals2.com\/workshop\/wp-content\/uploads\/2026\/05\/Screenshot-2026-06-09-124241-300x132.png 300w\" sizes=\"auto, (max-width: 607px) 100vw, 607px\" \/><figcaption class=\"wp-element-caption\">Select your armature joints and click object\/Apply\/Scale to reset their dimensions to 1<\/figcaption><\/figure>\n\n\n\n<p class=\"c12 wp-block-paragraph\"><span class=\"c3\">In Maya, a hidden counter scale is set on child joints called &#8220;segment scale compensation&#8221; meant to keep child joints at a consistent size), this is discarded in unreal &#8211; a parent joint will always scale its children as well so keep this in mind when rigging and animating your character. Disable Segment scale compensation and counter scale manually if desired.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unreal can only reliably scale joints non-uniformly (different scales per axis) <strong>if they are the last joint in a chain<\/strong> (no child joints parented below it) <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Non-uniformly scaling a parent joint (Has other joints parented below it) will often give unexpected scale results on child joints in Unreal and is therefore not recommended.<\/p>\n\n\n\n<p class=\"c12 wp-block-paragraph\"><span class=\"c3\">This means that limb stretching should be handled with translation rather than non-uniform scaling (moving the elbow away from the shoulder rather than scaling the shoulder along its axis)<\/span>.<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Paint Skin Weights<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Painting skin weights is the method by which you tell each vertex which bones they should follow, this is called influence weight. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each vertex can have influence from up to 8 Bones (The 8 Bone limitation is not present in Blender but is imposed once imported in Unreal, Unreal will strip the smallest influences above the 8 and redistribute their value to the remaining bones.) <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Normalized weights means that no matter how you distribute the weight across various bones, they will always add up to the same value. What this means is you can never have a skinned vertex move more than the sum of it&#8217;s influence bone movement. If a vertex is fully weighted to a bone it will behave like a child to that bone, if it has equal weight across two bones it will get an average position between them.<br><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"[Blender] Character Weight Paint: #1 Vertex Groups (beginner tutorial)\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/LPYs3pZEzPY?list=PLdcL5aF8ZcJsFEdlMJ7To0Iu9s-XCFV3W\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Set Up the Control Rig<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you&#8217;re using Rigify, refer to the rigify documentation.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Rigging for impatient people - Blender Tutorial\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/DDeB4tDVCGY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Blender to Unreal &amp; unity - Exporting rigged character - Extensive guide\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/27woi8FsgAU?list=PLlV0HYg1k1bYPicnU_1yYGCld32tPyFV1\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>With your character modeled and UV unwrapped it is time to start thinking about animation, however altering the scale of a character once you&#8217;ve begun animating it can be tricky, be sure to apply any transforms to your character mesh ( Select your mesh and click object\/Apply\/Scale) and check it against ROA2 character models before [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","template":"","knowledgebase_cat":[4],"knowledgebase_tag":[],"class_list":["post-292","knowledgebase","type-knowledgebase","status-publish","hentry","knowledgebase_cat-character-creation"],"_links":{"self":[{"href":"https:\/\/rivals2.com\/workshop\/wp-json\/wp\/v2\/knowledgebase\/292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rivals2.com\/workshop\/wp-json\/wp\/v2\/knowledgebase"}],"about":[{"href":"https:\/\/rivals2.com\/workshop\/wp-json\/wp\/v2\/types\/knowledgebase"}],"author":[{"embeddable":true,"href":"https:\/\/rivals2.com\/workshop\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/rivals2.com\/workshop\/wp-json\/wp\/v2\/comments?post=292"}],"version-history":[{"count":50,"href":"https:\/\/rivals2.com\/workshop\/wp-json\/wp\/v2\/knowledgebase\/292\/revisions"}],"predecessor-version":[{"id":1707,"href":"https:\/\/rivals2.com\/workshop\/wp-json\/wp\/v2\/knowledgebase\/292\/revisions\/1707"}],"wp:attachment":[{"href":"https:\/\/rivals2.com\/workshop\/wp-json\/wp\/v2\/media?parent=292"}],"wp:term":[{"taxonomy":"knowledgebase_cat","embeddable":true,"href":"https:\/\/rivals2.com\/workshop\/wp-json\/wp\/v2\/knowledgebase_cat?post=292"},{"taxonomy":"knowledgebase_tag","embeddable":true,"href":"https:\/\/rivals2.com\/workshop\/wp-json\/wp\/v2\/knowledgebase_tag?post=292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}