Team Members:
Sean O'Neill
Final Project State
My final project, the animated short story Top Shelf, is a completed and rendered 25 second animation video. The story is about a boy in a toy store who wants a ball on the top shelf, attempts to retrieve it, but can't reach it despite reaching and jumping. He gives up and walks off camera. The ball then jumps off the shelf and bounces after the boy. While there are still things I'd like to tweak or improve with more time, this video stands completed as presented here.
Key Algorithms and Approaches
The key animation techniques that were used were keyframing and armatures (Blender's version of morph targets). Blender also has their own Parent/Object constraint to bones which functions as skinning. All of the animations used keyframing to achieve the desired affect and armatures were used to move the ball and character model around the environment. The computation bottlenecks for this project were mainly time and learning how to combine animations with each other for the character model that looked natural. There were times where I wanted to edit one part of an animation but then it would end up messing up a different animation at a different keyframe. I believe the main limiting factor to scaling up this project would be my own current skill level as a new Blender user. Blender offers many ways to approach animation and if I wanted to scale it up and add more details or characters to the environment I would want to have a better skill set with Blender.
Final Project Description - Option 2 Specific Questions
I used Blender 4.0 as the primary tool to create the story. The Mixamo character and animation library was also used to select a predefined character for the story's primary character and identify animation/motion snippets that I could import, modify and combine in Blender to achieve the primary character's movements. The animation principles that I incorporated were squash and stretch, anticipation, staging, arcs, ease in and ease out, and exaggeration. The animation techniques that I used were keyframing, armatures, and skinning. I mainly used the same approach to keyframing that was used in class basically not doing linear interpolation at a fixed rate and using multiple keyframes. For the bouncing ball to make it look more natural I added some curving in the graph editor for the directions that the ball was moving. Armatures are blenders version of morph targets I think. The only thing armatures can't really do is add bulging and other non-linear stuff to the parent object. It acts more like a bone, so you can scale it, stretch/squash, rotate, etc. For skinning I used the Parent/Object constraint to bones option that Blender offers. With using Blender 4.0.1 I think I was using one of the state of the art techniques for skinning.
Initial Project Sketches and Progress
The original storyboard had the shelf contents spilling onto the boy, creating a cloud where just the boy's eyes could be seen. The next storyboard iteration had the shelf breaking and the boy falling. I changed the storyboard to the current storyline because the animations needed for the earlier iterations were more complex and required a much steeper learning curve to execute than could be achieved while still meeting the project due date.
The making of the environment went pretty much as expected - it wasn't too hard. I used the Archimesh add-on in Blender for the shelves, which saved time spent on the environment. Animating the ball wasn't as hard as I thought it was going to be either; I did find a pretty good YouTube tutorial, which definitely helped. Adding the cameras in and setting camera movement was fairly simple and not too difficult, the same goes with rendering the whole animation.
In areas where progress didn't go as expected was entirely in the character animation. I chose aan existing character from the Mixamo library, then used several animations from Mixamo applied to the main character for the overall character movement in the story. Combining animations from Mixamo could be easy at times, but most of the time it was quite difficult. Sometimes I would change one animation and it would mess up a later animation or even an earlier animation. Adjustments had to be applied sometimes to individual bones in order to avoid altering the rest of the positions and axis orientation mismatches could result in the character walking in the wrong direction. I was able to extend the walk cycle so the character walked off camera but the motion wasn't as natural as I had hoped to make it. There were times were no matter what I did the character model would not behave as expected. The majority of the setbacks were mainly from fiddling with the multiple animations I was combining for the character movements needed for the story line.
Below are some of the initial story board sketches along with screenshots during the animation progress.
Peer Feedback Summary
The feedback I received was positive and encouraging. The primary feedback comment from more than one reviewer was to work on the character's walk cycle and this was already in my planned tasks to complete the project. The reviewers concurred that the walk cycle needed additional tweaking. I adjusted body positions, including the head looking down for mood. I made other attempts to smooth the walking and tried to eliminate the extra 'gliding' but this could still use additional work. Another reviewer suggested some additional lighting and a third suggested texture for the ball. I did incorporate additional lighting so the character's face would be more visible at the beginning of the short. I investigated adding texture and decided that just the skins were sufficient for the balls.
My Project versus State of the Art
My project was created using the Adobe Mixamo character and animation library and Blender 4.0.1 (released Nov 2023), which is pretty state of the art. Mixamo features automatic character rigging, ready to use characters and a library of motion captured animations that can be exported for use in Blender as well as other animation software. Blender's latest release incorporates a wealth of enhancements and updates to both the user interface to the software and the underlying models and physics are a significant upgrade from the previous version, 3.6. Since Blender has a good chunk of state of the art animation techniques are baked into it then my animation that I made has incorporated those techniques as well.
Current Limitations and Possible Future Direction
There are some limitations with the current animation. First, the project criteria included a timeframe of only 20-40 seconds, which seems short but requires a lot of effort to get that length. Making it longer requires additional Blender development and the time required for enhancements would make the project delivery late for the class deadlines. To keep the focus on using techniques from class and still get it completed on time, I decided not to include potential story enhancement elements, such as sound or dialog, additional characters or scenery details of the toy store. Overall I would need more time to learn Blender more effectively to achieve greater results making this the greatest limitation for me at the moment. I would like to improve the walk cycle, add in additional characters and objects interacting with characters and add in the potential story enhancements mentioned earlier, making the story longer.
Code and Libraries
Mixamo - Pj character
Mixamo animations - idle stand, jump, reach, turn left, walk, sad walk
Blender version 4.0.1
Blender Archimesh Add-On
architectural object add-on (used for shelves)
OBS was used to record the presentation