其實我不知道它是否可能,但我想讓我的相機位置與鼠標移動事件並將其轉換爲屏幕座標。爲了更詳細,我試圖用鼠標移動我的球體對象,並試圖通過鼠標移動獲取相應的新相機位置,並想更新谷歌地圖上的對象位置。我發現一些來源如何將3D對象位置轉換爲2-D,但我不確定它是否適合我的場景。如何通過鼠標移動事件獲取攝像頭位置並轉換爲three.js中的屏幕座標?
[「我加入下面的評論部分的問題的解決方案,我希望它可能是有用的人,如果他們遇到這樣類似的問題,檢查下面的兩個鏈接」]
其實我不知道它是否可能,但我想讓我的相機位置與鼠標移動事件並將其轉換爲屏幕座標。爲了更詳細,我試圖用鼠標移動我的球體對象,並試圖通過鼠標移動獲取相應的新相機位置,並想更新谷歌地圖上的對象位置。我發現一些來源如何將3D對象位置轉換爲2-D,但我不確定它是否適合我的場景。如何通過鼠標移動事件獲取攝像頭位置並轉換爲three.js中的屏幕座標?
[「我加入下面的評論部分的問題的解決方案,我希望它可能是有用的人,如果他們遇到這樣類似的問題,檢查下面的兩個鏈接」]
我想,你想要的是你正在看你的球體(可能與地球紋理)的點要顯示在谷歌地圖谷歌需要經度和緯度。使用2D屏幕座標對我來說似乎是一個奇怪的方法。
您的相機可能位於座標系中心的球體周圍。我會將相機位置轉換爲極座標/球座標,即角度(半徑無關緊要)。然後你幾乎得到了拉特和長。 (Conversion between Spherical and Cartesian Coordinates Systems)
您需要交換的公式y
和z
和:從您的相機位置(X,Y,Z)
轉換該圖形,因爲在three.js y
是(也許你需要反轉z
)。
現在,你需要變換分析phi
(從0
到2*PI
)和theta
(0
到PI
)經度(-180°
到180°
)和緯度(-90°
到90°
),這應該比較容易。
你的球體上的格林威治子午線應該面對正X軸。
(請糾正我,如果我錯了。)
至少你應該有適當的依賴關係,從而使小提琴可以被執行。 – Thomas
對不起#Thomas我對jsfiddle沒有太多的知識,這就是爲什麼我用單詞解釋所有事情的原因,如果你需要更多的東西,我甚至可以詳細解釋。如果你能幫助我,那可能真的很棒。 – rajesh
請不要解決jsfiddle.net警告。相反,請留意這些建議,並編輯您的帖子以包含您所描述問題的* mcve。 – Matt