1

我想用正确的视角映射纹理以进行 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/

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

4

1 回答 1

1

好的,我确实设法自己解决了这个问题。我除以屏幕空间中的 z 坐标。解决方案是除以齐次 w 坐标。

好吧,这需要一段时间才能弄清楚。

于 2012-09-11T01:13:49.503 回答