工作时间AM:09:00--PM:20:00

WORKINGTIME

免费咨询

邮箱:
电话:
传真:
手机:
18259511188
地址:
福建省泉州市晋江市罗山街道福埔社区SM国际广场RK207
新闻资讯
当前位置: 首页 > 新闻资讯
three.js入门教程: 第八课 透视摄像机与正交投影摄像机  上传时间:2024-07-25 19:00:58

  调整参数,发现场景中靠近相机的部分场景未渲染第一个参数:左边界,我们可以理解为渲染部分的左边界我们调整一下这个参数,查看一下具体效果。我们利用前面的知识可以创建一个空的场景

  但是这个空场景中其实就已经包含了一些必要对象,比如相机。

  这节课我们来一起了解一下three.js中的两种相机

  我们常用的相机是透视投影摄像机

  这个相机的特点是能将场景中的物体进行近大远小的渲染

  接下来我们通过一个案例看一下这个特点

  我们现在需要将地板plane铺上一层小方块

  我们可以通过循环的方式进行

  我们将这个地板分成一个个5*5的方格

  然后创建一个4*4*4的正方体

  创建一个材质

  然后对该材质的颜色进行随机的设置

  接着几何体和材质进行mesh成网格

  接着将网格加入到场景中

  再对该网格的位置进行修改

  我们发现在第二层循环中j的范围值设置错了,进行一下修改

  因为我们需要将一个个正方体铺设到地板对应的位置

  所以需要通过计算对该正方体网格的位置进行布局

  我们发现刷新浏览器后效果不是我们想要的

  查找问题后发现原来我们正方体的z位置计算错误

  经过调整后我们的正方体终于显示在其对应的位置了

  现在我们可以观察到

盐城建湖九龙口沙庄古村:月色·灯影·古村

  我们最开始使用的摄像机PerspectiveCamera,是可以将场景中的物体渲染成近大远小的效果的

  这种效果也更加真实,所以我们常常使用该相机

  我们再来看一下另一种相机:正交投影摄像机

  该相机不具备将物体渲染成近大远小的效果

  我们先将原先场景中的相机进行屏蔽,然后创建一个正交摄像机OrthographicCamera对象。

  该相机共6个参数

  第一个参数左边界

  第二个参数右边界

  第三个参数上边界

  第四个参数下边界

  第五个参数近端距离

  第六个参数远端距离

  刷新浏览器后发现,场景的所有正方体大小均是一样的。

  我们调整一下renderScene调用的位置

  为了更加方便的查看两种摄像机的表现效果

  我们可以通过辅助库dat.GUI来进行

  我们先创建一个保存相机类型的属性

  再封装一个切换相机的方法

  我们先对摄像机的类型进行判断

  如果是透视投影摄像机

  则我们将相机类型修改为正交投影摄像机

  对相机的位置和视角进行调整并且修改相机类型文本

  否则我们将相机类型切换为透视投影摄像机

  对相机的位置和视角进行调整并且修改相机类型文本。对相机的位置和视角进行调整并且修改相机类型文本。

  然后通过辅助库将属性功能显示到浏览器中

  其中涉及了一个新的方法listen方法

  该方法可以在我们修改文本后显示出对应的文本

  刷新浏览器发现问题

  原来我们listen方法调用出错

  修改过后刷新浏览器,功能可以正常实现

  来回切换两种摄像机可以更加方便的查看效果

  接下来我们一起看一下相机的lookAt方法

  该方法表示摄像机所指向的位置

  我们可以先创建一个想要指向的正方体

  先创建一个8*8*8的几何体

  再创建材质

  通过mesh获得到网格

  调整网格在场景中的位置

摄影作品

  再将该正方体加入到场景中

  接着我们声明一个位置对象,用于保存位置的变化量

  再修改变化量值

  通过正弦函数使得该正方体能够再x轴方向上来回移动

  接着我们调用相机的lookAt方法使得相机能够指向该正方体

  刷新浏览器,发现错误

  原来是我们cube的position属性错误

  刷新浏览器,现在我们的相机正在指向这个正在运动的正方体

  切换一下摄像机来看一下不一样的效果

  我们发现场景中缺少了一个正方体

重庆市首个夜景公园全新开放 7大网红景点免费拍美照

  我们调整一下renderSence的位置,刷新浏览器后该正方体正常显示了。

  接着我们需要把该动画停止掉。

  现在我们再来具体的介绍一下两种相机的构造参数

  透视投影相机的第一个参数表示这个摄像机中能够看到的那部分场景

  我们可以理解为我们能看到的视角

  我们调整一下这个参数,查看一下具体效果。

  调整为10 后,我们发现我们所看到场景的视角变小了

  再调整为二十后,视角变大,场景中的正方体能够显示全了

  我们再将视角放大查看一下效果。

  第二个参数表示渲染的长宽比

  我们调整一下参数查看一下效果

  长宽比变小后,场景变扁了

  我们再来放大一下长宽比,场景变得高起来了

  第三个参数,表示距离摄像机多近的位置开始渲染

  我们修改一下该参数,发现场景中靠近相机的一部分没有渲染

  第四个参数,表示相机从它所处位置能够看的多远

  我们修改一下该参数,发现场景远处有一部分没有渲染

  我们再来看一下正交投影摄像机

  第一个参数:左边界,我们可以理解为渲染部分的左边界

  调整参数,发现场景向左压缩了

  调整参数,发现场景向右压缩了

  第三个参数:上边界,我们可以理解为渲染部分的上边界

  第四个参数:下边界,我们可以理解为渲染部分的下边界

  调整参数,发现场景向下压缩了

  第五个参数:近面距离,我们可以理解为相机所处位置从该点开始渲染

  调整参数,发现场景中靠近相机的部分场景未渲染

  第六个参数:远面距离,我们可以理解为相机所处的位置从该点停止渲染

  调整参数,发现场景中远处的部分场景未渲染

  好了,关于透视与正交摄像机的讲解我们先到这里

  本节的视频课程:three.js教程 第八课   three.js的透视摄像机与正交投影摄像机

  本系列课程合集:three.js入门教程(合集)【持续更新中…】