相机

相机总览

相机是一个图形引擎对 3D 投影的抽象概念,作用好比现实世界中的摄像机或眼睛。如果不加相机,画布将什么都画不出来。Galacean 的相机实现了自动视锥剔除,只渲染视锥体内的物体。

相机的类型

透视投影

透视投影符合我们的近大远小模型,可以看一下透视模型示意图:

image.png

如上图所示,近裁剪平面(nearClipPlane),远裁剪平面(farClipPlane)和 视角(fieldOfView) 会形成一个视椎体 (View Frustum)。在视椎体内部的物体是会被投影到摄像机里的,也就是会渲染在画布上,而视椎体外的物体则会被裁剪。

正交投影

正交投影就是可视区近处和远处看到的物体是等大小的。由正交投影模型产生的可视区称为盒状可视区,盒状可视区模型如下:

image.png

如上图所示,有 top、bottom、left 和 right,Galacean 对正交属性做了一些简化,更符合开发者的使用习惯,只有 orthographicSize。下面是针对各项属性和 orthographicSize 的关系

  • top = orthographicSize
  • bottom = -orthographicSize
  • right = orthographicSize * aspectRatio
  • left = -orthographicSize * aspectRatio

如何选择

经过对透视投影和正交投影的比较,可发现他们的不同点:

  • 可视区域模型
  • 是否有近大远小的效果

通过以下示例能直观感受到正交相机与透视相机渲染效果的差异,简而言之,当需要展示 2D 效果时,就选择正交相机,当需要展示 3D 效果时,就选择透视相机。

相机的朝向

Galacean 中的局部坐标与世界坐标遵循右手坐标系,因此相机的 forward 方向为 -Z 轴,相机取景的方向也是 -Z 方向。

上手

介绍了相机的基本概念,接下来让我们上手:

这篇文档对您有帮助吗?