前一篇博客中講到怎么由全景圖轉到小行星,這次換一種投影方式說下由全景圖轉到水晶球模式。
首先,還是要有一副全景圖,風景秀麗是不是:
1. 將其按照經緯展開法,貼到單位球面上。圖像第一行聚集在一起成為球體的北極點;圖像的最后一行像素聚集在一起成為球的南極點。
2. 設定投影平面為與南極點相切的平面,觀察者視點可以視為在無窮遠處,我們要做的就是講下半球面垂直投影到該平面上。
3. 根據球面坐標(theta, fi),根據球面坐標theta值可以判斷像素點是不是在需要投影的南半球面,而根據fi值可以解算出球面坐標系下的(x,y)坐標。
4. 將符合南半球面的像素點(x,y)坐標轉換到具體的圖像坐標系,得到圖像坐標(u,v)。
當然,具體球面坐標系三個軸的朝向可以根據自己的習慣設定,符合右手坐標系准則即可。
同理,當你轉動球體的時候,球面不同位置半球的像素點將會投影到圖像平面上,從而實現仿佛在轉動水晶球的效果。
下圖是不同視角下觀看到的水晶球效果圖:
我向右撥動水晶球,gif效果如下: