Unity iOS摄像头集成方法

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

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

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

unity ios 摄像头 unity3d摄像头_unity


第一人称

unity ios 摄像头 unity3d摄像头_unity3d_02


第三人称

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

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

unity ios 摄像头 unity3d摄像头_unity3d_03

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

unity ios 摄像头 unity3d摄像头_unity_04


多摄像机预览效果

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

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

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

unity ios 摄像头 unity3d摄像头_摄像机_05

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

unity ios 摄像头 unity3d摄像头_unity3d_06


截头锥体(frustum)所代表的可视区域

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

unity ios 摄像头 unity3d摄像头_UI_07

摄像机的远景模式(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)决定了空的空间会如何显示。如果一个天空盒子被设置为背景,那么背景就是天空盒子。一个天空盒子是一个材质,它包含了包围场景的一些列图片,这些图片会为场景提供纹理背景。

unity ios 摄像头 unity3d摄像头_unity ios 摄像头_08

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

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

unity ios 摄像头 unity3d摄像头_unity ios 摄像头_09

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

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

unity ios 摄像头 unity3d摄像头_unity3d_10

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

     

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空