Tuesday, October 30, 2007

Reverse Foot Lock

I looked into the Reverse Foot Lock method, and there are indeed a lot of advantages in using it.
So today I deleted my previous foot controls, created a Reverse Foot Lock and added a control that is the parent of the reverse foot skeleton.

Tomorrow I'll try implement my method of IK/FK switching again, and we'll see whether that works. It gets even more complicated with the Reverse Foot Lock...

Sunday, October 28, 2007

Constraint Weight

A better way to control when the constraint is active is to use the constraint weight, instead of the NodeState which I used so far.

The expressions to do that look something like that:
ctlLeftFoot_orientConstraint1.j_LeftAnkleW0 =
1 - ctlLeftFoot.UseIK;
and
ctlLeftFoot_pointConstraint1.j_LeftAnkleW0 = 
1 - ctlLeftFoot.UseIK;



* Update: this doesn't work as expected. I'm going back to NodeState...

The Elusive Blend Point

When you create a point constraint in Maya, and then key the constrained attribute, Maya automatically creates an attribute called "Blend Point". This attribute works like ikBlend: When its value is 0 the constraint is off, and when its value is 1 the constraint is on.

An orient constraint similarly creates an attribute called "Blend Orient".

Can I use these properties to blend ik/fk in my current setup?

I don't know. Googling "blend point" + maya yields the outstanding number of 22 results. Googling "blend orient" + maya yields only 2.

From my tests so far, it works fine as long as I don't forget to key everything before I start animating - the translation, rotation, Use IK, Blend Point and Blend Orient properties of the control as well as the rotation of the joints.

I'm going to try to animate like this, and only if I will have problems I will work on the 3-skeletons solution for ik/fk blend.

Thursday, October 25, 2007

Up To Date!

I declare this blog up to date!

I tried to put everything I could remember from the past three weeks in here, and now it's time for the daily progress to begin.

My missions for the next day (or couple of days?) is:

1. Read more about IK/FK blend and apply it to the character's arms.

2. Read more about the reverse foot mechanism and its alternatives.
I think I will have to use something of this sort after all.

After that's done, I will continue to create a storyboard using my rigged characters.

Lattice Problem

I attached a lattice to the cube with no arms, and everything worked great.

After that I started working on my first shot, and found out everything was great only when the Cubie was positioned in the origin point (0, 0, 0).

This sucked.
The lattice seemed to move with the model, but no matter if I moved the parent group, ctlBody, or the model itself, the lattice effect was only according to the origin point. In fact, if I moved the lattice up, and then grabbed one of it's lower CV's, it would pull the surface as if I was moving one of it's upper CV's. So the lattice position did matter (too far from the origin and it wouldn't affect the surface at all), but in a really weird way!

Solution:
  • Delete the lattice.

  • Select the surface.

  • Delete by type -> Non deformer history (delete history would mess with all the previous rig and blend shape)

  • Create the lattice again.

  • Group the lattice to the parent control (ctlBody).

  • Everything works! The lattice even moves with the character :)


Quite simple ha? I've been messing with it for a whole day, for fuck's sake.
Pardon my French.

Blend Shape

I used blend shape to retract the arms into the cube. It sounds simple and easy, since all you have to do is pull all of the CV's in the arm and align them with side of the cube, and you're done.

But what is cheap to do very often also looks cheap, and that is the case here. If I would choose this simple solution, there will be at least two problems:

1. When the arms are retracted, the edge of the cube will not be smooth, because it has an overlay of several "layers" and there are some sharp edges.
2. When the arms pull out a little bit, when they just started growing, the hands (or feet) will look completely flat. Instead of growing from inside the arm, it will look like they were folded above it (which is basically what we've done).

To fix these problems the CV's should be aligned in such a way that when they are folded back there will be one single curve without overlays.


After fixing that, I found out that when the change is linear from the cube with no arms to the cube with arms, the hand start growing right away, and it doesn't look so good either. I think it looks more "real" if the hand start growing only after the arm has reached a certain point, say half the way.

Then I tried using "In Betweens" in the blend shape. I don't know why but I had a problem there. Whenever the blendshape attribute was set to 1 (meaning to retract the arms all the way), the arms was not only retracted, they made a hole in the cube side, as if they were turned inside.

Eventually after a lot of testing with the in between properties and the blendshape, I decided to do it "manually": I now have two blend shapes, one for half way and one for the end cube. The no arms cube is blend-shaped into the half way cube (NoArmsBlend). Then the original model is blend-shaped into the no arms cube (ModelBlend).
This requires the following settings for each position:

Attribute Original Model Half way No Arms
ModelBlend 0 1 1
NoArmsBlend doesn't matter 1 0


I then added an attribute to ctlBody named "Retract Hands", which goes from 0 to 1 and controls the two blendshape attributes using expressions.

This gives the following stages of growing the hand. Blend shape objects are on the right. Notice the "Retract Hands" property:





UseBackground Material


I was wondering how to create images with "invisible" floor - meaning you cannot see where the floor ends, there are no walls, the image background is all of the same color, but you can still see the shadows objects cast on the floor. In my opinion, this gives an instant professional and clean look to the shot.

It also saves a lot of work on set layout :)

