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

时间:2018-03-11 20:47:59

标签: c++ math rotation geometry unreal-engine4

我有一个纹理,我正在维基百科上围绕一个类似于这个图像的球体。

https://upload.wikimedia.org/wikipedia/commons/0/04/UVMapping.png

我想要实现的是从纹理中获取一个UV坐标,比如说(0.8,0.8),在上面的例子中大致在俄罗斯附近。

使用此UV以某种方式计算我需要应用于球体的旋转,以使UV以球体为中心。

有人能指出我需要计算数学方程式的正确方向吗?

编辑 - 有人指出我实际上正在寻找球体的旋转,因此紫外线以相机为中心。因此,从0,0,0的旋转开始,我的相机指向uv(0,0.5)

由于

1 个答案:

答案 0 :(得分:2)

这种特殊类型的球面贴图具有非常方便的特性,即UV坐标线性与相应的极坐标坐标成比例。

为方便起见,我们假设:

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

用于演示的图表:

enter image description here

使用边界条件:

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

我们可以在球体的局部空间中推导出所需的方程式和相应的方向向量r

enter image description here

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

  • 职位c + d * (R * r)
  • 方向-(R * r)