我有一个等角360度图像,它将在标准X / Y坐标空间中将热点映射到其上。
在Unity中,此图像将被映射到一个球体,而我会将热点定位到该球体的内表面。
我需要数学运算法则以将这些笛卡尔坐标从球的中心(相机将位于的位置)转换为球面。
答案 0 :(得分:3)
当然,尽管有一种简单的标准方法可以进行等边逆投影,但彼得·O。是对的。
有两种主要的书写球形坐标的方法,即“数学”和“物理”。唯一的区别是坐标的命名。请参见本文顶部的两个坐标系图示:https://en.wikipedia.org/wiki/Spherical_coordinate_system。
我假设我们使用数学上的数学公式,其中在x-y平面中的θ为(x,y)-z平面的φ。然后,投影就是:
θ=2π* x / w-π,其中w是图像的宽度,x是像素的x位置。这将沿球体中的x轴将图像中点定位,这可能是首选。如果坐标系取[0,2π]范围内的值,则应改为(2π* x / w +π)%2π。
φ=π* y / h,其中h是图像的高度,y是像素的y位置。
当然,r只是一个可以自由选择的常数。
我希望这会有所帮助。