Week_10: Camera Rig & Gimbal Lock Research & Performance & Camera Animation

Camera Rig

This week we learned how to rig a camera which can be controled more precisely than the original one. The main idea is data transfer, inherit and attribute connection.

Firstly, set up camera and groups(create+rename):

Create attributes on controler. Use connection editor to connect translation attributes and controler attributes:

Create attributes
Connect attributes

Create nurbs plane, set materials, using driven key to connect focal length attribute and plane’s translation:

Set driven key

Remember, set the graph editor line to linear.

Final result:

Camera View, viewport and attributes

Gimbal Lock

I also did a further research of gimbal lock. The reason why gimbal lock happens is quite easy to be understand: two rotation plane coincide with each other. But what will happen in animation when there is a gimbal lock?

I find a great video, which solves my problem:

This video mentioned several things, which are quite important:

  • In maya, local object rotation mode is just a visual guide to demonstrate rotation more clearly, under the hood the software is still using Euler System to calculate data.
  • Gimbal lock always exist, we can just change the layer of x, y and z axis to decrease its probability.
  • In maya, Z-X-Y is a better axis arrangement, which can effectively prevent gimbal lock from happening.

From the video we can know that when gimbal lock happens, the rotation of object will have some problem. When people using local rotation to animate one of the demensions(for example, rotate 40 degrees in local z axis from frame 0 to 20 when gimbal z is locked), object will rotate not in a straight direction but a strange arc because the system has no access to the real z axis. Therefore, all axis need to change to fit the animation requirement, which causes the strange arc. That’s why preventing gimbal lock is important.

So how to prevent gimbal lock?

The answer is, find the direction the object is least likely to face and put this axis in the middle layer. For example, in maya ZXY or YXZ are recommended for cameras, since cameras seldom rotate 90 degrees on x axis.

This theory can also be applied on character rigging. When the rigging system used XYZ as the principle, people should use Y axis as the limb bones direction, since human body never rotate his arms or legs in 90 degrees (or the body will hurt itself). by setting Y axis as the limb bones direction, the rigging can avoid gimbal lock.

Camera Animation

Pan Shot:

Roll Shot:

Pitch Shot:

Dolly (and Pan) Shot:

Crane Shot:

Focal Length (Contra Zoom):

Performance & Pre-Viz

Since I did some of my character performance last week. This week I focused more on the details of character performance.

I showed my animation to my classmates and they suggested me to add some breathing animations to the character so his body movements can be more realistic. I also talked with Alan and he suggested me to add more variations on the weight, or the body controler. Their suggestions are quite important and accurate because normally human chest should keep moving because they need to breathe all the time. Also, when people talking or just standing on the ground, the centre of they weight should keep changing, which can make people feel more relax.

Therefore, I used animation layer to add a infinite breathing cycle animation on character’s chest controler. I adjust few times to make sure breathing animation can be noticed but still not quite apparent.

Then I added more variation to the body controler. When character’s upperbody moving forward, the body controler moving forward, too. The weight centre of character also keep changing when character is talking.

I finally checked my mouth animation one more time and find out that some of the mouth movements are too fast. Therefore, I deleted several keyframes on jaw controls and optimized the whole animation to make it looks more natural.

Here is the final result:

Leave a Reply

Your email address will not be published. Required fields are marked *