Json OBJ to JS导致WebGL错误

Json OBJ to JS导致WebGL错误,json,model,three.js,webgl,Json,Model,Three.js,Webgl,我从下载了一个3D网格,然后使用将其转换为3DS MAX中的.obj,最后使用将.obj转换为.js 然后创建场景并添加模型,如图所示 以下是我在控制台中遇到的错误: [.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

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

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

以下是我在控制台中遇到的错误:

[.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
中的问题,我如何修复它?

这很可能意味着数据中有错误。许多转换器无法验证数据是否正确

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

错误是否在原始数据中,在转换到
.obj
的转换器中,在从
.obj
.js
的转换器中,如果不通过这些步骤进行调试,我们无法知道

您可以编写代码,在加载数据时遍历数据,并检查所有索引是否超出范围。如果他们是由你决定怎么办。你可以试着移除它们。假设您正在绘制三角形,则需要以三人一组的方式删除它们。换句话说,找出数据中最小的缓冲区是什么(位置、法线、texcoords),然后一次遍历索引3。如果3个索引中的任何一个超出范围,请删除这3个索引

当您将文件加载到Three.js编辑器时,是否显示了该文件?如果在导出时Three.js编辑器中出现错误,或者数据以其他方式损坏,则会出现这种情况


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

中,实际上没有足够的信息来确定。也许如果你以某种方式发布obj模型,或者创建一个JSFIDLE,或者展示关于如何创建场景以及如何添加模型的代码。该对象出现在three.js编辑器中,我看到了,因此在此之前没有错误。的确,我没有使用three.js库,只使用简单的webGL。据我所知,mrdoob的编辑器不会为简单的webGL生成.js对象??我是否可以修改它,使其仅与webGL兼容,而不包括three.js?非常感谢。WebGL本身不是一个3D库。你要么使用一个(比如three.js),要么自己写。没有
WebGL
格式。因为你显然是在写你自己的东西,所以你需要找出你想要的格式。如果你想使用three.js的格式,你必须通读一遍,弄清楚里面有什么数据以及如何使用它。这个主题对于堆栈溢出来说可能太大了。