Unity Camera

课程目标

1. 了解摄像机(camera)不同视角的设计与实现;2. 感受在不同摄像机视角下观察虚拟场景。

喜欢玩游戏或者看3D动漫的朋友可以回忆在虚拟场景中摄像头的运动变化带来的视觉感受,例如:摄像头给场景中的主角来个特写镜头,或者摄像头距离主角的距离越来越远,视觉或者故事叙述会给观者带来怎样的感觉呢?

Camera设置的参数

属性:功能:
Clear Flags确定将清除屏幕的哪些部分。使用多个摄像机来绘制不同游戏元素时,这会很方便。
Background在绘制视图中的所有元素之后但没有天空盒的情况下,应用于剩余屏幕部分的颜色。
Culling Mask包含或忽略要由摄像机渲染的对象层。在检视面板中将层分配到对象。
Projection切换摄像机模拟透视的功能。
        Perspective摄像机将以完整透视角度渲染对象。
        Orthographic摄像机将均匀渲染对象,没有透视感。注意:在正交模式下不支持延迟渲染。始终使用前向渲染。
Size__(选择 Orthographic 时) |设置为 Orthographic 时摄像机的视口大小。 | |FOV Axis__(选择 Perspective 时)视野轴。
        Horizontal摄像机使用水平视野轴。
        Vertical摄像机使用垂直视野轴。
Field of view__(选择 Perspective 时) |摄像机视角(以沿着 FOV Axis__ 下拉选单中指定轴的度数为单位)。
Physical Camera勾选此复选框可为此摄像机启用 Physical Camera 属性。

启用 Physical Camera 属性后,Unity 将使用模拟真实摄像机属性的属性(Focal LengthSensor Size 和 Lens Shift)计算 Field of View

在勾选此复选框之前,Physical Camera 属性不会显示在 Inspector 中。
        Focal Length设置摄像机传感器和摄像机镜头之间的距离(以毫米为单位)。

较小的值产生更宽的 Field of View,反之亦然。

更改此值时,Unity 会相应自动更新 Field of View 属性。
        Sensor Type指定希望摄像机模拟的真实摄像机格式。从列表中选择所需的格式。

选择摄像机格式时,Unity 会自动将 Sensor Size > X 和 Y 属性设置为正确的值。

如果手动更改 Sensor Size 值,Unity 会自动将此属性设置为 Custom
        Sensor Size设置摄像机传感器的大小(以毫米为单位)。

选择 Sensor Type 时,Unity 会自动设置 X 和 Y 值。如果需要,可以输入自定义值。
                X传感器的宽度。
                Y传感器的高度。
        Lens Shift从中心水平或垂直移动镜头。值是传感器大小的倍数;例如,在 X 轴上平移 0.5 将使传感器偏移其水平大小的一半。

可使用镜头移位来校正摄像机与拍摄对象成一定角度时发生的失真(例如,平行线会聚)。

沿任一轴移动镜头均可使摄像机视锥体倾斜
                X传感器水平偏移。
                Y传感器垂直偏移。
        Gate Fit用于更改分辨率门大小(Game 视图的大小/宽高比)相对于胶片门大小(物理摄像机传感器的大小/纵横比)的选项。

有关分辨率门和胶片门的更多信息,请参阅关于物理摄像机的文档。
                Vertical使分辨率门适应胶片门的高度。

如果传感器宽高比大于 Game 视图宽高比,Unity 会在两侧裁剪渲染的图像。

如果传感器宽高比小于 Game 视图宽高比,Unity 会在两侧对渲染的图像进行过扫描。

选择此设置时,更改传感器宽度(Sensor Size > X 属性)不会影响渲染的图像。
                Horizontal使分辨率门适应胶片门的宽度。

如果传感器宽高比大于 Game 视图宽高比,Unity 会在顶部和底部对渲染的图像进行过扫描。

如果传感器宽高比小于 Game 视图宽高比,Unity 会在顶部和底部裁剪渲染的图像。

选择此设置时,更改传感器高度(Sensor Size > Y 属性)不会影响渲染的图像。
                Fill使分辨率门适应胶片门的宽度或高度(以较小者为准)。这会裁剪渲染的图像。
                Overscan使分辨率门适应胶片门的宽度或高度(以较大者为准)。这会过扫描 (overscan) 渲染的图像。
                None忽略分辨率门,仅使用胶片门。这会拉伸渲染的图像以适应 Game 视图宽高比。
