Click on image for full scale version.

Hi. This is my first tutorial that will cover the process of creating 3D images from my perspective. As an example I will show few techniques that I used in my last work "A Glimpse Of The Past". As you can see above, picture looks quite good and interesting (my opinion, of course :) ) and it's not so complicated to do, I've done it in aprox. 12 hours. The geometry is fairly simple, textures are mostly seamless images from 3DTotal CD Textures and lighting is simple global illumination setup that I've described in my Global Illumination tutorial, but I will describe this process again in short words. As for the software, I have used Maya 5.0 for modeling, lighting etc..., MentalRay for rendering (because Maya's renderer doesn't support global illumination), a simple terrain generation program that produces great skies named the Terragen was used for the background, and at the end Photoshop for texture painting and postprocessing the final image.

So where to find an inspiration for your projects? Well there is no recipe for that, if you want to start from somewhere I recommend the sites that have a lot of photographs, like PhotoSig or DPChallenge. My idea came from one picture that I've found on one of those sites. It was a photography of one old church in mountains. The image made a special emotional touch to me, and there it was. After an hour of thinking I decided to go for something different than original picture. My decision was to made the image older, with sepia tone, to add some trees in it and to make a small grave in the back to invoke a feeling of sadness in viewers. So that's it, I started to work on it...

But just one thing before you start... you need to be familiar with maya to easily pass through this tutorial. I recommend, if you haven't done that yet, that you read maya manuals. You will need the knowledge of how to use polygonal tools, the UV tools and how to build simple shading networks. Since I don't want to write complete book on this topic, I will cover only few things in process of modelling-texturing-rendering that I think it would be useful.




As you can see in the picture below the models in this scene are fairly simple. Don't worry about the trees, they can be easily created using paint effects. ;) As for the building and fence, I've used the polygonal modeling from start to end. Why did I used polygons .... well they are easy to manipulate, with only few steps you can cut, extrude or do some bollean operations on them and you can create the nice UV map for texture painting.

The wireframe model of the image

For start, I've created three polygon cubes, one for each part of the building (pic 1 below). At this time it was crucial to scale and place them properly to get the right proportions. After that I've selected the bottom polygon for the main part of the building and used the extrude tool two times to get the hole in the building (pic 2). I have also done that for other two parts of this building. The next step was to cut the small and large building through the middle, and the tower will be splited in horizontal way four times (pic3). After the split, I have manipulated some points to get the right shape for these three parts (pic 4). So for these few steps I've used Create Polygon Cube, Cut Faces Tool and Extrude Face + point manipulation after the extruding and cutting.


Created polygon cubes, transformed to fit the proportion of the building parts.

Used tools:
Create > Polygon Primitives > Cube
+ Move and Scale tools


Extruding bottom parts of the cubes to get the hole (walls?) in these three cubes.

Used tools:
Edit Polygons > Extrude Face


Cutting the polygon models to create the roof and the scaled part in the middle tower.

Used tools:
Edit Polygons > Cut Faces Tool


Transforming the points of the cuted parts to get the right shape of the roofs and extensions on the middle tower

Used tools:
Move Tool on polygon points

Now the roofs. They are pretty simple to do ... I've done it by creating one polygonal cube (pic1), which I scaled and translated to the position where the roofs ends will be. After that I've used the cut faces tool to cut the cube at the center. Now all I did is that I transformed the points to its positions ... moved the middle points along Y axis. Then I've selected the points on the both side of the roof and transformed them so that the roof has a constant thickness along them.


Polygon cube was created. Then moved and scaled.

Used tools:
Move Tool and Scale Tool


Cutting in the middle of the cube and editing points to get the right shape.

Used tools:
Edit Polygons > Cut Faces Tool and Move Tool

The windows are also simple to do. For this I needed a help of the boolean difference operation. For the door I've used simple polygon Cubes which I've transformed to the right place (pic2). As for the half-arch windows I've created them from Polygon cylinder object. After I created it, I've increased the subdivision of the cylinder to get the smoother result when I drill the window in the main model. Next step was to manipulate the points of the cylinder to get the shape that I needed. You can see this process in first picture below. The model on the window was placed on the front of the building model so that it intersected with it (pic2). It was also duplicated, scaled and placed to the positions where I needed two other halfarch-windows. The last step was to do the difference boolean operation... so I just selected the main body model and window and done the Boolean Difference. I did this for all windows and door, and there it was. ;)


