Vector 将相机前后移动三次

Vector 将相机前后移动三次,vector,camera,three.js,Vector,Camera,Three.js,你将如何从一个固定点沿着相机所面对的轨迹前后移动相机 我知道有几个控制脚本可以做到这一点,但我需要做一些自定义的事情,我无法分解它们的代码来找出如何隔离上述行为 我已经看到了我认为解决问题的方法,并提出了以下代码: cameraPosition = camera.position cameraRotation = new THREE.Vector3(camera.rotation._x, camera.rotation._y, camera.rotation._z) newCamera = ne

你将如何从一个固定点沿着相机所面对的轨迹前后移动相机

我知道有几个控制脚本可以做到这一点,但我需要做一些自定义的事情,我无法分解它们的代码来找出如何隔离上述行为

我已经看到了我认为解决问题的方法,并提出了以下代码:

cameraPosition = camera.position
cameraRotation = new THREE.Vector3(camera.rotation._x, camera.rotation._y, camera.rotation._z)
newCamera = new THREE.Vector3().addVectors(cameraPosition, cameraRotation)
camera.position.set(newCamera.x, newCamera.y, newCamera.z)
camera.updateProjectionMatrix()
但这似乎是在一个圆圈里移动相机,而不是前后移动


任何帮助都将不胜感激。谢谢大家!

下面是通过更新
camera.position.z
来实现的方法。使用
W
=向前,
S
=向后

var摄影机、场景、渲染器、几何体、材质、网格;
init();
制作动画();
函数init(){
场景=新的三个。场景();
摄像头=新的三个透视摄像头(50,window.innerWidth/window.innerHeight,11000);
摄像机位置z=500;
场景。添加(摄影机);
几何=新的三立方测量法(200200200);
材质=新的三个。MeshNormalMaterial();
网格=新的三个网格(几何体、材质);
场景。添加(网格);
renderer=new THREE.WebGLRenderer({antialas:true});
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
document.body.addEventListener('keydown',onKeyDown,false);
}
函数animate(){
请求动画帧(动画);
render();
}
函数render(){
网格旋转.x+=0.01;
网格旋转y+=0.02;
渲染器。渲染(场景、摄影机);
}
函数onKeyDown(){
开关(event.keyCode){
案例83://向上
摄像机位置z+=50;
打破
案例87://关闭
摄像机位置z-=50;
打破
}
}

要向前或向后移动相机,请使用

camera.translateZ( - distance );


three.js r.78

要前后移动相机,只需更改相机位置的z分量,并在其中添加一些增量向量。请再次参阅,阅读我发布的链接。@WestLangley您是对的。对不起,我没有早些检查。我假设
camera.translateZ(x)
将与
camera.position.z+=x相同。但我错了。非常感谢。谢谢你的回复。我想我应该说得更具体些。。。在我的场景中,摄影机设置了x、y和z位置,并指向场景的中心。我希望把相机沿着它所面对的轨迹移动。我修改了上面的代码以演示:-现在摄影机在立方体上移动,但我试图使其移动到立方体中
camera.lookAt(mesh.position)
将查看多维数据集。毫不奇怪,
camera.translateX
camera.translateY
将分别从侧面和上下进行相机相对平移。
camera.translateZ( distance );