【问题标题】:Strange problem when attempting to render 3d models in webgl尝试在 webgl 中渲染 3d 模型时出现奇怪的问题
【发布时间】:2011-09-15 04:00:41
【问题描述】:

所以基本上我正在尝试制作一个模型加载器,它将接收 wavefont obj 文件并在 webgl 中渲染它们。最终我希望能够旋转、平移和缩放这些对象。

我已经完成了所有界面的设置,并且运行良好。但是我在渲染时遇到了问题。

我已经获取了一个 obj 文件,并检查了所有数组的元素数量是否正确,我什至使用 chromes webgl 调试插件进行了检查,结果显示数组匹配(甚至元素值匹配)。

顶点数:10932 指数数量:18960

无论如何当我运行 gl.drawElements(gl.TRIANGLES, numItems, gl.UNSIGNED_SHORT, 0); 我没有收到 chrome 错误,但在 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

干杯,乔什

【问题讨论】:

    标签: google-chrome 3d render webgl


    【解决方案1】:

    我希望您还记得 OBJ 文件中的面使用从 1 开始的顶点索引,而不是 0。所以也许那些后来的面(使其崩溃或不起作用)只是引用了一个无效的顶点(一个过去的结尾) .如果是这样,从文件中读取后,只需从面的顶点索引中减去 1。

    【讨论】:

    • 感谢克里斯蒂安,这就是问题所在!我以前没有使用过 OBJ 文件。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    相关资源
    最近更新 更多