【问题标题】:OBJ to JS causes WebGL errorOBJ 到 JS 导致 WebGL 错误
【发布时间】:2014-07-20 09:05:02
【问题描述】:

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

然后我创建场景并添加模型,如图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 中的问题,我该如何解决?

【问题讨论】:

  • 确实没有足够的信息来做出决定。也许如果您以某种方式发布 obj 模型或创建 jsfiddle 或显示有关如何创建场景以及如何添加模型的代码。

标签: json model three.js webgl


【解决方案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 使用

【讨论】:

  • 首先,好的答案+1。该对象出现在 three.js 编辑器中,我看到了,所以直到那里没有错。确实我不使用three.js 库,只使用简单的webGL。据我了解,mrdoob 的编辑器不会为简单的 webGL 生成 .js 对象?我可以修改它以使其仅与 webGL 兼容,不包括 three.js 吗?谢谢!
  • WebGL 本身并不是一个 3D 库。您必须使用一个(如three.js)或编写自己的。没有WebGL 格式。由于您显然是在编写自己的代码,因此您可以自行确定所需的格式。如果您想使用 three.js 的格式,您必须通读它并弄清楚其中包含哪些数据以及如何使用它。这个话题对于 Stack Overflow 来说可能太大了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
相关资源
最近更新 更多