Unity3D本质上还是个三维游戏引擎,所以其摄影机的概念与我们在三维软件中的概念是相通的。
新建场景之后,系统会自动创建一个Main Camera,这个Main Camera就是我们场景的主摄影机。
unity_camera_01.png主摄影机和场景视图(Scene View)的摄影机角度是不一样的,新人常常在场景视图中对好了正确的摄影机角度,然后点击“运行”,结果发现游戏画面完全不是自己想要的样子。
如果希望将主摄影机对齐我们的场景视图,只需要选择主摄影机物体,然后通过菜单:GameObject > Align With View就可以了。这个命令实际上会将所选择的任何物体都与场景摄影机对齐,并不仅限于对齐主摄影机。
unity_camera_02.png这个命令附近的命令也还都蛮有用的,值得记一下快捷键:
- Move To View可以将物体移动到当前视角的正中心位置(并不会改变旋转方向),想要把场景某个角落里的物体拿过来,就可以使用这个命令,免得破坏了完美的摄影机角度;
- Align View to Selected可以将摄影机移动到选择的物体上去,可以用来将场景摄影机与某个场景物体对齐;
- Toggle Active State可以激活/取消激活游戏物体,类似于三维软件中的“隐藏”,但实际上跟隐藏不是一回事。
摄影机相关参数
unity_camera_03.png- Clear Flags:决定哪些屏幕部分将会被清除,当使用多个摄影机来显示不同游戏元素时非常有用。
- Skybox:单个摄影机时选择,表示背景使用天空盒
- Solid Color:单个摄影机时选择,表示背景使用单一颜色
- Depth Only:多个摄影机时选择,根据Depth决定哪个摄影机所渲染的画面在上方,越高的Depth值越处于上方
- Don't Clear:该摄影机在切换帧的时候不清除前一帧的颜色及深度信息,也就是说,会显示为叠加重影的效果
- Background:摄影机背景颜色(当使用Solid Color时,通过Background参数设置具体颜色)
- Culling Mask:通过Layer(层)的设置来屏蔽一部分游戏物体在此摄影机中不被渲染
- Projection:摄影机投影方式
- Perspective:透视摄影机
- Orthographic:正交摄影机
- Field of View:透视摄影机的视野,越大越透视
- Size:正交摄影机的尺寸,越大越能囊括更多场景区域
- Clipping Planes:设置摄影机的最远和最近渲染距离
- Viewport Rect:设置摄影机渲染其视野画幅的哪一部分
- Depth:摄影机的深度
- Rendering Path:使用哪种渲染路径
- Target Texture:可以将摄影机的画面传递给一个特殊的贴图,用来制作比如后视镜、监视器等效果
- Occlusion Culling:
- Allow HDR:允许渲染高动态色彩画面
- Allow MSAA:允许进行硬件抗锯齿
- Target Display:目标显示器,可以设置1-8
多摄影机设置
在游戏中设置多个摄影机是很常见的操作,最主要的功能是将不同“层次”的图像叠加显示给用户。
比如游戏中的UI元素,通常就是用专门的摄影机来渲染显示,只不过在Unity3D中,UI功能是其内置的功能模块,所以无需用户自己去设置UI摄影机。
unity_camera_05.png可以看到场景视图中UI元素所占用的区域在我们实际场景的旁边而且非常巨大(这是因为Unity3D的UI元素1像素对应场景中1单位空间),但在游戏视图中,UI和场景的图像之间是叠加的关系。
如果希望在场景视图中叠加非UI元素,则需要另外添加一个新的摄影机,设置Clear Flags为Depth only,并将Depth值设置得比Main Camera要大。
unity_camera_08.png我们可以把第二摄影机设置为正交摄影机,也可以单独为其视野内游戏物体设置光照。这里我使用的是聚光灯,避免对主摄影机画面造成影响。
unity_camera_06.png这样我们就可以看到,第二个摄影机中的图像被叠加到主摄影机图像上了。
unity_camera_07.png摄影机输出贴图的操作方法
Unity支持将摄影机的画面作为贴图显示在场景物体表面,比如汽车反光镜的影像,或者监控画面影像等等。具体操作方法如下:
首先在Assets文件夹内创建一个Render Texture资源,设置其贴图模式(Dimension)、贴图尺寸(Size)、是否使用抗锯齿(Anti-Aliasing)、色彩格式(Color Format)等等参数。
unity_camera_09.png unity_camera_10.png然后在场景中创建一个新的摄影机,设置其Target Texture参数为刚才创建的Render Texture资源。
unity_camera_13.png unity_camera_11.png最后将这个Render Texture如同普通贴图一样用在某个Material的颜色通道上,再将这个Material指定给某个场景物体(比如我新建的一个简单Quad面片),我们就能在获得这个摄影机的事实画面了。
unity_camera_12.png摄影机后期特效
摄影及后期特效主要指对摄影机渲染结果进行一些后期处理,以增强画面效果,比如整体画面的校色、加辉光、加模糊等等。
Unity在不同版本中处理摄影机后期特效的方式略有所不同。当前版本主要使用
官方插件Post Processing Stack来进行,比起上一版本中直接添加特效Script的方式,要显得简单明了得多。
安装完Post Processing Stack插件之后,就可以为摄影机物体添加一个Post-Processing Behaviour的组件,这个组件需要调用一个Profile文件来执行后期特效。
unity_post_03.png在Assets文件夹中创建一个Post-Processing Profile资源,然后将这个资源拖到Inspector面板中Post-Processing Behaviour组件上指定给Profile参数。
unity_post_04.png双击Profile文件,在Inspector中可以看到所有可用的后期效果都被集成在这里了:
unity_post_05.pngFog
为Diferred Rendering Path激活雾效,在Forward Rendering Path下无任何作用
Antialiasing
添加画面抗锯齿。同样也是为Diferred Rendering Path所准备,因为Forward Rendering Path可以激活硬件抗锯齿,但Diferred Rendering Path无法享受这一功能。
Ambient Occlusion
相对而言比较廉价的屏幕环境排除效果。
Screen Space Reflection
可以获得一些屏幕空间的反射,是通过法线来计算的,比单纯材质的反射要多一点细节。
Depth of Field
激活景深效果,挺常用的。
Motion Blur
激活运动模糊效果。
Eye Adaptation
可以根据场景亮度来自动调节曝光度,也就是模拟人眼瞳孔自动收缩的视觉效果。场景突然变得很亮时会降低曝光,让玩家看清楚场景画面。
Bloom
激活辉光效果
Color Grading
校色,这里提供的选项还蛮专业的。
User Lut
色彩匹配。用户可以在PS等其他软件中进行校色工作,然后生成一个LUT图示给Unity,然后Unity就会根据这个LUT图示中的颜色变化来匹配其他软件中的校色效果。
Chromatic Aberration
模拟一些老旧镜头在边缘有色彩分离、模糊、变形等效果
Grain
激活全屏幕的噪点
Vignette
激活边缘暗化效果
Dithering
为了保证后期效果得到完美体现,通常要将摄影机和渲染质量设置一下:
- 摄影机的Rendering Path修改为Deferred
- 取消摄影机Allow MSAA的勾选,Deferred方式下MSAA不起作用
- 勾选上摄影机的Allow HDR的勾选
- 在Quality面板中同样取消掉Anti-Aliasing的设置
网友评论