2012-01-02 66 views
3

我在OpenGL中實現了MC算法。行進中的多維數據集和紋理座標的問題

一切正常,直到我達到與紋理座標點。

我無法弄清楚如何實現它們!

我的進步:

img

編輯: 我想存檔是把一些紋理上產生我的MC三角形。 據我瞭解,我需要告訴OpenGL的uv座標,但不知道如何計算它們。

+0

您還沒有解釋了基於多維數據集行進面你打算用質地做座標。你想如何參數化表面取決於你。 – 2012-01-02 21:10:51

+0

我有一個類似的問題,我一直在試圖找出triplanar紋理,但我不能爲我的生活找出uv位,儘管已經找到了基本立方體上的着色器。 – War 2013-04-08 18:42:40

+0

在這裏,triplanar貼圖: const float TextureScale = 0.02; vec2 coordZ = vec2(ObjectVertex.xy * TextureScale); vec2 coordY = vec2(ObjectVertex.xz * TextureScale); vec2 coordX = vec2(ObjectVertex.yz * TextureScale); vec3 colorZ = texture2DArray(texBlocks,vec3(coordZ,index * 4 + 2))。xyz; vec3 colorY = texture2DArray(texBlocks,vec3(coordY,index * 4 + 2))。xyz; vec3 colorX = texture2DArray(texBlocks,vec3(coordX,index * 4 + 2))。xyz; – Jeffers 2013-04-08 23:27:19

回答

4

典型的紋理座標生成算法行進立方體算法是使用環境映射。

總之你通過平均所有adjecting面的面法線計算頂點法線在每個頂點,然後丟棄正常的z座標,並使用(X/2 + 0.5,Y/2 + 0.5)作爲(u,v)紋理座標。

設置了一個漂亮的白點在中間,一些結構填充紋理的其餘部分的紋理,你會得到終結兩銀子機器人那種樣子。

+0

聽起來很有希望! 「所有人臉」 - 你的意思是我應該找到附近的三角形,它們與我目前的三角形有相同的頂點? 「丟棄z座標」 - 從正常情況下刪除? 謝謝 – Jeffers 2012-01-02 21:39:30

+0

是的,這是主意。 – 2012-01-03 00:22:26

3

我需要告訴OpenGL的uv座標,但不知道如何計算它們。

你正面臨着一些大問題:什麼來自MC的拓撲可以是任何東西。 OpenGL中紋理的拓撲結構是(超)環面(GL_TEXTURE_1D,GL_TEXTURE_2D,GL_TEXTURE_3D)或球體(GL_TEXTURE_CUBE_MAP)。

所以難免你有你的面切成所謂的地圖。這是一項艱鉅的任務,但qood戰略正在沿着高曲率的地區進行。見文章

「最小二乘共形映射自動紋理圖集一代」

布魯諾·萊維,維爾託德珀蒂讓,尼古拉斯·雷和Jerome Maillot的

http://alice.loria.fr/index.php/[email protected]

的骯髒細節。