2

我在球体上有一个 3d 点,并希望将其转换为球体纹理上的 UV 点。

有人可以指出正确的方向吗?我可以采用纯数学解决方案。

编辑:

我目前有这个,它不会返回正确的 UV 坐标。p 是球体网格上的 3d 点。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;
4

2 回答 2

2

关于 uv-mapping 的 Wikipedia 是正确的,但是您需要为网格的每个顶点计算 uv 坐标。然后您需要将 uv 坐标转换为像素坐标:opengl 中的完美(3D)纹理映射。这是另一个示例:http ://www.cse.msu.edu/~cse872/tutorial4.html 。你也可以试试three.js。您还需要物理复制 uv 三角形。

于 2013-10-14T12:00:49.720 回答
1

我发现这篇 wiki 文章 - http://en.wikipedia.org/wiki/UV_mapping - 他们似乎使用球体作为示例。

希望能帮助到你。

于 2013-10-14T09:37:05.793 回答