Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js |无法访问loader.load外部的导入对象属性_Three.js - Fatal编程技术网

Three.js |无法访问loader.load外部的导入对象属性

Three.js |无法访问loader.load外部的导入对象属性,three.js,Three.js,我希望在每次渲染/动画函数调用时移动导入的对象(.obj)。 因此,我复制了一个对象,以便在加载程序.load之外访问它,但每次调用companion.position时,我都会遇到这个错误。(companion是一个全局变量) 另外,我在渲染函数中尝试了object.traverse,得到了相同的错误(traverse被替换为positionin error) 请帮忙。提前谢谢 下面是我加载obj并将其复制到companion的地方 var mtlLoader = new THREE.MTL

我希望在每次渲染/动画函数调用时移动导入的对象(.obj)。 因此,我复制了一个对象,以便在
加载程序.load
之外访问它,但每次调用
companion.position
时,我都会遇到这个错误。(
companion
是一个全局变量)

另外,我在渲染函数中尝试了
object.traverse
,得到了相同的错误(traverse被替换为positionin error)

请帮忙。提前谢谢

下面是我加载obj并将其复制到
companion
的地方

var mtlLoader = new THREE.MTLLoader();

mtlLoader.setPath( 'obj/' );
mtlLoader.load( 'satellite.mtl', function( materials ) {

    materials.preload();

    var objLoader = new THREE.OBJLoader();
    objLoader.setMaterials( materials );
    objLoader.setPath( 'obj/' );
    objLoader.load( 'satellite.obj', function( object ) {

        object.position.z = 300;
        object.scale.set( 0.25, 0.25, 0.25 );
        object.rotation.y = Math.PI;

        object.traverse( function( child ) { 

            if ( child instanceof THREE.Mesh ) { 

                child.castShadow = true;
                if ( child.material !== undefined ) child.material.side = THREE.DoubleSide;

            }
        });

        companion = object;
        scene.add( object );
    });

});

您可以使用以下模式:

var parent = new THREE.Group();
scene.add( parent );
在加载代码中替换

// companion = object;
// scene.add( object )
// with
parent.add( object ); // will add the object to the parent but also to the scene
然后在
animate()
函数中,您可以执行以下操作:

parent.position.x = ....

您可以使用以下模式:

var parent = new THREE.Group();
scene.add( parent );
在加载代码中替换

// companion = object;
// scene.add( object )
// with
parent.add( object ); // will add the object to the parent but also to the scene
然后在
animate()
函数中,您可以执行以下操作:

parent.position.x = ....

你的方法有帮助。但是我用Object3D代替了
THREE.Group
。谢谢:你的方法很有帮助。但是我用Object3D代替了
THREE.Group
。是的,谢谢