, Points: 16
It looked like you did fix all of them but no, I mistook the rest of all the imagery for the total of the page...
Can anyone help out with this... please. I'd really like to see t
Posted on 08-06-2012
Introduction to Normal Mapping
Hi, my name is Andrei Ichim [andrei313]. With this tutorial I hope I
can help all beginners understand the best way to make a normal mapped
In this tutorial I'm going to teach you how to create the dice above using just a box and a normal map.
You are going to learn a lot of tips and tricks. I'm going to guide you
step by steap so any person will be able to follow this tutorial. I'm
using 3D Studio Max 8 but the techniques should apply to any 3d
software that supports normal maps.
I hope you will like it.
Before starting to do anything you have to make sure you are working with the same units I do. So go to the Customize menu and under Units Setup... make sure that Generic Units is selected.
The second thig you need to check is the driver you are useing. So go to the Customize menu again and this time select Preferences.... From the window that pops up look at the Currently Installed Driver and make sure it is Direct3D 9.0. If it's not click the Choose Driver... button and select Direct3D, and from the Advanced Direct3D... button make sure that DirectX 9.0 is selected.
First you will need to make the low poly model.
Start by making a box that has the following dimensions:
This will be the low poly model so rename it to LowPolyDice.
You just made the low poly model!
Now you need to make the high poly model. Because the geometry of the lowpoly and the highpoly needs to occupy the same space Clone the LowPolyDice and name it HighPolyDice. Make sure that it is a Copy and not an Instance.
Before you make the high poly model it is always best to plan what you need to do. There are two ways to make a normal map:
- make the low poly model and the high poly model and then generate the normal map using 3dsmax
- make just the low poly and use Photoshop to generate the normal map
After some tests I found out that the best way to do it is a
combination of the two. If you have smooth edeg on the model it is
better to make them from the high poly model but if you have some text
or some other fine detail on the model it is easier to make it in
Photoshop. The first time is confuseing because you don't know when to
model and when to leave it to Photoshop. For now I will show you how to
make the dice and after some more practice you will find this step to
be very easy. For the round forms of the dice and for the holes I will
model the high poly model but for the beveled text I will use
Photoshop. I could make the holes from Photoshop too but I want to have
a more detailed high poly model so that you can see what the normal map
generated from 3dsmax can do.
Here are the steps you need to follow to make the highpoly model:
|1. Select all the edges of the model and Chamfer them with a value of 2.
After that select all the edges from the corners and Conect them.
This step is to make sure that the dice keeps its cubic form when the MashSmooth modifier is applied.
|2. Select the edges around the cube and Connect them with 2 segments and move them close to the margins.
The reason for this is that when I will model the holes I will need them at a certain distace from the edge.
|3. Repeat Step 2 but this time leave the edges so that the distance between them is equal.
|4. Select all the faces that need to have holes in them.
Inset with a value of 2 and make sure that By Polygon is selected.
With these polygons selected Bevel useing these values:
Outline Amount: -1
make sure again that By Polygon is selected.
|The picture on the right will help if you don't have a dice around.
|6. Apply the MashSmooth modifier with Iteration:3.
Usually a value of 2 for the iteration is enough, but because the
geometry is simple and my computer supports 3 interations I can afford
a smoother result.
The highpoly model is done!
Before generating the normal map we need to unwrap the lowpoly model. Here are some things you need to know about unwraping:
- the highpoly model doesen't need to be unwraped
- you must be sure that there aren't polygons that are useing the same UV space
Because most of the time texture space is very important there is a way
to share texture space in a normal map. After you unwrap the model just
like you would do if you didn't want to make a normal map for it, with
polygons useing the same texture space, offset the UVs that are on top of other UVs with a value of 1 on the U or V
axis. This way they will use the texture from the next tile and the
normal map will be generated correctly because 3dsmax doesn't render to
texture UVs that are not in the UV Editors main box. After you generate
the normal map you can offset the UVs back with a value of -1.
There are also two important things that you have to consider while unwraping the low poly models:
Here you can find the benefits of making the highpoly model. If you
have a highpoly model you don't need to worry about seams and
streaching because max will take care of it. Most of the time it is
better to avoid streaching because at low resolution maps it will be
visible. The less streached the UVs are the more seams you will have.
You should only be concerned on the faces where you want to add detail
in Photoshop. It is very hard to make adjustments if the area that
needs to be modified has a seam in the middle of it.
|The unwraping of this model is very easy. Apply the Unwrap modifier and select Flatten Mapping from the Mapping menu. The UV's should look like this:
As you can see there are a lot of seams, but that is not a problem
because I don't need to paint in Photoshop on the edges, I only need to
make changes in the middle of the polygon, where the text is.
is a lot of wasted space there. We will fix that later. For some reason
the normal map that is generated by 3dsmax has to be a square. But
after we make the normal map at a rezolution of 512x512 we can resize
it to 512x256 and then readjust the UV's so that they fit with the new
All you have to do for now is move the face from the top and put it in the right corner. It should look like this:
Now that we unwraped our model collaps the stack because you don't need to make any more changes to the UVs and bring the Render2Texture dialog be pressing 0 on the keyboard or by going to the Render menu and selecting Render To Texture...
Here is what you need to know about this window:
|1. The value for the Pdding is the number of pixels that the rendered part spreads so that there are no black areas around the seam. The value of 2
that is the default is enough so you don't need to make changes here,
but make sure that this is checked and a value of 2 is entered.
2. In the Projection Mapping make sure that Enabled is checked and the LowPolyDice is selected and then click on the Pick button. The Add targets dialog will pop-up, from here select the HighPolyDice object and click Add. If the dialog is empty make sure that the HighPolyDice is unhiden. At this point you can see that a Projection modifier is applyed to the LowPolyDice. We will get back to this later.
3. Now click the Options... button and from the dialog that appears make sure that Use Cage (11.) is checked and then click on the Setup... button (10.). This will bring up another menu, from here, under Global SuperSampling you can select the option to render your normal map with antialiasing. The best setup for this is with a Max 2.5 Star. So just make sure that Enable Global Supersampler is checked and Max 2.5 is selected. If you don't want to render the normal map with antialiasing just check Disable all Samplers.
4. Most of the time you won't use Mapping Coordinates so leave this as it is. If you hit render and the texture that is renderd is black make sure that the Use Existing Channel is selected and the Channel
is with the value of 1. Don't hit render yet, you have to do a lot of
other changes before you'll get to this part. If you changed the
channel for the UVs make sure to make the changes here as well.
5. Click the Add... button and select NormalsMap from the dialog that apears and click Add Elements.
6. From the File Name and Type
select the path where you want the normal map to bo saved and select a
file type. I recomend a tga or a bmp file. Do not use a jpg files
because the compression will make a low quality normal map.
7. In the Target Map Slot
you can select where to add the normal map after it is beeing rendered.
I like to leave this on black because I prefer to add it myself in the Material Editor. If you think it will help your workflow select Bump.
8. Here you can select the size
for the normal map. Be sure that this will be the size of the final
texture because resizeing it will alter the quality. For this model
9. The render
button will render the normal map. If you hit the button now you will
see that the normal map looks strange. This is because the Cage is not ajusted.
Before you hit the Render button you need to ajust the Cage of the Projection. This is a very important part so be sure not to forget about it. To do this close the Render to Texture dialog (do not worry about the changes you just made because they will be saved) and click on the Projection modifier that is over the Editable Poly.
|The Projection modifier has the selection subobjects just like the EditPoly modifier but only the points can the ajusted with the gizmo.
Before you do anything to the cage make sure to check Shaded and then click Reset. The Shaded option is there to help you see where the cage intersets the highpoly model and Reset resets the Cage
to the form of the lowpoly model, this is a very good start for
ajusting the cage. If you have an iregular lowpoly model most of the
time you will move the points with the Move tool so
that the cage is not intersecting the highpoly model but if you have a
model like this one it is a lot more simple to use the Push option.
The cage has to be as close as possible to the highpoly model without intersecting it.
For this model the best way to adjust the cage is to Reset it, and then just enter the value of 0.1 in the Push Amount. After you hit Enter you will see that the Amount resets to 0. Don't worry about that, the changes are made to the cage.
After you are sure that the cage is properly set up bring the Render to Texture dialog back and hit Render.
You will see that a window apears that looks just like the one that
appears when you render useing the Render button but the image is
actually the UV layout. This window is usefull because you can see if
the cage intersects with the high poly. If it does you will see some
red areas. That means that in that region your cage intersects the
highpoly. If there are some red areas push the cage a little further.
Here is another tip: When you have a more complex geometry it is best
to go into the Vertex mode (Cage) and pull the verteces until the cage
looks ok. If you use the push slider you push all the verteces with the
same value, this can lead to some problems with complex geometry so
only use it when you know it will not intersesc other parts of the
highpoly. A good example would be the hand. If you use the push slider
the cage would intersect itself and with the highpoly between the
fingers. Here you will have to ajust the verteces of the cage by hand.
|The normal map should look like this:
Now we will apply the normal map to the model and see how it looks. To
do this open Photoshop and open the normal map from the location you
selected in the File Name and Type slot. Save the file as a .psd file
because you will make a lot of changes and saveing the file in another
format after every change is a waste of time. If you have a PSD file
with a lot of layers it is best to save in another format and use that
in max because you don't want to save the file while max is making a
backup, that will take a lot of time and is annoying.
|Now go to 3dsmax and open the Material Editor (M). Select a new slot and go to the Bump slot. First set the amount to 100 (the default is 30). Click on the None button and from the window that apperars select Normal Bump. Click the Normal slot and from the window that appears select Bitmap. Load the .psd file you just saved. There is one more thing you need to do to see the normal map in the viewport. In the Material Editor check the DX Display of Standard Material in the DirectX Manager section.
|As you can see there is another slot there, the Additional Bump.
This is usefull if you want to add extra bump to the model, but it will
be visible only when you render it, not in the viewport.
|Apply the material to the low poly model and click the Show Map in Viewport icon to see the material. If all goes well you should have the low poly material look almost like the high poly.
To see the results better create an Omni light and move it around the model to see how the light reacts to it.
Because all is set up now you'll just need to work in Photoshop to make
the changes to the normal map and come back to 3dsmax just to see the
Before we continue with this tutorial you need the nVidia plugin for Photoshop to make the grayscale layers in normal map layers. To do this go to this link
and download the nVidia plugin. It is very easy to instal. After
instaling it you need to restart Photoshop. If you did this we can
start adding details to the normal map. Open Photoshop again and load
the PSD file.
|To add detail to the normal map make another layer, select the Text Tool, change the color of the text to black and write Las Vegas on it. Click the Create warped text button and select the Arc Style. Enter the value +80 for Bend
Make another layer and repeat the process but this time enter the text "Casino" with a Bend value of -60.
Align them to look like in the picture on the right.
Make just the text layers visible and after that make a new layer. Use Merge Visible (Shift+Ctrl+Alt+E) to merge the text on a single layer. With that new layer selected go to the Filter menu and under NVIDIA Tools select NormalMapFilter...
Here is what you need to know about the NVIDIA Normal Map Filter:
Invert X/Y: If the detail you just added looks inverted check this
This is for the depth of the detail. Most of the time you should test
diferent values untill it looks right. For the this text enter a value
of 4. If you think it is too much enter a smaller value.
If this is selected the plugin takes the value of all the channels
(RGB), this is what you want most of the time. Another option is to
select Normalize Only, this will treat the map as if
it was a normal map. This option is for when you have a normal map and
you work directly on it, not on other layers.
Set to 1.0: should alwayes be checked
3D Preview: helps seeing in real time how the normal map will look like.
|Now click Ok
to generate the normal map information for the text. The layer should
look like the one on the right. From this layer you only need the text,
so it is better to delete the rest of the layer. The neutral color for the normal map is R:128 G:128 B:255 so select the Magic Wand Tool enter the value 0 for the Tolerance and be sure that Anti-alias, Contiguous and Sample All Layer are unchecked. Select the neutral color and press delete.
|The last thing you need to do is put the layer with the text on Overlay.
Be sure to do this with all the layers added to the normal map. If you
don't you could change some parts of the map that you don't want to be
changed. Save the map and see how it looks in the viewport.
|Duplicate the normal map and work on it to make a diffuse map and a specular map. It is easier to work on the normal map because you can see where to add the detail. It also helps to put a wire on the top layer if the model is complex. Be sure to put the specular map in the Specular Color and Specular Level slot. If you don't put it in both of them it won't work. The specular map should affect the specular color of the model and the power of it.
As this point you can optimize the texture by reducing it to 512x256, just like I said earlier. To do this Crop the area of the texture that is used be the model and then resize it to 512x256.
Only do this when the resizeing will not affect the quality of the
texture in a way that will make this obvious. This dice is an example
where you can do this if the texture size is important, the space used
is 512x343 so if you do a little math you will see that a 87 pixel
streach is more acceptable then a 169 pixel waste. By making this
texture 512x256 you reduce it by half. After making the changes to all
the textures (diffuse, specular and normal map) go to 3dsmax and unwrap
the model for the new texture. This part is also very easy, all you
need to do is select all the UVs and scale them so that they fit
perfectly inside the UV box.
Now let's go back to 3dsmax to make a nice render.
I always use the same set up for the final scene and I find this to work very nice for me.
There are 3 Omni light there as you ca see. One on the top that lights
the entire scene, it has Shadows and a Multiplier of 1.2. The other 2
omnis in the back have a multiplier of 0.5 and don't cast Shadows. To
make the nice blending between the background and the plane on which
the dices are, make a plane and put a Matte/Shadow on it. All you need
to do next is change the color of the background and hit render.
Thanks for reading this, I hope it helpes. Please feel free to contact me if you have any question.
If you want to see more of my work visit my site at www.andrei313.com.