将球体上的3d点转换为UV坐标

时间:2013-10-14 09:34:00

标签: javascript math 3d three.js

我在球体上有一个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;

2 个答案:

答案 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 - 他们似乎以球体为例。

希望它有所帮助。