重心坐标纹理映射

时间:2012-09-10 21:57:06

标签: rendering coordinates textures rasterizing

我想用正确的透视图来映射纹理以进行3D渲染。我使用重心坐标来定位三角形面上的点。简单的仿射变换给了我标准的,奇怪的结果。这就是我为纠正自己的观点而采取的措施,但它似乎只是使失真更大:

三个三角形顶点v1 v2 v3

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

纹理坐标为v_.u v_.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/

注意:我的标签最初都是错的。现在已经修复了。

1 个答案:

答案 0 :(得分:1)

好的,我自己设法解决这个问题。我在屏幕空间中除以z坐标。解决方案是用均匀的w坐标除以。

嗯,这需要一段时间来弄明白。