Well there are two ways of creating a normal map, like the way Carmack described ..
First way is using an image like a photo, but as i said, this method is not the best, due to fact that an image only provides information about hight (but not really about angle) and also tends to blur out at the "high-edges".
There is no best solution but if i use a greyscale image, its a mix of converted photo an manual fixed elements.
I suggest NOT to use converted nmaps from 2d images , just convert them for testing or preview purpose, because it more efficient to use the greyscaled image.
A greyscaled image is much smaller than the 24 bit rgb nmap, the mat system offers to use the bumpmap (even in addition with real nmap)
The second way is to use a high res geometry as a reference for the nmap. This will give very great results but requires a lot of work.
I prefer this way for both "surfacetypes": flat and model
Flat means that it will be used for a flat surface like a wall or other levelgeometry.
Model is more complicate, it is the surface of a complex mesh like a weapon or a playermodel .. this requires the most work, and a good modeling skill.
do you really think that it would be productive to create grass or gravel based geometry solely for the purpose of creating a normal map?
No but it also makes no real sense to create a nmap for a flat grass surface. Normalmaps are nice but not the absolut key for good gfx.
Not all surfaces are suited to have nmaps..
Grass for example should not be a flat surface but made of view-aligned small patches textured with a alpha mapped texture
(but the grasstexture could be used for the floor)
Nmaps also really benefits from reflections, so specular surfaces are more suited with nmaps (metal, wet materials ..)
Speculars can be created by a light or a reflection cubemap ( very often used in HL2 due to better performance reasons)
It would be nice if you would write a tutorial, or quick "how-to", on your techniques. Your images are fantastic. I know a lot of people who would benefit.
Thanks, but what techniqe ? you mean creating the nmaps ? I planned to write tutorials, so dont worry, but this will take some time. And the first version will be in german on my site ^^ But i will offer an english version
Here is a short description:
For flat surfaces:
I start creating a plane an project the diffuse texture or reference photo onto it.
Then i duplicate the plane and start to increase mesh details, adding all surface details and sharp angles ..
After finishing i could also add a bumpmap onto the highres for very small details like wrinkels or cracks...
At the end the high poly mesh is used as reference to calculate the nmap of the low poly plane.
Sometimes i tweak the map in photoshop (removing seams, adding other details)
Thats it
The other way is more complex but same principle. Creating a highresmesh and than building a lowpoly out of it, or the other way (lowpoly first and then highres).
But you can ask more if you need detailed infos