2012-11-28 111 views
0

我在Android中使用opengles 2.0得出了一些模型,但這些光滑着色之間切換到平面着色在Opengles 2.0

盒狀模型的外觀與平滑陰影太順利了,我需要遮蔭順利的工作了3D應用球體模型。

我將3D模型導出爲.OBJ文件,並使用攪拌器光滑地平滑。

現在我的3d模型結構有

每個頂點正常。

使用頂點索引數組繪製模型。

由於我的模型的法線是每個頂點的法線我的計劃來應對這一現象正在以每面

正常,重建我所有的繪製方法不使用頂點索引數組導致它無法做到。

我不想做這個計劃,因爲頂點索引數組消耗更少的內存。

有沒有一種方法可以使頂點索引數組的平滑過程像繪製函數一樣使GLSL使用插值變化或其他方式的中間值?

感謝您的幫助和抱歉,我的英語不好。

+2

看看這裏:http://stackoverflow.com/questions/9310771/can-i-specify-per-face-normal-in-opengl-es-and-achieve-non-smooth-flat-shading? rq = 1我認爲這是做到這一點的唯一方法! – Dirk

+0

是的,我看看那個鏈接,所以它看起來像只有這樣做的方式。但無論如何謝謝。 – user1085647

回答

0

我也與這一堆搏鬥 - 你可以肯定地改變你的管道來生成精確的面部法線並將它們傳遞到你的管道,然後在你的照明計算中使用它。

或者你可以在模型本身的Blender(或任何其他3D程序)中完成這項工作 - 複製你想要保持平坦的頂點,使得每個面都有自己的頂點,當沒有連接到其他面時,頂點法線將是臉部法線(具有平滑或平坦的陰影)。原來有6個頂點的立方體會變成4 * 6 = 24個頂點,具有相同的6個四邊形面,但每個頂點的頂點法線會與四邊形的面法線精確對齊。

最終結果是一樣的,需要將更多頂點傳遞給管道,但我喜歡模型中的解決方案,因爲它允許您在模型中混合要求平滑和平坦着色的位置。

我會想象甚至可能有一個在攪拌機腳本來自動執行此操作。關於Blender正在做什麼以及爲什麼在可編程管線中沒有平坦的陰影,這裏是a loosely related article