Halo
发布于 2023-09-27 / 160 阅读 / 0 评论 / 0 点赞

three.js相机属性

OrthographicCamera(正交相机)

物体显示的大小和绘制时一样大小,是不会因为距离目测点远而变小的。实际生产环境一般不会选这种模式,因为和我们日常所见不一样

创建

const k = window.innerWidth / window.innerHeight;
const s = 600;
const camera = new THREE.OrthographicCamera(-s * k, s * k, s, -s, 1, 8000);
scene.add( camera );

函数总共四个6个参数,left, right, top, bottom, near, far:

  • left 渲染空间的左边界
  • right 渲染空间的右边界
  • top 渲染空间的上边界
  • bottom 渲染空间的下边界
  • near 属性表示的是从距离相机多远的位置开始渲染,一般情况会设置一个很小的值,默认值0.1。
  • far 属性表示的是距离相机多远的位置截止渲染,如果设置的值偏小小,会有部分场景看不到,默认值2000。

PerspectiveCamera(透视相机)

相同大小的物体,会随着目测点变远而变小,和我们日常所看见一直。实际生产环境都会选选这种模式。

创建

var camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );
scene.add( camera );

函数总共有四个参数,分别是fov,aspect,near,far:

  • fov 表示摄像机视锥体垂直视野角度,最小值为0,最大值为180,默认值为50,实际项目中一般都定义45,因为45最接近人正常睁眼角度;
  • aspect 表示摄像机视锥体长宽比,默认长宽比为1,即表示看到的是正方形,实际项目中使用的是屏幕的宽高比;
  • near 表示摄像机视锥体近端面,这个值默认为0.1,实际项目中都会设置为1;
  • far 表示摄像机视锥体远端面,默认为2000,这个值可以是无限的,说的简单点就是我们视觉所能看到的最远距离。

相机角度

位置

camera.position.set(0, 10, 0);

三个参数分别为(x,y,x),设置的点就是相机中心点所在位置,默认是:(0,0,0)

相机的上方

camera.up.set(0, 10, 0);

三个参数分别为(x,y,x),设置的点就是相机正上方点,默认是:y轴的负半轴到y轴的正半轴,即天空方向

看的方向

camera.lookAt(0, 10, 0);

三个参数分别为(x,y,x),设置的点就是相机看向的目标,默认是:Z轴的正半轴到Z轴的负半轴,即看向屏幕里面

设置角度顺序

注意 up 属性和 position 属性,如果在 lookAt() 执行之后改变,需要重新执行 lookAt()


评论