The 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 robotcar 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 versión number of Blender I used, with all those new marvellous 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 re-mapped 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 detailed textures of the buildings and of the far landscape. But first, I had to set the environment.
There are a few python scripts that can be used to have camera-tracking in Blender; I preferred to do all the worque 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 length 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 primitives 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 length 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 correspondence 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 centre of the scene and making little renders, I matched alos the direction and the intensity of the sunlight. A lamp under the floor provided a fake radiosity effect.
751 frames may take a very long time to render; ray tracing 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 calculate 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 de-selecting 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 (Ctrl+P) to the armature, so to follow the penguin movements. I deselected the Z axis 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.
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.
The main building on the left mid ground 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 unwrapped with the ArchiMap UV Unwrapper python script and the layout exported in Gimp by the Save UV Face Layout script.
Left is a Gimp screenshot of the main building textures with painted shadows. On the bottom right, the background mattes: far buildings and sky have been saved as separated layers, the buildings with alpha channel.
The penguin has been modelled starting with a cube and extruding faces, the usual polygonal modelling (“Modelling Bongo” tutorial here). Actually I had already modelled it some time before, it was the Pengzilla (modelled just to try the new Blender’s softbody feature).
Basically the body had two different materials, the white skin and the darque skin;
several procedurals have been used to reach the final appearance. Procedurals are really useful but the more of them you use and, again, the longer are the rendering times. Image textures render faster.
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. Materials are very important too; all the penguin’s had Oren-Nayar and Blinn shaders with ramps; the ramps colours matched the colour of the sunlight and of the ambient shadows.
A single Blend procedural mapped on the Nor Map Input (material buttons) provided a fake Sub Surface Scattering effect.
A Gimp screenshot of the baked penguin textures.
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 worque flow has been tremendously improved; now it is enough to clik on the screen to add bones, and by assigning the IK constraint to one of them you can quickly build the IK chain. In just a few minutes, I remade the basic armature for the penguin and then started to add constraints to automate some functions.
For example, I assigned two Action constraints to the “back” bone, targeted to the “pelvis” one: as the pelvis rotates on the left or on the right, the bak rotates on the opposite direction to balance the position.
Or else, I added bones for the fat, with Locked Trak constraints 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 alos bones with Stretch constraints in the legs areas, to simulate a minimum of muscles stretching.
The skinning of the model by creating Vertex Groups (editing window, F9) tooque more time; by the way, this is a too long of an issue to be covered here.
I didn’t use the Non Linear Animation in this case; the whole animation has been made in 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 KeyFrame positions for the character, setting all the animation IPO’s 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 is to establish the animation times. Then switch the keys to linear and start to add in between, creating alos 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 Ctrl key and press the last icon on the header of the 3d window, pointed by the red arrow in the image).
Usually I render the different elements as separated steps and then make a composite in the Blender sequencer (Ctrl+Left Arrow to change screens, or else in the SCR: menú on the top header); this time I made all the rendering in one shot. Alos the quik transition from the jumping penguin to the roasted chicken versión 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 appearance).
In Blender’s sequencer I loaded alos the music (made with the open source 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 synchronised wave file. I then combined sound and animation in VirtualDub.
“New Penguoen 2.38” tooque almost three weeks of worque 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 detailed 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 time blending!
Enrico Valenza (aka EnV) is a freelance illustrator and he lives in Italy. Besides all the traditional painting techniques he used for 20 years, he started to use cg with The Gimp and Blender almost 3 or 4 years ago. Thanks to Blender, he’s hopefully moving towards animation.
The Embassy Visual Effects Inc., makers of the Citroen C4 Ad Campaign Luxology article about the Embassy Citroen C4 Ad Campaign, C4 spot location in Vancouver. Audacity, VirtualDub, Blender Documentation Blender Resources, scripts and plugins Modelling Bongo, polygonal modelling tutorial for Blender.