我不知道“膨胀”是否是正确的术语,但这是我现在能想到的全部。我正在尝试沿着三角形 strip 映射一个 1 像素宽(尽管从技术上讲每个纹理都会有这个问题)的图像来模拟激光。当它完全均匀且正方形时,它看起来是这样的:
还有一个线框图:
但是当你向内滑动点时,问题就出现了。 UV 现在是错误的,因为它试图将它映射为好像该三角形是完全水平的。
以及它的线框:
现在我什至想不出搜索这个词来弄清楚我如何映射它。我想对其进行映射,以便条纹与条纹本身一起收缩,而不仅仅是正面贴图。有小费吗?我敢肯定这是一件非常简单的事情,我现在想不起来。
最佳答案
您需要透视正确的纹理贴图。 您看到的是仿射变换,它没有考虑深度。
此链接解释了问题并建议了解决方法:
http://www.reedbeta.com/blog/2012/05/26/quadrilateral-interpolation-part-1/
这是我自己做的,但据我所知,除了 UV 坐标之外,您还需要传递第三个属性,这样您就可以将一个均匀的纹理向量从顶点着色器传递到片段着色器。 在片段着色器中,您可以将 UV 除以这个第三个参数并使用它来对纹理进行采样。
遗憾的是我面前没有那个代码,所以这是我能做的最好的。 但我链接的页面应该会引导您找到解决方案。
关于c# - 将 UV 映射到凸起的三角形带,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19211420/