【问题标题】:Three JS - problems while rendering a scene v71 in some browsers三个 JS - 在某些浏览器中渲染场景 v71 时出现的问题
【发布时间】:2015-05-19 18:03:57
【问题描述】:

使用three.js v71,我正在尝试添加meshphong材质并在添加材质上限后将其显示在屏幕上。当我尝试在 Chrome v42.0 (Linux) 上渲染它时,它工作正常。但是当我尝试在 Chrome v42.0 上运行它时,我收到指向库文件的错误

未捕获的类型错误:无法读取未定义的属性“长度”

当我在 Firefox DE (v39) 和 Firefox SE (v37) 上运行它并显示消息时,我在同一个地方收到错误

TypeError: a.defaultAttributeValues[h] 未定义

是不是因为 js 代码中的同步问题(将属性分配给未定义的对象)?以及它如何在 Linux 浏览器上正确呈现,而不是在其他平台上?

【问题讨论】:

  • 纹理/模型的加载是异步的,因此在一台机器上可能有时间下载和使用资产,而在另一台机器上则没有。但是如果不显示任何代码,就很难说。贴出加载资源相关的代码。
  • @gaitat - 这是链接。 TIA。 --> gist.github.com/bizentass/…
  • controls.update() 不是必需的。删除 needsUpdate 标志。为什么要设置两次材料?将相关代码粘贴到帖子正文中并链接到实时示例。不过首先要使用非缩小版的three.js进行调试,自己调试代码。
  • @WestLangley 感谢您提供有关使用非缩小代码进行调试的建议。这清楚地指出了问题。

标签: javascript three.js


【解决方案1】:

我通过对 three.js 库代码的小改动解决了这个问题。

在 three.js (v71) 行号中。 20263,我在if条件中包含了[key]

} else if ( material.defaultAttributeValues[ key ] !== undefined ) {

同理,在three.min.js (v71) 行号中。 443,我在if条件中包含了键是[h]

0!==a.defaultAttributeValues[h]

这解决了问题,对象现在可以在两个浏览器中正确呈现。

【讨论】:

  • 这真是个坏主意。很可能,您的应用程序正在做一些不恰当的事情。
  • @WestLangley,是的,我不应该干涉源代码,将进一步调试我的应用程序。再次感谢。
猜你喜欢
  • 2017-06-06
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多