我有一个环绕在球体上的纹理,类似于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坐标与相应的极坐标成线性比例。

为了方便起见,我们假设:

  • UV (0.5, 0.5)对应于格林威治子午线/赤道-即(0° N, 0° E)
  • 网格最初是与轴对齐的
  • 纹理位于球坐标(θ, φ) = (π/2, 0)的中心-即X轴

  • 演示图:

    c++ - 如何根据UV坐标计算球体旋转-LMLPHP

    使用边界条件:
  • U = 0 -> φ = -π
  • U = 1 -> φ = +π
  • V = 1 -> θ = 0
  • V = 0 -> θ = π

  • 我们可以推导所需的方程式,以及球体局部空间中的相应方向 vector r:

    c++ - 如何根据UV坐标计算球体旋转-LMLPHP

    假设球体具有旋转矩阵R并以c为中心,只需将lookAt与以下代码配合使用:
  • 位置c + d * (R * r)
  • 方向-(R * r)
  • 关于c++ - 如何根据UV坐标计算球体旋转,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49224921/

    10-13 08:13