2017-04-18 28 views
0

作爲一個項目的一部分,我不得不圍繞一個物體(位置0,0,0)的相機,這個物體仍然留給他。爲此,我想知道LookAt函數是否是最適合的函數,並且它是如何工作的?函數LookAt轉身對象?

+0

你看看'OrbitControls'? https://threejs.org/examples/#misc_controls_orbit – Brakebein

+0

是的,我看到了,但我不知道如何使用它,而我不知道如何修改它,因爲我想要做什麼,因爲我想要的是在中間有一個球體或其他人,可以用相機轉動,使用鍵或用鼠標。 – Bealion

+0

LookAt()的一個小問題。當你調用camera.LookAt(mesh)時,'mesh'必須是Vector3!所以你應該這樣調用它:'camera.LookAt(mesh.position);' –

回答

0

集成OrbitControls應該用幾行代碼完成。因此,代碼的基本路線應該是:

// init 
var controls = new THREE.OrbitControls(camera, renderer.domElement); 
controls.enableZoom = false; // optional 
controls.enablePan = false; // optional 
controls.center.set(0,0,0); // should be initially 0,0,0 
controls.addEventListener('change', render); // if you are not using requestAnimationFrame() 

camera.position.z = 500; // should be bigger than the radius of your sphere 

// render 
function render() { 
    renderer.render(scene, camera); 
} 
<script src="js/controls/OrbitControls.js"></script> 

現在,你應該能夠使用鼠標旋轉的攝像頭在你的領域。

所有其他必要的東西(攝像機,渲染器)可以在例子中找到:https://threejs.org/examples/#misc_controls_orbit

+0

謝謝,但有一個問題:「無法讀取屬性'domElement'的undefined」:「( – Bealion

+0

)當然,你需要實例化渲染器('renderer = new THREE.WebGLRenderer();'),camera和scene,就像在每個three.js項目中一樣,我只是展示了關於OrbitControls的基本代碼行 – Brakebein

+0

是否有可能我告訴我應該改變什麼程序(如果是的話,我不知道如何發送它:'() – Bealion