2014-01-30 128 views
1

我目前正在基於託管DX和C#的全景瀏覽器上工作。紋理球體C#

我創建了一個球體網格,現在我想紋理它與地球的地圖。

我在Texture對象中加載紋理但是當我查看結果時,紋理在經度和緯度上重複。

我認爲我需要一個像素着色器,但我必須說我不知道​​如何創建一個像素着色器。

有人可以幫助我嗎?

謝謝!

+0

你如何有網格計算的紋理座標? –

回答

0

如果它是紋理但只是重複,那麼它不是一個着色器的問題。 您應該修正夾緊或U/V座標。 着色器只是幫助您將材質添加到紋理渲染中,而不是修改紋理的佈局(U/V)。

這是一個關於如何UV應就設置爲網粗略的嘗試:

Mesh 
+----------+----------+----------+ V=1.00 
|0  3|3  5|5  7| 
| vertices |   |   | 
|   |   |   | 
|1  2|2  4|4  6| 
+----------+----------+----------+ V=0.66 
|   |   |   | 
|   |   |   | 
|   |   |   | 
|   |   |   | 
+----------+----------+----------+ V=0.33 
|   |   |   | 
|   |   |   | 
|   |   |   | 
|   |   |   | 
+----------+----------+----------+ V=0.00 
U=0  U=0.33  U=0.66  U=1.00 

我希望這有助於以某種方式。如果你想在網格上放置地球的地圖,那麼網格大於紋理。

頂點順序以及它們如何連接並不相關,我只是寫了一些頂點索引來表明這只是一個整體網格。

您正在使用不平整的球體,因此有一個關於如何將非平坦表面投射到平坦表面上的完整理論。

這會幫助你遠一點:

Google for "Earth Spherical Texture Map"

只是出於好奇:爲什麼你使用MDX?它不是被XNA取代嗎?你有沒有試過Unity3D?像這樣的東西幾乎可以在盒子外面實現......只需將相機放入一個球體中,然後在編輯器中調整值......也許我錯過了一些東西。我只是很好奇:)

+0

你好,謝謝你的回答。我使用MDX是因爲我得到了規範。你的答案幫助了我!謝謝 – user3252833