纹理的WebGL问题(奇怪的图形故障和映射问题)

时间:2014-07-08 19:15:27

标签: javascript opengl-es textures webgl blender

我的问题是,当使用WebGL并尝试读取OBJ模型时,纹理映射都很复杂。这是它在Blender中的样子。

Blender UV Mapped

当我这样说时,我可能会完全离开,但我相信在右边的窗口,带有红点的小白圈表示UV坐标(0,0),这意味着左边和/或下面的其他坐标包含负数。

以下是WebGL中输出的内容

WebGL Output

映射完全关闭(我尝试过钳制并重复无效)并且中间有一些奇怪的噪音。所以我的问题是,如何从Blender获得0到1之间的正确UV坐标,以及消除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);

更新 不保持顶点顺序时:

Better results

1 个答案:

答案 0 :(得分:1)

通过确保我以(s,t)而不是(x,y,z)的形式抓取UV坐标来修复。通过以2个组(就像我应该做的那样)而不是3个组来抓取单个坐标,我能够每次都获得完美贴图的纹理坐标。