2017-09-19 119 views
0

我正試圖創建一個相機,跟隨一個圍繞球體的軌道上旋轉的對象。但每當攝像機到達軌道的極座標時,方向都會改變。如何設置遵循圓形路徑的攝像機?

function render() { 
    rotation += 0.002; 

    // set the marker position 
    pt = path.getPoint(t); 

    // set the marker position 
    marker.position.set(pt.x, pt.y, pt.z); 
    marker.lookAt(new THREE.Vector3(0,0,0)); 

    // rotate the mesh that illustrates the orbit 
    mesh.rotation.y = rotation 

    // set the camera position 
    var cameraPt = cameraPath.getPoint(t); 
    camera.position.set(cameraPt.x, cameraPt.y, cameraPt.z); 
    camera.lookAt(marker.position); 

    t = (t >= 1) ? 0 : t += 0.002; 

    renderer.render(scene, camera); 
} 

下面是一個完整的小提琴:我只是根據所必須遵循的對象並調用lookAt事後設置攝像機的位置http://jsfiddle.net/krw8nwLn/69/

我創建了第二個立方體另一小提琴其中代表所需的相機行爲:http://jsfiddle.net/krw8nwLn/70/

+1

你的兩個鏈接指向相同的網址 –

+0

哦,對不起!我已經更新了這個問題:) – Slevin

回答

0

會發生什麼事是相機的lookAt函數將始終嘗試將相機與水平面對齊(以便「向上」方向始終爲(0,1,0)。你到達頂部和底部橢圓路徑,相機會瞬間旋轉180°,以使其仍然向上。您還可以在您的「所需行爲」示例中看到此情況,因爲相機立方體旋轉以便顯示另一側的顏色。

對於這種情況,解決方案是不使用lookAt,因爲它不支持像這樣翻轉的相機。直接設置相機的rotation矢量。 (這需要一些數學,但你看起來像一個數學傢伙。)

+0

這太好了,不能成爲真實的...... :-)但是,謝謝你指出我正確的方向,我要去測試一些東西! – Slevin