OBJ到JS导致WebGL错误

时间:2014-05-30 14:48:26

标签: json model three.js webgl

我从Archive3D下载了一个3D网格,然后使用these settings将其转换为3DS MAX中的.obj,最后我将.obj转换为.js使用Three.js editor

然后我创建场景并添加模型,如图here所示。

这些是我在控制台中遇到的错误:

[.WebGLRenderingContext]GL ERROR :GL_INVALID_OPERATION : glDrawElements: attempt to access out of range vertices in attribute 2 fly.html:1
WebGL: too many errors, no more errors will be reported to the console for this context. 

问题是什么,可能是.js中的问题,我该如何解决?

1 个答案:

答案 0 :(得分:1)

这很可能意味着数据中存在错误。许多转换器都没有验证数据实际上是否正确。

错误表示数据中的一个或多个索引超出了给定数据的范围。换句话说,假设你有3个顶点。这意味着您只能拥有0到2范围内的索引。如果索引大于2,则会出现该错误。

错误是否在原始数据中,在.obj的转换器中,在从.obj.js的转换器中,我们无法通过每个调试来了解错误脚步。

您可以在加载数据时编写代码来遍历数据,并检查没有任何索引超出范围。如果它们是由您决定该怎么做。您可以尝试删除它们。假设您正在绘制三角形,则需要以3个为一组删除它们。换句话说,弄清楚数据中最小的缓冲区(位置,法线,texcoords)然后一次遍历索引3。如果3个指数中的任何一个超出范围,则删除这3个指数。

将文件加载到Three.js编辑器中时,文件是否显示?如果在导出时Three.js编辑器中存在错误的情况就是这样的情况,或者数据中的某些错误会以某种方式被破坏。

您还提到code from this page该页面与three.js没有任何关系。该页面上包含该代码的数据格式与three.js AFAIK无关。使用Three.js编辑器导出的数据仅适用于Three.js