Making of "New Penguoen 2.38" (2005)
The main goal of "New Penguoen 2.38" was to try to reconstruct with Blender the wonderful 2005 Citroen C4 spot (the dancing transformer's one, made by Embassy Vfx).
I loved that spot as I saw it, so I had the idea: wouldn't have been funny to replace the giant robot-car with a giant silly penguin? In the meantime, the Suzanne Awards deadline came out, so I thought to submit it, if only it could be finished in time.
The gag of the roasted penguin at the end of the animation came out in progress; so, as the headline of the original spot was "New Citroen C4 - Alive with Technology", the headline for my parody became "New Penguoen 2.38 - Cooked with Blender 3d". 2.38 was the version number of Blender I used, with all those new marvelous animation features!

From a few researches I did, it came out that the C4 spot was located in Vancouver, Canada, on the roof of a post office. Actually, Embassy crew shot high resolution photos of the environment and then remapped the images on 3d geometry. That's exactly what I did inside Blender: the only difference was I hadn't the hires photos of Vancouver, so I had to paint in The Gimp detailled textures of the buildings and of the far landscape.

But first, I had to set the environment.

New Penguoen 2.38

The environment
There are a few python scripts that can be used to have a camera-tracking in Blender; I preferred to do all the work by hand. I didn't want a too perfect matching. I loaded a low resolution avi of the original spot (found on the web) as background in a camera window, to use it as reference (a template, if you prefer).

Ok: first, add a plane to your scene (Add>>Mesh>>Plane), then assign a material (F5); go in the texture window (F6) and load the animation as Image, selecting the Movie option. Then put the mouse cursor on a 3d window and press NumPad0 to have the camera window; in the window header go to View>>Background Image>>Use Background Image>>Load texture and load the texture of the material.

At this point you can delete the plane, its only purpose was just to have a texture to be selected.
In this case, the background avi worked as a storyboard too; I had all the shots and discovered that the total lenght of the spot was 751 frames.

I started to add a simple plane for the floor (actually the roof of the post office) and some cube primitive for the main elements.
Looking in the camera window, I moved the camera (select the camera, G) to match the perspective. With a few tests I found that the focal lenght was near to 31.0 (Lens value, F9; I>>Insert Key>>Lens with mouse on the camera panel to animate).
This way, by adding ipo's keys to the camera position and rotation (I>>Insert Key>>LocRot) and always looking for the best corrispondence between the original spot elements and my cg primitives, I made all the shots and at the same time I restored an almost similar environment.
By putting a sphere in the center of the scene and making little renders, I matched also the direction and the intensity of the sunlight. A lamp under the floor provided a faked radiosity effect.

Environment

751 frames may take a very long time to render; raytracing lamps casting shadows add a lot of time too and if you have a very big setting, the octree (bottom of render window, F10) must calculates very far objects. In the end the rendering times become huge, not the best for animations. So my priority was to lower rendering times in every possible way.
A way to do this is to let the octree calculate only the main or the moving elements in the shot, by setting the materials for the motionless and far elements to shadeless and deselecting the traceable option in the material window. The octree won't calculate the untraceable materials and, as they are shadeless, there are no shadows to be calculated.
But what about the penguin casting a shadow on the shadeless floor? A small OnlyShadow plane has been constrained (CopyLocation constrain, Constraints panel F7) to an Empty parented (Cntrl+P) to the armature, so to follow the penguin shiftings. I deselected the Z axe of the constrain, so the plane didn't rise as the penguin jumped.
Of course, every shadow and light effect for the shadeless objects had to be painted in the textures, or baked in some way.

Environment

The casted shadows of street-lamps and baskets have been baked by a rendering from above, and the alpha channelled image has been mapped on an untraceable plane to match their location.

Baked shadows

The main building on the right midground has shadeless materials as well, but has been modelled (only for the visible sides) just to increase the perspective effect while the camera is moving. Then, it has been unvrapped with the ArchiMap UV Unwrapper python script and the layout exported in Gimp by the Save UV Face Layout script.

Below, a Gimp screenshot of the main building textures with painted shadows and the background mattes: far buildings and sky have been saved as separated layers, the buildings with alpha channel.

The main building

Main building textures

Background matte painting

The penguin
The penguin has been modelled starting with a cube and extruding faces, the usual polygonal modelling. Actually I had already modelled it some time before, it was the Pengzilla (modelled just to test the new Blender's softbody).

Basically the body had two different materials, the white skin and the dark skin; several procedurals have been used to reach the final appareance. Procedurals are really useful but the more of them you use and, again, the longer are the rendering times. Image textures render faster.

The character

In this case, I baked the procedurals textures with the Other texture Baker script by blenderhead z3r0_d; the script works great but sometimes mirrors in some area the baked procedurals. No problem, a bit of painting in The Gimp and everything got fixed. A damned useful script! Then, more painting to add better details.

The penguin textures

Materials are very important too; all the penguin's had Oren-Nayar and Blinn shaders with ramps; the ramps colors matched the color of the sunlight and of the ambient's shadows.
A single Blend procedural mapped on the Nor Map Input (material buttons) provided a fake Sub Surface Scattering effect.

Next steps were the rigging and the skinning of the mesh (I must be honest: I usually do texturing, rigging and skinning almost at the same time. It works better to me).
With the new animation features, the rigging workflow has been tremendously improved; now it is enough to click on the screen to add bones, and by assigning the IK constrain to one of them you can fastly build the IK chain. In just a few minutes, I remade the basic armature for the penguin and then started to add constrains to automate some function.
For example, I assigned two Action constrains to the "back" bone, targeted to the "pelvis" one: as the pelvis rotates on the left or on the right, the back rotates on the opposite direction to balance the position.
Or else, I added bones for the fat, with Locked Track constrains targeted to empties parented to root bones in the armature; the empties had a Slow Parent (in the objects window, F7) of a few frames, to create automated effects of follow through and overlapping for the fatty areas.
I added also bones with Stretch constrains in the legs areas, to simulate a minimum of muscles stretching.
The skinning of the model by creating Vertex Groups (editing window, F9) took more time; by the way, this is a too long issue to be covered here.

Armature

Armature

The animation screen

I didn't use the Non Linear Animation in this case; the whole animation has been made as a single Action. Using the original spot template as reference for the key positions, I animated with the Pose to pose technique.
In short: assign keyframes positions for the character, setting all the animation IPOs to constant (in the Action Editor select with A all the keys; go to the Key menĂ¹ in the header and then Interpolation Mode>>Constant). This for establish the animation times.
Then switch the keys to linear and start to add inbetweens, creating also arcs in the movements.

Third, switch the keys to bezier and shift them where needed to avoid actions happening all at the same time.
In the IPO window (Ipo Curve Editor) select curves, go in edit mode and modify the curves handles, to slow or speed up starting and ending of single movements.

Of course I had to rearrange the acting to conform it to the penguin shape, quite different from the dancing robo-car.
I made several tests of the animation by rendering the whole in opengl (hold Cntrl key and press the last icon on the header of the 3d window, pointed by the red arrow in the image).

The opgl animation rendering icon

Usually I render the different elements as separated steps and then make a composit in the Blender sequencer (Cntrl+LeftArrow to change screens, or else in the SCR: menĂ¹ on the top header); this time I made all the rendering in one shot. Also the quick transition from the jumping penguin to the roasted chicken version has been made by switching in middle animation the penguin mesh with a Shift+D copy with different textures, by layer's keys assigned to both the meshes (I>>Insert Key>>Layer).

But the sequencer has been used anyway to add the horizontal bars on the top and on the bottom of the framing, for the headline at the end and for the light darkening on the sides (just to mimic the C4 spot appareance).
In the Blender's sequencer I loaded also the music (made with the opensource software Audacity). By selecting the "Sync" button in the sound panel I could watch my animation with sound in real time, and pressing the "MIXDOWN" button Blender exported a perfectly synchronized wave file. I then combined sound and animation in VirtualDub.

"New Penguoen 2.38" took almost three weeks of work in my spare time, plus 40 hours for the rendering. I rendered it (at the resolution of 800x600) with motion blur enabled at 16 (middle of render window, F10), to discover at the end that with mb the slowparenting effect was barely visible! So I rendered it again without mb, and except for the first and the last shots (where slowparenting weren't needed) that's the footage I used.

A lot of things can't be covered here: the detailled building of the armature and the skinning of the mesh, the atmospheric perspective effect for the 3d elements, the egg disappearing at the beginning of the animation, many materials tips to increase the reality illusion, the painting of the textures and of the background mattes and so on.

Hopefully, in the future all this (and other) will be matter for a step by step book.
Have a good blending!

Links: