2011-06-15 78 views
2

所以基本上我正在試圖製作一個模型加載器,它將採用wavefont obj文件並將它們呈現在webgl中。最終我希望能夠旋轉,翻譯和縮放這些對象。試圖在webgl中渲染3d模型時出現奇怪的問題

我有接口所有設置,它很好地工作。但是我有渲染問題。

我採取了一個obj文件,並檢查數組都有正確數量的元素,我甚至使用chromes webgl調試插件進行檢查,並且它看起來數組匹配(甚至元素值匹配)。頂點的

編號:10932 一些指數:18960

無論如何當運行gl.drawElements(gl.TRIANGLES,項目數,gl.UNSIGNED_SHORT,0); 我得到沒有鉻錯誤,但在webgl插件調試我得到'INVALID_OPERATION'沒有額外的信息。

我發現通過將numItems(通常是索引數/ 18960)更改爲更低的數字,它將呈現一個茶壺(稍微錯誤)。由於某種原因,這個幸運數字是11034,如果我高於這個數字,它就不會呈現,如果我走到下面,它會渲染我的茶壺。我需要這個數字纔是真正的全部指數,顯然我不能硬編碼這些數字。

所以我,爲什麼發生這種情況,因爲我的完整代碼的調試很困惑: http://webdesignscript.net/assignment/graphics_a3/

渲染部分代碼: http://webdesignscript.net/assignment/graphics_a3/scripts/webglengine.js

茶壺模型加載: http://webdesignscript.net/assignment/graphics_a3/models/teapot.obj

乾杯,喬希

回答

1

我希望你記得在OBJ文件中的面孔使用vertex ind從1開始的冰,而不是0.因此,也許那些後來的面(使它崩潰或不工作)只是引用一個無效的頂點(最後一個)。如果是這樣,在從文件讀取後,從面的頂點索引中減去1。

+0

謝謝基督徒,那就是問題!我以前沒有使用過OBJ文件。非常感激! – 2011-06-15 01:22:42

+0

@jezternz不客氣(以及加薪和接受)。 – 2011-06-15 01:27:58