# There must be a trick???!!!

I’m doing per pixel bup mapping using pertubed normal map. I calculate tangent-space as follows:

For a planar polygon:
Calculate the coefficients of
A1x + B1s + C1t + D1 = 0 —> I
A2y + B2s + C2t + D2 = 0 —> II
A3z + B3s + C3t + D3 = 0 —> III
(NOTE: I’m not solving simultaneous system)

I evaluate cross and dot product: (for eq. I)
| i j k |
| x1 - x0 s1 - s0 t1 - t0 |
| x2 - x0 s2 - s0 t2 - t0 |

and dot the result vector by
[(x - x0), (s - s0), (t - t0)]

The same for for eq. II:

| i j k |
| y1 - y0 s1 - s0 t1 - t0 |
| y2 - y0 s2 - s0 t2 - t0 |

and dot the result vector by
[(y - y0), (s - s0), (t - t0)]

The same for for eq. III:

| i j k |
| z1 - z0 s1 - s0 t1 - t0 |
| z2 - z0 s2 - s0 t2 - t0 |

and dot the result vector by
[(z - z0), (s - s0), (t - t0)]

After I have the all the cooeficinets, I drive the vectors [T B N] as follows:

T = [dx/ds dy/ds dz/ds]
= [-B1/A -B2/A -B3/A] since A does not change for all the equations.

N = T x [dx/dt dy/dt dz/dt]

B = N x T

Finally I normalize T, B, and N

My normal map is generated by Adobe Photoshop NVIDIA normalmap plugin.

The light vector is multiplied by Tangent-Space:

[L.x L.y L.z]*[T B N]

I Normalize the resultant vector by a cube-map.

What is wrong with my algorithm that it does not refelct correct results?

Your help will be apreciated.

Perhaps compare your code with that at
www.geocities.com/sdtmezz

(Click calculation source).

Offhand, I see that you are computing a few dot product for no reason and you are assigning the tangent wrongly. It is B that does not change for all the calculations, and it is A that DOES change (because A is your difference in x/y/z).

Unless you’ve chosen to compute the space a different way.

Also, you may be victim of an inverted green channel in the normal map - I’ve heard that nVidia’s normal map generator does this (but I’ve not experienced it first hand, so don’t hold me to it).

-Mezz

Is normal map construction affects the results, somehow related to tangent-space?

I’m sorry. But I had to try a normal map generated by NVIDIA plugin in your demo, and it worked fine. So the problem lies under my tangent-space calculations.

The gray scale dot product still looks very dark and incorrect although I’ve changed my tangent-space calculations to that of your demos’ source.
Thanks.

What do you mean by [Lx Ly Lx]x[T B N] … maybe your doing it the wrong way ?