如何使用three.js动态设置摄像机位置

时间:2016-10-18 11:01:15

标签: three.js

我正在研究一个可以解析obj和JSON文件的three.js解析器。

问题是不同的对象不同的对齐方式。我需要硬编码camera.position.z的值。但这不是动态的。

如何动态计算此值?我已经尝试过@WestLangley的解决方案,但它没有用。也许我做错了。

这是我的代码:

camera = new THREE.PerspectiveCamera( 45, width/ height, 1, 10000 );
camera.position.z = 200;

// scene
scene = new THREE.Scene();

scene.add( camera );

THREE.Loader.Handlers.add( /\.dds$/i, new THREE.DDSLoader() );

var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath( object_path.dir );
mtlLoader.load( object_path.mtl, function( materials ) {

    materials.preload();
    var objLoader = new THREE.OBJLoader();
    objLoader.setMaterials( materials );
    objLoader.setPath( object_path.dir);
    objLoader.load( object_path.object, function ( object ) {

        // object.position.y = - 95;
        camera.lookAt(object.position);
        scene.add( object );

    }, onProgress, onError );
});

renderer = new THREE.WebGLRenderer({preserveDrawingBuffer: true });
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( width, height);
container.appendChild( renderer.domElement );

controls = new THREE.OrbitControls( camera, renderer.domElement );

1 个答案:

答案 0 :(得分:0)

您需要调用render() - Function。 在此功能中,您可以根据当前状态动态计算camera.z。像:

      var render = function () {
            requestAnimationFrame( render );

            camera.position.z =  ...
            renderer.render(scene, camera);
        };

      render();