Creating cylinder to cut window. Increasing subdivisions. Then scale and move selected points in y axis until they become flat.

Used tools:
Create > Polygon Primitives > Cylinder
Move and scale tool


After the windows cut objects are created and positioned they are ready to do the bolean difference operation.

Used tools:
Move, Scale and point editing.


Doing boolean operation to get the windows and door. First select the main structure then window cut object and do the difference.

Used tools:
Polygons > Booleans > Difference

Fence was also made by using polygonal cubes. At the start, I've created one cube and scaled it. Then I have cut it like in the first picture (middle object) and transformed the edge points so that I got more natural edges (pic1 - last object). Now, I needed sticks that would hold the fence. So I just draw a few non straight curves (pic2 - left), created one circle and extruded it along these curves (pic2 - right). After I have done this I went to the side view and duplicated - transformed (translate, rotate and then scale) wooden plank that I have created. One more thing that I did before duplicating the plank is that I cuted it horizontally and vertically few time. Then after the duplication, I've transformed the points of the planks so that at the edges they look more natural - not so linear, And there it is, a fence.. ;)


Created polygon cube, scaled it, then cuted it and moved the points to get the smoother transition at the edges.

Used tools:
Create > Polygon Primitives > Cube
Edit Polygons > Cut Faces Tool


Created few curves on which I have extruded the circle. These objects have been created with NURBS.

Used tools:
Create > CP Curve Tool
Create > Nurbs Primitives > Circle
Surfaces > Extrude


At this stage I've made a few copies of planks, cuted them in horizontal and vertical direction and placed them on the stick.

Used tools:
Edit Polygons > Cut Faces Tool
Edit > Duplicate + Move and Scale tools

First hill in the back (with grave) was made using displacement on polygonal object. But before I did the displacement on polys, I have used the height field object (created it in hypershade), on which I mapped the texture that I will later use as a displacement (picture 1). When you do this with height field, after you modify some of the parameters in displacement texture, you will have real time show of how displacement will look on polygonal object, that's why heighfield objects is so good at this situations. After I was satisfied with the result, I've created the lambert shader and connected the texture from heighfield object to the lambertshadergroup. Then, I've assigned the shader to newly created poly which was scaled to fit the x and y boundaries of the heighfield plane and then I've increased subdivisions to 100 in both directions. In this situation it is recommended to turn off Feature Displacement option in the Displacement Map section of the Attribute Editor of the polygonal plane object. This will reduce the usage of polygons ... it will only displace the polygons that are already in the plane.

As for the ground (in front of camera) on which the building was placed, it was made by creating one nurbs plane which I scaled and moved where I wanted it to be. After that, I've used the Sculpt Surface Tool to displace it (picture2). It is recommended to set the right tessellation values for this hill in attribute editor... so that It looks smooth when rendered, so that was my last step for the hills. ;)


After the height field object was created in hypershade I've made a texture that will be used for the displacement mapping of the polygon hills in the background of the image. As you can see for the falloff of the hill as it reaches the edge, I've used the circular ramp on which I mapped the noise texture...

Used tools:
Hypershade window > HeighField object + Ramp texture and Noise texture...


For the ground that is in front of the camera I've created simple NURBS plane and using the sculpt tool I have modified it like in the picture.

Used tools:
Create > Nurbs Primitives > Plane
Edit Nurbs > Sculpt Surfaces Tool

Trees are very easy to create in maya, thanks to paint effects. But, if you use the mental ray then you have to transform it to the mesh object. For example for the tree next to the building, I've picked one paint effect preset, and painted the tree, which I modified to fit my needs. Then I've converted it to the mesh using Convert PE to Polygons option. The first time when I did the conversion, maya created too much polygons. So to lower down the number of polys, before I've done the conversion I went to the Attribute editor of paint effect stroke and lowered the value for Tube sections and Sub Segments in the Mesh section. If you have situation where you need to get close to the tree, then it would be probably better to increase the mesh complexity of the tree, or leave it as it is if that is enough..


