Wednesday, June 21, 2023

The Animated Athlete - Part III

 This week has been oh-so busy, as I am sure that everyone at FIEA has been feeling. With so much going on, you bet your boots I was able to get some hardcore work done on my Animated Athlete friend. 

To start off, let's jump right into the animation itself. Here is my most current rendition of the Animated Athlete (Iteration 3)!

So, what exactly did I accomplish this week? Let's check in and see! 

But first, let's check out my Jira sprint schedule to make sure I stayed on schedule:

This week's accomplishments are as follows:

  • I added object constraints to the ball and hips of the character.
    • I added an orient constraint to the rotation of the ball and the hips, so the ball moves with the body.
    • I added a point constraint to the squash/stretch controller of the ball, so the ball would squash or stretch with the body.
    • I wanted to thank Ankur for this amazing advice regarding this-- I couldn't have done it without him! 
  • I added keyframes to make the ball motion appear more natural.
  • I started messing with the graph editor, to ensure motion looks less choppy than that of last iteration.
  • I trimmed the squash/stretch segment when the ball hits the player in the head, making it last less long, so the ball didn't look as UFO-like.
  • I added camera motion and keyframed the camera, so that the viewer could see the full arc of the ball. I will continue iterating on the camera motion as we continue the course of this project. 
  • I added IK and FK to the right hand. The left hand was not functioning properly when I IK'd it, so I have set it as a high-priority task for this week's sprint. 
So, I definitely accomplished more than I thought this week! I was able to fully constrain the player to the ball, which makes it much easier to have natural motion, without his rear passing through the ball. 

For reference, here is the animation WITHOUT any constraints! 



This came with a lot of trial and error, as I'm sure you are well aware. Unfortunately, this did not work as intended multiple times. There were lots of points in the project where Ray's body would twist uncomfortably or do something straight outta the Exorcist. It was pretty creepy! 

Thankfully, Ray stopped doing that once I figured out what order to select the various parts in. After that, getting the motion correct was much easier.

I wanted to use this space to really, sincerely thank Ankur for walking me through the IK/FK and object constraint fundamentals. Without his help, I wouldn't have achieved this sprint's goals, so I am 100% very thankful for his collaboration and awesome support!

Here is the range of motion that I was able to complete thanks to his awesome help and support:



I also wanted to note that the IK on the right hand makes it so much easier to keep the hand planted when the hips and upper body are moving. With this in place, I'm going to start moving his upper body. I only shied away from this in the beginning because every time I moved his upper body or neck, his arms lifted off of the ground and he lost all contact. It was pretty not-awesome! 

But yep, I am just going to keep on chugging with the IK controller on the left hand. The problem with that hand is that, unfortunately, it twists and contorts in a really disgusting way when I switch it from FK to IK. No matter what I did to rotate or reposition it, I couldn't seem to get that darn hand to obey my commands. I'll get to it in a later rendition of this project, I suppose!

Here is the setup I was able to achieve for the hand. This is for my future reference, as well as for anyone who might need to know this particular setup! 



I got a lot of feedback from Nick, Chris, and Jonathan this round, which I have tried to implement. I am going to keep implementing feedback and seeking advice from the animation teachers as I continue. Hopefully, the piece will start looking more polished now that I've implemented basic constraints and IK on the right hand. It's only upward from here! 

As for future goals, I'm right on track and where I want to be moving forward! I still have a lot of work to do and a lot of iterations to continue working on, but I am really satisfied with this Sprint's progress. 

I hope everyone had an amazing week-- I'm looking forward to continuing work on this project. I really have learned a lot with this "flying solo" experience. I get to ask the stupidest questions imaginable (like "What's IK?") and I get to delve into problems I shied away from or avoided entirely, as to not mess up a group project's framework. I am really thankful for this learning experience-- I honestly have learned more about Maya in these 4 weeks than I have the rest of the semester.

Like, for example, I've really worked more with the graph editor in this project than I usually do. Usually, I don't touch it and the most I have ever done is put everything in stepped keys. This time, I am actually playing with tangent types (for the ball) and trying to make the motion more natural. I am trying to make the ball rotate and bounce in a more realistic way, but I can really only do that through continued iteration. 

Here is my graph editor, for reference:


Again, I have a lot to work on, but it's slowly happening!

Also, for further reference, here is my Lighting setup:


In addition, Nick and Chris walked me through the Perforce setup for our projects and I was able to import my old project directory directly into the new Perforce. 

Here that is: 

Overall, I achieved more on this sprint than I thought I would, so I am really stoked to continue working and striving to complete my goals! 

The only thing that I was unable to achieve was getting the animation into Unreal. The rig didn't end up loading correctly, so I couldn't get it in at all. The ball loaded, but I was unable to get Ray to load. I want to look into this further with Chris and Nick, so I can get moving on this goal. I think Unreal rendering with this would look really good and I am so confused at what I did to make Unreal not properly load my files. Everything loaded in as a blueprint class, except for the balls. 

But, I'll just add it to my goals for next week. The Unreal addition to the sprint was a last minute (yesterday) decision and I did not realize how long that it would take. 

I'm going to keep deep-diving into help pages and pressing buttons and seeing what they do in the meantime! I mean it, though! Thank you for this opportunity, FIEA staff. I have already learned so much and I'm only going to keep learning more!

See you in two weeks! 

Wednesday, June 7, 2023

The Animated Athlete Returns!

