ThreeJS学习:相机

前言

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, bottomnearfar构成一个长方体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轴朝下

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容