Thursday, 14 June 2012

Welcome to my animation blog, this is where I show you my animation work from Maya.
In time I will improve this blog and with any luck give it some character.

So here's the beginning, I have a premade hand model that needs rigging and animating.

I began to rig a hand using the pre-built model (Supplied by Chris Gorvin).
I began by setting up Maya with the appropriate tools and workspace that I am happy with.
I made sure there was only one viewport, as I prefer to use one large view while swapping between top/left/right views. I selected the animation toolset, this is located on the top left of Maya in a drop down menu.This changed the menu tabs at the top of Maya to conform with animation utilities. After this I used the newly listed Skeleton menu and selected Join Tool, this brought a new menu (tool settings) which allowed me to modify the method in which this tool can be applied, for this task I did not need to modify the settings.

Once I had setup the scene I began creating a bone structure using the Joint Tool, once I had selected the joint tool it allowed me to click on the screen to create joints, represented by spherical objects, each click added a new joint and an arrow linking them.

Below you can see the hand model with the bones displayed clearly in a light green colour.
 



The spherical objects along the bones represent joints, each joint automatically becomes a parent of any joints created from it. For example, the above picture (right) shows the thumb in purple and the bone structure in green, the spherical object to the left is the parent of the ones to the right, the green arrows between the spheres tell the user which direction the structure moves in. So the left most sphere plays parent to the middle and right most sphere and the middle sphere plays parent to the right most sphere. I realize I may have explained that a little more confusing than it should be, so please try to take reference from the above right screenshot.

 After rigging the hand I opened the Outliner, the outliner lists all objects within a scene on Maya including cameras, geometry and skeletons. The outliner lists my skeletal joints as they are linked, so the wrist is the parent of all joints, then the metacarpol, then the thumb/finger etc. As you can see below is the list of objects, specifically highlighted is the thumb joints from the phalanx 01 to the end of the thumb.


After creating the skeletal joints I had to then position them correctly and bind them to the hand, positioning was easily done, having the viewport configured to show wireframe only I could see straight through the hand mesh in order to position the joints. Once the joints were positioned I had to bind them, to do this I selected both the skeletal joints and the hand mesh, then I opened the Skin tab, selected bind skin and then selected Interactive Skin Bind.
The result is shown below.


Interactive Skin binding (the method I used to bind the joints to the mesh) gives weight to each vertice, each vertice can be affected by more than one joint, for example if two joints are weighting one vertice, the joints will share an effect of weight on the vertice rather than one joint controlling it. The tool you can see above (bright Red, green and blue spherical lines around the wrist) is called the interactive skin binding tool, this allows a user to select the area of which each joint is allowed to effect, for example of you shrank the area that a knuckle joint would effect to a pea size, then the hand mesh would distort as the fingers bend, but if the area was larger it would bend the mesh in an attempt to make it look more realistic.



After the binding had been done I moved on to start bending the joints and correcting the amount of vertices each joint was allowed to control. As you can see below (left) bending the finger has created a distortion to the geometry of the hand, this would need fixing as it is in no way realistic to the animation. To modify this distortion I used the Interactive Skin Binding tool which can be found by navigating to Skin > Smooth Skin > Interactive Skin Bind Tool.






So I selected the appropriate joints and scaled their reach of vertices until the hand looked like the below image, which I was happy to call realistic, for now at least.






Using the shortcut key (E) I swapped back to my rotation modifier and rotated the finger back to its original position, and then I continued to fix the other joints along each finger.
Next I moved on to moving the thumb inwards, into the hand. For this I had to use the Paint Skin Weights tool, this can be found the same way as the Interactive Skin Bind tool, Skin > Smooth Skin > Paint Skin Weights Tool.

The geometry was being distorted quite badly when I pulled the thumb inwards, I used the paint skin weights tool to specifically select an area which would be pulled when I moved the Metacarpol joint for the thumb.

The paint tool area in white is the area that has influence from the joint.



