gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 02:07:04 24 4
gpt4 key购买 nike

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

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 轴

演示图:

enter image description here

使用边界条件:

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

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

enter image description here

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

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

关于c++ - 如何根据 UV 坐标计算球体旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49224921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com