2014-07-08 42 views
1

我的問題是,當使用WebGL並嘗試讀取OBJ模型時,紋理映射都是棘手的。這是它在Blender中的樣子。紋理的WebGL問題(奇怪的圖形故障和映射問題)

Blender UV Mapped

我可能會完全關閉,當我說這一點,但我相信,在右邊的窗口上,那個小白色圓形紅色點代表UV座標爲(0,0),這將意味着其他座標左側和/或下側包含一個負數。

這裏是輸出是WebGL的

WebGL Output

的映射是完全關閉(我曾嘗試夾緊和重複無濟於事)什麼,有中間的一些奇怪的聲音。所以我的問題是,如何從Blender獲得正確的UV座標,這些座標介於0和1之間,以及擺脫WebGL中的噪音。

這裏是紋理加載方法看起來質感傳遞給WebGL的在抽獎循環渲染

gl.bindTexture(gl.TEXTURE_2D, texture); 
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.image); 
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); 
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); 
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); 
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST); 
gl.generateMipmap(gl.TEXTURE_2D); 
gl.bindTexture(gl.TEXTURE_2D, null); 

UPDATE之前 當不守頂點順序:

Better results

+0

製作一個表面並添加簡單的紋理貼圖(生成座標),然後將其導出到obj並用文本編輯器打開。這裏是OBJ文件結構http://en.wikipedia.org/wiki/Wavefront_.obj_file確保它們正確導出。 – JAre

回答

1

通過確保我以(s,t)而不是(x,y,z)的形式抓取UV座標來修正此問題。通過2個組的座標(像我應該做的那樣)抓取單個座標而不是3個座標組,我能夠獲得每次完美地圖的紋理座標。