Personal Showreel Update 2

During the last session with Harriet (Union VFX) on 10th December, she gave some useful feedbacks regarding my CV and showreel. She liked the bottom descriptions in the showreel that mention the tasks I did for each work. She also pointed out the weak samples in my showreel, so I updated my showreel to remove those and added several new clips from my previous works. This time I’m able to include my FMP animation as well since it was completed by the end of Term 4.

Masking and Rendering

Week: 6 – 9 December

During the final week of my project, there were still several tasks need to be done which are rotoscope masking and rendering. I have finished the character animation in all tracked footages last week. So based on the animation, I’m able to identified which shots and areas in the footages that need the masking treatment to make the objects that supposed to be in front to appear on top of the 3d characters.

There are 4 shots that required masking; Shot 01, 02, 03 and 10.

Shot 01: Requires masking for the traffic light pole & several pedestrians
Shot 02: Requires masking for the board, poles and straps
Shot 03: Requires masking for the trash bins, benches and people
Shot 10: Requires masking for the pole only. The easiest one! (I think)

Tutorials

I’ve never done any rotoscope masking using Blender before, so I watched several tutorials from YouTube on how to do a proper masking. I think the tools and method are almost similar to After Effects which I’m quite familiar with.

Shot 03

Shot 03 probably needed the most number of masks when compared to the other three, but nevertheless I started with this shot first as I was eager to see how to result will turn out. I began drawing the mask for the bench and because it has holes at several areas, I just made and combined multiple masks as a quick solution without using another mask to cut the hole similar to the ‘pathfinder’ tools in Illustrator.

I then continued drawing several new masks for the other bench, tree, trash bins, and people.

The final masks at frame 1

All masks needed for this shot has completed for frame 1, but the camera is actually moving and panning throughout this shot. The problem was the masks were not moving together and only stay at the same spot. I could animate the mask shapes frame by frame but it will take too much time. Good thing is this footage was already tracked and has multiple tracking markers in it. So I used the advantage by parenting the masks with one of the markers. And voila!, the masks are now moving together with the objects and view.

However, there were still some slight miss-alignment to the mask with the objects. So I made a quick adjustments to the mask’s shapes and positions at several frames to realign them.

Minimal keys to mask position and shape

Compositing Nodes

The masks need to be composed using nodes in order to make it appear correctly with the 3D characters and original footage layers. In Blender, I discovered after working with my personal project in Term 3, that when compositing 2 layers using the ‘Alpha Over’ node, the layer attached at the bottom will appears on top of the other layer in the render.

Below is part of the first iteration of nodes I setup to compose the masks with the background and 3D characters.

Composting nodes: First iteration with Mask node included

I noticed that the mask has jagged edges in render. I’ve tried changing multiple settings in the mask editor to solve the problem but the jagged edges were still visible and didn’t changed a bit.

Jagged edges

I then thinking the problem probably came from the Mask node, but the settings are very limited. The ‘Feather’ and ‘Motion Blur’ in the node have nothing to do with the jagged edges. So I tried adding and testing several nodes in between the Mask and Alpha nodes.

Blur node added

With the Blur node applied, the jagged edges were still very visible, but blurred. So this is not the real solution.

Slight blur to the jagged mask edges.

I rewatched the tutorials and noticed that they added the Dilate/Erode node. But this was still not fixing the problem as the function of the node is to quickly shrink and enlarge the overall shapes of the mask and not smoothen the edges.

Trying to add Dilate/Erode node from the tutorial
Nope! The node is to make the mask bigger or smaller only, not fixing the jagged edge

I then looked and searched for nodes that has anything to do with ‘smooth’ or ‘anti-alias’. After multiple tries and errors, I found the ID Mask node (unexpected name for its function). It don’t have any effect at first with the ‘Anti-Aliasing’ option turned on, but increasing the index to ‘1’ fixed the problem!

Found a solution! Anti-Aliasing by adding ID Mask node

I used the ID Mask in conjunction with the Blur node to make the smooth edge blur a bit, so it will match with not-so-sharp footage.

Smooooth!
Final node
Final still render of Shot 03

After the Shot 03 finished, I proceed with the other three shots. The process was almost similar to the Shot 03. It took me about a day to finish the masking in all four shots.

Shot 01

I used 4 mask layers for different subjects/objects in Shot 01 for easier key animation
Node compositing for all layers of Shot 01
Final render of Shot 01

