我目前正在基於託管DX和C#的全景瀏覽器上工作。紋理球體C#
我創建了一個球體網格,現在我想紋理它與地球的地圖。
我在Texture
對象中加載紋理但是當我查看結果時,紋理在經度和緯度上重複。
我認爲我需要一個像素着色器,但我必須說我不知道如何創建一個像素着色器。
有人可以幫助我嗎?
謝謝!
我目前正在基於託管DX和C#的全景瀏覽器上工作。紋理球體C#
我創建了一個球體網格,現在我想紋理它與地球的地圖。
我在Texture
對象中加載紋理但是當我查看結果時,紋理在經度和緯度上重複。
我認爲我需要一個像素着色器,但我必須說我不知道如何創建一個像素着色器。
有人可以幫助我嗎?
謝謝!
如果它是紋理但只是重複,那麼它不是一個着色器的問題。 您應該修正夾緊或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?像這樣的東西幾乎可以在盒子外面實現......只需將相機放入一個球體中,然後在編輯器中調整值......也許我錯過了一些東西。我只是很好奇:)
你好,謝謝你的回答。我使用MDX是因爲我得到了規範。你的答案幫助了我!謝謝 – user3252833
你如何有網格計算的紋理座標? –