1.问题复现
在项目中添加了OrbitControls控制器来控制相机的旋转和平移,但是需要修改初始的相机角度,于是我把相机的角度进行修改,如下:
const camera = new THREE.PerspectiveCamera(75, viewport.offsetWidth / viewport.offsetHeight, 0.01, 20);
camera.position.set(0,1,7);
//修改相机初始角度
camera.rotation.set(0,-Math.PI/2,0);
const controls = new OrbitControls(camera, renderer.domElement);
controls.update();
运行项目后发现相机的位置并没有发生变化。
2.解决方法
于是我尝试创建一个组,将相机加入组里,通过改变组的旋转角度从而改变相机的初始角度,如下:
const cameraRigY = new THREE.Group();scene.add(cameraRigY);const camera = new THREE.PerspectiveCamera(75, viewport.offsetWidth / viewport.offsetHeight, 0.01, 20);camera.position.set(0,1,7);//相机加入组里cameraRigY.add(camera);//修改整体相机Y轴旋转cameraRigY.rotation.set(0,Math.PI/2,0);const controls = new OrbitControls(camera, renderer.domElement);controls.update();
进过测试,相机的初始角度修改成功了。