Shot 02

Shot 10

Shot 10 probably the easiest mask for the pole only.

Results

Shot 01
Shot 02
Shot 03
Shot 10

Character Animation in Tracked Footages

Week: 29 November – 5 December

With less than 2 weeks until deadline, I proceed to incorporate the character animations into the tracked footages as planned. I have finished all the basic character animations last week, so this time I reused the animation and composed them into the footages. Some shots have additional acting animation such as the characters talking to each other, waving hand, etcetera that were animated directly in the shots.

Shot 01 with character animation

For Shot 01 and 02, I used the exact walking animation I’ve created last week without any changes. At first, I used the running animation for the horse on Shot 02, but the character moves too fast from outside the frame on the left to the right.

Shot 02 with character animation

For Shot 03, I was actually thinking to make the crab character sitting on the bench at the left, but it’s doesn’t quite fit with his multi-legged form. So I ended up making him talking with the horse character.

Shot 03 with character animation
Shot 04 with character animation
Shot 05 with character animation

This shot actually started with the crab character talking while walking with the horse. But then I changed it to make him talking with another crab instead as I already have a shot (Shot 03) with crab talking with horse.

Shot 06 with character animation

I think shot 08 is quite bad, so I probably would not include it in the final animation.

Shot 08 with character animation

Shot 10 was the longest I worked on. It has several versions before I got the final one, with different character number and positions.

Shot 10 with character animation

Animating The Characters

Week: 22 – 28 November

As the camera tracking phase finished last week, I began animating the characters. I planned to spend 2 weeks for the animation, which is to complete all the basic character movements (walk, run, jump and turning direction) in the first week and integrate the characters into the tracked footages during the second week.

Six-legged with Insect Anatomy

In my current state with the thesis, I already found and understand the basic movement patterns of six-legged insect. There are 2 popular patterns used by most insects which are ‘tripod gait’ that always has 3 feet on the ground during the normal walking, and ‘bipod gait’ for higher movement speed especially running, which always has 2 feet on the ground for every cycle. This tripod and bipod gaits are also applied when the insect turning their body to another direction.

My finding from Tortoise Beetle walking pattern. Dark areas indicate times of contact in frames.
My finding of Tortoise Beetle turning body animation. Dark areas indicate times of contact in frames.
Waternoose character (Monster Inc) walking pattern. Dark areas indicate times of contact in frames.
Waternoose character (Monster Inc) turning body animation. Dark areas indicate times of contact in frames.

So with this knowledge, I animated the crab character first.

Crab walk cycle

Crab run cycle

Crab turning body animation

Crab jumping

Six-legged with Horse Anatomy

In my thesis, unlike the crab, I still haven’t really have a solid finding for the movement patterns of six-legged creature with horse anatomy. But I think it’s okay to proceed with the animation at this point because it can also help my finding for my thesis as I’m further experimenting during the animation process.

For the animation, I used several references from the real quadruped horse since the animation behaviour and patterns would be very similar. I also found and used the short clip of Avatar’s ‘behind the scene’ that features some snippets of the creation and animation of the six-legged Direhorse from the film.

Horse walkcycle by Richard Williams
Horse run cycle by Richard Williams
The thinking behind the creation and animation of Direhorse from Avatar film
Different type of Horse gait. But for my animation will only focus on walk and run only

Horse walk cycle

Horse run cycle

Camera Tracking

Week: 15 – 21 November

As early as this week, I started working on the camera tracking phase for the selected footages that has been confirmed last week. I have made the final cut for each shot and exported them for the next process in Blender, so I will only need to solve the camera movement for the exact duration and frames only. I planned to have all the footages to be tracked by the end this week so I can focus on the animation and post-production during the remaining 3 weeks before the dateline.

The camera tracking went smoothly as I already learned and experimented the process quite heavily during my personal project and indie film project in term 3.

Term 3 Indie Film Project (Camera Tracking):
https://kamil.myblog.arts.ac.uk/2021/06/06/indie-film-camera-tracking/

Term 3 Personal Project (Camera Tracking) :
https://kamil.myblog.arts.ac.uk/2021/05/02/personal-project-rough-designs-practices/
https://kamil.myblog.arts.ac.uk/2021/06/06/personal-project-camera-tracking/

The final footage cut

