Javascript 无法在场景中获取object3D

Javascript 无法在场景中获取object3D,javascript,three.js,Javascript,Three.js,我无法从场景中获取Object3D。尽管网格对象显示在场景中。scene.children数组没有显示这一点。 请看一下屏幕截图(链接) 代码: 函数init(){ loadJSON(函数(响应){ //将JSON字符串解析为对象 var jsonData=JSON.parse(响应); materialType=['MeshBasicMaterial','MesLambertMaterial','MeshPhongMaterial','MeshStandardMaterial']; 对于(v

我无法从场景中获取Object3D。尽管网格对象显示在场景中。scene.children数组没有显示这一点。 请看一下屏幕截图(链接)

代码:

函数init(){
loadJSON(函数(响应){
//将JSON字符串解析为对象
var jsonData=JSON.parse(响应);
materialType=['MeshBasicMaterial','MesLambertMaterial','MeshPhongMaterial','MeshStandardMaterial'];
对于(var i=0;i
谢谢。

loader.load()
是一个异步函数调用。这就是为什么要指定回调函数

在本例中,在加载模型之前以及在将模型添加到场景之前,您正在调用
console.log(scene.children)


three.js r.77

你能粘贴代码中试图获取这些项目的部分吗?刚刚添加了代码。。谢谢。如果您向我们提供错误代码(如果有)并突出显示代码中的相关行,这可能会有所帮助。没有错误代码,在尝试访问所需的网格对象时,它显示的唯一内容是“未定义”,因此请提供有关如何操作的任何建议。谢谢此外,现在同样的代码似乎正在运行。但是在刷新页面时,它不会在数组中显示子对象。我建议您继续熟悉Javascript。
function init(){
loadJSON(function(response) {
    // Parse JSON string into object
    var jsonData = JSON.parse(response);
    materialType = ['MeshBasicMaterial','MesLambertMaterial','MeshPhongMaterial', 'MeshStandardMaterial'];

    for (var i =0; i< jsonData.materials.length; i++){
        var matName = jsonData.materials[i].name;
        materialArray[matName] = new THREE.MeshLambertMaterial();
        materialArray[matName].name = matName;
    }
    var loader = new THREE.OBJLoader();

    for(var i = 0; i < jsonData.models.length;i++){
        parentGroup = new THREE.Object3D();
        parentGroup.name = jsonData.models[i].name;
        for(var j = 0; j < jsonData.models[i].children.length;j++){
            childName = jsonData.models[i].children[j].name;
            matType = jsonData.models[i].children[j].material;

            loader.load( "models/" + childName, makeHandler( childName , materialArray[matType],parentGroup), false ); 

        }
        scene.add(parentGroup);
    }
    });//loadJSON
    console.log(scene.children); //-- SCREENSHOT OUTPUT --

}//init function

// HANDLER FUNCTION
function makeHandler(meshName, material,parentObj) { 
    return function(geometry) { 
    object3d = new THREE.Mesh( geometry, material); 
    object3d.name = meshName;
    parentObj.add(object3d);
    };
}