Next I begin creating a constraint, this is used to apply skeletal joints to a controller, this will allow easier control over the joint movement, especially when using a full rig. To apply the constraint I must first create a controller. I do this by using the CV Curve tool which can be found by navigating to Create > CV Curve.
Once I have the tool selected I attempt to draw a hand shape, once happy with the shape I select the new hand shape and the wrist joint by holding down the Shift key and selecting them both. After having them both selected I navigated to the Constraints tab at the top of Maya and then selected Orient, this oriented the hand to the newly created controller.

After joining the controller to the hand I added an attribute to it, this is done by navigating to Modify and selecting add attribute, the attribute tool allows a user to create a minimum and maximum value for the joint as well as a default value and a name for the Attribute.
The hand controller is shown below (left) Adding an attribute is shown below (Right).

 











The next step in adding a controller and constraint to a specific joint is using the Set Driven Key tool. This can be found by navigating to Animate > Set Driven Key > Set. Once this menu is opened a user will want to load the wrist controller as the driver, at this point the wrist controller should be shown on the bottom of the Set Driven Key menu under Driven, you’ll want to click on the Wrist joint in the menu and select load driver. Next you will want to select the Index 01 Curl in the sub menu under Driver while also having selected the index phalanx 01 joint in the 3D space. After having them selected, click Load driven, this will then create a Driven Phalanx_Index_01 joint.


Now I select the Wrist Controller under Driver and select Index_01_Curl as well as selecting under Driven, Phalanx_Index_01 and its Rotate Z property. Then I Select the controller in the 3D space and set the Index_01_curl value to -10 which I set as the minimum value in the screenshot above, then I reselect the index finger phalanx join 01 and set the minimum angle I would like to have allocated to that joints controller, in this case I have chosen a value of 50 for Rotate Z, now I click Key on the Set Driven Key tool to apply the minimum value of the index finger phalanx 01 joints controller.

This screenshot shows the Set Driven Key tool as used for the Index 01 Curl controller to control the Phalanx_Index_01 hand joint on the Z rotational axis.



This completes the tutorial for rigging, animating and constraining a hand, these same tools can be used for entire rigging and animating of characters, vehicles and objects etc.


After creating my storyboard I began to animate the previously setup rig in Autodesk’s Maya.
To prepare for the animation in Maya I had to modify animation settings. To open the settings menu I had to navigate to a small button on the bottom right of Maya that says “Animation preferences” when you hover over it. Once open, the Preferences menu should be automatically on Time Slider, if opened as I mentioned. Under Time slider, change the playback mode to Real time, then click settings and change time to PAL [25 FPS]. Then go back to Time Slider and set the playback start/end to 1.00 and 50.00 and the Animation start/end to 1.00 and 50.00, this allows 2 seconds for the animation to run through. Then go to Animation and set the Tangents to Flat (default in tangent) and Stepped (default out tangent).
Stepped gives you an easier method of blocking, the blocking phase is where we create the basis for our animation, it’s called blocking because of the way the animation acts, if you open up the timeline graph editor (found along the far left control panel of Maya, hover over the button that says “persp/graph” and select it), you will see a graph, as you animate using stepped/flat you will notice the graph creates straight lines, this is because the animation will jump from one phase of the animation to another without smoothly transitioning between them. I could use Spline or plateau for this animation as they would make quick work of smoothing out a small animation such as this, but I will begin by using blocking as to show how to animate more correctly through the different movements of a hand.


Now that everything is ready I begin animating by selecting each joint and pressing the S key (this saves the positional information to a frame) at the beginning and end frames. Ensuring that I am currently on frame 1 by clicking the number 1 along the time frame located at the bottom of Maya. I then do the same at frame 50, this means that at the end of the animation the hand will revert to its original position. 

Now I begin animating, I select frame 25 and the Index_Phalanx_01 joint, then rotate it on the Z axis. When I am happy with the positioning of the finger, I press the S key to save the positional information. Below is the hand closed, with positional information saved at frames 1, 50 and 25.





I continue selecting the joints and animating the hand at several positions until I find the animation seems very close to realism with its blocking phases.

