我在球体上有一个 3d 点,想要将其转换为球体纹理上的 UV 点。
有人可以指出正确的方向吗?我可以采用纯数学解决方案。
Edit:
我目前有这个,它不会返回正确的 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;
关于 uv 映射的维基百科是正确的,但是您需要计算网格每个顶点的 uv 坐标。然后需要将 uv 坐标转换为像素坐标:opengl 中的完美 (3D) 纹理映射 https://stackoverflow.com/questions/17422689/perfect-3d-texture-mapping-in-opengl。这是另一个例子:http://www.cse.msu.edu/~cse872/tutorial4.html http://www.cse.msu.edu/~cse872/tutorial4.html。您也可以尝试 Three.js。您还需要物理复制 uv 三角形。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)