我想用正确的视角映射纹理以进行 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/
注意:我的标签一开始都是错的。现在已经解决了。