Animation

The animation and dynamics is complete, pending final approval from Angus.

A breakdown:

1. Shot 008: DNA being damaged by UV rays (to be added in post). Apparently the optimum way to animate a “shake” is to make the Graph Editor curve look like a soundwave.

soundwaveOther than that, Blendshapes provided the bulk of the animation.

Blend2. Shot 009: Medium-wide shot of DNA damage. Self-explanatory, really.

3. Shot 012: p53 binding to DNA. Finally I got a chance to actually use the rig I spent a whole day making! Not for very much, mind.

4. Shot 013: DNA transcription by RNA polymerase. This has been by far the most difficult shot of the film, taking almost a full day to do.  It would have taken even longer had I not done so much R&D on it.

Shot013

Many elements worked together in this scene:

First, camera and molecules were animated along Motion Paths.

The nParticle emitter was inside a funnel-shaped mesh, which acted as a container to shape the particles. Trying to time the emission so that the funnel didn’t fill up too slow or fast was difficult.  Also, the Nucleus node was animated along the motion path too, so that no matter what angle the Polymerase was at, the gravity would always be pointing backwards along the DNA, thus ensuring that the nParticles didn’t end up “sliding” along the sides of the funnel too much.

Also factored into the timing were Clusters, which stretched out the mesh as time progressed.  As the clusters had to move with the Polymerase, dealing with double transforms also became an issue. I found my answer here: http://www.vizitadan.com/2010/10/24/clusters-double-transform-fix/

  1. Group the cluster
  2. Move the group’s pivot to where you want it to be (regarding rotation, etc)
  3. Parent constrain the group to the joint/object
  4. IMPORTANT: turn ON relative mode on the cluster (it’s a check mark in its attributes)

Here is one of my original R&D tests:

5. Shot 014: Extra-wide shot of mRNA creation. Not much to say here, except that continuity became an issue when I saw the first playblasts together so I had to deviate from th animatic a bit.

6. Shot 019: Tumour-suppressor proteins entering the nucleus. Motion paths, motion paths, motion paths…

7. Shot 020: DNA repair.  I am very proud of that litte “bounce” of the DNA.

8. Shot 021: Tumour-suppressor proteins leaving the DNA.  Particles along a curve flow, with MEL scripting to produce the tumbling effect.

Mental Ray Proxy Depth Pass: A Workaround

Image

Mental Ray Proxy Depth Pass: A Workaround

Working with proxies (and depth-of-field) as much as I have been recently, it has become more and more frustrating that they do not work with the Mental Ray Pass system. Luckily for me, yesterday I was told of a very simple workaround for this:

1. Open the original model of the proxy. Apply a white Surface Shader to the model, and export this as a new proxy (don’t overwrite the old one!).

2. In the file containing the proxy geometry “Save As…” a new file ([filename]_depth works for me). Under the Attributes of the proxy shapes, change the “Render Proxy” to the new “white surface” version (obviously this is much easier if the proxies have been Instanced, then you only have to change it once for each Assembly file).

3. Under the Render Settings, change “Render Using” to “Maya Software.”

4. Under Maya Software > Render Options > Post Processing, click the checkered box next to “Environment Fog.” Then change “Render Using” back to “Mental Ray.”

5. In the Hypershade, find envFogMaterial (under the Materials tab). In its Attributes, change the Color to black and uncheck “Color Based Transparency.”

6. Use the Distance Tool to measure the distance from the camera to the furthest object from it. Type this number into the “Saturation Distance” box.

7. Hit Render… et voilà! A depth pass.

Massive thanks to the genius that is Pat Imrie for the tip.

EDIT: After having a couple of hiccups with this, there are a few more things I’d like to add (so I remember…)

– If the scene file is to a large scale and the fog isn’t working, change the Max “Fog Clipping Plane” value in the Attribute Editor to the same value as the “Saturation Distance.”

– If you’re using layers, MAKE SURE THE FOG NODE IS ON THAT LAYER!!

Chromatin Library

Image

Chromatin Library

This bizarre-looking structure is my “chromatin library” that I’ll be using to construct the interior scenes. These scenes depend on thousands of instanced proxies, so I thought that instead of creating each scene from scratch, I would create an inventory of chromatin to choose from. These ones are bent at various angles ranging from 0 to 6 degrees.

More Animations

Video

As the title suggests, here is some more animation. These shots are not exactly in order as I decided to get all the exterior scenes done first.

So, a breakdown:

1. Shot 006: p53 destruction. Texture emission of nParticles converted into polygons, as previously outlined.

2. Shot 010: p14 leaving the nucleus. Camera animated along a motion path (with a cluster attached to the curve to slowly swing it round at the end), instanced Maya particles, again as shown in a previous post.

3. Shot 011: p14 binding to HDM2, p53 entering the nucleus. This one was a pain. I had to be very precise in how the motion paths were laid out. I had to delete the jiggle deformer as it was going mental.

4. Shot 015: mRNA leaving the nucleus. This was a big “whoops” moment when I realised that my scale was all out. The mRNA was scaled correctly for the interior scenes, but in the exterior it was tiny. It was originally meant to be creeping out of the nuclear pore, but it wasn’t even the size of one of the arms on the pore. I didn’t much fancy redoing the rig, so I used the old compositor’s trick of “LET’S PUT IT RIGHT NEXT TO THE CAMERA SO IT LOOKS REALLY BIG!” I was pleased with the swim cycle in the end though, which was inspired by the swimming sperm from Inside the Human Body.

5. In Shot 016: mRNA translation by the ribosome, the mRNA was again far too small and would have been swallowed up by the ribosome, so I did away with the rig entirely, bent it into a curve using a wire deformer and scaled it up 8x. This has probably messed up the shaders so I’ll need to look into that tomorrow, but fixing those is far easier than fixing the rig.

6. Shot 017: creation of tumour suppressor protein. Out of all these shots, this is the only one Angus wasn’t so sure about, because of its lack of clarity. I think this is a silhouette issue – the protein is sitting in front of the ribosome rather than to the side so it kind of blends in. So I’ll move it to the side and perhaps make the chain a little longer, too. Angus wanted me to do some crazy stuff with slowmo and a zoom, but… I’m afraid I’ll have to tell him that it’s probably beyond my capabilities at the moment. Although Maya Time Warps are something I’ve always wanted to learn about, their absence in this piece so far would make adding one right now look a little incongruous.

Three more exterior shots to go and then I am on to the nine DREADED PROXY SCENES which I am absolutely terrified about because the proxies will probably magically disappear as they have a habit of doing. I’m hoping that the months of R&D I did on this issue will guide me through any problems. As for the renders, I am now on 628 out of 2569 frames, with another 243 (fingers crossed) ready by morning. Until all the rendering is done I will present this figure thus at the end of every blog post (more for my benefit than anyone else’s):

628/2569 (243)

p14 Curve Flow Dynamics

Video

Creating the dynamics for the swarm of p14 leaving the nucleus. I used similar techniques to creating the fish for “Going Live,” randomising the creation scale and rotation, but with the addition of random “tumbling” using a runtime expression. This was done with the help of Gnomon Dynamics.

Here’s the MEL script:

Creation:
float $mol = rand (0.9,1.1);
Flow_particleShape.custom_Scale = <>;
Flow_particleShape.random_Number = rand(-5,5);
Flow_particleShape.custom_Rotation = <>;

Runtime:
Flow_particleShape.custom_Rotation += Flow_particleShape.random_Number;