I chose to begin with the last shot (shot 10) first as I considered this as a benchmark shot for my animation. It has a long camera panning with multiple objects movement when compared to the other shots. I want to get this shot finish first, so in a worst case scenario if I suddenly don’t have enough time to complete all shots, I will go all out with for this shot only with all animation in it. But of course this is just the thinking only as I want to have all the shots in my final animation.

Shot 10 (original)
Early camera tracking attempt on Shot 10 with very bad solve error (4.68)
Early camera tracking attempt on Shot 10 with very bad solve error (4.68)
Second attempt for half video tracks with low solve error.
Additional tracking markers for other half of the video caused the increase of solve error value.
The lowest solve error I can get after some tracking cleanup. Can’t go lower than this as it will break the camera movement.

About couple of hours later, I managed to get the satisfactory result for shot 10. The process was quite smooth and I’m very happy with the track.

Shot 10 (tracked)

I then proceed to track the other shots. The processes are almost similar to the shot 10 and below are the results.

Shot 01 (tracked)
Shot 02 (tracked)
Shot 03 (tracked)

Shot 04 (tracked)
Shot 05 (tracked)
Shot 06 (tracked)
Shot 08 (tracked)

Footage Recording

Week: 8 – 14 November

I went to the university this week to record all the footages that I’ve planned in the storyboard last week. I actually don’t have any proper shooting equipment to get high quality visual. I only used the same iPhone 6s for most of the shots like I did for my previous personal project in Term 3. This time I also use the old Galaxy Camera for several closeup shots since this camera can do optical zoom up to 21x. I recorded multiple version of footages for each shot as backup.

The exterior scene especially last shot is probably the hardest to shoot since I can’t control the crowds. I have to get the perfect timing and position of the crossing pedestrians and vehicles on the road that happened spontaneously. I need a shot with not too many people, with good placement, direction and empty spaces among crowds for me to place 3 or 4 characters walking together with them. I also don’t want any moving vehicle that obstruct the view and attention for the crab character that will wave his hand to the camera towards the end of the shot. The shot will be panning slowly from left to right, so I need to capture the moment during the shot duration of traffic stop at the crossing. After multiple attempts, I finally got 2 to 3 shots that I think usable for the last scene.

The interior scene on the other were fairly easy to shoot because there are always time where not many people walking around in the building. The major problem with interior scenes is the lighting. There are many areas in the building that have a relatively dim lights so it caused a lot of noise on the footages as the camera try to increase the ISO to brighten the shots. The worse shot is the stair scene since the area was very dark. So I will remove the shot from the final video.

Rejected shot
Rejected shot

There are also shots that I changed from the original plan especially the classroom and library scenes as I can’t find suitable areas and angle for the shots. Most rooms were a bit crowded and equipped with students when I was there, plus the empty classes I found does not have a very good lighting either. So I ended up with hallway shots only.

When I got home, I quickly transfered all the recording into my computer to check on a larger screen if the footages are usable for my project. Upon checking I found the footages are not as good as I hope, but I think I can still use it, so I don’t plan for re-shoot. 

I then made the footage selection and cut using Final Cut Pro. There will be 10 shots with 9 of them will require CGI treatments (camera tracking and animation). I exported each individual shot that has been confirmed for camera tracking phase which will begin next week.

The final footage cut

Final Story Idea

Week: 1 – 7 November

After several changes to the story idea, I finally decided to make a short animation with commercial style for my FMP. I’m interested with the idea of University’s ‘Enrol Now!’ ad for new student intake. I was thinking to do a parody commercial where UAL opens new courses to six-legged creatures instead of human. The final animation would feature several six-legged creatures as students moving around in UAL’s building and areas, so the animation would still have my original FMP idea to have 3d character animation on a real footage that demonstrates six-legged movement patterns.

I look around the internet to find some university commercial as references. I found that there are variety of styles; some are short or too long, some are using real videos, motion graphic, music only or using voice to promote their university. I think it would be interesting to use voice as well in my animation with parody funny sentences, but at this moment, I’ll go with music only and probably add the voice later if I think it’s suitable. Below are only some of the many university ads that I found interesting.

In my own version of commercial / animation, I planned to have different versions of six-legged creatures doing the walking, running, jumping and turning body animation in different areas around the UAL building such as in class, library and hallway. I was thinking to have a great ending shot with a full front view of the university building from across the street, where multiple characters crossing the road towards the university before the UAL logo appears at the end of the commercial / animation.

Finalising Character Models & Rigging

Week: 25 – 31 October

