重心坐标纹理贴图



我想用正确的透视图映射纹理以进行3D渲染。我使用重心坐标来定位三角形表面上的点。简单的仿射变换给了我标准的、看起来很奇怪的结果。这是我所做的,以纠正我的观点,但它似乎只会使失真更大:

三个三角形顶点v1 v2 v3

顶点坐标为v.x v.y v.z

纹理坐标为v.uv.v

与顶点对应的重心坐标为b1 b2 b3

我正在尝试获得正确的纹理坐标U和V

z=b1/v1.z+b2/v2.z+b3/v3.z

U=(b1*v1.U/v1.z+b2*v2.U/v2.z+b3*v3.U/v3.z)/z

V=(b1*v1.V/v1.z+b2*v2.V/v2.z+b3*v3.V/v3.z)/z

这应该有效,不是吗?为什么不起作用?

编辑:这个页面上的回复看起来很有用,但我不确定w坐标是什么。也许有人可以解释一下,这也可能解决我的问题。http://www.gamedev.net/topic/593669-perspective-correct-barycentric-coordinates/

注意:一开始我的标签都错了。现在已经解决了。

好吧,这个问题我自己解决了。我正在用屏幕空间中的z坐标进行分割。解决方法是除以齐次w坐标。

嗯,这花了一段时间才弄清楚。

相关内容

  • 没有找到相关文章

最新更新