{"id":144,"date":"2026-03-05T06:18:53","date_gmt":"2026-03-05T06:18:53","guid":{"rendered":"https:\/\/portfolio.nodespaghetti.club\/?p=144"},"modified":"2026-03-05T18:38:36","modified_gmt":"2026-03-05T18:38:36","slug":"maya-humanoid-autorig","status":"publish","type":"post","link":"https:\/\/portfolio.nodespaghetti.club\/?p=144","title":{"rendered":"Maya Humanoid Autorig"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This is the autorig I am currently working on in Maya. It is the basis for the rig in my FIEA capstone project, Everent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I began work on this in order to develop an intuition for how to design a large, scalable, and efficient Maya library that is suitable for use with my Mantis software.<\/p>\n\n\n\n<div style=\"opacity: 0;\" superb-addons-animation=\"slideInUp\" class=\"wp-block-group alignfull is-style-default has-global-padding is-layout-constrained wp-container-core-group-is-layout-e3c6c55c wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading has-text-align-center\" style=\"border-style:none;border-width:0px;border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-left-radius:0px;border-bottom-right-radius:0px\">Generate the rig!<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--superbspacing-xsmall);margin-bottom:var(--wp--preset--spacing--superbspacing-xsmall)\"\/>\n\n\n\n<div style=\"height:32px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-0101516b wp-block-group-is-layout-flex\" style=\"min-height:0px;margin-top:0;margin-bottom:0\">\n<figure class=\"wp-block-image size-large wp-container-content-9cfa9a5a\"><img loading=\"lazy\" decoding=\"async\" width=\"558\" height=\"332\" src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_hxBqMX6ygm.png\" alt=\"\" class=\"wp-image-159\" srcset=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_hxBqMX6ygm.png 558w, https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_hxBqMX6ygm-300x178.png 300w\" sizes=\"auto, (max-width: 558px) 100vw, 558px\" \/><\/figure>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer wp-container-content-e1bb55cb\"><\/div>\n\n\n\n<p class=\"wp-container-content-f22b2ade wp-block-paragraph\">Here is the UI of the autorig.<br>Its first button generates the meta-rig, which is the basis for the generated rig and deform skeleton.<br>The next button generates the widgets.<br>The third button generates the control rig, and optionally, the deform skeleton.<br><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ea64ea74 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"337\" height=\"1024\" src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_PBfs0pwMY3-337x1024.png\" alt=\"\" class=\"wp-image-167\" srcset=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_PBfs0pwMY3-337x1024.png 337w, https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_PBfs0pwMY3-99x300.png 99w, https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_PBfs0pwMY3.png 389w\" sizes=\"auto, (max-width: 337px) 100vw, 337px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"569\" height=\"1024\" src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_WHQ4epzzdb-569x1024.png\" alt=\"\" class=\"wp-image-168\" srcset=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_WHQ4epzzdb-569x1024.png 569w, https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_WHQ4epzzdb-167x300.png 167w, https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_WHQ4epzzdb.png 763w\" sizes=\"auto, (max-width: 569px) 100vw, 569px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-group wp-container-content-29dca9c1 is-vertical is-layout-flex wp-container-core-group-is-layout-c020569f wp-block-group-is-layout-flex\">\n<h2 class=\"wp-block-heading has-text-align-center\">The Mocap Hierarchy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This rig uses the same hierarchy as motion capture workflows in order to deliver maximum compatibility in UE5 and other game engines. The rig can be used to create hand-keyed animation, and the deform skeleton can be retargeted to Motion Capture data in engine, or play Mixamo animations directly.<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-style-superbaddons-card is-content-justification-left is-nowrap is-layout-flex wp-container-core-group-is-layout-5c94f990 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-video wp-container-content-9cfa9a5a\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" autoplay controls loop muted src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/metarig_generation_clip.mp4\" playsinline><\/video><\/figure>\n\n\n\n<p class=\"wp-container-content-432d1f4f wp-block-paragraph\">The First Step to generate the rig is create the meta-rig and adapt it to the mesh.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ea64ea74 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-video wp-container-content-9cfa9a5a\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" autoplay controls loop muted src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/bind_the_rig.mp4\" playsinline><\/video><\/figure>\n\n\n\n<p class=\"wp-container-content-432d1f4f wp-block-paragraph\">Next, you will need to make the deform skeleton by duplicating the meta-rig, if you don&#8217;t choose to generate it automatically.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-b906d3cf wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-image size-large wp-container-content-9cfa9a5a\"><img loading=\"lazy\" decoding=\"async\" width=\"274\" height=\"159\" src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/maya_QjlBAFmBv4.png\" alt=\"\" class=\"wp-image-160\"\/><\/figure>\n\n\n\n<p class=\"wp-container-content-7efe0f6a wp-block-paragraph\">Here is the Symmetrize tool I made to copy joints&#8217; transforms to the corresponding joint on the other side of the skeleton. I have made a lot of little tools like this in order to make the process a bit easier.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-style-superbaddons-card is-nowrap is-layout-flex wp-container-core-group-is-layout-ea64ea74 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-video wp-container-content-9cfa9a5a\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" autoplay controls loop muted src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/widgets_clip.mp4\" playsinline><\/video><\/figure>\n\n\n\n<p class=\"wp-container-content-432d1f4f wp-block-paragraph\">Finally, generate the default widgets and then generate the rig.<br>Undo, customize the widgets to your liking, and regenerate.<br><\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The rig is finished generating and is ready to use!<\/p>\n\n\n\n<div style=\"margin-top:var(--wp--preset--spacing--superbspacing-xsmall);margin-bottom:var(--wp--preset--spacing--superbspacing-xsmall);height:116px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-style-default has-global-padding is-layout-constrained wp-container-core-group-is-layout-e3c6c55c wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading has-text-align-center\">Loads of features!<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" style=\"margin-top:var(--wp--preset--spacing--superbspacing-xsmall);margin-bottom:var(--wp--preset--spacing--superbspacing-xsmall)\"\/>\n\n\n\n<div class=\"wp-block-group alignwide is-style-superbaddons-card is-nowrap is-layout-flex wp-container-core-group-is-layout-ea64ea74 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/torso_fatures_clip.mp4\"><\/video><\/figure>\n\n\n\n<p class=\"wp-container-content-432d1f4f wp-block-paragraph\">The Torso features a unique version of the classic ribbon spline, which uses two NURBS curves and some math nodes.<\/p>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">I always prefer to make my rigs as low-level as I can &#8211; since if I can control the details of the calculations, I understand exactly what it is doing and why, and I can ensure it won&#8217;t break or flip or explode or collapse into nothing.<\/p>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ea64ea74 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" autoplay controls loop muted src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/IK_features_clip.mp4\" playsinline><\/video><\/figure>\n\n\n\n<p class=\"wp-container-content-432d1f4f wp-block-paragraph\">This rig features an advanced IK with length-preservation, stretchy mode, and space-switching for the IK handle controllers and pole vector controllers.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-style-superbaddons-card is-nowrap is-layout-flex wp-container-core-group-is-layout-ea64ea74 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" autoplay controls loop muted src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/head_neck_clip.mp4\" playsinline><\/video><\/figure>\n\n\n\n<p class=\"wp-container-content-432d1f4f wp-block-paragraph\">The head and neck in this rig have the ability to inherit or skip inheritance of the chest&#8217;s transform.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ea64ea74 wp-block-group-is-layout-flex\">\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" autoplay controls loop muted src=\"https:\/\/portfolio.nodespaghetti.club\/wp-content\/uploads\/2026\/03\/crazy_pose_test.mp4\" playsinline><\/video><\/figure>\n\n\n\n<p class=\"wp-container-content-432d1f4f wp-block-paragraph\">In this video, I pose the rig in the craziest way I can, trying to break it&#8230; but I am defeated. Notice in particular how well the rig handles scale.<br>In the end, I reset the entire rig to its starting point by selecting the controls and resetting their transforms.<\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<div style=\"margin-top:var(--wp--preset--spacing--superbspacing-xsmall);margin-bottom:var(--wp--preset--spacing--superbspacing-xsmall);height:116px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This is the autorig I am currently working on in Maya. It is the basis for the rig in my FIEA capstone project, Everent. I began work on this in order to develop an intuition for how to design a large, scalable, and efficient Maya library that is suitable for use with my Mantis software. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":145,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"cybocfi_hide_featured_image":"yes","footnotes":""},"categories":[21,18,17],"tags":[],"class_list":["post-144","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-maya","category-python","category-rigging"],"_links":{"self":[{"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=\/wp\/v2\/posts\/144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=144"}],"version-history":[{"count":15,"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=\/wp\/v2\/posts\/144\/revisions"}],"predecessor-version":[{"id":203,"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=\/wp\/v2\/posts\/144\/revisions\/203"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=\/wp\/v2\/media\/145"}],"wp:attachment":[{"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/portfolio.nodespaghetti.club\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}