Unity3D - 摄像机(Cameras)

原文教程:https://unity3d.com/cn/learn/tutorials/topics/graphics/cameras?playlist=17102(需翻墙)

在Unity中,摄像机(Camera)是一个最基础的组件(Component)。摄像机将场景中的内容展示给用户。每个场景必须有至少一个摄像机,否则我们会什么也看不到。

当一个新场景被创建时,一个摄像机也会随之被创建。这个就是主摄像机(Main Camera)。摄像机是一个绑定在GameObject上的组件。这意味着我们可以操作、移动摄像机,例如:设置父亲,设置脚本,或一些物理交互。

要创建第一人称或是第三人称的摄像机,包括移动效果,我们可以让Player GameObject作为父亲。对于第一人称摄像机,从人物的角度来看,要确保摄像机在其眼睛的部位。对于第三人称摄像机,要确保摄像机在人物的后面。


第一人称


第三人称

对于一些解谜游戏和上下的射击游戏,摄像机通常是静态放置的,只是渲染和展示所看到的。

这里举个例子,将摄像机放置到中心,移除无用的属性,将摄像机的视角向下去模拟上下型的游戏。此外,摄像机投射模式(Projection)使用直角(orthographic)。效果如下:

这里写图片描述

在一个场景中,也可以有多个摄像机。每个摄像机渲染不同的部分。在这个例子中,场景中有三个摄像机,一个用于渲染所有的动态物体(dynamic object)。一个用于渲染静态背景(static background),另一个显示UI叠加层。三个摄像机可以一起组合展示给用户。

这里写图片描述
多摄像机预览效果

当一个摄像机被选中时,我们可以看到一个预览窗口。当我们场景中有多个摄像机时,这个功能帮助我们知道每个摄像机各自渲染了什么。

即使场景中只有一个摄像机,这个预览窗口在全屏模式下也可以帮助让我们知道摄像机渲染了什么。

摄像机会渲染它前方视野中的一切。它的视野在场景中用白色轮廓的线显示。这个形状就是一个截头锥体(frustum)。一个frustum就是一个金字塔、锥体被截去了头部。锥体被截去的头部,就是近裁剪平面(near clipping plane),远处的是远裁剪平面(far clipping plane)。近、远裁剪平面控制着摄像机绘制的距离。

GameObject必须在远、近裁剪平面之间才能够被渲染。截头锥体的边代表着摄像机能够看到的左右上下的范围。场景中的任何部分,只有在frustum中才能够渲染。

这里写图片描述
截头锥体(frustum)所代表的可视区域

场景中的摄像机有两种不同的方式定义可看到的区域。一个是远景模式(Perspective Mode),一个是直角模式(Orthographic Mode)。切换这两种模式,摄像机可视区域截头锥体的形状会有显著的变化。

这里写图片描述

摄像机的远景模式(Perspective Mode)渲染场景,会更像真实世界的摄像机,有一种由远到近视角衰减的感觉。这是创建一个游戏,最常用的摄像机模式。直角模式(Orthographic Mode)并没有视角衰减。所有的对象都会被平行投影形式的摄像机所渲染。在场景中我们能看到一个直的截头锥体,前后看到视图的尺寸是一致的。这个模式常用与等距游戏,例如:实时策略游戏,2D游戏。

为了控制场景中渲染的范围,可以调节(near/far clipping plane)远、近截取平面的尺寸或截头锥体(frustum)的形状。

视野(Field Of View)用于控制摄像机的视图有多宽。这非常像现实世界中摄像机的变焦(zoom)效果。当使用直角模式时,尺寸(size)属性会替代视野(Field Of View)属性。这个属性控制着直角模式的视口(viewport)。这个属性非常像视野(Field Of View),但是改变尺寸(size)的值会同时改变前后平面的大小。

我们的场景必须要有一种背景。这个由清除标记(Clear Flags)和背景属性(Background Properties)来控制。背景属性设置的色值,会被绘制在场景中所有物体的后面。清除标记(Clear Flags)决定了摄像机会使用什么背景。当使用多个相机时,这个设置非常重要。当渲染视图时,每个相机都存储了颜色和深度信息。未被绘制的区域被认为是空的,清除标记(Clear Flags)决定了空的空间会如何显示。如果一个天空盒子被设置为背景,那么背景就是天空盒子。一个天空盒子是一个材质,它包含了包围场景的一些列图片,这些图片会为场景提供纹理背景。

如果不想要天空盒子,我们也可以选择一个纯色(Solid Color)作为清除标记。这个颜色会被绘制在所有物体的后面。

深度(Depth Only)主要用于多个摄像机。Don’t Clear一般不用于游戏中,它会导致每帧在最后绘制,会产生一个涂抹效果。

这里写图片描述

当使用多个相机时,清除标记常常使用Depth Only。使用这个设置,每个相机都会被一个值(value)和一个深度(depth),每个相机的视图分层叠在一起,从深度值最低的开始。通常主摄像机(Main Camera)会被分配一个较低的深度值,清楚标记被设置为天空盒子或是纯色。其他的摄像机的清除标记都被设置为depth only,这样最终只有一个背景。其他摄像机的图像会在主摄像机之上。

摄像机渲染的内容被Culling Mask属性所限制。Culling Mask菜单会列出场景中所有可用的的层(Layer)。摄像机仅仅会渲染Culling Mask属性中被选中的层。

这里写图片描述

在开发用户界面时,UI元素被设置为UI layer。我们的UI摄像机的Culling Mask被设置成UI。同时,清除标记被设置为depth only,深度值设置成所有相机中最高的。这样UI摄像机仅仅绘制UI元素,而且UI元素会被放置顶层。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值