2013-08-20 93 views
0

所以,我有點失落。對於我正在做的遊戲,我想讓「世界」成爲幾何圓頂(由等邊三角形構成的球體)。爲了生成世界和玩世界,我需要找到一種方法來保存所有的邊和頂點,並且能夠計算鄰居。我不確定如何保存所有不同的頂點和邊,這樣可以很容易地確定哪些點與每個邊相鄰,哪些邊與每個點相鄰。我可以用什麼方法來實現這個目標?在幾何圓頂上存儲頂點

回答

1

有很多方法可以做你想問的問題。 Wavefront OBJ files將每個頂點的座標存儲爲一個索引列表,然後將每個面定義爲以及圍繞面法線順時針確定頂點索引的循環。

我不喜歡這個,因爲你必須做處理來找出連接的某些方面。對於描述的三角形網格,我更喜歡存儲頂點和它們的1環。 1環是頂點周圍相鄰頂點的索引。

這樣做可以讓您從三角形移動到三角形更容易。 (v,v2,v3),...,(v,v4)如果對於頂點V, ,v1)。例如。

本博客文章進入更多細節:http://bluntobject.wordpress.com/2007/03/13/mesh-data-structures-vol-2-vertex-one-rings/

如果一個頂點是在邊界上或是非歧管,你沒有一個完整的1環。我將其作爲部分單鏈列表處理。

+0

1環的方法聽起來很棒!我將如何生成網格/球體和原來的所有三角形? – TheNickmaster21

+1

@ TheNickmaster21,這是一個完全不同的問題!如果球體的單個曲面細分足夠好並且可以重複使用,只需下載一個.OBJ並讀取數據。這非常簡單。如果你需要更具適應性,那麼在這裏回答太多了。谷歌搜索「球面鑲嵌」雖然提供了很多點擊。我的方法將從一個銘文四面體開始,並細分爲您想要的分辨率。 –

+1

@ TheNickmaster21,展開我以前的評論,可以在頂點放置一個頂點,並在底座周圍放置幾個頂點。也許5或6來獲得最適合您的三角形的寬高比。然後,通過分割邊緣並投影到球體上,每個三角形面可以細分爲4個面。 –