Personal Project – Character Rigging

Week: 10 – 16 May

As planned for this week, I proceeded with the character rigging stage after the 1 to 1 session with Luke.

Model cleanup & finalisation

Before the rigging process begin, I decided to make several changes and improvement to the both character models. The previous models were actually quite rushed with some of their topologies look a bit messy. So I fixed the meshes to have more quad shapes rather than triangles, added necessary loop cuts to some areas such as on the arms, body and cloth, and ensured that layered objects to have aligned segments so they can be bent at the right area without the meshes overlapping to each other.

Last week version (left), modified version (right)
Last week version (left), modified version (right)

The most noticeable changes were the shoes models where I modified their lower and front shapes. I also removed the shoelaces on Zeo’s shoes to make the design to look cleaner. I didn’t changed the Agent character as much since both of them shared the same body components, other than few tweaks to the topologies of his cloth.

Last week version (left), modified version (right)
I implemented Luke’s suggestion to make the knee and elbow to have more rounded shape. At first, I added several more edges and faces to make the rounded cap, but it looks a bit detail and the area look too stand out for the simple character design that I want to achieve. So I ended up with much simple rounded shape.
Last week version (left), modified version (right)

I changed and finalised the color of the characters as well. And for this project, I want the characters to have a simple material color style so I didn’t apply any heavy textures to them.

For the last part, I combined some the character parts which supposed to be together into 1 object to make the rigging process easier. I also reorganised all the final objects in the outliner and renamed them properly so I can easily identify and find them during the rigging process later.

Honestly, it has been almost a year since I last did a character rigging in Blender. I didn’t used Blender as much compared to my main 3d software, 3dsmax. So I have forgotten several crucial parts of rigging in Blender like setting up IK, pole target and controllers. I quickly headed to Youtube and watched several rigging tutorials to refresh my memory.

A simple tutorial to understand the very basic of bone and skinning
This was the tutorial I watched last year when I first started learning rigging in Blender. So I watched it again for this project. Although the whole series are about Riggify plugin, the first part of it is about to setup bone manually which I decided to use for my characters.

Bone & controller placements

With everything ready, I started the rigging process. For this project, I decided to build the skeletal bone manually rather than using a template from the Blender’s Rigify plugin. Rigify is actually great which offers variety of skeletal templates for biped, bird and quadruped character, but I want to have more direct and flexible bone structure for my characters.

With my experience with Rigify several times before, the system will create proxy and instances when generating final skeletal which can be a bit tricky to revert to edit and generating the bone again. On the plus side, Rigify will make all the controllers and automate some of its bone position when posing the character such as the arm twist for example. While its great to have that, I think I prefer to create much simpler bone for this project.

I began by creating the main bone structure first which covers all the character’s body parts.

The main skeletal
Hand and finger bones

After the main bone structure was completed, I created the controller bones for the root, pelvis, hands, foots, elbows and knees.

Main controller bones

I then setup the IK the arms and legs, and Pole Target for the elbows and knees.

IK & pole target setup

Lastly, I added the facial bones for the eyebrows, eyelids, eyeballs and lip.

Facial bones

Skinning and vertex weight

During the skinning process, I used the manual vertex value instead of the standard weight painting method. I prefer the manual value method especially when the object has a low-poly state since we can select the vertices easily.

For me it is multiple time faster to skin this way. We can just select the vertices and enter the intended weight to quickly make them follow which bone we want, compared to using weight painting brush where we keep painting again and again to get the correct values for each body parts.

This manual value method is especially very effective when dealing with very narrow areas such as fingers. Using weight paint in this area instead can be very painful when it painted the wrong surfaces since they are very close to each other.

When using manual method, if I want the vertices around the character’s chest to follow 100% to the upper spine bone for example, I can just set those vertices weight value to 1.0 to that bone, and set the vertices loop between the upper and lower spine to the value of 0.2 so that it will follow the upper spine for 20% to create soft and smooth bend. It’s very fast and I can get consistent weight for all sides.

Vertex weight value
Entering vertex weight values manually can be faster than doing weight painting especially for the narrow areas such as fingers

