如何将正方形纹理映射到三角形?


13

我想找到P点的纹理坐标。我有三角形的顶点及其对应的uv坐标。

纹理中小方块中的数字表示颜色值。

计算P的uv坐标的步骤是什么?

在此处输入图片说明


有一个仿射变换将每个角映射到其纹理坐标,您可以使用仿射变换将P映射到其uv。
棘轮怪胎

@ratchetfreak您能给我一个链接吗?
约翰·约翰

本文一口气写了如何进行交点计算和重心线计算的文章。这本质上相当于变换三角形。
joojaa

Answers:


14

这是通过重心插值实现的。

首先,我们找到的重心坐标。重心坐标表示每个顶点为该点贡献的权重,可用于在三角形的整个面内的顶点处内插任何已知的值。P

考虑3个内三角形P ÇP Ç ABPPBCPCA

在此处输入图片说明

APPBCABC

PAPBC

1

重心坐标的计算方法为:

BaryA=(ByCy)(PxCx)+(CxBx)(PyCy)(ByCy)(AxCx)+(CxBx)(AyCy)BaryB=(CyAy)(PxCx)+(AxCx)(PyCy)(ByCy)(AxCx)+(CxBx)(AyCy)BaryC=1BaryABaryB

派生和推理在Wikipedia文章中进行了解释。

P

Puv=BaryAAuv+BaryBBuv+BaryCCuv

演示文稿中,推理也得到了很好的解释。

另请参阅此问题以获取有效的计算方法。


BaryB(AyCy)

@joojaa我不这么认为。维基百科的文章中也是如此,从我做过的测试计算来看,这似乎是正确的。
Rotem'1

(AyCy)ACy=(AyCy)

1
@joojaa可以为每个三角形预先计算整个分母和分母中的某些项,只有很少的项取决于 P
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.