Making Of 'Boulevard'
Part 1 - Intorduction
I'm gonna explain to you, through this tutorial, how I created "Boulevard". I will focus specially in the texturing part but in addition I'll refer to the whole scene creation process. I won't repeat some concepts you must have read in other tutorials. The idea is that I will show you the way I face a project, and tell you about the way I turn ideas into reality. Just from my experience.
I hope some of the principles, tips and techniques I'll explain below will be useful for you. I tried to use in this tutorial, 3D concepts that you can apply in any 3D package. Maybe you can find some tools that are not available in all 3D programs, but sure there's an analog tool or way to get that in your software.
Before starting I have to thank to Tom and Chris, and all the guys from 3D total team, for their support, trust and patience.
I've organized this tutorial in several parts:
Part 1 - Intro and Conceptualization
Part 2 - Modelling
Part 3 - Texturing
a) Bitmap Processing
b) Material Design
Part 4 - Lighting and Rendering
The genesis of this model was an image I found in an English book for Spanish students that I borrowed from my girlfriend
(picture in the right). That was the starting point. From that point onwards, I just used references from real world, pictures from magazines, books, internet, and so on, and my imagination.
In the first part of the project, what I call "planning", you usually set the general parameters for the whole process. For example, in this specific case, I decided it was going to be an outdoor scene, based on an initial picture of an old style building. It was gonna be lighted by sunlight, maybe using GI, and it was going to look like a picturesque old town scene. I think you always have to imagine how it will look, and the impression it's gonna produce in the spectator. Of course that sometimes, the project take another course during the creative process because of different and multiple events, but you have to keep in the way you set at the beginning so you won't lose general overview and you can choose the best approach to the problems and difficulties you'll find.
A point that I always take into account is the following: You always have to know what your work is for. I mean, if you create a scene for getting a still picture is not the same as if you want the scene for animation. A scene that will be rendered with high quality settings is not the same as a scene for low quality output.
For example, in this scene I created, I didn't use textures with a bigger size than 1200 pixels (height or width). That quality was not necessary because when I began, I knew that I'd render a long camera take, and the output resolution wouldn't be higher than 800 x 600 pixels. I think it's a good point to take into account, 'cause you can be working for nothing, because you won't see the difference.
When I set up all the initial parameters, I pass to the next step: modeling the geometry.
Part 2 - Modelling
Modelling in this scene is quite simple. In fact, the object organization in 3D space was more complex than the modeling process.
Most of the objects in the scene are parametric primitives, sometimes with subtle modifications. The buildings are boxes turned into meshes and modified through sub-object selections (extruding faces, moving vertexes, cutting, and so on). The building in the center is an extruded shape, and then modified at sub-object level. I used Boolean to generate the windows and interiors. lose general overview and you can choose the best approach to the problems and difficulties you'll find.
The stairs, cornices, stair-steps, rafters, the balcony, and some bricks are all boxes or beveled boxes. I usually get complex parametrics adding subdivisions and then, using a noise modifier to give more irregularity to the geometry (remember that things are no perfect in the real world). The windows were made with boxes, boolean and sub-object modifications.
The stone blocks that make up the portal are beveled boxes + a subtle noise + a taper modifier. I added a Meshsmooth modifier to smooth the surfaces a little. Parametrics objects were used for the barrel (+ spherify), the water tubes (+ bend), the chimneys, etc.I used renderable splines for the aerials, the plants, chains, and the balcony fence.
I used lathe for the stone decoration over the stair-rails, the pot of flowers, and the lamp on the right (I set de segments to 4 to get the four sided shape). The bird over the lamp was modeled with patches.
I used a super-spray particle system for the smoke that comes out of the chimney on the left. I applied to the PS a material with the face option checked. After that I linked the super spray to a wind space warp to randomize the motion, and get a smoke look.
As you can see, there are no secrets in the modeling. Parametric objects and modifiers are the base tools. If I need more details in the geometry, I manipulate it through sub-object modifications (pulling vertexes, moving polys, extruding, beveling, cutting, slicing, and using any poly-editing tool available in the software). Boolean and lofting are compound objects I frequently use and which I consider extremely powerful (specially lofting technique).
In the beginning, I usually place a camera that gives me a real approaching to the final shot, so I can locate objects in the right place, according to the camera field of vision.
When I finally completed the modelling part, I moved to the next step: texturing.
Part 3 - Texturing
Texturing and material design, is clearly one of the most important parts of the 3D process creation. It's very time-consuming, but if we consider some important points in the workflow, we can highly enhance our work.
In the scene there are a lot of materials (60), which I created out of two kind of maps: procedurals and bitmaps (what is already known). Many people think that procedurals (also known as shaders, although this is not the right meaning of the word) are not good for achieving a real look in their models; and there are a lot of artists that use procedurals exclusively. Well, I think we need to get a balance.
I think that, as visual artists, we have more participation in the final result using bitmaps, because we can choose the image we use as raw material (an illustration, a photograph, a drawing, a painting) and because we can manipulate them as we want in an external software (Photoshop, Painter, PSP, Gimp and so on). The outcome is an image created specially for mapping a specific object.
Of course that procedurals are very useful maps, because they are parametric; they have features easily animatable; and we don't need to work hard to achieve a right 3D space mapping projection, as we sometimes need to do with bitmaps.
In this scene I used mainly bitmaps, because the old architectural look requires the features that bitmap mapping offers. Fortunately, I have a very powerful and useful tool that helped me a lot in this part of the project: the 3D Total textures collection. All bitmaps I used in this scene are from 3D Total CD's.
I prefer to edit bitmaps, composing, mixing, and modifying them as I wish till I get the needed goal, but you can also use the bitmaps directly from the CD's because of their quality and because they're prepared for tiling.
At first, I define the kind of mapping for each object in the scene. I use mainly planar and cylindrical mapping (of course it depends on the geometry). For objects with high complexity, the Unwrap modifier is very useful, because you can unfold the geometry and paint the map in a planar projection. I usually work with "Texporter", a plugin for Max highly suitable to export mapping projections as bitmap images, and work later in an image-processing software like Photoshop. Once I set the mapping coordinates, the next step is the bitmap editing process.
Part 3a - Bitmap Edition
In this part of the process we need to use an image processing software, like Photoshop, PSP, Fireworks, Gimp, or whatever you want. This software lets us manipulate bitmap images, and then export them as bitmap files (JPEG, GIF, TIFF, PNG, etc.) and include them as maps in the materials we are gonna use in the 3D model.
The first thing I do, is open the bitmap file exported through "texporter". I use that image as background layer, to create a texture using this as a reference to paint it correctly. The lines from the geometry structure help me to know where I have to paint, and where not to.
Once I've got the background I go to the 3D Total textures collection and I choose the map I'm gonna use as base material. In this case, a brick wall.
I choose textures for diffuse and bump channels. All textures in 3D total collection are available with diffuse and bump channels version. This is really useful to avoid painting the bump textures by myself.
After that, I tile the textures in the image processing software. These textures are tileable by default (directly from 3DTotal collection), but I usually tile them by myself because after that I modify some areas to avoid an even look.
Then I get the borders dark (burn), to achieve a rusty and worn look. There are many tools to get this. For example, the Burn Tool in Photoshop.
Following, I add layers using masks. I usually use several dirty maps, and combine them into only one. This is the real power of a good bitmap collection, the possibility to keep creating new images every time we need. In the image on the right, I added some kind of moss using the technique explained above.
In the flash movie above you can see the dirty map layers I added to generate the final texture. Using maps and different blending modes I achieve the final image, ready to use in the 3D application. The upper layer shows us an inscription on the wall and a rusty poster I included to give a more urban look to the wall.
Finally I create the image for the bump mapping channel. I add the relief produced by the dirty map areas to the base map I load from 3DTotal textures (right).
All maps in the scene are from 3DTotal CD's. They are really useful because they are the starting point in the creative process. You can manipulate them, combine them, mix, blend or whatever you want to get new results in each project you're working on.
When I finally get the right look for the image, I save it as a high quality JPEG. Because walls are opaque, I don't use maps for specularity or glossiness in that kind of material. In case I need one of them, I usually start from the bump map, and I adjust levels till I get the correct grayscale setting to be used in the specular, specular level, or glossiness slot.
Now that we have the bitmaps, we jump to the material editor in the 3D application to complete the material creation process.
Part 3b - Material Design
Once I've got the bitmaps I move to the Material Editor in the 3D application interface.
All 3D software packages have a material structure made up of channels or layers. It means that there are channels for the different material components (diffusse color, bumping, reflection, refraction, glossiness, specularity, displacement and so on).
I usually work with a diffusse channel and a bump channel, and if the material requires, I use maps for glossiness and specularity. Reflection and refraction are used for specific materials, for example I used this in the windows glass panels.
I usually work with different material types, but in this kind of scene, the standard material fulfils almost all requests.
A very useful material is the multi-subobject mat, that lets you handle a lot of materials for a single object according to the material ID's that you assign to the different polys that conform the object.
In the image above you can see a multi-subobject material I used in the scene. The map navigator shows you the internal
The different materials are assigned to the building walls. Every channel has a UVW map assigned in the stack to project the map in the object surface.
The real secret in material design is to know how to combine different kinds of maps to achieve the goal we need.
A good trick I use, is to add more irregularity to a bitmap, mixing it with a procedural map. In the example on the right, I mixed a bitmap with a noise procedural to create a more uneven surface, in bumping channel.
In this scene, I mainly used common UVW projections, as planar, cylindrical and box, but in some specific cases a more detailed adjustment is needed. In this way, we use Unwrap mapping. Once the geometry is unfolded in a planar projection, you can paint it in an external program, and back in the 3D application, this map matches exactly the object geometry.
With only one bitmap image you map an entire object.
The scene was completed with similar materials, always using 3DTotal textures, sometimes mixed with some procedurals.
To render correctly in different third party renderers as Brazil or V-Ray, some specific materials have to be set up. Most of them are related to refractive or reflective materials, including raytracing features. So, V-Ray for example, offers us VRay Maps for reflection or refraction effects, VRay lights, VRay shadows, and so on. If we plan to render in this kind of engines, we'll need to set a special configuration for our scene.
Well, now we move to the next step: lighting and then, rendering. Let's go on buddies...
Part 4 - Lighting and Rendering
Lighting is a really important step in the whole process. Many times, we setup lights fast but we have to understand that lighting can change the scene look for the better or for the worse according to the configuration we chose. I usually work a lot in lighting setup, making tons of render tests to get a good scene lighting.
In this project, I setup the scene with two lighting configurations: the first one is oriented to get a still image, with high quality output, using advanced render features like GI, radiosity, and so on.
The second configuration is for a simple 100/150 frames animation with lower quality than the first one, using 3DSMax standard lighting because those advanced rendering features consume a lot of time, not compatible (at least for me) with an animation with those characteristics.
The first configuration is really simple. I just located a soft yellow target direct light as the sun, with a multiplier slightly over 1.0, and I increased the shadow map to 1024. The higher the shadow map size, the higher the shadows quality.
No more lights objects were necessary. I used specific features of the render engine (global illumination, radiosity, caustics, indirect lighting, etc.) for that shot.
For the final render I used V-RAY (free version). I set a value of 0.7 for the skylight to light the shadow areas, with a soft light blue tint. I didn't use a higher value to keep the contrast between light and shadow zones in the picture.
I activated "Indirect Illumination" too. With these features, objects reflect light affecting the sorrounding space, increasing the realism. Indirect illumination is based in a variable called: bouncing (related to the concept of "color bleeding"). The higher the bounce value is, the more interaction between an object with its sorroundings will be. The options on the right were used to get the final image.
I set the max value for the image sampling to 3, so I got a good antialiasing result. I chose the adaptive subdivision method, which is the faster one.
With these features, filling the scene with lighting you achieve more realism in this way than using standard lighting, but these advanced render engines have a disadvantage: They are very time-consuming. If you are not familiar to them, you waste a lot of time testing, to get the right look you're looking for. In adittion, this kind of renderer usually has many adds like special lights, shadow maps and materials, for specific reasons, as reflection, refraction, sub-surface light scattering, caustics effects and many more. I usually play around with the pre-defined settings, modifying some values in the workflow.
The result I got in the final image was quite right, though I had some problems with reflection and refraction in the window panels. It was because I couldn't use the V-Ray shadows because I had no enough memory in my system to render with this kind of shadows. I had to fix that in post production.
The second version of the lighting configuration is aimed at getting a simple animation where a camera moves through the scene in a straight line for 100/150 frames. The frame number required a fast rendering process, so advanced features for rendering were rejected. I created a main light source (sun) with a soft yellow light with a multiplier value of 1.2.
To fill the scene, and mainly the shadow areas, with soft light creating a sensation of Global Illumination, I put an array of twenty-seven lights with low value (0.025) in the inner space of the model. I set soft shadows (shadow map) with a high sample range to blur the edges.
This "home-made" way to fake skylight, produces interesting results when you can't use advanced lighting because different reasons (time, for example). I render this way a 640 x 480 test in 11 minutes whereas the same shot using GI with a decent quality takes at least 1 hour. You can see the difference in the flash movie on the right. Drag the red arrow at the bottom of the image to see the difference in the shading of both images.
That's it. Once that I set all parameters... Render.
After a couple of hours the final image was ready. I did some color adjustments (hue/saturation) to desaturate a little the image and get an old look.
The whole project took me a couple of months (working only on weekends) to finish. The scene has over 600 objects, 60 materials, 99 bitmap textures and some procedural maps. Almost all bitmaps are from 3DTotal Textures CD's. The final image (800 x 800 resolution tooks 3 hours 42 minutes with V-Ray free).
I hope this tutorial will be useful for you. If you have any questions, comments or suggestions, just send me a mail. I'll be glad to answer you.
Finally, I want to thank Lilian who helped me with the translation; to my father for his useful advices; to Marcos for his critical eye; to Mario for "taking care" of my renderings, all the members of my family and to "the marine" GastÃ³n, for his suggestions.
Thanks a lot guys and cheers!