The only annoying part of using the manual value in Blender is that it will not automatically normalize the weight value to the sum of 1.0 between multiple bones that shared the same vertices. So I will need to use the ‘Normalize All’ function every time I entered new value to the selected vertices so it will deduct and calculate the balance weight values to the other bones. If I forgot to ‘normalize’, multiple bones can effect the same vertices with the same maximum weight which can cause the shapes to not properly follow the intended bones.

I used the manual vertex weight value when skinning in 3dsmax as well, but 3dsmax will automatically normalize the value. I’m not sure if I can do the same in Blender but I cannot find the way yet, other than to use the ‘Normalize All’ function.

In Blender, we need to manually normalize the weight every time we enter the manual vertex value so that all the weights will not overlap with other bone and their sum will stay at 1.0

Personal Project – 3D Modeling & 1 to 1 Session

Week: 3 – 9 May

Earlier this week I began modelling the characters in Blender based on the sketches that I did last week. The characters I designed have some similar body parts such as the body, eyebrows, mouth, hand and legs so I can use the same model for those. The major different between them are the eyes, cloth and color.

So the plan was to model the main character first, which is Zeo and reuse his model for the Agent character with additional props. I mostly used the basic and standard modeling tool such as extrude, bevel, cut and loop cut during the modeling.

I also used several modifiers such as ‘Mirror’ to make the character symmetry and the ‘Subdivision Surface’ to make the low poly shape smoother. At some parts like cloth and belt, I used the ‘Solidify’ modifier to create the depth for those models.

Most parts are modeled for 1 side only
With ‘Mirror’ modifier for symmetry
‘Solidify’ modifier for object depth
‘Subdivision Surface’ modifier to make the low-poly shape smoother
Main character, Zeo
The enemy, Agent

I managed to finish both character models within 3 days. I didn’t proceed to rig the characters yet because I want to show to Luke first during the 1 to 1 session with him tomorrow.

I managed to finish both character models within 3 days. I didn’t proceed to rig the characters yet because I want to show to Luke first during the 1 to 1 session with him tomorrow.

1 to 1 Session With Luke

During today’s evening (6th May), I had a video call with Luke on Discord. I have prepared 3d models, tracking samples and rough storyboard (not final) for this session.

I shared my screen and showed him the reference for my idea first, which is Killer Bean. I planned to make a short action story like the Killer Bean animation but with real video footages as background. I then presented the 3d character models that I have finished in Blender. Luke was okay with the idea and characters. He gave a suggestion to improve the topology by making the elbow and knee to have a rounded cap shape so they can be bent properly.

Character topology

Next, I showed my camera tracking test videos to demonstrate if I’m capable to do the 3d character on real footage project. The tracks were not 100% perfect, but I think I can improve it in the actual footages later.

I then presented the rough storyboard, as the initial idea for the story. I planned to make a very short animation, sort of like a TV advertisement. A battery ad to be exact. So it will be around 15 to 30 second long. Both characters will be shooting to each other like an action scene in The Matrix and Killer Bean with the ending tagline “The BatteriX: No other batteries could challenge”. I described the actions that I planned in the storyboard, and mentioned that the scenes probably will be changed since the story was not final yet. Luke gave suggestions to do a closer shot to some scenes and pick 2 to 3 shots that really show decent camera tracking and full body actions for the showreel.

Indie Film Project – Animation Test Feedbacks

Week: 3 – 9 May

This week, the actual footages was still unavailable and might still being filming. Everyone in the team were doing practices and test since last week as preparation for the actual work later.

The Ftrack page that Luke created was being populated with everyone test videos from all departments. I saw some of them and very impressed with their works. Watching other people works always inspire me to keep improving myself.

I also uploaded my car animation test I did last week to Ftrack and below is Luke’s feedback on my animation.

Indie Film Project – Animation Test

Week: 26 Apr – 2 May

Last week, Luke created a new collaborative folder for the indie film project on his shared OneDrive for us to share and upload our working files. He also opened a new review page on Ftrack for anyone wanting to share videos for feedback.

Since we were still waiting for the actual footages to work on, Luke provided several materials for all departments to practice first. For the animation team, Luke made a tutorial video on how to animate a car with realistic motion and rumble. We can practice using the temporary car model from the collaborative folder.

I downloaded the car and road model including their texture files. The car was rigged very nicely with necessary controllers to animate the car complete with automatic tire rotation when the car moves. I setup a new project folder and put everything in the respective directories.

Car model with rig
Road model

