根据高度图计算出的法线向量在哪个坐标系上?

时间:2019-06-05 13:27:43

标签: opengl textures shader heightmap

我已经阅读了很多有关高度图和法线贴图的材料,并且有很多问题:

我们可以从heightmap生成法线贴图:

如果我们在S和T方向:

S(i,j)= <1,0,aH(i+1,j)−aH(i−1,j)>
T(i,j)= <0,1,aH(i,j+1)−aH(i,j−1)>

然后我们可以计算正常值N:

N(i,j)= (S(i,j) x T(i,j))normalize()

然后将(Nx,Ny,Nz)映射到(r,g,b),这是从高度图生成法线贴图的方法。

我尝试了几个高度图和漫反射贴图(将漫反射转换为灰度作为高度贴图)。简单的可以提供相对良好的法线贴图。一旦图像变得更加复杂,结果将非常糟糕。

我的问题是:

  • 此法向矢量在哪个坐标系中?

    我觉得它只是在物体表面,并指向法线。这就是所谓的“ TBN”空间吗?

    但是这里没有T和B信息。

  • 如果t是切线空间,那么对于不同的三角形,我们将具有不同的t,那么不同的三角形会具有不同的T / B / N向量吗?

  • 如何从法线图计算TBN?我有些困惑,无法阅读这本书,并查看此矩阵:

    s1,t1 = < s1 − s0,t1 − t0 >
    s2,t2 = < s2 − s0,t2 − t0 >
    
       | Tx Ty Tz |              | s1 t1 | | Q1x Q1y Q1z |
       | Bx By Bz | = inverse of | s2 t2 | | Q2x Q2y Q2z |
    

    这个s2和s1代表什么,我知道(Q1x Q1y Q1z),它们是法线图的(x,y,z)也是(r,g,b)值,s2和s1代表(x,y)位置,法线图上的像素位置?

    enter image description here

0 个答案:

没有答案