Skip to content

Latest commit

 

History

History
71 lines (48 loc) · 3.11 KB

camera.zh-CN.md

File metadata and controls

71 lines (48 loc) · 3.11 KB
order title type
2
相机
组件

相机是一个图形引擎对 3D 投影的抽象概念,作用好比现实世界中的摄像机或眼睛。Oasis Engine 的相机实现了自动视锥剔除,只渲染视锥体内的物体。

基本用法

// 创建实体
const entity = root.createChild('cameraEntity');
// 创建相机组件
const camera = entity.addComponent(Camera);

// 设置透视投影属性
camera.nearClipPlane = 0.1;
camera.farClipPlane = 100;
camera.fieldOfView = 60;
camera.backgroundColor = new Vector4(1,1,1,1);

// 通过 entity 获取相机
entity.engine.sceneManager.activeScene._activeCameras[0]

属性

类型 属性 解释
通用 isOrthographic 是否正交投影,默认是 false
aspectRatio 画布宽高比,一般是根据 canvas 大小自动计算,也可以手动改变(不推荐)
cullingMask 裁剪遮罩,用来选择性地渲染场景中的渲染组件。
透视投影 nearClipPlane 近裁剪平面
farClipPlane 远裁剪平面
fieldOfView 视角
正交投影 orthographicSize 正交模式下相机的一半尺寸

cullingMask 案例:

类型

通过设置 isOrthographic 来决定采用透视投影或正交投影。

透视投影

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

image.png

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

正交投影

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

image.png

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

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

详情请查看 API 文档