Even this is just a practice, I used reference system when importing both models into a new empty Maya file, which will become an animation file. The animation will be done on a model that was linked to the external file. So any update to the original car model will be applied back to the animation file automatically.

Referencing car and road model

I repositioned and placed the car properly in a suitable location on the road. I then made a ‘camera and aim‘ and parent it to the car’s root controller so the camera will move together with the car.

I used animation layers as suggested by Luke in his tutorial. I created 2 additional animation layers for this. BaseAnimation layer is for the main car movement while carbody_02 and carbody_03 are for the car’s body animations.

Animation Layers

I started with the rumble animation first on the carbody_02 layer. I made a short 60 frames sequence with a slight bumping motion. I then loop the sequence in the Graph Editor using Curves > Post Infinity > Cycle with Offset.

I actually used the same technique when I animated the space buggy during the Term 2 collaborative project.

I then made another animation in carbody_03 layer with much longer sequence with subtle and smoother wobble animation. The animation in both layers will blend together to create more organic motion and not look too repetitive.

I tweaked both animations several times by adjusting the curves and keyframes in the Graph Editor until I satisfied with the result. The objectives were to make the rumble to look very subtle but still noticeable and realistic.

After the rumble motion finished, I then animated the car’s root in the BaseAnimation layer to make the car moving down the road. I only animated a small portion of the animation and loop it again using the same function as before to create a continuous motion.

For the last part, I animated the camera using it’s target (aim). I made a subtle camera shake motion manually to the camera’s aim to make the camera look like it is being held by hand.

Below is the final animation for this practice.

Final Animation

Personal Project – Rough Designs & Practices

Week: 26 Apr – 2 May

After I proposed my personal project to Luke last week, I started thinking more about the short animation story, the characters, actions and suitable places that I can shoot for the background footages.

I planned to use Blender for every part of this animation as I learned this software can do compositing and camera tracking as well. I have a limited experience for modelling and rigging in Blender, plus I never done any camera tracking in this software before. So I think this is a great opportunity for me to polish and learn new techniques in this software.

Concept & Characters

Killer Bean by Jeff Lew

My main reference for the character is from a Killer Bean animations by Jeff Lew. I actually have done a very simple short animation inspired by Killer Bean as a test when I started learning 3D modeling & rigging several years ago. I made the character designs from a battery and called it ‘The BatteriX’ as a parody to the Matrix films.

My old animation. Very very bad

The old animation was done in 3dsmax. So this time around, I want to redo everything again from scratch using Blender. While I’m at it, I’m improving the character design as well. I did some sketches as guides for the 3d modelling process and the main character is now wearing cloth. Finally!

Main character, Zeo
The enemy, Agent

I planned to start modelling the characters early next week and hopefully finish it before the 6th May session with Luke that I booked last week. I want to show them to Luke first to get his feedback before I rig the characters.

Camera Tracking Practice in Blender

I didn’t proceed for the modelling yet because I want to research and practice on the camera tracking first to see if I can do it properly in Blender since I never done it before. I watched several video tutorials on Youtube on how o do it. Below are some videos that really helped me understand the technique.

This last video is not really about camera tracking but I did watched it and learned few techniques and understand more about Blender tracking capabilities.

I then proceed to do some practices using footages that I shoot near my house and a test footage from the indie film project. I used both the manual and auto tracking function in Blender.

After several tries, I managed to get solve error of 0.45 px
The solve error on this video was very low (0.22 px), but the tracking was not very accurate. I guess we cannot only rely on the numbers.
The most accurate tracking of all three since the video was very stable compared to the previous two.

I actually did more test on several other videos but below are 3 of them which I think turned out quite good. They may not 100% accurate but I’m now understand how it works in Blender.

Indie Film Project – Beginning

Week: 19 – 25 April

During this week class (21st April), Luke gave a bit overview of what tasks will need to be done by each department in the coming weeks. I took the animator role, so I my task would be animating a car. Perhaps to make it look realistic since this 3d car will be combined into a real footages. Luke said that the videos are still being filming at the moment, so we will need to wait a little bit until we receive the videos.

Few days later Abbie setup a new Discord server for the project, and everyone involved quickly joined the server. There are several team members from the VFX course as well, and I’m glad to see Antoni & Ghera joined this project. I’ve teamed up with them during the Term 2 collaborative project, and they are very good and cooperative.

