我有一个环绕在球体上的纹理,类似于Wikipedia上的该图像。
https://upload.wikimedia.org/wikipedia/commons/0/04/UVMapping.png
我想要实现的是从纹理中获取UV坐标,假设(0.8,0.8)在上面的示例中大约在俄罗斯附近。
使用此UV,以某种方式计算旋转度,我需要将其应用于球体以使UV居中于球体上。
有人可以指出我正确计算数学方程式的方向吗?
编辑-有人指出,我实际上是在寻找球体的旋转,因此uv朝向相机居中。因此,从旋转0,0,0开始,我的相机指向uv(0,0.5)
谢谢
最佳答案
这种特殊类型的球面映射具有非常方便的属性,即UV坐标与相应的极坐标成线性比例。
为了方便起见,我们假设:
(0.5, 0.5)
对应于格林威治子午线/赤道-即(0° N, 0° E)
(θ, φ) = (π/2, 0)
的中心-即X轴演示图:
使用边界条件:
U = 0 -> φ = -π
U = 1 -> φ = +π
V = 1 -> θ = 0
V = 0 -> θ = π
我们可以推导所需的方程式,以及球体局部空间中的相应方向 vector
r
:假设球体具有旋转矩阵
R
并以c
为中心,只需将lookAt
与以下代码配合使用:c + d * (R * r)
-(R * r)
关于c++ - 如何根据UV坐标计算球体旋转,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49224921/