I then converted the animation to splines, this is easily done by going to each frame in which we have saved our positional information (also known as a key frame), and selecting the animated areas, for example at frame 25 I would have to select all joints except for the wrist, then in the graph editor drag and select all of the available stepped lines and then click on Spline tangents (found on the top left of the controls surround the graph editor, hover over the button and in the far bottom left of Maya is will print the name of the button.
Once the animation has been converted to spline tangents, it will move far more smoothly than before, making the animation look more fluid.

To render out the animation I navigated to Window > Rendering Editors > Render Settings.
Here I can give the output render a name, as well as define whether it should output multiple images, how many images should be output, whether or not to number them in order of frame, set the resolution of the render and much more.


I have left the file name prefix default as the scene is named appropriately.
Once I have changed the settings to what I need, so frame range to:
Start Frame : 1.00
End Frame: 50.00
Image Format: JPEG (jpg)
Resolution: 1280 x 720

I rendered the animation by navigating to Render > Batch Render.
Below is part of the rendered animation rendered as still images.




UDK



UDK

To begin importing a character and applying animations to said character within UDK you must first open UDK and the content browser (View > Browser Windows > Content Browser) and then click and drag your file into the content browser from windows explorer. Then you will be greeted with a new prompt box as pictured below.




Name your Package and grouping, the grouping is where you can store multiple imported items, this makes it easier for you to navigate through you work as you use UDK. Now you can double click on your newly imported character to see what animations can be applied to it. Double click then select the Anim tab just below where it says Browser: None, then on the first drop down menu select K_AnimHuman_BaseMale [124], where the number 124 defines how many animations there are within this category.
Then a list will appear with all the animations, select run_fwd_rif [0.6s] then click play at the bottom of the window where you can see your character. The browser window will now play the animation for you, this is an easy method to view how an animation will act towards your rigged character, if set properly, the default animations will look great, this is also the animation I will be talking about applying to my character in a moment. Examples of the Anim Set Editor are shown below. 


Now we know the animation will work perfectly, close the Anim Set Editor window and click/drag your imported character onto the 3D workspace, now open kismet (View > UnrealKismet).
Once the Kismet is opened you’ll want to right click within it and create a new Matinee, then right click again and select new event > level loaded, then click/drag the black box next to “loaded and visible” from Level Loaded onto “Play” on the matinee.

Now select the character within the 3D workspace, keeping kismet open, now double click on Matinee within kismet to open the Unreal Matinee, alternatively go to View > Unreal Matinee.
Once matinee is opened right click on the left hand side pane and select create new Skeletal Mesh Group, the box pictured below will appear, now give your group a name like so.

Now select your Group Name on the left pane then along the bottom of Matinee you will see a properties pane, click the green + (plus) symbol to add an animation set, then open your content browser (View > Browser Windows> Content Browser). Now find the animation set named K_AnimHuman_BaseMale, navigate back to Matinee and now click the green arrow (the one pointing to the left under properties within Matinee after having selected your Group) to apply the animation to the character.
Now select Movement, this should be just underneath your Group name, then drag the black line on the frame slider (just to the right of your group) to the end of the frame and press enter, this applies a key frame to the animation, now move your character within the 3D workspace, this creates a positional information point, meaning that now UDK will know your character has moved from point A to point B within however many frames you have moved the slider by.
Now select the bar which says “Anim” and press enter once again, this should popup with a dialogue box asking you to select an animation, this will apply the chosen animation to the character during the time in which you choose an end frame for the animation time slider. For this example I have chosen run_fwd_rif, now you should have a new bar within your time slider that says run_fwd_rif, right click the left most keyframe on which is in line with run_fwd_rif (it’s a black triangle).  Select set looping, this will now apply the animation until the end of our movement phase and animation.
Now we have a complete animation that will load and begin playing once you start the level, go ahead, right click anywhere on your level and select play from here and it should play your animation through.



Below is a video of my complete UDK animation, unfortunately one of the textures I'd like to use did not load with this render but that's easy to swap out.



Below is my Maya files for the above work.
http://www.mediafire.com/?mtj1z4esf5d5c9p,4zy5a7u8gkf7o2d

No comments:

Post a Comment