前言
在ThreeJS学习:场景、模型、相机、渲染中介绍过,相机是3D场景绘制中不可缺少的部分,相机的位置、观察角度等属性的改变,都会影响到界面的展示,本章节介绍我们开发中常用到的相机以及如何进行设置。
一、透视投影相机 PerspectiveCamera
创建一个投影相机
PerspectiveCamera( fov, aspect, near, far )
透视投影相机的四个参数fov, aspect, near, far构成一个四棱台3D空间,被称为视锥体。
只有视锥体之内的物体,才会渲染出来,视锥体范围之外的物体不会显示在屏幕上。

效果
-
fov:设置相机视锥体竖直方向视野角度 -
aspect:相机视锥体水平方向和竖直方向长度比,一般设置为Canvas画布宽高比width / height -
near: 相机视锥体近裁截面相对相机距离 -
far: 相机视锥体远裁截面相对相机距离,far-near构成了视锥体高度方向
二、正投影相机 OrthographicCamera
创建一个正投影相机
OrthographicCamera( left, right, top, bottom, near, far )
正投影相机 的六个参数left, right, top, bottom,near,far构成一个长方体3D空间,被称为长方体可视化空间。
只有长方体可视化空间之内的物体,才会渲染出来,长方体可视化空间之外的物体不会显示在屏幕上。

效果
-
left:渲染空间的左边界 -
right:渲染空间的右边界 -
top:渲染空间的上边界 -
bottom:渲染空间的下边界 -
near:表示的是从距离相机多远的位置开始渲染,一般情况会设置一个很小的值 -
far:表示的是距离相机多远的位置截止渲染,如果设置的值偏小小,会有部分场景看不到
三、实时更新相机属性
相机的视野范围直接影响到界面的展示,但是实际开发中,界面的尺寸是可以实时变化的,为了不影响界面的展示,我们也要实时更新相机的视野范围
// 监听屏幕变化
window.onresize = function () {
// width、height表示canvas画布宽高度
camera.aspect = width / height;
// 更新
camera.updateProjectionMatrix();
};
四、相机通用属性
-
position:用来设置相机在虚拟世界中的位置 -
lookAt:用来设置观察的地方,它与position属性,共同设置了相机的观察方向。 -
up:设置相机对象的上方向属性
改变
up属性,就好比你生活中拍照时候,扭转你的相机姿态角度进行拍照,这时候你的照片也会跟着相机姿态旋转。
默认值:new THREE.Vector3(0,1,0),意思是Y轴朝上
new THREE.Vector3(0,-1,0),意思是Y轴朝下