2016-10-18 58 views
0

我正在研究可以解析obj和JSON文件的three.js解析器。如何使用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); 
+0

@WestLangley你能不能帮我解答一下。我不知道我做错了什么。 :/ – rut2

回答

0

你需要调用一个渲染() - 功能。 而在此功能中,您可以根据当前状态动态计算camera.z。喜欢:

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

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

     render(); 
相关问题