Welcome to this sprint's blog post! I’m your host, Mackenzie and I’m here to give you all the latest on this project! 

Before we get into the nitty-gritty of what I did this week, let's take a brief look at our animation render.

And here is the Stepped Tangents version of the final product! 

So, what's different?

A lot, actually! Here is the initial submission I presented in my first presentation two weeks ago.

During this two week session, I implemented several changes, which I'll briefly run through here before we get into the meat of the blog post:

  • Slowed the animation down by 1.75x. 
  • Iterated on the animation based on teacher feedback.
  • Added rotation to the soccer balls.
  • Added movement to the hips.
  • Used IK/FK switching on the hand to make it stick to the ground.
  • Experimented with different tangent types in the graph editor.
  • Added a basic lighting setup, consisting of 3 directional lights at 0.8 - 1.3 intensity.
  • Did a simple Arnold render of my character rig. 
  • Cleared animation of any non-snapped keys.
  • Removed extraneous keyframes to maintain line-of-action.
  • Emphasized squash and stretch on the soccer ball. 
  • Implemented the infinity wall into the project.
  • Resized the infinity wall to make it less distracting. 
  • Added basic facial animation.
  • Adjusted Jira board to make up for the advancement of the lighting task to this sprint.
  • And more! 
So yeah, a lot went in behind the scenes, which is all very exciting, I know. 

But, I hope you at least enjoy the final product. I am very happy with how everything turned out and I'm excited to keep iterating. 

But before we get to that, I have one quick thing to get to... My blog! 

So, here is the post in question, which contains all the pitfalls, ups, downs, and loop-de-loops this project has taken me on over the past two weeks! 

Sprint 2 Retrospective

This sprint’s progress was better than I was expecting! I was lacking direction last week, as I was not fully satisfied with the animation, however, with help from Jonathan, I was able to identify key poses and create a better storyboard that followed line-of-action and animation principles. 

Overall, I was able to take a 20+ frame ‘storyboard’ and limit it down to 7 key poses. From there, the goal next week will be to find sufficient in-betweens for the key poses. 

Additional feedback I received during the presentation last week suggested that the animation was too fast. Since I was utilizing a GIF for my animation, the video render looked sped up and was a little too quick. 

Using Adobe Premiere, I was able to render a much more realistic target for my animation. I narrowed it down between 1.75x faster and 2.0x faster. 

Here is 1.75x faster.

And here is 2.0x faster. 

Thanks to feedback from Cheryl and Jonathan, I ultimately decided on 1.75x faster…

…However, I had a problem.

When I adjusted the frame spacing in Maya, it multiplied all the frames by 1.75, which resulted in a lot of funky numbers with decimals, which is never good for animation frames. Worse yet, I had 20+ frames of animation with weird numbers that refused to snap to keys. 

Thus, I decided to start over from the beginning. Yep, all the way from the beginning. I decided to take Jonathan’s advice to heart and really hone in on key poses. And I wanted to start piecing together Chris’s advice regarding center of gravity.

So I went back to the oldest version of my scene and started fresh. And here we are! 

I definitely worked a lot of the hips and line-of-action this week, as they were things that were not present in last week’s animation. In addition, I also tried to keep the head motion natural, as the neck got a lotta bit out of hand last week. 

Another thing I really worked hard on were the arms and hands. During last week’s submission, the hands floated and moved away from the ground and looked really unnatural and artificial. In this week’s rendition of the project, I figured out how to IK/FK switch with the hands, which made it easy for me to plant the hands on the ground. 

I will figure out how to constrain these objects and the ball to the ground later; I just want to get all my ducks in a row, first. Once I have a submission that pleases everyone, I will move forward and get into the more complicated elements of animation (i.e. camera sequencer, graph editor, constraints). I am a firm believer of fundamentals first, so I am going for that approach with this project.

Oh, also, along the way I added the lights and infinity wall, too. Chris and Nick suggested that I pull the lighting up in the schedule, just so I can iterate on it, which I did. Part of the reason for pushing lighting so far back in the schedule is because I struggle with it quite a bit, but I managed for this submission, at the very least.

Here is that lighting setup.

I wanted to put in area lights, but I was having trouble with them over-saturating my camera view, so I swapped them out for low-intensity Directional lights. I set them up in the formation we learned last semester, two angled up front and one behind the character. 

The render in Arnold is a little gloomier than I would want it to be, but I didn’t want my playblasts to be too white, so I decided to tone down the lights for now. It’s weird that Arnold renders out so much darker than the normal camera view. I will have to consult a teacher regarding this because I have no idea why or how it does this. 

The Arnold render in question is below. This is before I added the infinity wall, by the way. 


I also mentioned experimenting a little bit with different tangent types. I uploaded a bunch of videos of these different types and how they impact my animation.

Here's clamped:


Here's auto:


Here's linear: 


Here's flat:


Here's plateau:


And here's stepped, the one that is ideal for storyboarding and finding key poses! 


And this is what my graph editor looks like in stepped tangent mode:


I want to learn when and where to apply these various tangents in animation. I know some are good for bouncing ball motions, while others are better for more natural motion, which is one of my targets for next week-- figuring out how to make the motion the most natural.

Anyways-- that's a story for next week. I've got a PowerPoint to prepare for class tomorrow. 

Before I leave, have my Jira board! Woohoo! (It was too big to fit into the PowerPoint)


That’s all, folks! Thanks so much for tuning in! See you in two weeks!