我認爲你需要的是一個動畫,有很多動畫庫,如anime.js和tween.js。由於翻譯後您已經抓住了位置,您可以製作動畫來平滑翻譯。以下是tween.js的代碼片段:
var tween2 = new TWEEN.Tween(camera.position)
.to({
x : target.position.x,
y : target.position.y,
z : target.position.z
} , 1000)
.easing(TWEEN.Easing.Linear.None)
.start();
如果您想在攝像機中心找到該框,我們還需要更改相機旋轉。這是一種通過使用矩陣來計算目標旋轉的方法。
var rotation_matrix = new THREE.Matrix4();
rotation_matrix.lookAt(target_position,target_box.position,camera.up);
var target_rotation = new THREE.Euler(0,0,0,"XYZ");
target_rotation.setFromRotationMatrix(rotation_matrix);
//now, the target_rotation would be the rotation after translating.
然後,您可以使用相同的方法制作動畫以更改旋轉。
順便說一句,它似乎在100000顆星最後切換相機。