2017-03-18 23 views
1

我正在嘗試在A幀內構建360圖像的熱點編輯器。從扁平等矩形全景映射形狀到A幀內的平面

這個想法是,你可以繪製一個equirectangular全景,然後這個工具將形狀轉換成平面與THREE.ShapeGeometry。

我可以從JS矢量編輯器中獲取每個形狀的節點的X/Y座標,以及在A-Frame中渲染的平面。但是,我有問題讓他們正確安置在天空盒上。

我知道我需要做一些equirectangular投影,但我不確定如何在這種情況下接近。

任何想法?

Screenshot of vector editor to show what I mean

回答

0

目前尚不清楚你想怎麼顯示在三維空間中的平面幾何但也許以下信息可以幫助你一些方法...

使用物理風格spherical polar coordinates - 如緯度和經度,而不是從西向東運行從-180到180,從南到北運行從-180到180,你有類似於0的緯度從0直線指向直到180指向直線,φ從0運行到360轉動Y軸。

從這些兩個角度可以映射到X,Y,Z(笛卡爾)座標上的球體並與紋理的方形投影,有運行從0到1水平這就好比0〜360 U軸在0和1垂直的φ和V軸上,這在θ中是0到180。

有了這些信息,您應該能夠在theta和phi球形極座標中的equirectangular平面上識別您的選擇頂點,並將它們轉換爲球體表面上的x,y,z笛卡爾座標。

你想從那裏做什麼取決於...我會提出一個建議,但採取它或讓你隨心所欲。

我想你要做的就是將這些點徑向投影到一個與球體表面相切的平面上,即用一個穿過球體中心的法向量。我認爲,問題部分在於決定使用什麼樣的平面法線,以及距離球體中心多遠放置它。

隨機繼續沉思讓我回想起幾何學和物理學課程,並考慮像質量中心這樣的事物,因爲它在整個表面上具有恆定的密度。

更簡單的解決方案可以是在定義的形狀內的某處點擊以定義平面應該切向的球體表面上的點,然後將法線的長度從等於半徑減少到足夠小於定義形狀的投影頂點的全部適合於球體內部的東西。

爲了恰好在球體內部將投影擬合到所定義的形狀的平面上,可以通過識別離切向點最遠的定義形狀的頂點(其中沿徑向線的法線方向與球體的表面相交),這將是沿着great circle的最大弧長度。