The painted tree using one of PE presets.

Used tools:
Paint Effects > Get Brush
+ Modifying attributes of the painted tree


After the right tree setup I converted the tree to the mesh.

Used tools:
Modify > Convert > PE To Polygons

These are the basic steps I've made when modeling. I've added a lot of other details lately using boolean tools, cut, split and move polygon points tool. Let's see few techniques I've used in texturing part.




This is one of the most interesting steps in the image creation process. You can have the model that is accurate and detailed but if it doesn't have the right textures and lighting it can look totally flat and uninteresting to the viewer. There are two ways to do the texturing. You can do it with procedural textures or with image maps.

The first method will give you more computer generated look, but it will use a small amount of memory. The procedural textures are calculated using the mathematical algorithms behind it. They can be divided in two categories, the 2D procedural textures and 3D procedural textures. To map the 2D proced. on polygonal objects you will need to set the right UV maps, or you can project it on model. On the other hand if you are using the 3D procedurals, since their calculations are dependent on the 3d point in space, you don't need to create UV maps.

The second method of texturing by using image textures will give you very realistic appearance of materials, but it will use more memory. Of course you need to have the texture collection, or you can photograph textures by yourself. If you decide to use the texture collections, one of the best choices will be to purchase one on internet, like the 3DTotal Textures CD that I've used in my image. For now there are 3CDs with 3DTotal textures with the collection of color and bump maps. The textures from that CD's are also seamless, that means that you will not see any seams when they are repeated over the surface.

When texturing the polygons with image maps, first thing you have to do is to define the UV mapping of the objects. For this kind of objects, like building, defining UV mapping is not too difficult to do. This will be shown in next few steps... as an example I will use the main building part.

As you can see from the first picture below, the initial UV map, after I've finished the modeling part, was not what I wanted. This is surely not something intuitive on which you can paint the textures on in photoshop. But, there are tools to do UV unwrap, so let's use it. I've made one decision when I came to process of UV mapping of this building, and that was that I will define the UV map for only two walls that are pointing towards the camera, since other walls are hidden from the viewer. As you can see that is, when looking from front, the left wall with window in it, and front wall with door and windows. Don't worry about the top part where roof stands, it will be covered with the roof object. So, to create the UV maps of these surfaces I have selected them (select faces) and then set the planar mapping on them. These two examples (pic2 and pic3) show just that. I've selected the faces for the side wall, went to options of Planar Mapping, turned on the Fit to Bounding Box, selected the mapping direction which have to be perpendicular to the faces, and that was it. This was also done for front wall. One more thing, If you try to do the selection for the front or side wall, don't forget to select the faces of the door and windows.


Initial UVs after the modeling process... very very bad, I need to fix this. ;)

Used tools:
Just switched to UV view to see this mess....


Selected the faces from side wall and created Planar Mapping.

Used tools:
Edit Polygons > Texture > Planar Mapping


Also for the faces at front wall, created Planar Mapping.

Used tools:
Edit Polygons > Texture > Planar Mapping

Now the next step. The UV map at this stage is still not finished. What I did in the steps above is that I got the usable proportions (or projections) of the front and side wall, so when I paint the textures on them, they won't be distorted. But, the projections are overlapping as you can see in the first picture below. This must be fixed. There are also the other leftbehinds of the other polygons for which I didn't define the mapping, but I didn't bothered with them because they will not be visible in final picture. What I've done now was that I've put side by side the UVs for front and side wall. It is possible to do this by hand, but it is also possible to get a little help of layout tool. I did it with the layout option for which I set the Along U and Uniform Scale attributes. After I've clicked on Apply, what it did was that it layout the UVs like in second picture. The next step I've made was that I moved UVs for front and side wall from the top right area of UV grid to the bottom area and scaled them to fit the area from 0 to 1 in UV space (pic 3). At the end I selected unwanted UVs for other walls and moved the apart from the top right side of the UV grid, and then I moved wanted (front and side walls) UVs to the top right quarter in the UVs grid.


The UV of two walls after the projections. This should be placed next to each other.

Used tools:
Only switch to UV window.


UVs after the layout tool was used. I would only use the first two parts on the left.

Used tools:
in UV Editor > Polygons > Layout UVs


The UVs of two important parts were selected, moved to the bottom, scaled, and after this moved to the top.

Used tools in UV editor>
first I selected one UV point of the the front and side wall and then :
Select > Select Shell + Move and Scale tools

At this stage, since I did the planar UV mapping on walls, the UVs for the windows are flat and the texture will look like it is stretched when I try to render it. To get a better result I decided to scale the inside window UVs like in third picture. So to scale them I've selected the points in viewport (using vireframe shading - pic1) and converted selection to UVs (pic2). Then in UV window I scaled the UVs just like in the third picture. Yes, the UVs for the windows are not perfect because when you get close to it it may be visible that the tex is distorted but since in this scene the windows are far away from the camera this will work pretty fine.


In viewport I have selected the points on the inner side of the window

Used tools:
Just point selection


Then in UV editor I converted selection to UVs

Used tools in UV Editor:
Select > Convert Selection to UV


After that I've scaled the UVs like in the picture above

Used tools:
Scale tool

The last step to do, after the UV definition, is to make a snapshoot on which I will paint texture in Photoshop. So, I went to the UV Snapshot option in UV editor and I've set the resolution (1200x1200), the TGA format of the picture and clicked OK. After this I got the image with UV snapshot on my disk. Next step: start Photoshop...

The image with UVs that maya saved to the file, on which I will paint in Photoshop.

Used tools:
In UV Editor > Polygons > UV Snapshoot

What I wanted to do in photoshop was to create the map that I will use to mix two textures together. The image needs to be grayscale ... where there is white area in the image the first texture will be used, and where the black area is the second texture will be used. If it will be 50% gray, then the first and second texture will be mixed together. For this situation I didn't used the gray tones, only black and white, but if you want to get more realistic results you can try to experiment with grays also. So, how can you create the mix image? Hardest way will be to paint it. But in some situations one trick works really nice, and that is to use photoshop cloud generator and threshold tool. But first thing that I've done was that I have created new layer. Then I've set the front color to white and back color to black, and used the Clouds generator in Render section of Filter menu. When I did this I have got something like in first image below. Now, I've used the threshold tool in Adjustments section of Image menu to get something like in second picture. At this stage I've made the layer with this cloud texture little transparent to see the boundaries of the UV map, and I've painted with white color on the texture to get something like the picture 3. ;)


The result of cloud generator in Photoshop.

Used tools:
Filter > Render > Clouds


After the threshold of the cloud layer.

Used tools:
Image > Adjustments> Threshold


And the final mix image after I removed the unwanted parts by painting with white color.

Used tools:
Brush Tool

Back to Maya. For the start I've created a simple lambert shader, picked one texture from 3Dtotal textures and connected it to the color channel of lambert shader. After that I went to the attribute editor of the place2D texture node of the image and set the repeat UV to 2 in both direction. As you can see, the shading network (pic1) is as simple as it can be, and the result of rendering is in picture 2.


A simple lambert shader with image file mapped to the color channel. It will be used as the top texture layer.

Used tools:
Created Lamber shader + image file on color channel


The result of the rendering with the lambert shader I've just created


To get a realistic stone you need to have bump mapping, so I've mapped the gray bump map for this stone to the bump channel of the lambert shader. The good thing in 3DTotal texture CDs are that you have already made bump textures for the color textures, so you don't have to waste time creating them. As you can see in second picture, the bump map boosted the reality of the walls to higher level.


Since the original Lambert shader used above looks very flat when rendered, I have also connected the bump map to make things more real.

Used tools:
Mapped the bump image to the bump channel, disconnected the default place2d node and connected the place2d node of the color image.


Again, the result of the rendering with the lambert shader + bump map


