{"id":134857076984,"date":"2015-12-09T06:52:50","date_gmt":"2015-12-09T05:52:50","guid":{"rendered":"http:\/\/blog.sketchfab.com\/post\/134857076984"},"modified":"2019-08-15T17:18:44","modified_gmt":"2019-08-15T15:18:44","slug":"tutorial-rigging-and-animating-a-combat-jet-in-blender","status":"publish","type":"post","link":"https:\/\/sketchfab.com\/blogs\/community\/tutorial-rigging-and-animating-a-combat-jet-in-blender\/","title":{"rendered":"Tutorial: Rigging and Animating a Combat Jet in Blender"},"content":{"rendered":"<p>Hello, my name is Dennis Haupt, I\u2019ve been a Blender user for over eight years. Currently I am working as an animator, 3d graphic and Interface designer at <a href=\"https:\/\/www.ingasys.de\" target=\"_blank\" rel=\"nofollow\">InGAsys<\/a> in Germany we are using the Blender Game Engine in combination with our software (InGAsys\/ Intelligent Gait Analysis System) to visualize painful areas in the human body during walking based on measurement data.<\/p>\n<p><!-- more --><\/p>\n<p>I was asked to share some of my animation knowledge in a tutorial here on Sketchfab. I was often asked how I made the rig for the animation of my futuristic combat jet, so I chose this as topic for it.<\/p>\n<p>First up I want to describe how I made the rig, the Action constraints for an easier animation and the Track To constraints for the hydraulic components of the plane.<\/p>\n<p><span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe class=\"youtube-player\" width=\"690\" height=\"389\" src=\"https:\/\/www.youtube-nocookie.com\/embed\/xsPWUeqStmc?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=en-US&#038;autohide=2&#038;wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\"><\/iframe><\/span><\/p>\n<p>Later I will go into animating the whole airplane like you can see it in the animation on Sketchfab:<\/p>\n<div class=\"sketchfab-embed-wrapper\">    <iframe title=\"Combat Jet Animation\" class=\"\" width=\"690\" height=\"388\" src=\"https:\/\/sketchfab.com\/models\/15ec020a8079446b8ff5cebb82935660\/embed\" frameborder=\"0\" allow=\"autoplay; fullscreen; xr-spatial-tracking\" allowfullscreen=\"\" mozallowfullscreen=\"true\" webkitallowfullscreen=\"true\" xr-spatial-tracking=\"true\" execution-while-out-of-viewport=\"true\" execution-while-not-rendered=\"true\" web-share=\"true\"><\/iframe><\/div>\n<p>And finally I will show you how to convert all the bone constraints into one action. This is important for the export as FBX because Blender will not export the action constraints Setup to the FBX format.<\/p>\n<p>So enough with the intro, let\u2019s start this!<\/p>\n<p><strong>The Rig<\/strong><\/p>\n<p>My rig contains two types of bones, bones with constraints for moving the parts of the airplane and bones for controlling the movement by using one action for all parts.<\/p>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/e74c8aa3b867c180ef29d843e09bddbe833d8ac3-1.png\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/e74c8aa3b867c180ef29d843e09bddbe833d8ac3-1.png\" alt=\"\" \/><\/noscript><\/p>\n<p><strong>The Action Constraint<\/strong><\/p>\n<p>For explaining how I have adjusted the <strong>Action<\/strong> and the <strong>Track To<\/strong> constraints I choose the front landing gear, the other animated parts of the plane are made the same way.<\/p>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/6e90ce93ffd242d3d649ad353fa04aaeeefeb56d-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/6e90ce93ffd242d3d649ad353fa04aaeeefeb56d-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<p>By scaling the control bone for the front landing gear from 1.000 Y to 2.000 Y the front landing gear will move into the plane.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/2c250d74f07c5d31cc0d960d76e2f83fd57ada0f-1.png\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"aligncenter lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/2c250d74f07c5d31cc0d960d76e2f83fd57ada0f-1.png\" alt=\"\" \/><\/noscript><\/p>\n<p>The control bone drives a predefined Action (Aircraft_Action), all animations of the plane are saved in this Action.<\/p>\n<p>So how to set it up so that the landing gear control bone will drive the predefined action for only one bone?<\/p>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/9be18b027adb30086b746eb80e134861950b1106-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/9be18b027adb30086b746eb80e134861950b1106-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<ol>\n<li>Select the bone for the Action Constraint<\/li>\n<li>Go into the Bone Constraints section<\/li>\n<li>Click on Add Bone Constraint<\/li>\n<li>Select the Action<\/li>\n<li>Setup the Action Constraint<\/li>\n<\/ol>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/2a6a1ef5707627d9c34ae25064324d1f31cebbae-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/2a6a1ef5707627d9c34ae25064324d1f31cebbae-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<p>The Bone Constraint window has the following settings:<\/p>\n<ul>\n<li><strong>Target<\/strong>: The target is the armature object but it can also be a mesh object or an empty object.<\/li>\n<li><strong>Bone<\/strong>: Enter the name of the bone or the object you want to use for controlling the constraint. In my case it\u2019s the front landing gear control bone.<\/li>\n<li><strong>From Target<\/strong>: Defines how to interact with the constraint. I used a Y scaling. You can also use rotation or location for it.<\/li>\n<li><strong>To Action<\/strong>: Here you need to enter the name of the action you want to use for the constraint.<\/li>\n<li><strong>Action Range<\/strong>: Here you need to enter the start and end frame of your Action. For me, Start: 0 and End: 40.<\/li>\n<li><strong>Target Range<\/strong>: Here you can define the interaction range of the control bone. I used Min: 1.000 Y and Max: 2.000 Y for scale. So when I scale up the control bone the action will be played depending on the scaling.<\/li>\n<li><strong>Influence<\/strong>: Defines the Influence of the constraint 1.000 = 100%.<\/li>\n<\/ul>\n<p><strong>Copy Constraints to Selected Objects<\/strong><\/p>\n<p>This is the way how to set up a bone constraint for one bone, but what is if you had to set up more bones with the same constraint, doing this for every bone in your armature would be very time consuming, but there is a nice time saving way to copy one constraint to other bones.<\/p>\n<p>To copy a constraint to other bones you need to select all bones with no constraints first and at last the bone with the constraint you want to copy to.<\/p>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/fcad78f02206843840c97a2784bcd95c4d429793-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/fcad78f02206843840c97a2784bcd95c4d429793-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<p>Now click on Copy Constraints to Selected Bones under Pose\/Constraints.<\/p>\n<p><strong>The Track To Constraint<\/strong><\/p>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/e80875b61654a87e0c29ed1b3e534a5a3a17e1f9-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/e80875b61654a87e0c29ed1b3e534a5a3a17e1f9-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<p>Now let\u2019s take a look at the <strong>Track To<\/strong> Constraints which I used for some hydraulic elements in the front, the sides and the heck of the plane.<\/p>\n<p>For a better overview I have activated B-Bone and Names into the Object Data section for the Armature.<\/p>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/7bec1d17e193c7149621e4b637a79a6ef113bb1f-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/7bec1d17e193c7149621e4b637a79a6ef113bb1f-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<p>In this image:<br \/>\n&#8211; Target<em>Bone<\/em>2 is parented to Track<em>To<\/em>Target<em>Bone<\/em>1.<br \/>\n&#8211; Target<em>Bone<\/em>1 is parented to Landing<em>Food<\/em>Bone.<\/p>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/0927f1e48740d3c182daeba7531a0834f184d0d3-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/0927f1e48740d3c182daeba7531a0834f184d0d3-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<p>In this Image you see how I have setup the two Track To Constraints for Track<em>To<\/em>Traget<em>Bone<\/em>1 and Track<em>To<\/em>Target<em>Bone<\/em>2. In my case the Track To Constraints works along the y-axis.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/223675d012dd5ef4436d8f29929720174e677a8f-1.png\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"aligncenter lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/223675d012dd5ef4436d8f29929720174e677a8f-1.png\" alt=\"\" \/><\/noscript><\/p>\n<p>It depends on how you made the armature which axis you need to use. Activate Normal under <strong>Transform Orientation<\/strong> to see the axes of the bone you want to use for the Track To Constraint.<\/p>\n<p>So this is all I can say about how I have setup the constraints for this aircraft. Let\u2019s take another look at the Armature before I go into animate the whole thing.<\/p>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/c52af9abaed0ba2cb102de12f7897150ad0d27c3-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/c52af9abaed0ba2cb102de12f7897150ad0d27c3-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<p>I use 49 bones for this plane, to move the plane I had to parent all bone to a root bone. So first I selected all the bones which will be the child objects and at last I select the parent object (Root Bone) then I press [crlt] + [p] and select <strong>Keep Offset<\/strong> to parent all bones to the root bone.<\/p>\n<p><strong>The Looping Flight Animation<\/strong><\/p>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/040da31efd7c29977ef92264dc4970bc91044abf-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/040da31efd7c29977ef92264dc4970bc91044abf-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<p>For the looping flight animation I used another bone to move the plane in a circle.<br \/>\nI parented the root bone to the new bone which rotates on the x-axis during the animation.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/b454c97ae5435255c1a57ff29d0874da628eed14-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"aligncenter lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/b454c97ae5435255c1a57ff29d0874da628eed14-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<p>Making the plane ready for takeoff by using the control bones.<\/p>\n<p><strong>Preparing the animation for the FBX export<\/strong><\/p>\n<p>At the moment of writing, Sketchfab only supports FBX as 3d format for the animation upload but other formats like blend, the Blender format, will follow in future I guess.<\/p>\n<p><img decoding=\"async\" class=\"lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/279f3da7ac02c9c9ffec8df74647178e23b8881a-1.jpg\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/279f3da7ac02c9c9ffec8df74647178e23b8881a-1.jpg\" alt=\"\" \/><\/noscript><\/p>\n<p>Before I hit the FBX export button I need to bake all bone constraints to key frames and clear all the bone constraints from the Armature in one process. This can be done under <strong>Pose\/Animation\/Bake Action\u2026<\/strong><\/p>\n<p>First I define the <strong>Start<\/strong> and <strong>End Frame<\/strong> of my Action.<\/p>\n<p>Then I set the <strong>Frame Step<\/strong> to 5, so just every fifth frame will be captured, this keeps the file size small. It depends on your animation how may Frame Steps you should use. In my case the animation is relatively slow so 5 for the Frame Step do no visual damage to it, but if you have a quicker animation like a run cycle for a charter you should use a low number like 2 or 3 for the Frame Step otherwise you will lose some key frames which midge be important for the run cycle because a larger Frame Step will make the animation more interpolated. If you bake your animation for each frame with Frame Step 1 your file can become very huge, the file size is depending on how many individual moving objects or bones you are using and how long the playtime of your animation will be, if you have just a short animation and the animation needs to be very accurate Frame Step 1 should be okay, just keep an eye on your file size before you go and upload it to sketchfab.<\/p>\n<p><strong>Only Selected<\/strong>, it will bake just the selected bones or objects, I have selected all bone by pressing [a] into the 3d-View.<\/p>\n<p>Also I enable <strong>Visual Keying<\/strong> and <strong>Clear Constraints<\/strong>.<\/p>\n<p>After I baked the action to key frames I have deleted all the unnecessary control bones.<br \/>\nNow everything is ready for the FBX export.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\" data-src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/410d3e22804291946f78ce0b0e616cb1bd5b2ff1-1.png\" alt=\"\" \/><noscript><img decoding=\"async\" class=\"aligncenter lazyload\" src=\"http:\/\/blog.sketchfab.com\/wp-content\/uploads\/2015\/12\/410d3e22804291946f78ce0b0e616cb1bd5b2ff1-1.png\" alt=\"\" \/><\/noscript><\/p>\n<p>Thanks for reading, I hope it was inspiring and informative :)<\/p>\n<p><strong>Thanks Dennis!<\/strong><\/p>\n<p>You will find more work of Dennis\u2019 work on <a href=\"https:\/\/sketchfab.com\/dennish2010\">his Sketchfab portfolio<\/a>, and on <a href=\"https:\/\/3dartdh.wordpress.com\/\" target=\"_blank\" rel=\"nofollow\">his personal website<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hello, my name is Dennis Haupt, I\u2019ve been a Blender user for over eight years. Currently I am working as an animator, 3d graphic and<\/p>\n","protected":false},"author":11,"featured_media":142059967990,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[582],"tags":[17,19,18,591,101,989],"class_list":["post-134857076984","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorial","tag-animation","tag-b3d","tag-blender","tag-check","tag-rigging","tag-tutorial-animation"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/sketchfab.com\/blogs\/community\/wp-content\/uploads\/2015\/12\/bcb4163095e29e5f9cc6288bb4ad8341c7b91b6f-1-1.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/posts\/134857076984","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/comments?post=134857076984"}],"version-history":[{"count":3,"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/posts\/134857076984\/revisions"}],"predecessor-version":[{"id":142059967996,"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/posts\/134857076984\/revisions\/142059967996"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/media\/142059967990"}],"wp:attachment":[{"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/media?parent=134857076984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/categories?post=134857076984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sketchfab.com\/blogs\/community\/wp-json\/wp\/v2\/tags?post=134857076984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}