Javascript 在鼠标单击时,摄影机将平滑地缩放到对象位置
所以我有一个场景,有多个盒子和一个透视照相机 每当我点击一个特定的框时,我都想达到这个效果Javascript 在鼠标单击时,摄影机将平滑地缩放到对象位置,javascript,three.js,Javascript,Three.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名明星中,他们最终切换了摄像机。我想你需要的是一部动画,有很多动画库,比如和。当您在翻译后抓住该位置时,可以制作动画以平滑翻译。下面是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名明星中,他们最终切换了摄像机