Time for another quick look at the new SL Materials Project viewer and another item from my personal toolbox: xNormal.
I think it’s easy to get the impression that using normal maps and specular maps is going to be just for the high-end users of 3D packages but nothing could be further from the truth. It’s possible to get some nice effects from the materials system without even touching something like Lightwave or Blender.
In this post I’m going to create a set of maps that can be applied to a prim to give its surface a more interesting look than just a single flat texture could. The example I’m using is a numeric keypad such as you’d find on a security door or safe. It’s something that you wouldn’t normally want to build in a complete mesh because it’s really not all that three dimensional, but a flat texture looks pretty boring.
To begin with I created a basic texture with the colours on it – this is called the diffuse texture:
As you can see, that’s very simple and, if you just apply that to the face of a prim it’s not going to look very interesting.
To jazz this up a bit it’s going to take a specular texture and a normal map.
I created the keypad texture in Adobe Illustrator, but a free package like Inkscape would have done just as well. Because it’s a vector file in separate layers I could go back and recolour all the parts to create some maps for different purposes.
The first map I created was a specular map. This controls how much light the surface will bounce back, controlling where you get those bright, glossy highlights. I decided to make the background not shiny at all (black), the keypad surround a bit shiny (dark grey), the keys pretty shiny (light grey) and the numbers very shiny (white):
When I apply this map to the example prim it has an immediate effect:
Even if there’s just the default wooden texture on the prim you can see that there’s something going on on that surface by the differential shine.
This still isn’t all that interesting though – to get some really interesting effects it’s time to tangle with a normal map.
Normal maps aren’t particularly human-friendly – it’s hard to just paint on one. There is something that sort of bridges the gap, though: The bump map. Bump maps are greyscale images that represent the bumps on a surface – the whiter the image is at any point the higher the surface is supposed to be. Now, this, you can paint and create easily.
I’ve recoloured the original number pad image again. The brighter the colour, the higher the surface, so you can see that the keypad has a raised (white) edge, each key has a raised (white) edge and each number is inset into the key surface (darker grey).
All this is fine, but Second Life doesn’t use bump maps! Luckily there’s a little piece of free software called xNormal (http://www.xnormal.net) that can, among other things, turn a nice, easy-to-work-with bump map into a normal map. Just what we need.
I should mention that the user interface of xNormal takes a little getting used to…
Under its Tools section there’s a “Height Map to Normal Map” tool (some people call ’em Bump Maps, some people call ’em Height Maps. To-may-to, To-mah-to).
The normal map doesn’t look like all that much to the naked eye – that’s why it’s easier to work with a bump map and then convert it to normals later.
When this normal map is uploaded to Second Life and applied to the test prim the effects are quite dramatic:
The shiny keypad appears quite clearly even though there’s only the default wood texture applied to the prim.
All it needs now is the original diffuse texture to pull it all together:
Now the surface has some life – the keys and numbers have some dimension to them and the specular map gives differential shine across the different parts.
It’s clear that all this stuff only enhances a surface – it’s no replacement for well built meshes or prim sets, but there’s a lot of scope there for work that can take a model from mediocre to spectacular and, as I’ve shown in this (very long) post, you don’t need to be an expert with hyper-complex 3D apps to get some use from normal and specular maps!