2015-12-18 49 views
0

我想生成被高度貼圖置換的頂點的法線。我有相應的法線貼圖,但是我看過的示例顯示法線矢量等於法線貼圖上像素的RGB值。但是這意味着當一些向量應該具有負值時,所有的法向向量都是正向的。你如何使用法線貼圖來計算這些值?計算頂點法線fron法線貼圖

謝謝!

回答

0

你剛纔範圍轉移到<-1.0,+1.0>所以

  1. 如果你有在範圍內的顏色通道<0.0,1.0>

    // a) 
    nx=(2.0*r)-1.0 
    ny=(2.0*g)-1.0 
    nz=(2.0*b)-1.0 
    

    或:

    // b) 
    nx=2.0*(r-0.5) 
    ny=2.0*(g-0.5) 
    nz=2.0*(b-0.5) 
    
  2. 如果你去每個通道噸8位則範圍是<0,255>

    nx=(float(r)/127.5)-1.0 
    ny=(float(g)/127.5)-1.0 
    nz=(float(b)/127.5)-1.0 
    

如果看一下正常地圖圖像你應該看到偏藍的顏色,因爲中性normal=(0,0,1)從平坦面朝上被編碼爲color=(r=0.5,g=0.5,b=1.0)像這裏:

normal

也看看這裏:Normal mapping gone horribly wrong凡正常從這種紋理計算在GLSL通過#1B方法:

const vec4 v05=vec4(0.5,0.5,0.5,0.5); 
texture2D(txr_normal,pixel_txr.st)-v05)*2.0; 

另外的(r,g,b)可以被映射到(nz,ny,nx)代替(nx,ny,nz)在這種情況下,只是交換r,b(法線圖是紅色,然後肥胖型代替)