2013-04-27 47 views
1


我已經寫了一個小波前的.obj文件解析器(3d模型格式),我可以正確顯示幾何圖形,但是我有問題紋理正確。
我能得到正確的紋理的唯一方法是通過將模型在我的3D編輯器,導出和分析是這樣..即:我不再共享頂點數據,每個三角形是它自己所以我的indexBuffer的數組看起來像[0,1,2,3,4,5,6 ...],這是我想避免的。

正確紋理/低效幾何形狀(頂點的無複用:36個頂點): Correct http://imageshack.us/a/img29/2242/textureright.jpg
錯誤的紋理/右拓撲結構(共享數據:8個頂點僅=有效): Wrong http://imageshack.us/a/img443/6160/texturewrong.jpg

我想嘗試將index緩衝區與指向頂點的index緩衝區分開,但沒有找到辦法做到這一點;如果確實是可行的。
我也搞砸了agal代碼,但沒有取得任何結果。

期望的最終是能夠通過不同的UV座標在三角形的上下文相同的頂點被吸入大氣壓。
怎麼辦?
謝謝。 (我是3D編程新手)Stage3D/AS3中的UV貼圖

回答

1

看起來您需要的只是模型中每個「頂點位置」只有一個頂點,但從我瞭解的.obj解析器中,您需要定義頂點FACES。這意味着對於某些位置,您可能有多個頂點 - 取決於該位置與多少個面相鄰 - 但是,您可以在同一位置爲這些頂點設置不同的UV座標。
我建議改變你的解析器創建基於他們定義的臉而不是他們的位置的頂點。我知道這會使頂點的數量增加,但是從我讀過的數據來看,如果您需要不同的UV來確定相同的頂點位置,這是不可避免的。
所以,不幸的是,我很確定你的第一個選擇是要走的路。

+0

我不能相信這是唯一的選擇。這並不適用於.OBJ解析器只有:假設我想創建一個四邊形,並且它有兩個不同顏色的兩個三角形,我相信這可以通過其他方式實現,而不是隻有六個頂點用於這個四邊形。已存在的stage3d遊戲的頂點數量不可能以這種方式呈指數級增長......感謝您回答:) – chadiik 2013-04-29 12:10:19

+0

如果向下滾動到標題爲「使用頂點緩衝區和索引緩衝區定義幾何體」的標題,則會在此頁面上顯示信息。 http://www.adobe.com/devnet/flashplayer/articles/how-stage3d-works.html關於頂點緩衝區如何定義面。 – moosefetcher 2013-04-29 14:14:36

0

它看起來像你的焊接操作是錯誤的。用於焊接的頂點,你必須確保位置,UV座標,法線和切線(如果需要的話)相等