GIMP: Quality Normal Maps
Tools used in this tutorial
Required
|
Introduction[edit | edit source]
This tutorial is the process used to create decent looking normal maps for your models using GIMP. Normal maps created using this process are not ideal, but will usually make a fairly nice normal map for most of your needs. This article's purpose is to provide a easy to follow step-by-step instruction to create normal maps.
- For more information on normal maps, go here:
- For more information on GIMP, go here:
Getting Started[edit | edit source]
Download and install the following applications if you have not done so already.
- The latest version of GIMP
- The GIMP DDS PlugIn
- The GIMP Normal Map Plugin
- One of the many BSA unpackers (more information here)
- DDS Converter 2
Loading Your Image[edit | edit source]
After downloading and installing all the applications you are now ready to begin. Let’s get started!
First, you need to have a texture that you plan on using for a normal map. While normally this would be a custom texture of some sort, but for the purposes of this tutorial I will be using a pre-made texture, that already has a normal map.
- Open up your BSA extracting software (personally I prefer the one packaged with Oblivion Mod Manager), and click the "Open" button. Browse to your Oblivion folder, and choose "Oblivion - Textures - Compressed.bsa"
- Once the BSA file is loaded, make sure no files are selected/checked, and then choose one texture to use as our base for the normal map. This can be any texture that does not end in "_n" or "_g". (Ex. "textures\armor\imperialwatch\m\boots.dds" not "textures\armor\imperialwatch\m\boots_n.dds")
- Click "Extract" and choose a destination (such as your desktop). You have now chosen a texture to use as a base for a normal map.
We will now need to load this image in GIMP, our image editor.
- Load GIMP by double clicking the desktop link or clicking Start\All Programs\GIMP\GIMP 2
- Click File\Open (CTRL+O), and choose the dds file that you extracted.
- You should be prompted with a dialog asking you if you want to load mipmaps, and if you want this dialog to be shown. Deselect "load mipmaps", and click "ok".
- The image you chose should appear in the image window. If it is only black and white, or mostly blue, then most likely you chose a glow or normal map, respectively, and you will need to extract a different image from the BSA file (again, one that does not end in "_g" or "_n"). If it is in full color, please proceed.
Now that you have your image open, you will need to make sure your image has been flattened, and run the normal map filter.
- Make sure that either you have nothing selected, or that you have the entire image selected. Selecting only parts of the image may cause problems.
- Go to Layers>>Transparency and click on "Remove Alpha Channel". If this option is not available, then skip this step, as the image you loaded already does not have an alpha channel.
- Go to Filters>>Map and select "Normalmap"
- You should get a dialog that looks like the following:
All these settings are correct, except possibly the wrap option (see appendix)
Using the settings from the image, you can start making modifications from there. For the most part, the only other setting you should change is the scale, which often is too low to be noticeable at "1.00000". I generally go with a scale between five and fifteen to get a noticeable effect. To get an idea of what your map will look like in-game, you can click the "3D Preview" button, and you should be able to rotate the plane in the 3D window by left-clicking and dragging your cursor, to see the effects light will have on your texture. The shine of your surface is not apparent in this preview, and is ignored, so do not worry if your wood appears shiny in the preview.
When you are satisfied with the level of detail, exit the 3D preview and click "OK" in the Normalmap dialog.
You have now created the "directional" part of your normal map, but the other part of your normal map is shininess. This is determined by the transparency of the parts of the normal map (or the "Alpha Channel" as it is technically called). The more opaque a pixel is, the shinier it will be in-game, and likewise the more transparent a pixel is, the less shiny it will be.
First, go to Layers>>Transparency, and select "Add Alpha Channel". Next, select areas of your normal map that should have less shine to them, and then click on the "Eraser" tool. Under the settings, make sure the opacity is not set to 100%, as this will also get rid of your directional data. I repeat, make sure the opacity setting is below 100%. A value of 90% is usually pretty good for rough woods, and a value of 85% for shinier woods. Material such as leather should be set even higher (higher opacity on the eraser will make pixels more transparent, and likewise less shiny). If you click and drag to erase all of the pixels you have selected at once, you should not run into any problems, however if you let go of the left mouse button, and then continue erasing, you may erase the pixels completely and therefore get rid of your directional data, which will ultimately make your normal map useless. An easy way to check this is by looking at the "Channels" dialog, and making sure there is no solid black in the color channels (not the alpha channel). If there is solid black, you should undo your erasing and start over, being careful not to let go of the left mouse button as you erase. You may still see a faint ghost-image remaining where you erase, and this is a good thing, however do not be worried if you do not, it just means the opacity of the eraser was rather high.
A value above 95% on the eraser may eliminate some directional data, although I am not sure why, so be careful.
Once you have done that, you should be essentially done! There is still one more thing that could be done to your normal map though, but is not necessary. If there are many sharp edges on the normal map (lots of high contrast areas or lines), then you may want to run a blur filter over it to smooth things out a bit. You can do this by going to Filter>>Blur and selecting "Blur".
Now that you have finished your normal map, all that is left to do is save it.
While you can technically save your image to a dds from within GIMP, I would advise against it as it tends to make buggy/low quality textures for Oblivion. Instead, I would save it to either a jpeg or a png file. For a normal map, you must save it to an image that supports an alpha channel. You can use tga, but I prefer png because it is a widely used image format with very good lossless compression, as oppose to tga which is uncompressed (and tends to make very large files). Make sure that when you are saving your image, the name is the same as the base texture (in this case "boots.png"), but add a "_n" to the end of the name ("boots_n.png").
Since Oblivion will only read dds image files, you will need to use a converter to convert your png or tga file to a dds file. In this case I will assume you are using DDS Converter 2.
- Open DDS Converter 2, and browse to choose your png or tga file (in this case boots_n.png)
- Click on the image in the window, and click on "Options..."
- In the options dialog, you can leave all the settings at default (refer to this image if necessary), except make sure that "DXT3", "Build mipmaps", and "Save Alpha" are all checked/selected. If this were a normal texture (not a normal map), then we would want DXT1a without alpha checked.
- Once your options are set, just click "OK", and then save your image.
- Your result should be a dds file called "boots_n.dds" (or "yourTextureNameHere_n.dds"), and should be placed in the same directory as your base texture ("boots.dds" or "yourTextureNameHere.dds").
Congratulations! You have successfully made a normal map. Check it out in the game to see your work come to life.
Appendix[edit | edit source]
You can create deeper or shallower textures in the Normalmap Window by adjusting the various parameters. I suggest you play around with them to see what they do. Below is a brief explanation of how they will effect your Normal Map.
Filters:
- 4 Sample – Very grainy. Use for rock or other rough textures.
- 3x3 – Grainy. Use for scratched metals or other rough textures.
- 5x5 – Smooth. Use for smooth metals and wood.
- 7x7 – Smoother. Use for cloth and furniture.
- 9x9 – Very Smooth. – Use for polished metal and gems.
- Sobel – Not used.
- Prewitt – Not used.
Minimum Z: The lowest texture height. Increase this to set the minimum height on the Normal Map.
Scale: This is the biggest factor in creating texture depth. 1-2 is smooth, 5-8 medium, 10 – 15 rough.
Options:
- Wrap – Might need to be checked for textures to be applied to meshes, although I have never had a problem not doing so.
- Invert X/Invert Y – These invert the shading on the specified axis. Selecting both of these will fix a texture that seems to be inside out.
- Swap RGB – Not used on Alpha Channels.