I'm Enrico Cerica and I’m glad to share this CG experience with you.


This is not to be considered as a tutorial, it's the Making of my project "Magic Bullet", so you will not find "how to" workflows neither a detailed step by step process to achieve the result but helpful information assuming you already have some experience with Blender & Yaf(a)ray, UV Mapping, materials definition and lighting.

If you'd like you may send your feedback about this making of: This email address is being protected from spambots. You need JavaScript enabled to view it.


As english is not my first language, I apologize for errors you may notice. Do not hesitate to send me any correction, I will appreciate.


To avoid a heavy page and to reduce the loading time the images are quite small, you may click on most of them to get a larger view.

About the image

I had the "Magic Bullet" idea two years ago and it was mainly a texturing exercise and a good opportunity to learn about UV mapping. Well, this is not a very complex scene and this is probably the main difficulty as I noticed that in such a simple environment, the details are probably the key to get a realistic result.

Click here to see the final image

At this moment I rendered the scene with Yafray ( http://www.yafray.org ) and some weeks ago I decided to make a new rendering with Yaf(a)ray which is the successor of Yafray and still in development.

Click here to see this first version of the image rendered with Yafray


Modelling the box:

Let's start by modelling the box. First, I drew the box as if it was unfolded to get all the faces. Before folding them to get the 3D volume I extruded the unfolded faces to set the thickness of the paperboard. I also extracted the UV map as these operations are easier and much more efficient in this 2D situation. During this step I also added several edges corresponding to the folds locations and created groups to identify each face, this will help to select them separately once the box is assembled.

Click to enlarge Click to enlarge

It's now time to fold the box; I rotated each face around the folds until getting the box as it appears in the scene. I deformed some parts of the paper board as it would be after it has been opened and manipulated. This is a detail but it highly contributes to get a more realistic result.

Modelling the bullet :

Click to enlarge

There is nothing special for the bullet, just a cylinder and a stretched hemisphere. The back of the bullet should be a bit more elaborated to reproduce the primer. As I will texture the bullet based on an UV map, I’ve defined seams to help during the creation of the UV face layout and to get a much more uniform map. Metal shaders will then be applied over that UV map.

Modelling the plastic containers:

Click to enlarge

The plastic container should hold 16 bullets, so I started with a single plane and I divided it based on the size of the bullets. I also add the subdivisions needed to split each cell. These splitting areas will be filled and bumped with dotted lines during the texturing.

Now we should give to each cell the required volume to contain the bullet. Before modifying this mesh, I duplicated it, the copy will be used to create the thin metallic sheet used to cover and close the cells.


Click to enlarge


I used the subsurf modifier to get a smooth round volume and moved up the vertex corresponding to each cell. I also moved the splitting areas a little bit to make them more evident. I finally extruded the mesh to give some thickness to the plastic.




Click to enlarge

These 2 elements (plastic + metallic sheet) will then be duplicated to create the second container on top of the first one. This container should be modified as two bullets have been extracted from it. Once again, before changing the geometry of the metallic sheet mesh, I generated the UV map. Firstly the 2 empty cells are deformed as if they were pressed to expulse the bullets. Secondly the metallic part corresponding to the opened cells is torn and deformed. As the metallic sheet will be on top and will be the visible part of the container, I applied a fractal subdivision to get a less smooth surface.

Modelling the notice:

Click to enlarge


Last but not least, I modelled the notice. I added a plane and subdivided it into 8 vertical bands and 2 horizontal bands. Based on this mesh I created the UV map.



Click to enlarge

I then folded the vertical bands in accordion and finally I folded the horizontal bands to get the final result. To reduce the rigidity of the notice I made several subdivisions, I added a subsurf modifier and I moved some vertex to raise the corner and to separate the sheets in a less uniform disposal.



And now it’s time to reveal the subject. Thanks to the UV maps I generated previously I can prepare the image textures and create the shaders for:

• The box cover (outside, middle part and inside)
• The metallic sheets (colour map + bump map)
• The transparent plastic container
• The notice
• The bullet (the projectile, the casing, the rim with some embossed text, the primer)

The overall resolution of the images is about 2.5 Mb

Texturing the box:

I loaded the image corresponding to the UV faces layout of the box into Gimp as the background layer and I drew the logo and some additional information in a new upper layer. I hided the background layer before saving the image used to texture the box as the UV layout is not required anymore.


Click to enlarge

 No need to fill all the faces of the box, I only drew the visible faces. The outside part of the box has 3 textures, the UV colour map, a noise texture to add some grain and a cloud texture to produce some irregularities on the paper surface, both are used as bump textures.

The inside part of the box is a simple shader with a light brown colour and a noise texture used to add some grain.

The middle part is more or less the same as the inside part but with a much darker colour to differentiate it.


Texturing the container:

Same process to create the images required to texture the metallic sheet using Gimp. I used 3 images, one for the colour map, one for the bump map used for the splitting areas and the last one also used as a bump map to create the small squares all over the sheet. A shader with high IOR will be used to get a nice metallic effect.

Colour map:

Click to enlarge

Bump map for the splitting areas:

Click to enlarge

Bump map for the small squares:


Click to enlarge

Shader for the transparent plastic container:

This is a simple glass shader with IOR = 1.5, nothing else to say.

Texturing the notice:

Click to enlargeSame process to create the image required to texture the notice using Gimp. Here again, I used a noise bump texture to add some grain and get a better paper effect. Nobody will read it, so I just wrote anything to create something looking like a notice; the same image will be used to map all the pages.

Texturing the bullet:

The casing of the bullet is made with a copper material, I mixed two copper textures over the UV map (by limiting the amount the textures affect the colour to 0.7) and I used a glossy metallic shader with IOR=4 to get a reflective surface with low spec. The back casing part has the same copper material but I add a bump map with the identification information, it’s a must detail.




The bullet projectile and the primer are simple glossy grey metal with IOR=20 and a noise texture bump.

The Lighting

The lighting is a single HDRI angular map and nothing else.


The Materials

Yaf(a)ray provides 4 materials types: glass, glossy, coated glossy and shinydiffuse. I mainly used shinydiffuse for non reflective materials like paper, glass for the transparent plastic and coated glossy for the metal shaders.

The bump value (Nor slider in Blender) should be set like in Yafray, usually these values are lower then the values defined using the Blender Internal renderer. I used values from 0.003 to 0.1 for noise textures and 1-2 for the splitting areas and the small squares on the metallic sheet but I set it to 5 for the back casing number.

Here are some screen shots for the material setting in the Yaf(a)ray script:





The Rendering

For the rendering I used the Revision 175 of Yaf(a)ray. As it is not yet fully integrated with Blender, the parameters should be set in both Blender and Yaf(a)ray. The lights, the materials and the rendering settings should be defined through the Yaf(a)ray script whereas the camera, the image textures (colour and bump) and the HDRI image are defined in the Blender UI.

I selected the Path tracing method as it is a full GI engine with Radiosity, I may have used the Photon mapping method which probably produced something equivalent. I also rendered the scene with the Direct lighting method to get a more contrasted image but without GI and then faster. The two images will then be mixed together into Photoshop.

The rendering time was about 22 hours (Updated on 06/10/07 : after making a new rendering tweaking the settings, I got more or less the same result in 22h instead of 40h) for the Path tracing and about 7 hours for the Direct lighting. The image size is 1600 x 1200.

Machine used: Windows XP, Intel Core 2 duo 2.6, 2 GB Ram

Click to enlarge         Click to enlarge


The Post Processing

I used Photoshop for the post processing; I loaded the 2 rendered images into separate layers. Playing with the eraser over the image rendered with the Path tracing method I let appear the image rendered with the Direct lighting method in the shadowed regions to make them more contrasted. I then created the DOF using the Gaussian Blur filter. Yaf(a)ray, as well as Yafray can produce the DOF, but it increases the rendering time and I had a better control on the DOF during the post processing.

Thanks for reading this “Making of”, I hope it was helpful.