在ThreeJS中没有使用JSONLoader加载的对象:无法读取未定义的属性“visible”

时间:2015-12-19 00:41:07

标签: javascript json three.js

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

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的内容?

2 个答案:

答案 0 :(得分:1)

我看到发生了什么:spacecraft.js中的模型出于某种原因有一个空materials数组......我需要找出原因,因为我使用NodeJS three-obj库进行转换。 obj to .JSON

答案 1 :(得分:0)

您能否提供该错误的行号/文件?它可能在航天器内部,或者在代码中的其他行?

查看js / spacecraft.js并找到尝试使用的内容。可见,例如myObj.visible快速解决方法是用if(myObj != undefined){ ... };来围绕这个问题。但更常见的解决方法是找出myObj.visible为什么不首先被定义。