2011-06-15 47 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