将UV映射到凸出的三角形条带

时间:2013-10-06 16:57:39

标签: c# graphics xna polygon uv-mapping

我不知道“凸起”是否是正确的术语,但这是我现在所能想到的。我试图沿着三角形条带映射1像素宽(虽然技术上每个纹理都有这个问题)图像来模拟激光。当它完全均匀和正方形时,它的外观如下:

enter image description here

这是一个线框:

enter image description here

但是当你向内滑动点时会出现问题。 UV现在是错误的,因为它试图将其映射为三角形完全水平。

enter image description here

那个线框:

enter image description here

现在我想不出这个术语甚至可以搜索出来如何映射它。我想映射它以使条带与条带本身一起收缩,因此不仅仅是正面映射。有小费吗?我确信这是我现在无法想到的事情。

1 个答案:

答案 0 :(得分:3)

您需要透视正确的纹理贴图。 你看到的是仿射变换,它没有考虑到深度。

此链接解释了问题并建议如何解决问题:

http://www.reedbeta.com/blog/2012/05/26/quadrilateral-interpolation-part-1/

我自己做了这个,但是我记得除了UV坐标之外你还会传递第3个属性,所以你会有一个从顶点着色器传递到片段着色器的同质纹理矢量。 在片段着色器中,您可以将UV除以第三个参数,并使用它来对纹理进行采样。

可悲的是,我没有在我面前的代码,所以这是我能做的最好的。 但是我链接的页面应该引导您找到解决方案。