2012-07-25 184 views
1

我正在嘗試旋轉攝像頭以圍繞X軸的場景。
此時我的代碼是這樣的:圍繞X軸旋轉攝像頭(three.js)

rotation += 0.05; 
camera.position.y = Math.sin(rotation) * 500; 
camera.position.z = Math.cos(rotation) * 500; 

這使得相機左右移動而轉動奇怪的事情在發生,無論是相機翻轉,或者它跳過它下面的虛圓的某些部分。

回答

5

你只提供了一段代碼,所以我必須對你在做什麼做一些假設。

此代碼:

rotation += 0.05; 
camera.position.x = 0; 
camera.position.y = Math.sin(rotation) * 500; 
camera.position.z = Math.cos(rotation) * 500; 
camera.lookAt(scene.position); // the origin 

會導致「翻轉」你指的是由於相機試圖保持「正面朝上」,並在其經過的「北極就會迅速改變方向「。

如果抵消相機的x座標像這樣,

camera.position.x = 200; 

相機的行爲會顯得更自然給你。

+0

不幸的是,它不起作用,但我認爲你是正確的相機的「向上」向量。因爲它需要圍繞場景旋轉,所以向上矢量需要從+ y軸改變爲-y軸,而我不知道該怎麼做。 – Dimitris 2012-07-26 11:28:06

3

Three.js試圖保持相機朝上。當您沿z軸傳遞0時,它將「修復」相機的旋轉。您可以手動檢查並重置相機的角度。

camera.lookAt(scene.position); // the origin 
if (camera.position.z < 0) { 
    camera.rotation.z = 0; 
} 

我敢肯定,這是不是最好的解決辦法,但如果任何人碰到這個問題,同時運行與three.js所玩(像我只是做了),這將進一步給一步。