Personal and Collaborative Projects

Week: 19 – 25 April

After thinking for several days and watching quite a lot of short animations since the last week post, I decided to do 3d character animation in a real video footage for my personal project. I really love character rigging and animation, and quite weak with camera tracking. So with this project, I can practice character animation while at the same time improve my camera tracking skill. For the collaborative project, I decided to join the indie film project as animator. I then emailed my project proposal to Luke.

I then booked a session with Luke on 6th May for his further advices and also to show my initial progress of the personal project.

Term 3

Week: 12 – 18 April

I’m now in Term 3. In this week class, Luke briefed us on what we have to do throughout this term. There should be 2 minimum projects which are another collaborative project and personal project. The collaborative should be a teamwork project with students from other departments, while the personal project is solely our own ideas which can be something that we interested to explore and showcase our preferred style and aim for the skillset to jobs that we are looking. Luke mentioned that there is a collaborative indie film project for anyone interested to involve as animator, matchmover, VFX and render artist.

We will do a lot of self directed learning and research for the projects, but at the same time we can book a session with several mentors for their advice and guidance. During this term also, we will need to be planning for our thesis and final major project and pithing them in week 9.

Our task for this week is to think about what projects we want to do for this term and why, then send the email proposal to Luke before class next week.

Personally, I’m not really sure yet what I want to do for my personal project, but I really like character animation. For the collaborative project, I probably decide to get involve in the indie film project. So I have until Monday to think about this. I’m going to watch short animations on YouTube to get some ideas.

Character Performance Animation – Blocking + Splining (Unfinished)

Week: 15 – 21 March

I’m very busy with the collaborative project that I spent less time on the character performance animation work.

This week I managed to find some time to finish the blocking until the end of the audio clip and did a bit of splining animation to some parts of the character actions.

Below is the playblast of the work

Character Performance Animation – Blocking

Week: 1 – 7 March

I proceeded with the blocking stage for the character performance animation. I followed the reference video footages closely with some minor adjustments.

Reference footage

Scene Preparation

For this animation, I used David and Sam character from the Luke’s resource share.

David model & rig
Sam model & rig

I made some adjustments to the Sam’s face and head shape to turn him from handsome to somewhat a bit of crazy person. I made him bald by hidden his hair so his head now resembled the original character (Kane) from the audio clip.

“How do I look?”

As I practiced in the collaborative project, I used referencing system when importing both characters into the scene so that any changes to the character models will be applied back automatically to the animation file.

Model referencing

I also setup a quick select set for each David and Sam. This is sort of like a bookmarking system where I can quickly select the main or frequently use bones and controllers when posing the characters in the blocking and animation stage.

Quick Select Set

Finally I created a camera and a simple plane as the floor. I locked both the camera and plane so they would not accidently move or change when I’m doing the character blocking and animation.

Blocking

After everything ready, I started by blocking out Sam character first. I used the quick select function very much during the process. I keyed all his bones for every key pose that I referred from the reference video. This method was to lock the exact pose and prevent it from changing when I alter any next or previous key poses.

After I got about 2/3 duration of Sam blocking, I moved to block David character. David is a secondary character in this performance animation and he’s not moving much throughout the scene. But when he moves I want to make him standout a little with his facial expressions, hand gestures and the use of prop which in this case, a cigar.

Speaking about the cigar, this little prop will swap the places its attach several times in the scene. The cigar will go from mouth to fingers and back to mouth again. I cannot simply use the standard constrain / parent as it will attach to one place only. I also cannot manually animate the cigar to follow the movement of the head, mouth and hand because it’s quite impossible to get perfect animation for that.

This one little cigar is a ‘serious business’ in technical aspect

One way to do it is to use ‘dynamic constraint’ where it can attach and change to different parent at certain frames. I knew how to do this trick in 3dsmax since I used this technique quite a lot in my previous projects, but I’m clueless how to do it in Maya. So I headed to YouTube and search a tutorial about this matter and I found one that clearly showing just that. I tested it in my scene and it works!

Below is the first blocking for the character performance animation. I didn’t managed to finish all the blocking before this week class. So I uploaded what I have so far to Ftrack so Luke can give his feedback during the class session.

Playblast

First blocking animation