我在球体上有一个3d点,想要从那里转换为球体纹理上的UV点。
有人能指出正确的方向吗?我可以采用纯数学解决方案。
编辑:
我目前有这个,它没有返回正确的UV坐标。 p是球体上的3d点 mesh.position是球体的位置
var x = (p.x-mesh.position.x)/500;
var y = (p.y-mesh.position.y)/500;
var z = (p.z-mesh.position.z)/500;
var u = Math.atan2(x, z) / (2 * Math.PI) + 0.5;
var v = Math.asin(y) / Math.PI + .5;
答案 0 :(得分:2)
关于uv-mapping的维基百科是正确的,但是你需要为网格的每个顶点计算uv坐标。然后,您需要将uv坐标转换为像素坐标:Perfect (3D) texture mapping in opengl。这是另一个例子:http://www.cse.msu.edu/~cse872/tutorial4.html。你也可以试试three.js。您还需要物理复制uv三角形。
答案 1 :(得分:1)
我发现了这篇wiki文章 - http://en.wikipedia.org/wiki/UV_mapping - 他们似乎以球体为例。
希望它有所帮助。