【问题标题】:Object not loading with JSONLoader in ThreeJS: Cannot read property 'visible' of undefined在 ThreeJS 中未使用 JSONLoader 加载对象:无法读取未定义的属性“可见”
【发布时间】:2016-03-25 18:39:51
【问题描述】:

我正在尝试使用以下代码加载对象模型:

var loader = new THREE.JSONLoader();
loader.load('js/spacecraft.js', modelLoadedCallback);

function modelLoadedCallback(geometry) {
   spacecraft = new THREE.Mesh( geometry, new THREE.MeshFaceMaterial(geometry.materials));
   spacecraft.position.x = 0;
   spacecraft.position.y = 0;
   spacecraft.position.z = 0;
   mesh.add(spacecraft);
   scene.add( mesh );
}

尽管如此,在每个 renderer.render(..) 调用中,我都会收到以下错误:

Uncaught TypeError: Cannot read property 'visible' of undefined

我不知道这个错误,因为在控制台中检查时网格和航天器对象似乎都已正确加载。

我是否缺少 JSONLoader 的某些内容?

【问题讨论】:

    标签: javascript json three.js


    【解决方案1】:

    我知道发生了什么:spacecraft.js 中的模型由于某种原因有一个空的materials 数组...我需要找出原因,因为我使用 NodeJS 三 obj 库将 .obj 转换为 .JSON

    【讨论】:

      【解决方案2】:

      你能给出那个错误的行号/文件吗?它可能在航天器内部,或者在代码中的其他行?

      查看 js/spacecraft.js 并找到尝试使用 .visible 的内容,例如myObj.visible 一个快速修复方法是用 if(myObj != undefined){ ... }; 包围它,但更一般的修复方法是首先找出 myObj.visible 未定义的原因。

      【讨论】:

      • 嗨!这是一个好主意,我之前尝试过,但不知何故错误不断出现。错误发生在 ThreeJS 脚本文件内的 renderer.render(..) 调用中。
      猜你喜欢
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 1970-01-01
      • 2020-08-06
      • 2018-12-20
      • 2020-10-30
      相关资源
      最近更新 更多