to set up FPS animation from rigging and skinning arms to animating.
My name is Micah Reigstad and I am an animator/rigger from Minnesota, United States. My interest in creativity has shown ever since I was a child. Producing unique personalities for my precious stuffed animals started it all…. On a more serious note, I made convincing, full-sized guns out of Legos, and actually shot Technic pieces out from the working “magazine.” Once I discovered amazing video games with awesome stories and 3D art, I knew I had something to get excited about in my future.
I discovered the 3D world roughly 8 years ago and dabbled in nearly every related field of it from level design to modeling to now animation + rigging. I had the pleasure to have contributed to an award-winning total conversion modification for Battlefield 2, Forgotten Hope 2 (the surname was “Roughbeak”). I got accepted into the team first as a modeler then eventually found my true passion, character movement. Understanding the entire game design process and sharing tips with other people is an incredible experience!
Currently, I have a deep interest in animating next-gen quality models by collaborating with talented artists across the globe. This article will talk about tips/tricks from my experience of rigging, animating, and to a final rendered showpiece. The goal of this article is to help individuals understand the process of realistic FPS animation and hopefully broaden their knowledge in the subject of animation. The shown examples will be from my SIG Sauer P220 Animation Reel. The software solutions that I will be using are Maya and Marmoset. Without further ado, let us proceed to the juicy stuff!
Rigging Arms in Maya
Simply put, rigging is a process to easily and properly control an object (i.e. arms) by cleverly positioning “‘joints/bones“ on the geometry. Based on my first attempts of rigging, it will be no surprise that the most detailed model can be broken by a poor rig. With enough patience and dedication by looking at references, you will eventually achieve something that looks cool and feels good to the animator! Think of rigging as a human without a skeleton that mysteriously does not.. move… too well….
- Arm Geometry Setup
Arms (credit of example model is from New World Interactive) should be centered at 0,0,0 coordinates, otherwise, you’ll get nasty offsets to manage. I prefer to have the pivot to be right where the “chest” is generally located– this will make things much easier later to mirror joints/bones, and controllers.
- Joint/Bone Setup
Next up is creating joints for our arm model. There are tons of ways to do this, but one method that works well for this purpose is → Human IK>Create Skeleton.
Make sure to start and finish one arm first (recommended to start on the left arm), because we can mirror the stuff over to the right arm. Manually position and rotate the joints to what looks best to you, do not stress too much over it. Fingers tend to be most tedious than the rest, but well worth it to make it look good!
- Joint Mirroring
Once done rearranging the joints, I normally just delete the skeleton definition in the Human IK “Definition” tab. This way the joints will stay. The HumanIK will be removed, but we do not need it for this purpose. Now unparent (middle mouse button in Outliner) the left arm joint root and add an additional joint right at 0,0,0, this will be our root for easy mirroring. Select your root and → Skeleton>Mirror Joints from the “Rigging” drop-down tab. There is still some more cleaning up to do, especially make sure to parent the left and right arms under the root joint, and check the joint orientations. Also, feel free to use groups, they are helpful for organizing!
- IK (Inverse Kinematics) and Forearm Twist Setup
Inverse kinematics is great for the first-person animation since it is useful for locking the hand down while adjusting the elbow, for instance. Setting up IK handles for the joints is rather simple in the procedure. Just select the “Create IK Handle” from the “Rigging” shelf and start the chain from the arm joint to the hand joint (repeat on the other arm). You should have some proper movement now between the whole arm joints, do not worry about the joints not moving the arm geometry, because that will be solved in the next section with skinning.
Lastly, the forearm needs to be twisted progressively with the hand upon rotation. Once again, there are several ways to accomplish this, but done through the Expression Editor has the best control. Regarding the values, it is really up to you and/or the rig design itself to make the decisions on where it should fully/lightly twist. Note: depending on your preferred settings, the rotation axis/orders may differ.
Skinning Arms in Maya
The next step to this rig is that the joints need to be attached to the arms. Skinning is just that, it binds the rigged joints to the geometry. Proper skinning will resolve floppy salad fingers, jelly-looking arms, hilariously twisty wrists, and goodness knows what other tricks this rig is hiding up its sleeve!
- Bind Skin Setup
Before we bind the skin, be keen on to “Edit>Delete by Type>History” on the arm geometry. Otherwise, the binding may not function correctly or not at all. The first step to skinning is by selecting your arm geometry and the joints (not controllers!), then click the checkbox through Skin>Bind Skin. This will produce a menu with a rather tongue-twisting terminology, but I will attempt to keep it simple as possible with the photo below. There are many different settings that will work for various causes, but it is always recommended to experiment! Note: Maya Docs has a great writeup on this and I would recommend checking it out!
- Painting Skin Weights
Skin weights are what drives the joints to do their jobs if that is either salad fingers or hopefully, believable looking deformations on hands and arms. Perry Leijten has a great tool which I have used throughout my skinning projects as of late. For a quick overview, I used the “Shell Unify” and “Smooth” the most, and Maya’s Paint Skin Weights Tool for adjusting vertice shapes. Also, it is a time saver if keyframes are set up with the fingers gripped or closed– this way the deformations can be seen in real-time. Once you are satisfied, be sure to “Skin>Mirror Skin Weights” to the other arm while it is in the default rigged pose.
Since the scope of this article cannot cover everything, there are many tutorials available that walk-through the skinning process. One of the most important parts of skinning is to keep skin weights separate. Otherwise, some of the vertices on the ring finger will follow the pinky if rotated, for an example. Make sure to remove those vertice values on different fingers or such. Binding the joints to geometry is not automatically perfect, so adjustments are needed around areas. Lastly, the best advice I can give for skinning hands is use reference! Bare hands and bulky gloves, for instance, “deform” a bit differently in real-life, and it is nice for your workflow if you have done quick research before you begin.
Controllers for Joints in Maya
Since joints are rather tedious to control, we need to set up controllers which are much easier to manipulate. The NURBS Circle is used to manipulate this rig and allows the arm model to have more of a personality. Now that skinning is set up, this will go much easier to set up the controllers. Note: Controllers can be set up after joint positioning, but make sure they are not constrained to joints, otherwise the Bind Skin will be confused, and often fail to compute vertices. Some people have different workflows, but I personally like to get skinning out of the way before I can have a fun time manipulating a rig.
- NURBS Controllers Positioning
To start, create a NURBS circle, then Constrain>Parent (different than hierarchical parent) it to the desired bone (make sure maintain offset is checked off). Once that is done, delete the link (repeat for other controllers), and voila, you have the circle/controller exactly where the joint is.
- NURBS Controllers to Joints Linking
Once the NURBS are positioned, they need to be linked to the joints by rotation but actually done this time. Again, there are many ways to achieve desired results, but one effective way is to select the controller first and select the joint that is aligned to it, then constrain it (with “Maintain Offset” checked on). Repeat for other controllers with the above steps. The previous method on “1)” was just a positional/rotational snap. To mirror NURBS Curves onto the other arm, it works fine to select its group with a center pivot and set a scale box to “-1” whichever axis is pointing to the other arm. Then again, it is a good idea to Freeze Transforms on that mirrored group. On the SIG Sauer P220 Animation Reel, I had two hand controllers on the rig. One for rotating the hand at the wrist area and the other pivot for center rotation (great on pistols or vertical foregrips).
Next, is the elbow. This is simple to set up – select your elbow NURBS shape, then click on your IK handle, and then → Constrain>Pole Vector. One other useful controller to add is the shoulder. Position it like other NURBS (by snapping to the joint) and Constrain>Parent the controller to joint in the usual manner.
Lastly, it is time to review the rig. This will be explained later, but for future note, the left and right “_Weapon_Link” locators will serve as the main hand link for the weapon. Creating display layers are very helpful if some moments require to hide, restrict the selection, or quickly color code objects. Before I forget, pat yourself on the back! If you made it this far through the jungle of complexity, you should have well-deserved applause.
Weapon to Arm Rig Setup in Maya
Now that the arm rig is set up, we are ready to move onto the weapon rigging! Since I have been a huge enthusiast in how guns work, I am always excited to break apart 3D models and test controllers on them. Call it a romantic passion, but I will keep that.. to myself.. for now…. Anyway, this section will discuss the workings of Vlad Sandberg’s SIG Sauer P220 model featured on one of my recent animation reels.
- Weapon Controller Setup
Weapons also have different ways of rigging. I have seen artists use joints by skinning the parts with it accordingly, but for this purpose, I will be using curve controllers. Once again, we turn to NURBS Curves for the controls to drive the P220 geometry parts. Again, we need to parent the weapon geometries under their respective controllers. A friendly reminder is to Freeze Transformations on the controllers to keep the values nice for organization purpose. Note that the barrel tilt is done through the Expression Editor by connecting the slide controller’s rotation and translation to the barrel controller with very low values.
- Link Weapon to Arm Rig
Back to the arm rig, we will now Constrain>Parent the weapon controller (the NURBS Circle that encompasses the P220 above) to left and right “_Weapon_Link” locators separately. The purpose of this is that the hand controllers need to be focused on constraining to the magazine, for instance. I have seen and heard many animators struggling in Maya because of the tricky parenting magazine to hand. Once they position the hand at the magazine in hopes it will follow the magazine while constrained, it snaps back to the initial pose. After weeks of struggling, I discovered a quick solution!
Maya parenting works with these terms: “Blend Parent” and “_W0” on the wrist/hand parent constraint in Channel Box. Here is where most people make the mistake (once including me!), they key in the values where the time slider is at the initial pose. Try this instead: once the hand is posed at the magazine (ready to pull out), key in 1 for both of those value boxes.
Make sure to set 0 to the same value boxes a single frame before that, otherwise, the hand will still be snapped to the magazine while attempting to go back to the initial pose. Repeat this 0 & 1 (vice versa) method every time you need to disengage the parent constraint which includes but not limited to putting the magazine back in. Note: Those “_Weapon_Link” locators make the hands follow the weapon even when the hand value constraints are at 0. There is always room for experimenting to simplify techniques, but this method performs the best for me at the moment – once Maya Mel scripting knowledge comes in to automate tasks, could very well be a powerful workflow to witness.
Animation Process in Maya
Ask any animator and they would often say planning is one of the most fundamental keys to great animation. Having a set of poses (initial pose, magazine grab, etc.) will help with the overall vision of the animation. Having a toy or even a real gun (unloaded, please…) by your side will help with the poses and pacing. Acting it out is beneficial!
- Animation Block Poses
Block poses are used to help get an idea of how your motions are shaping throughout the scene. As a continuation with Maya constraining issues from the last section, now we will set up our poses to put that solution into effect. For my P220 Animation Reel, I started with the dry reload which tends to get the most complex (and can transfer most of the keyframes to the non-dry reload and the deploy reload with several adjustments to be made). The amount of block poses is up to you, the main thing here is planning, and hopefully a well-executed animation after this. I ended up doing at least 5 for the dry reload.
- SIG Sauer P220 Animation Shaping
Personally, I shape the details progressively starting from initial pose to (ending) initial pose. Maya’s Graph Editor is what I dominantly use for shaping motion curves and to fine-tune tangent handles to achieve a smooth, sweet look. This applies to the fire animations, deploy, P220 de-cocking hammer, etc. There are plenty of tutorials on the Graph Editor– self-education is encouraged, it has helped me in many circumstances. I also highly recommend aTools plugin, now called AnimBot. The former free version is still available if you are curious to try it. Mostly every Maya animator I know has it, so it is worth checking out!
- Animation Advice
Animation motions and finding a style is rather difficult to teach because it is such a practiced based skillset, and it is such a broad topic that cannot come close to even fitting into the scope of this article. It really is up to the individual to push and encourage themselves every day. Setting up block poses will assist the overall process since it sort of “sketches” ideas down into something you can work with later. My best advice for believable looking animation is to keep practicing and looking at reference! Obviously, it sounds like a broken record at this point, but it has helped me and others push through roadblocks consistently. I have seen so many gun reviews, documentaries, video games, etc., that it is hardly funny anymore, but those countless hours of binging have helped me in ways I did not think would happen.
For additional tips, I typically shape an exponential curve in the Graph Editor to simulate force to place the magazine into the P220. Think of it as a patient squeezing effect. The curve values will simulate an exponential curve, and then rapidly forces its way up. Regarding the overshoot/shake to rest effect, I shape the curve so the form appears to be vertically wavy with subtle values, but progressively lower until it reaches the desired pose. Very similar to the good old bouncing ball principle, but a bit more involved depending on the heaviness of the model. In addition, zero squash/stretch and little or none translation values should be taken into consideration to get a believable shaking result without getting too nauseous. With this being said, keep in mind that these tips are for realism. Animators and games have different styles of approach, either with faster or slower animations to match the needs. All of these techniques take practice and long hours of watching reference to discover what looks believable. The fact of the matter is that eventually, momentum will breakthrough like a stream once enough blind love is dedicated to the work you enjoy doing.
Maya Animation to Marmoset Toolbag 3
Exporting animations from Maya to Marmoset Toolbag 3 is very simple, thanks to their wonderful program. Marmoset Toolbag 3 is great for real-time rendering with intuitive material setup and the coolest thing is, there is an animation timeline inside of it which is perfect for our current needs. Rendering is satisfying once the right elements of lighting and parameters piece together to complement the model and/or animation.
- Exporting Animations from Maya
Normally, you can just “File>Export All…,” however, if you have objects in the scene that do not need exporting. You can simply do the one below, which is “File>Export Selection…” to do as the name suggests. For this export, we will use the FBX file format. Make sure Bake Animation is checked on along with the desired start and end frames. Along with the other options, refer to the Maya Documentation for a great explanation on FBX export options.
- Importing FBX with Marmoset Toolbag 3
In Marmoset, go to “File>Import Model…” or simply Ctrl+I to achieve the same result. Once you have found your exported FBX file from Maya, you should see your arm rig as well as the animated object (in this case, our P220) floating in 3D space. Depending on if you added a camera in Maya, we can select between our “Main Camera” or a first-person camera in the top left viewport of Marmoset Toolbag 3. Once this is done, we can tweak the materials and play with the tasty lighting it has to offer. Marmoset Toolbag 3 has an amazing amount of parameters to try out: depth of field, bloom, PBR reflections, and many more! Since I was going for a night environment in my SIG Sauer P220 Animation Reel, I wanted the night sights to show through a bit, but not over-done either.
Once you are satisfied with how the lighting is looking with your animation and the model, go to “Capture>Video…” to export your animation into video format. Once this is done, we can do all sorts of cool stuff– such as adding sounds to your animation with your favorite video editor. Review any glitches as usual and its ready to be proudly showcased!
Thank you for your time reading this article! I hope it has been informative and promotes creative juices to be released on your work. We as humans are always constantly learning new and better techniques, but I wanted to show you my tips and tricks through the process of my P220 Animation Reel specifically. Every day, I am learning something new either with quickening workflow or adding an improved technique to use. It is very rewarding to push yourself, get to the end result and feel satisfied. Before I forget, there are some last workflow/life tips I wanted to share with you before I go:
- Always stay patient + optimistic during roadblocks and times of unrest! It is rather difficult to be objective with your work, we often find faults with it quicker than anyone else. Also, try to allow constructive criticism to grow you rather than take it personally.
- Channel that child you once were who did not care what the result looked like, but most importantly, care only about what something feels like– the love of the process. Animator, Mark Pullyblank said it better than I ever will, but this general idea has helped me tremendously through anxious times, and I hope it does for you too!
- Short, but consistent exercising between working hours has also helped me with my sanity. Any form of stretching and actually, shadow boxing has made me able to release negative energy/tension better than anything else. Believe me, I learned the hard way.
- View your computer from afar sometimes. Focus-mode is good, but taking an extra look at it from a different angle is recommended.
- Eliminate as many distractions as you can, multi-tasking, in the long run, is not healthy and/or exhausting in the end. During work, isolate your objects in the viewport. Throughout animating, I often hide the arm rig, and just animate the weapon controller + geometry itself, for an example. In Maya, I also find focusing on a range of key-frames, say 20-30 at a time, will boost productivity. Simpler workflows are always encouraged because it just helps you focus and have more fun with it instead of being overwhelmed + exhausted.
As I am very motivated to help fellow creatives overcome the challenges they face, I sincerely hope these tips have helped you in some way! In collaboration with Vlad Sandberg, my SIG Sauer P220 Animation Reel was a real pleasure to do. In addition, I am very grateful and thrilled to be featured at 80lv! Lastly, feel free to message me on ArtStation to clarify any mind-boggling topics or further advice.