我的问题是,当使用WebGL并尝试读取OBJ模型时,纹理映射都很复杂。这是它在Blender中的样子。
当我这样说时,我可能会完全离开,但我相信在右边的窗口,带有红点的小白圈表示UV坐标(0,0),这意味着左边和/或下面的其他坐标包含负数。
以下是WebGL中输出的内容
映射完全关闭(我尝试过钳制并重复无效)并且中间有一些奇怪的噪音。所以我的问题是,如何从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);
更新 不保持顶点顺序时:
答案 0 :(得分:1)
通过确保我以(s,t)而不是(x,y,z)的形式抓取UV坐标来修复。通过以2个组(就像我应该做的那样)而不是3个组来抓取单个坐标,我能够每次都获得完美贴图的纹理坐标。