Clipping Planes开始和停止渲染位置到摄像机的距离。
        Near相对于摄像机的最近绘制点。
        Far相对于摄像机的最远绘制点。
Viewport Rect通过四个值指示将在屏幕上绘制此摄像机视图的位置。在视口坐标中测量(值为 0–1)。
        X绘制摄像机视图的起始水平位置。
        Y绘制摄像机视图的起始垂直位置。
        W_(宽度) |屏幕上摄像机输出的宽度。 | |        H_(高度)屏幕上摄像机输出的高度。
Depth摄像机在绘制顺序中的位置。具有更大值的摄像机将绘制在具有更小值的摄像机之上。
Rendering Path定义摄像机将使用的渲染方法的选项。
        Use Player Settings此摄像机将使用 Player Settings 中设置的任何渲染路径 (Rendering Path)。
        Vertex Lit此摄像机渲染的所有对象都将渲染为顶点光照对象。
        Forward每种材质采用一个通道渲染所有对象。
Target Texture引用将包含摄像机视图输出的渲染纹理。设置此引用将禁用此摄像机的渲染到屏幕功能。
Occlusion Culling为此摄像机启用遮挡剔除 (Occlusion Culling)。遮挡剔除意味着隐藏在其他对象后面的对象不会被渲染,例如,如果对象在墙后面。请参阅遮挡剔除 (Occlusion Culling) 以了解详细信息。
Allow HDR为此摄像机启用高动态范围渲染。请参阅高动态范围渲染以了解详细信息。
Allow MSAA为此摄像机启用多重采样抗锯齿。
Allow Dynamic Resolution为此摄像机启用动态分辨率渲染。请参阅动态分辨率以了解详细信息。
Target Display定义要渲染到的外部设备。值为 1 到 8 之间。

练习项目

打开项目

1. 下载附带项目,在unity hub 中打开该项目

2. 在打开项目中,在Project窗口中点击Assets>CreativeCore_Camera>Scenes, 在右边窗口中双击选择Camera_Intro_Scene,打开该场景,见下图:

切换摄像机

3. 点击上述窗口中中间上方的play三角形)按键,运行该场景,鼠标点击左下方的游戏窗口,然后在按键盘上的 C 按键(可以连续按),切换游戏窗口中的摄像机,可以看到如下不同的摄像机场景:

4.  熟悉上述变换camera视角感受场景后,重新选择一个新的场景,开始尝试设置Camera参数,在Project窗口中点击Assets>CreativeCore_Camera>Scenes, 在右边窗口中双击选择Camera_Projection_Scene,打开该场景:

Projection设置

5. 在Hierarchy 窗口中找到 PlayerArmature,然后按一下 F 键,左上方的虚拟场景将近景显示该虚拟任务,见上图。

6. 再在Hierarchy 窗口中点击 MainCamera (在上述PlayerArmature的下方),按住 Ctrl+Shift+F 组合按键(或者選擇菜單 GameObject > Align With View),這樣左下方的游戲窗口和上方場景窗口的視角一致。

7. 选择MainCamera,可以在最右侧的 Inspector窗口中看到Camera参数, 例如:Projection 设置为 PerspectiveField of View 设置了一个数值,可以左右滑动该按钮,改变Field of View 数值,左下方游戏窗口的视野会相应变大或变小。

也可以选择最左侧场景窗口的左边的旋转按键,这时场景中的Camera将会高亮(白色)显示,并有绿色和蓝色等圆环环绕,鼠标选中绿色圆环,左右移动,可以看到场景中Camera旋转,同时下方的游戏场景中的视角也相应移动。

8. 再回到最右侧的 Inspector窗口中看到Camera参数,将 Projection 设置为 Orthographic,可以看到游戏窗口中视角变得很大,可以在上方场景中适当调节MainCamera的位置和角度,让你几乎可以看到全景,然后点击上图正中间顶端的 运行(三角形)按键, 运行游戏。鼠标点击左下方的游戏窗口,然后按键盘上ASDW按键,操作机器人在场景中漫游。

可以改变 Camera参数Size值,可以看到游戏窗口变大或变小。

Clipping & Culled Planes

9. 再次点击(三角形)按键,退出游戏。

下面认识 Clipping Planes 定义摄像机能够看到的平面,包含 近(near) 和远 (far)两个平面:

near, which defines how close an object is able to get to the camera while still rendering,

far, which defines how far away an object can be before it’s no longer visible on screen

A white wireframe in the Scene view shows you the locations of these planes. For perspective cameras, the wireframe is a pyramid shape, and for orthographic cameras, the wireframe is a rectangle.