This is the time when the mix picture made in photoshop will be integrated in network. Since this lambert shader will be used as the top texture layer of the house material, I will map the transparency channel with the image from photoshop. One, very important thing that I did in this stage is that I connected the outAlpha of the mix image to the alphaOffset of the image file that I used as the bump map. What this did was that it increased the bump level at the sections where there is white color in mix image, and where there is black, the bump value stays the same. As you can see from the rendered image, the parts that are black in the mix image are transparent, and the edges of that areas are little bumped up. ;)


The image I've created in Photoshop was mapped to the transparency channel of the lambert shader.

Used tools:
Map transparency channel with mix image map...


The result: where there is black in the mix image, the texture will be transparent and where it is white, the texture is visible.


At this stage I wanted to set the material for the surface bellow the main texture. To make things more intuitive I assigned the newly created lambert shader to the whole building model. When I did that the shader that I created before was disconnected from the geometry but it is still there. As you can see in the first picture below, I've made the same shading network as the one above, but without transparency. I don't need transparency since this texture doesn't have nothing below it. I have also changed the repeat values for this brick texture. After the rendering second picture appeared.


The similar shader was created for the texture that will be below the original texture.

Used tools:
Created Lamber shader + image file on color channel + bump map on the bump channel


And the rendering of the bottom layer of the texture...

The last step was to made the mix of the two materials that I've created above. The simplest way to do this is to create LayeredShader and to drag the materials from above to the layered shader node. I did just that, created the LayeredShader, assigned it to the house model, then I opened the attribute editor of layered shader and dragged the two materials from above to the layered shader. The material that is transparent must be the first one in the layeredshader, since the transparency of the first shader is used to reveal the material (bricks) that is below.


To mix the two textures I've created the LayeredShader, assigned it to the building and connected two materials that I created above to it.

Used tools:
Create LayeredShader, assign it to the object, drag the two material to the layeredshader. The first material with transparency must be the first one.


The result of the rendering with both layers.

So, this was the first step in texturing main building part. The same technique was also used for other parts of building. As for the roofs, I've done the planar mapping from above and then mapped a simple lambert shader with bump mapping. The UVs for the roof of the tower are made using cylindrical map, and it uses the same texture as for the main roof. Fence was textured in similar way to the house ... planar mapping and lambert shader but without mix image. I've manipulated the UVs for the planks to get different parts of image texture mapped to it.

One more important thing ... if you want to get the realistic textures, then you need to map something on channels like diffuse, specular roll off, specular color and others... Sometimes when the objects are small in picture and it doesn't take too much attention then the simple fractal mapped on the diffuse channel can do very well. But, in situations where you have the big object that takes a lot of attention, it would be best to paint the diffuse image to get more detailed surface. The effect of using diffuse image is shown in pictures below. The first picture shows the simple shader network with diffuse image mapped to it. The middle image is the diffuse map that I've used in this example. I've created the image by mixing few textures from 3DTotal textures. Since the diffuse is one dimensional value don't forget that you need to paint grayscale map. ;) The difference between the shader that uses single diffuse value and the shader that uses image mapped diffuse channel is showed in third picture. As you can see, the surface material looks more real and not so flat as it was before. If you are creating the metal surfaces then you will probably want to do the mapping on other channels, like specular color, specural roll off, eccentricity and reflection.


The example of image file mapped to the diffuse channel of lambert shader.

  The image file used as the diffuse map.  

Difference of the shader that doesn't have diffuse mapped channel and the shader with diffuse image.


The last step but not the least is the process of defining the lighting of the scene. I've done this with great help of Final Gather from mental ray. If you do not know how to use final gather then refer to my first tutorial on global illumination. ;) After you read it you will see that the light setup is the same as in the scene from the temple model. That means, only one light was used, and the big sphere was added to the scene which will be used as the indirect illumination source.

So first thing I did is that I've set the main light. I had a choice of few light types ... the point, spot or directional light, all three will fit as the sun light in this situation but I have used the spot light because it is very easy to position it ... I can look through the spot light and approximately know where my shadows will be. ;) After few tests with global illumination I decided to not go for it, because in this particular situation the final gather will do it's job pretty good. If this would be the scene where you need the light to be bounced and bounced to get the indirect illumination in the shadowed areas, the global illumination will be something you want. But this is a different story...


