小白_Unity引擎_详细Camera以及代码设置
Cemera摄像机:
Unity主要核心组件之一。显示场景中,摄像机照射部分,是向玩家捕获和显示世界的设备。
1.
ClearFlags :清除标记。显示背景内容,默认为天空盒子
代码设置:
m_Camera.GetComponent<Camera>().clearFlags = CameraClearFlags.Skybox;
如果没有指定天空盒子,在屏幕显示默认背景色。
Solic Color:空白处将显示默认此处设置背景色
Depth Only:仅深度,该模式用于对象不被裁剪。
Dont Clear :不清除,该模式不清除任何颜色或深度缓存,但这样每帧渲染的结果都会叠加在下一帧上。
选Depth Only的效果:
如何实现看到后边的小圆球呢?
再创建一个摄像机Camera2,两个摄像机都设置为Depth Only,小圆球创建一个Layer层 layer1,设置Camera2的CullingMask为层设置为layer1,
并且Camera2的深度比Camera1的深度大。
原因:每个摄像机赋予不同的深度值。摄像机是从低深度值到高深度值次序绘制,一个深度值为2的摄像机将会在深度为1的摄像机绘制完成后再绘制。
设置Dont Clear: 不清除任何颜色或深度缓存,但这样每帧渲染的结果都会叠加在下一帧上。
程序运行后,看到这样的效果
第二。Background: 背景颜色(属性)
设置获取背景色代码
1 Color c = m_Camera.GetComponent<Camera>().backgroundColor; 2 m_Camera.GetComponent<Camera>().backgroundColor = Color.red; //设置背景颜色
第三。Culling Mask:剔除遮罩,显示某些层(去掉不显示的层)
第四。Projection: 摄像机投射方式
perspective透视:以3D方式观察物体 特点:近大远小
Orthographic正交:以2D方式观察物体(没有近大远小效果)
第五。Field of view 视野范围
1 // public float fieldOfView { get; set; } 属性 2 m_Camera.GetComponent<Camera>().fieldOfView = 12; 3 float num2 = m_Camera.GetComponent<Camera>().fieldOfView;
第六。Clipping Planes 剪切面。 摄像机渲染的距离
Near:最近点, Far:最远点
第七。.Viewport Rece: 可控制视窗的偏移量
Vewport Rect: 设置 0-1 ,左下角为原点
第八。Depth:摄像机深度
1 // 摄像机深度(若存在若干摄像机,则渲染数值越小的摄像机画面渲染越早,在最后面 2 m_Camera.GetComponent<Camera>().depth = 12; 3 float num3 = m_Camera.GetComponent<Camera>().depth
第九。Rendering Path: 渲染路径。设定摄像机渲染方法
1 //获取渲染路径 2 RenderingPath rp = m_Camera.GetComponent<Camera>().renderingPath; 3 //设置渲染路径 4 m_Camera.GetComponent<Camera>().renderingPath = RenderingPath.DeferredLighting;
渲染路径四种方式:
Use Player Settings:使用Project Settings>Player中的设置
Vertex Lit:顶点光照,将所有的对象做为顶点光照对象来渲染
Forward:快速渲染,摄像机将对所有对象按每种材质一个通道的方式来渲染。
DeferredLighting:延迟光照,先对所有对象进行一次无光照渲染,用屏幕空间大小的Buffer保存几何体的深度、法线以及高光强度,生成的Buffer将用于计算光照,同时生成一张新的光照信息Buffer。最后所有对象再次被渲染,渲染时叠加光照信息BUffer的内容
第十:Target Texture: 目标贴图纹理
原理::就是将此摄像机摄像的画面影响实时打在一张指定的目标贴图上,
此时,这张贴图存有这个摄像机所摄的实况转播信息了,则此贴图可以随便放在某个Plane地板或者UI界面中
简单制作演示过程:
创建一个贴图纹理 :
最后看效果:gif录制不是很清晰。
左侧是Plane。移动摄像机,右下角摄像机摄到的内容和Plane中的一样
第十一: Occlusion Culling :是否使用遮罩剔除
m_Camera.GetComponent<Camera>().useOcclusionCulling = true; bool b = m_Camera.GetComponent<Camera>().useOcclusionCulling;
第十二: HDR: 启用摄像机高动态范围渲染,用于启用摄像机的高动态范围渲染功能,因为人眼对的范围的光照强度更为敏感,所有用高动态范围渲染能让场景变得更为真实,光照的变化不会显得太突兀。
1 m_Camera.GetComponent<Camera>().allowHDR = true; 2 bool b2= m_Camera.GetComponent<Camera>().allowHDR;
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步