10. 在Project窗口, Assets>CreativeCore_Camera>Scenes目录中双击选择  Camera_Limits_Scene,打开这个场景,在Hirarchy窗口单击选择 Main Camera.

11. 在右侧的Inspector窗口中,看到Clipping Plane的两个参数near 0.3 和 far 1000, 可以尝试改变这个far 的数值,例如改为 10,可以看到左下方的Game窗口中所有物体消失了,只剩下天空图像。(自己思考一下为什么变成这样了)

12. 将far参数改回1000,在尝试更改一下near 0.3 的参数,例如改为 20,在Game窗口中会看到一些地面不显示,好像地面被割掉了。

通过更改clipping plan的far和near数值,可以定义摄像机能够看到(渲染)的场景范围。尝试不同数值后,改为原先的数值。

13. 下面设置culling masks在摄像机看到的范围内隐藏或显示物体。

在左边的Scene场景窗口中,选中红色的Capsule,然后在右侧Inspector窗口中,点击Layer参数边的下三角,在下拉菜单中选择 Add Layer..

14. 在显示的 Tags & Layers 窗口中, User Layer 6的右边输入 “Culled”,定义了一个新的层

15. 再次在Scene场景窗口中选择红色的Capsule,然后在右侧Inspector窗口中,点击Layer参数边的下三角,在下拉菜单中选择刚刚新建的 Culled 层

16. 在Hirarchy窗口点击Main Camera, 可以先查看一下左下方的Game窗口中红色Capsule是显示的,然后在右侧的Inspector窗口,点击 Rendering部分的Culling Mask右侧的下拉菜单(当前显示everything),在菜单中点击Culled,将该层选择取消。这是可以查看左下方Game窗口中红色Capsule消失了!

再次点击Culled,消失的红色Capsule又再次显示了。

体验多个摄像场景

在下面的场景中,有多个摄像头的转换场景,在场景中漫游的时候,摄像头会自动切换。

17. 在Scenes文件夹中打开Camera_Views_Scene 场景文件,然后点击正中间上方play(三角形)按键,进入游戏模式,使用键盘 W A S D 按键在场景中开始漫游,首先进入3rd Person Camera view (第三人称的摄像头)区域。

3rd Person Camera 可以让玩家从控制的游戏人物后方观察所控制的游戏人物和其周围所能看到的场景。

18 操控W A S D 按键将游戏人物走到最左方的位置,进入First-Person Camera View (第一人称摄像视角),即透过游戏人物的眼睛观察周围场景。

19. 操控W A S D 按键将游戏人物走到右边一点的 Ortho View,显示 Isometric camera views (等轴测摄像机视图),通常在2D动画显示,缺少一些深度信息。

20 操控W A S D 按键将游戏人物再走到右边一点的迷宫,进入迷宫后,摄像头显示一个天空俯视向下(Top-Down view)的一个上帝视角所看的场景,这样是否可以帮助你快速走出迷宫呢?

22 操控W A S D 按键走出迷宫后,来到 “See behind the building"的标志下,进入建筑的后方通道后,稍微停顿一下,等待摄像头切换到固定摄像头场景,然后控制游戏人物向摄像头走来。

固定摄像头场景(Fixed-Camera View)

23. 完成上述漫游后,可以自己再尝试一遍,体验不同摄像场景。一般游戏场景设置第三人称视角,并且允许用户切换为第一人称视角。

体验摄像机拍摄角度

24. 在Scenes文件夹中打开Camera_Shots_Scene 场景文件,然后点击正中间上方play(三角形)按键,进入游戏模式,游戏中显示的是一个广角(wide angle)场景,按 1 键激活这个场景(如果没有看到如下游戏场景的话)

广角(wide angle)场景

25.在游戏场景中,按 2 键激活近景的镜头(close-up shot),见下图。该镜头能够清晰看到游戏角色的腰部到头的躯干部分。如果把摄像机位置放在游戏角色身后的位置,该近景的镜头通常称为 过肩镜头(over-the-shoulder shots).

26. 在游戏场景中,按 3 键激活鸟瞰图(bird's-eye view),见下图。改图是在上述两个图之间的显示场景,给与玩家对场景及角色位置有一个更好的了解。

27. 在游戏场景中,按 4 键激活仰视图(worm's-eye view),见下图,该镜头从下往上看游戏中的角色,通常是警告玩家游戏中遇到一些问题。

  • 30
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值