Welcome to the Poser Forum
Poser F.A.Q (Updated: 2016 Nov 29 4:50 pm)
Subject: Resolving bump map confusion.AntoniaTiger opened this issue on Mar 11, 2008 · 9 posts
I don't know if it continues in Poser 7, but Poser 5 and Poser 6 have provision for two different sorts of Bump Map. Bump is a greyscale, and works in the firefly render engine. Gradient Bump, at least according to the manual, is a compatibility mode which allows use of P4 bumpmaps when rendering the the P4 render engine. But what do bump maps actually do? I've seen various descriptions, but some of those descriptions seem broken. For instance, changing the direction of the normal. You have the normal vector, a direction in 3D space, and to shift that you need two numbers, whether polar coordinates or local cartesian. And a greyscale only gives you one. So is there a more technical description, preferably not depending on math equations, which can tell us what actually happens. (And why do people just greyscale the texture and use that as a bumpmap?)
Quote - For instance, changing the direction of the normal. You have the normal vector, a direction in 3D space, and to shift that you need two numbers, whether polar coordinates or local cartesian. And a greyscale only gives you one.
They don't change the normal directly. Instead the image you load for the bump acts as a height map, ie the renderer uses the 2D pixel field and calculates slopes between adjacent pixels. This gives you a vector that you can use to reproduce the same 'bump' in the set of normals of your surface. You control the amount of bump by controlling the magnitude of this vector.
As for gradient bump, that's just poser's way of doing normal maps. Normal maps are colored vector maps, with each pixel (RGB) storing the vector (xyz) of a normal. The renderer then just reads the normal from the file and pastes it on the surface. This way you get the same result as a bump but with far less calculation. The limitation being that since the vector is fixed, you cant change the amount of bumpiness easily.
People greyscale textures because people are lazy, even though the map you get this way is often wrong/inverted.
Gradient Bump is intended to take the old Poser 3 / 4 style .BUM maps. I don't believe these are quite the same as normal maps, since normal mapping requires three colour channels and .BUMs have only two. The blue channel is unused; or rather, it produces unusual results if you hack one to add stuff to it. There is a lot of confusion over bump maps. It is basically a "perturbation" in the surface normal, which gives the illusion of surface features; or to put it another way, it's affecting the way the lighting hits the surface. Any more detail would probably require equations, and having spent last evening trying to help my son with his maths homework, I feel unwilling to go there.
Quote - And why do people just greyscale the texture and use that as a bumpmap?
I deleted my first answer since it would have required a language advisory. :) Possible answers are: - Because "everybody else" does it, so it must be right. - Because it doesn't look unreasonable, in some circumstances, so it must be right to do it all the time. - Because they want to fill up your disk with useless files. :) ----- Edited to say: Bah. ghonma typed faster than I did. :P
Quote - I don't believe these are quite the same as normal maps, since normal mapping requires three colour channels and .BUMs have only two. The blue channel is unused; or rather, it produces unusual results if you hack one to add stuff to it.
I suppose they are local normal maps, ie instead of storing the full 3D normal they just store the delta normal in local space. In which case you wouldn't need the 'z' component cause its not as if you can move a normal perpendicular to the surface.
The difference between regular bump and gradient bumps is that the later are generated according to special light conditions and thus will not really reflect your scene's current lighting. P4 was kind of faking real bump rendering using those precalculated gradient bumps.Are you tired of Poser's library interface? Want to load your Content into Carrara / DAZ Studio / Poser via the same interface? Search/filter it? Then check out the latest Advanced Library beta!
Or are you more interested in optimizing your posing experience in Poser 8? Check out my freestuff!
Quote - so what's the proper way to make a bumpmap?
IMO if you do want to base it on your color map, you should separate it out into various things like pores, pimples, wrinkles etc. Then you correct/invert them to the right values of bump, layer them and then test and adjust the layers till it looks ok in a render.
Or you can use only the fine wrinkles and pores of your color map as both of those are easily separated with the high pass filter. The rest of the larger details can be painted by hand. If it's not a human or you dont have a lot of refs to work from you can generate a basic noise/pore map in your texturing tool and do everything else by hand.
All depends on how much time/effort/quality you can afford of course, but you will generally get a much better result then just taking a texture and desat-ing it.
Quote - Gradient Bump is intended to take the old Poser 3 / 4 style .BUM maps. I don't believe these are quite the same as normal maps, since normal mapping requires three colour channels and .BUMs have only two.
The blue channel in a normal map is redundant. Since normals are 'normalized' vectors of a length of 1, you can derive the absolute value of the third coordinate from the other two, and it is positive by definition. So blue = sqrt(1 - redred + greengreen). The reason the third coordinate is saved in a normal map is because calculating it would be too expensive for real-time use like in games (which is the main application for normal maps - if you do quality rendering, you'll get much better results from displacement maps).
The main difference between normal maps and gradient maps is how they're being used - gradient bumps are being added to the existing surface normal where normal maps completely replace them.