c# - 将 UV 映射到凸起的三角形带

标签 c# graphics xna polygon uv-mapping

我不知道“膨胀”是否是正确的术语,但这是我现在能想到的全部。我正在尝试沿着三角形 strip 映射一个 1 像素宽(尽管从技术上讲每个纹理都会有这个问题)的图像来模拟激光。当它完全均匀且正方形时,它看起来是这样的:

enter image description here

还有一个线框图:

enter image description here

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

enter image description here

以及它的线框:

enter image description here

现在我什至想不出搜索这个词来弄清楚我如何映射它。我想对其进行映射,以便条纹与条纹本身一起收缩,而不仅仅是正面贴图。有小费吗?我敢肯定这是一件非常简单的事情,我现在想不起来。

最佳答案

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

此链接解释了问题并建议了解决方法:

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

这是我自己做的,但据我所知,除了 UV 坐标之外,您还需要传递第三个属性,这样您就可以将一个均匀的纹理向量从顶点着色器传递到片段着色器。 在片段着色器中,您可以将 UV 除以这个第三个参数并使用它来对纹理进行采样。

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

关于c# - 将 UV 映射到凸起的三角形带,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19211420/

相关文章:

c# - 在 .NET 的输出字符串中将列表的所有项目连接在一起

c# - 这个 Xaml 无效...我不明白为什么

c++ - x11/xlib 与 microsoft visual c++

ios - 如何产生类似于 iOS 7 模糊 View 的效果?

c# - bool 不更新

c# - 进行平滑碰撞的最佳、最简单方法?

c# - 你能强制在类构造函数中调用一个方法,否则会抛出编译错误吗?

c# - 如何检查PDF中的页面是否为A4

c# - 等待之后同步LockException

algorithm - 再现具有原始形状的图像。 (图形优化问题)