The direction of the spotlight when looking through it.

  Attributes that I've used for the spotlight.


The color of the main light was set to something between yellow - orange color, and I've used the Quadratic Decay Rate. After I switched to Quadric Decay Rate I boosted up the Intensity value to 5000. The intensity value is dependent on the overall scale of the scene, but for my situation the 5000 intensity value was the right one. I also played a little bit with Pneumbra Angle and Cone Angle to get the non uniform distribution of the light as you move out of center in spotlight shape.

Now the sky light... no, it's not emitted from the sky from the final picture. It is emitted from the one big sphere that surrounds the scene (pic1), and it is hidden for anybody except final gather. ;) This was easy to do, I have just created one sphere, scale it like in the image below so that the scene is inside the sphere. Then in attribute editor of the sphere in the Render Stats section I have turned off the Cast Shadow, Receive Shadow and Primary Visibility. After this, if the light will be placed out of the sphere, it will not block the light since it is not casting shadows, and it will not be visible in final render, but it will be visible to renderer when it calculates final gather. The last step I did was that I assigned the shader to the sphere. As the shader I tend to use the surface shader. I have set the Out Color attribute of surface shader to some dark color, like dark brown (pic2). This will produce the indirect illumination that comes from the sphere and the lighting will look pretty real. ;)


Spherical object used as the indirect illumination source.

  Shader used for the indirect illumination source.

Yes, one tip. After you set the color and intensity for the light and the color of the sphere, many times you won't get the right balance of these two factors, the picture can be to bright or to dark in shadowed areas, so you would probably want to decrease the one value and increase the other value. For example in this image after the first test render I decided to decrease the intensity of the light and increase a color of the sphere. Well, that's it for lighting. Now the last step.




There are times when I skip the postprocessing part ... but since this time I wanted to create the image in sepia tone, and I wanted to put the transparent frame around the picture, the postprocessing step was the next logical move. ;) There was also the background image that was done in terragen modeler and needed to be integrated in the background of the original rendered image. I use terragen very often when I do a still image with realistic hills and sky.

This last step was created in photoshop. I've used few layers as you can see from the picture below. The background layer was created in terragen ... the camera in terragen was placed so that it aprox. fits the camera direction in the rendered image. Yes, the color of the background has different colors, but since the picture will be in one tone, this wasn't the problem. The second layer is the image layer, rendered image from maya. The areas, where the blue color is, are transparent, they were only colored because I wanted to show you where transparent area is. If I hadn't turned off primary visibility value of the sphere that was used as indirect light source, then this blue area would not be transparent.... now you know why I did that at the lighting stage. The third layer is the layer made with noise generator and it's blend type was set to multiply. This layer was used to make the picture a little grainy. I've adjusted the transparency of this layer so that the grain is not visible too much. The fourth layer has a frame, signature and name of the picture ... nothing special about it. The fifth layer has constant color over it so that it colorize's the layers below it. The blending mode of this layer, as you already know ;), is set to Color. For the first and second layer I've made a little curve corrections to get a better contrast of the pic.


LAYER 01 : background

Background hills and sky was made in terragen (terrain generator). Since this needs to be in back it was placed in first layer.


LAYER 02 : rendered image (normal)

Second layer is the rendered image. I've painted the blue color where the image is transparent and the background (layer 1) will be visible.


LAYER 03 : noise (multiply)

Now to add a little noise to the image I've created this layer and set the multiply as the blending mode. If there is too much noise, modify the Opacity value.


LAYER 04 : frame (normal)

I've tested the image with this frame over in and I liked it so it was used in original image.


LAYER 05 : color (color)

The last layer was used to colorize the image. It is a simple layer with constant color over it with blending mode set to color.



And this is it. Yes, the original image was flipped horizontally. ;)


And this is the end my friends.. I hope this will be of any use to you. I didn't have much time so I've explained only a few techniques used to create image. These are not complex techniques, but it is something to start with.

Well, good bye till next time...

Toni Bratincevic - toni@interstation3d.com - http://www.interstation3d.com