I asked in an Israeli animation forum how to do that and got my answer: Using the "UseBackground" material which Maya supplies.

Cubies: Week Two

* As mentioned earlier, I started working on this project 3 weeks ago. But since I've been working at half capacity I will call it two weeks...

This last week I made some progress with my rig, as well as some unfortunate going-backwards episodes, due to various problems I found with the existing rig. The focus of the week was thinking about the story and how to make it possible.
  • First thing I needed is to retract the hands of the cubies. This was done using a blend shape which is controlled by the main control of the character (ctlBody). That was not an easy task to make it look good, so it took most of the week, after testing different methods.

  • After retracting the arms, the model looks something like that:


  • From the model with no arms, I started thinking about the jiggle and deformations of the cubies before their arms grow. For that I created a lattice which is also controlled by ctlBody (you can see the lattice in the image above. note that the lattice only affects the body, while the hands are outside the lattice).

  • Finally I declared my rigging "done", and started working on the composition and story board. The first frame of the first scene will look like this (materials and lighting are not yet done):



  • Unfortunately, I found out some more problems with the rig the last couple of days so now I have to repeat some of the work. This concludes this week in a pessimistic tone...

Wednesday, October 24, 2007

Maya Wiki

I have used Lostpedia to ponder and speculate about the last episode we have seen. It currently has 3,301 articles.

I have used WoWWiki to learn about different aspects of World of Warcraft. It currently has 44,841 articles.

There is also a Psychology Wiki with 20,251 articles; a Muppet Wiki with 15,462 articles; and even, how wonderful, a Pokemon Wiki (6,838 articles) and a Dragon Ball Wiki (458 articles).

Why can't there be a Maya wiki??? It would be so much easier if there was one place where you can find explanation of every property, some best practices and common problems.

The Maya Help is not that bad, but a live wiki could be really great :)

Controls

All of my controls are NURBS circles. It looks faster than drawing the curve of each control, and it is usually pretty intuitive.
Maybe when I'll have more complex characters I'll draw arrows and such as controls...



Here is a list of the controls for my character skeleton:

ctlBody - Controls the body and is the base control for the whole character.
  • Parent of: The body joint.

  • Pivot point: The body joint.


