如何根据 UV 坐标计算球体旋转

How to calculate sphere rotation based off of UV coordinates

我有一个纹理环绕着一个类似于维基百科上这张图片的球体。

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 坐标 线性 与相应的 极坐标 成正比] 坐标.

为方便起见,我们假设:

  • UV (0.5, 0.5) 对应格林威治子午线/赤道 - 即 (0° N, 0° E)
  • 网格最初是 axis-aligned
  • 纹理以球面坐标为中心 (θ, φ) = (π/2, 0) - 即 X-axis

演示图:

使用边界条件:

  • U = 0 -> φ = -π
  • U = 1 -> φ = +π
  • V = 1 -> θ = 0
  • V = 0 -> θ = π

我们可以推导出所需的方程,以及球体的局部中对应的方向向量r space:

假设球体有旋转矩阵 R 并且以 c 为中心,只需使用 lookAt 和:

  • 排名c + d * (R * r)
  • 方向-(R * r)