Unity中的两个常用组件----相机和灯光

3/3/2017来源:C/C++教程人气:3286

相机以及灯光是任何一个学习Unity的编程者都会遇到的两个组件,每个场景总是会自动提供这两个组件所对应的物体,但是很多人只是一味地用而没有过去仔细了解过,因此我们有必要了解一下这两个“最熟悉的陌生人”。

一、相机

了解相机之前有必要知道他的成像原理 相机通过渲染的方式成像,最终将场景中的物体分为两部分—输出的图像(颜色缓冲区)和不可见部分(深度缓冲区也称为z buffer)。现实世界中有与遮挡关系我们并不能看到不透明部分后面的物体,这个机制在图形学中有一个专门的名字叫做画家算法,当三维物体投射到二维平面时需要确定那一部分是可见的鄂,哪一部分是不可见的。画家算法表示某些头脑简单的画家总是会优先绘制离屏幕最远的部分,然后按照由远及近的顺序绘制其他部分,绘制过程中不断通过覆盖的方式将最近的额物体呈现出来,这样虽然能最终成像,但是会耗费大量计算机的资源,并非可取,现在一些图形处理引擎使用“过度渲染”的方法面即根据画家算法的绘制顺序绘制两个多边形中受影响的边界,虽然某些图形会被绘制两次但实际上只有很少一部分 才会做这样的而处理,因此对性能的影响很小。 这里写图片描述 接下了解每个属性: Clear Flags:清除标记 用来确定相机的那部分被清除。 skybox表示天空盒子,Solide Color表示单一颜色,这两个属性都可以选择背景色Background。depth only 仅深度,这会仅绘制深度比天空盒子的默认深度大的部分,其他部分不进行绘制,don’t clear不清除,这将会导致每一帧在上一阵的基础上进行绘制,会导致图片效果,因此通常并不是绘制游戏的很好方式。 CullingMask:剔除遮罩,正如上面原理所讲,未被选中的那一层将不会进行绘制,从而使他后面的物体被绘制 PRojection:投射 切换相机的模拟透视功能 Perspective表示透视,field of view表示视野的大小,ClippingPlanes(裁剪平面)表示从相机开始渲染到停止渲染之间的距离,其 中的Near表示开始描绘的离相机最近的点,Far表示绘制的离相机最远的点。 orthographic表示矩形,Size表示裁剪平面的大小 ViewPortRect:中的X,y表示绘制的水平,竖直未知的起点,W,h表示相机输出到屏幕上的宽度,高度 Depth:表示相机绘制的深度 例如在CS中绘制枪时需要一个深度为0的相机绘制环境,深度为1的相机绘制枪支,且深度为1的相机仅绘制深度,其他部分不进行绘制。这样就不会导致枪进入墙里面的部分玩家看不到。 RenderingPath:渲染路径 Use Player Settings,使用播放器设置 ,该相机将使用任意一个播放器设置中所设置的渲染路径。Vertex Lit 顶点光照,本相机对所有对象的渲染会作为顶点光照对象来渲染 。Forward 快速渲染,所有对象将按每种材质一个通道的方式来渲染,如同在Unity2.x中的标准 。Deferred Lighting 延迟照明,所有对象将无照明绘制一次,然后所有对象的照明将一起在渲染队列的末尾被渲染 TargetTexture:目标纹理 OcclusionCulling:遮罩剔除,它不同于视锥体裁剪(绘制相机锥形视野中的而所有可见部分和不可见部分),而是仅绘制可见部分,遮挡部分不进行绘制 HDR:高动态范围图像(High-Dynamic Range,简称HDR),相比普通的图像,可以提供更多的动态范围和图像细节。 TargetDisplay:显示器上选择的成像窗口

二、灯光

这里写图片描述 Type:灯光类型 Directional表示方向光,point表示点光,spot表示聚光(锥形光,类似于手电筒发出的光) Baking:烘焙,场景包含大量物体时,实时光照和阴影对游戏性能有很大的影响。使用烘焙技术,可以将光线效果预渲染成贴图再作用到物体上模拟光影,从而提高性能。 Color:灯光颜色 Intensity:灯光强度 BounceIntensity:反射光强度 ShadowType:阴影类型,分为SoftShadows(软阴影,更好资源,可以显示阴影的棱角)和hardShadows(硬阴影),以及noShadows(没有阴影)。strength表示阴影强度,resolution设置阴影的细节程度,bias表示阴影偏移量大小 cookie:灯光投射的cookie纹理 drawHalo:是否有光晕 rendermode:灯光渲染方式,这将会影响灯光的保真度和性能,Auto(自动),important(重要),not important(不重要) culling Mask:灯光所渲染的层