ctlLeftFoot - Control the left foot.
  • Parent of: The foot IK, and the children foot controls ctlLeftToe and ctlLeftFingers.

  • Pivot point: The left ankle joint.

  • Attributes: I added a new attribute named "Use IK". This is a boolean attribute which controls the ikBlend attribute of the IK. That way you can specify in the control itself whether you want it to control the foot or do you want to control the foot using FK.
    The connection between UseIK and ikBlend is done using the connection editor (no expressions or driven keys).

  • Constraints: When I use FK, I want the control to follow the foot when it is rotating. That's why I added a point constraint and an orient constraint for the foot control according to the ankle joint.
    Since the control is controlling the IK, this will create a circular reference. The solution is to use the "Use IK" attribute to control the NodeState of the constraints.
    When UseIK = 0, the NodeState = 0 which means "Normal" - so when the IK is not used the control follows the foot. When UseIK = 1, the NodeState becomes "Blocking" which means the constraint is not active.

  • I just found out this solution is only good when you don't key any of those attributes. Once you key the IK position, it will not snap back according to the point constraint. Once you key the rotation of a joint, it will snap back to the keyed position as soon as you set "UseIK = 0". I'll have to figure out what is the *right* way to do IK/FK blending :(


ctlLeftToe - Controls the left toe.
Its pivot point is the left toe ball joint, and it is not a parent of anything. Instead it controls the orientation of the toe ball joint using an orient constraint. It can only rotate, translate and scale attributes are locked and hidden.

ctlLeftFingers - Controls the left fingers.
The same as ctlLeftToe, the pivot point is the left fingers ball joint, which is controlled by an orient constraint.

ctlRightFoot, ctlRightToe and ctlRightFingers are the same for the other leg.

I have the feeling there is yet a lot to learn about how to rig a biped, create IK/FK blend and so on. There must be some "text book solution" to these problems :/

IK

There are only two IKs in this character's rig - one for each leg.
The IKs go from the ankle joint to the shoulder joint and uses an RP solver.

The pole vector of the RP solver is directed up when the toe is directed down.
Once we group the IK to a control (see next post), the pole vector is rotating with the group, so the knee is usually aligned correctly. The pole vector can be adjusted, but so far I never needed to do that.

The toes and fingers are not IK'd. I decided to set a control that simply rotates them with no IK. I also decided not to put a reverse foot mechanism. I hope that won't turn out to be a big mistake...

Skeleton

Some notes about the skeleton that is shown in the previous post:
  • The body has only one joint. Deformations of the body itself and retraction of the arms into the cube will be done using different deformers.

  • Each arm has one joint for the shoulder, one for the knee and one for the ankle.
    These joints are completely free and can move in all axes.

  • Each feet has 4 additional joints: toe ball, toe, fingers ball and fingers.
    The two ball joints are separated so the fingers and toe can rotate separately and independently of each other.

Cubies: First Week


  • Realized that for the arms to look good when growing, and be able to function both as arms and legs, they need to be rigged in a T-pose.
    Therefore I needed to change the model.
    Now it looks like that:



  • Started basic rigging of the character using a skeleton.

  • Added controls for the feet and body.

After the first week the model + rig looks like that:

Cubies: The Story

So now that I had a character, I also needed a story.

This is where I tend to get stuck. Finding an interesting story is very difficult.

What I have so far is this:

1. Growing hands

  • The cubies start with no legs. They are just cubes in the beginning.

  • In the beginning, there will be two cubes on screen. One is a little smaller than the other.

  • After a few frames of standing still, the little cube begins to move and jiggle, and it looks like there is somehting inside it.

  • After a few seconds of jiggling, the little cubie will start growing arms! (and the audience is in shock!)


2. Waking up papa cube

  • The little cubie will "find out" his arms, and start probing his surroundings with his little paws.

  • The little cubie is excited, he is getting up on his feet (hands?) and starts jumping around happily, surrounding the bigger cube.

  • The little cubie start pushing and nudging the bigger cube, trying to "wake him up".

  • Finally, papa cube is starting to slowly extract his arms as well until they are fully grown.


3. Papa cube walking

  • Papa cube starts to walk, he is heavier and slower then the little cubie.

  • Little cubie is still excited, jumps around papa cube and climbs on his back.



Now would be a good time to finish the short film if things gets a little messy. The two cubies will leave the screen and that will be the end.

However, I would like it better if there was another section:

4. Mulfunctioned cubie

  • Papa cube and little cubie are walking to another cubie which still doesn't have any arms.

  • The other cubie is a grown up - same size as papa cube.

  • They try to wake the other cubie.

  • The other cubie is waking up, however, there is a problem!

  • Two options for the problem: (a) The arms are too short, so he cannot walk on them, or (b) one arm is ok, but the other doesn't come out all the way.

  • The other cubie starts jumping on one leg, because that is the only way he can walk. (Another walk cycle! In the same project! yey)

  • The cubies try to help the other cubie: little cubie is holding one arm while papa cube is pulling the other.

  • The arms of other cubie finally come out to their full extent. Since both cubies are pulling the arms, papa cubie is falling back, while the other cubie and little cubie with him fly around him to the other side of the frame. Preferrably they will fly towards the camera.

  • The cubies get up from the various positions to which they fell. They start walking together "towards the sunset".



The end.

I will try to keep future posts shorter, for the sake of the readers.
Though I can't promise anything :)

Project 1: Code Name "Cubies"

This project started with the idea of this simple model:



I was thinking about using this model for my first project for the following reasons:

1. Its simplicity will obviously make it easier to focus on animating and rendering rather then modeling and rigging. It will also make it easier to change the character rig later in the process in case there is something wrong with it.

2. Using the arms as legs and the legs as arms is something I think will add originality to the project, because everybody are doing "regular" biped rigs and walk cycles.

3. As a first project, this character will allow me to focus on weight and attitude (heavy vs light, happy vs sad, etc) which are the basics of animating.
In a way, this project will be my "3 balls" exercise.


I will call this project "Cubies" until I find a better name.
I think it will feature 3 of these cute little characters.

Some Background

So, who am I and why am I doing this?

My name is Yanir Kleiman, and I am 27 years old.
I have been a software developer for the past 10 years. I also have an MSc in computer science.

So how come I'm trying to create a showreel now?

Computer animation has been a dream for me for a long time, but it wasn't the only one. Somehow I lead my life fulfilling other dreams so far.

About 2.5 years ago, I decided I want to go for it, and took a Maya course. Maya is a 3D animation software, which is used today in some of the biggest studios to create both special effects in films such as "The Matrix" and pure animation films such as "Ice Age".

Shortly after I took the course, a friend of mine invited me to join a new-born startup company, and I decided to postpone the animation dream for another, took the opportunity and started working in that startup.
Unfortunately that didn't leave me much time put some serious work to my animation projects, which is why today I don't feel I really got better knowledge of Maya and the profession than I had two years ago when I just finished the course I took.

So about a month ago, I quit my job and dedicated myself to this career change.
I am hopeful this will be the first step on my way to fulfill this dream.

Currently I am working from home to create a showreel. When I have something done I will decide whether I'm going to go to school or look for a job in the industry.

Good luck to me :)

Welcome

Welcome to my showreel blog.
This blog will log my attempts at creating an uber showreel that will either get me a job in the 3D animation / visual effects industry or get me into a decent 3D animation / visual effects school.

I am working on this showreel alone, without a school or a mentor, with the generous occasional help of the various forums available. More on this in a specific background post...

I will try to make the posts in this blog as short as possible, but also as frequent as possible, so I will be able to somehow measure my progress along the way.

Thanks for reading, comments are always welcome :)

Yanir