Modding, Mission Design, and Coding > Modding Tutorials

About normal maps

(1/11) > >>

TrashMan:
I've been meaning to ask this.

I grabbed CrazyBump and decided to make normal maps for some of my fighters. Luckily, i have Photoshops files for hte maps, so I could easily remove all the warning signs, paint jobs, stripes and insignias, leaving just the hull. I used that image to generate a normal map and I put it in.
Tested with one of the latest FSO builds....but nothing happens.


I noticed that my normal map seems to be in bluish-purplish colors while the ones used by other ships are green. Am I doing something wrong here?

Herra Tohtori:

--- Quote from: TrashMan on August 17, 2008, 06:21:24 am ---I've been meaning to ask this.

I grabbed CrazyBump and decided to make normal maps for some of my fighters. Luckily, i have Photoshops files for hte maps, so I could easily remove all the warning signs, paint jobs, stripes and insignias, leaving just the hull. I used that image to generate a normal map and I put it in.
Tested with one of the latest FSO builds....but nothing happens.


I noticed that my normal map seems to be in bluish-purplish colors while the ones used by other ships are green. Am I doing something wrong here?

--- End quote ---

Yes. FS2_Open normal maps require a normal map style DDS file to work, which means that the game reads alpha channel and green channel for the x/y slope information. There are two ways of doing this:

1. Convert the purplish TGA file into DXT5nm format. This will work if your Photoshop DDS plugin has this option, or if you use nvDXT like I do (gives you command line utility to convert files to different kinds of DDS files with a lot more options than most plugins).

With nvDXT, the appropriate command would be

>nvdxt -file normalmap.tga -dxt5nm -quality_highest -cubic

Basically, -file specifies the file to be converted, -dxt5nm sets the file to be converted to dxt5nm format, -quality_highest supposedly minimizes quality loss, and -cubic sets the mip mapping filtering to use cubic resize filter, which to my experience gives perhaps the best results for keeping the normal map strength in the mipmaps as well, which basically affects how close the normals will become noticeable in the game. You can also manually edit the mip maps if your DDS management software (photoshop plugin most likely) can save custom mipmaps - basically you would want to increase the contrast of your normal maps' mipmaps slightly for them to be observable from distance, but don't go overboard with that... :nervous:


2. Manually managing the colour/alpha channels into correct order, then saving as normal DDS file (I prefer this, because it lets me able to use uncompressed DDS format if I want or need to...) To accomplish this, you need to move the red channel to alpha channel and copy green channel to red and blue channels - stricktly speaking I'm not sure if copying green to red and blue is necessary, but I prefer gray to green in my normal maps and AFAIK it doesn't change anything as far as memory usage or file sizes are concerned.

Then you need to save the channel-managed file as TGA and then convert it to a DDS file with full 8-bit alpha channel, which leaves you two options - DXT5 or uncompressed u8888 format. Basically, with u8888 you get rid of any and all compression artefacts, but with DXT5 compression you get a lot better memory efficiency, and usually the high quality compression flag in nvDXT produces a sufficient quality normal map.


As far as making the normal maps goes - a few tips that I noticed beneficial to my work. First, I avoid CrazyBump like a plague and make my normal maps from hand-crafted height maps in GIMP with the Normalmap plugin (gives unlimited control as opposed to CrazyBump's arbitrarily set sliders that supposedly adjust the strength of the normal map generated...), so these might not apply to you... but anyway.

If you can, make the original normal map in 4096^2 resolution, and scale it down to 1024^2. This makes it a lot easier to make thin diagonal lines between panels (and other detail as well) accurate but strong and minimally aliased at the same time. With lower resolutions, you are forced to use a thin drawing tool which either makes the line rather faint, or visibly aliases the diagonal lines. Also when you convert to normal map, small errors will often surface from the height map not being quite correctly made, but resizing to quarter size tends to smoothen all rough edges to what you would actually want them to be.

Also, when you have made the normal map out of height map, the depth of the detail in normal map is easily adjusted by changing the contrast. Lines require a pretty sharp contrast, surface detail not so much, so you might want tomake the lines and surface detail in separate layers, then make #7f7fff into alpha for the surface detail and place it over the lines of the lower layer.

TrashMan:
WOHOOO!

Thanks, that did  it!

Herra Tohtori:

--- Quote from: TrashMan on August 17, 2008, 07:34:16 am ---WOHOOO!

Thanks, that did  it!


--- End quote ---


Great. :)

Now you just need to get the strength of the normal map balanced to a level where the depth of the seam lines is sufficient to notice. The profile of the map looks good (though judging that is difficult with just one screenshot to look at - hint hint :P), but I think it would benefit from increased contrast to increase the depth of the lines on the hull.

Hellstryker:
I hate image shack, it always gives me a bunch of popups when I click on a link :\
*seconds what herra said*

Navigation

[0] Message Index

[#] Next page

Go to full version