This week I continued modeling the horse character from last week and the pending unfinished crab character I did during the summer break. I want to start with the animation as soon as possible, so I have to finalise both characters quickly including the rigging, UV map, and textures.

Crab Character: Modeling

The crab character still has several unfinished parts which are the antenna and the mouth area including teeth and tongue.

Previous version of the character
Sketch

I started by defining and finishing the shape of the lip and the interior of the mouth

I then did a very quick models of the character’s tongue and tooth from basic cubes.

Tongue and teeth

The tooth and tongue model were then placed inside the mouth. I duplicated the tooth into three more teeth with slightly different sizes and rotations to make it look uneven.

Tongue and teeth inside the mouth

For the antenna, I duplicated one of the legs and modified the shape to make it look like the antenna from the sketch.

Reshaping the antenna

After the model finished, I think the single antenna looked a bit weird, so I decided to make it a pair.

While working on the modeling, I was also rethinking about the story of my FMP, probably changing to something related to student and university. Maybe the story will be about the characters going to class, similar to my reference for the crab character, which is Monster University. I will finalise the details of the idea and shots next week.

References: Alexander from Monster University
Modeling a bag from basic cube
I used a plane to make the zip line and applied ‘Solidify’ modifier to create the object depth
Bag pockets and zip line merged with the bag model
Modeling the bag’s strap from a plane with ‘Solidify’ modifier for the object depth
Final form of the bag’s strap
I made the cap from a sphere and plane.

Crab Character: UV and Texture

I didn’t planned to have a realistic or painted texture for the character, but instead to use a simple procedural textures. So I need to unwrap the character’s UV first.

The first step is to mark the seams so Blender can unwrap each part properly, and I can have the texture seams at the areas I wanted, which are at the back and the bottom so they will not really visible to the viewer.

Marking UV seams on the character
Bag’s seams
Cap’s seam
Unwrap all objects with seams
Unwrapped UV of the crab’s body
Bump texture nodes for the crab’s body
Bump texture nodes for the bag
Character with texture (viewport)
Character with texture (render)

I duplicated the crab body parts to 2 or 3 more for color variations, so in the animation / shots I can quickly turn on or off the object in the collection to make the character look different between shots.

Duplicated object for color variations

Crab Character: Rigging

For the character, I built the skeleton manually from scratch using the standard Blender bone.

Basic bone setup for the half / right side of the body
Facial bones
Knee and elbow controllers
Leg’s IK setup
Leg’s IK setup
Hand’s IK setup
Hand’s IK setup
Mirrored bones

Skinning and vertex weight

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

For me it is multiple time faster to skin this way where I can just select the vertices and enter the intended weight to quickly make them following which bone I 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 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.

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.

Skinning using manual vertex weights values
Skinning and vertex weights
Skinning and vertex weights
Skinning and vertex weights
Pose test
Pose test

Horse Character: Modeling

After the crab character finished, I quickly worked on the horse character. The process was almost similar with the crab especially for the UV unwrap and rigging, so I will not described the process as detail as the crab character.

The last week version of the character

I started by reshaping the head and face to make it look more stylised.

Reshaping the eye and eyebrow
Reshaping the mouth area. I also made some adjustments to the overall topologies of the head
Polishing the body parts especially around the areas of the front and middle legs.
Hair with ‘Solidify’ modifier
New iteration
New iteration (head and face)

I think the horse’s face look a bit fierce so I made more adjustment to the face again to make the character look more friendly. I enlarged the eye made it more round.

The new friendly face

I also decided to reduce the number of hair on the character, and made the character to have a human-like hairstyle.

New hair!
The teeth
Modified bag from the crab character
Final model

Horse Character: UV and Texture

Marking the UV Seams
Texture nodes setup
Character with texture (render)

Horse Character: Rigging

I used the same techniques as the crab character including the IK and the manual vertex weight value for the skinning.

Basic bone setup
Facial bones
Hair’s bones
Mirrored bones
Leg’s IK setup
Foot’s IK setup

After using the manual vertex value method several times for both characters, the only thing that really annoying was 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.

Skinning and vertex weights
Skinning and vertex weights
Skinning and vertex weights
Skinning and vertex weights
Skinning and vertex weights
Skinning and vertex weights
Pose test (face)
Pose test (body)

Finally, I managed to finished both characters including the texture and rigging this week, so I can start with the animation as soon as possible. I planned to finalise the story first next week.