答案 0 :(得分:0)
我会用基本的三角函数来解决它。
为简单起见,我们假设:
坐标 [0,0] 位于几何体的中间(所有相交的线)和纹理的中间(它们相互映射 - <几何中的strong> [0,0] 在纹理中 [0,0] 。
纹理坐标从 -1 跨越到 1 (并且假设在 90 的情况下几何坐标也是如此度 - 在其他情况下,它可能变得更宽更短)
x 的正确值范围向右, y 向上。并假设 x 几何轴与 u 纹理轴对齐,无论角度(图中为89.90)。
然后从纹理 [u,v] 转换为几何 [x,y] 坐标:
x = u + v*cos(angle)
y = v*sin(angle)
为了说明,它基本上是剪切变换和尺度变换以保持 y 的长度(或者 - 类似于旋转变换,但只旋转一个轴 - y - 不是都)。如果我反转那个转换(以获得我们想要的纹理坐标):
u = x - y*cotg(angle)
v = y/sin(angle)
使用这些方程,我应该能够将所描述情境中的任何几何坐标(一个点)转换为纹理坐标。对于(0,180)范围内的任何角度
(希望我没有在那里制造太多令人尴尬的错误)
答案 1 :(得分:0)
我会采取简单的方法,使用固体纹理或三平面[http://gamedevelopment.tutsplus.com/articles/use-tri-planar-texture-mapping-for-better-terrain--gamedev-13821]映射。
如果你真的需要uv,一个选择是从具有映射的原语开始,并为每个操作传递它。
事后创建uv不会得到好结果。