关于Unity中的光照(二)
光源
1: 光照的本质:就是光的颜色和物体纹理的颜色的混合;
2: 光源类型: 点光源,定向光源,聚光灯, 区域光源;
区域光的范围会在场景中用黄色的光显示出来;
z轴是光的方向; 光的强度会随距离衰减;
只能配合烘培GI使用;
3: 发光材质
发光材质也算是一种光源,通过给物体添加特殊的着色器,调节其自发光参数可以得到一个柔和的灯光效果。发光材质可以让物体表面发光,
发光材质只能作用在被标记为static, 或LightStatic的物体上。光源的强度以2的次方速度衰减;
实例
1.创建Unity工程和文件目录,保存场景
2.创建一个平面plane,两个cube作为墙壁,一个cube放在中间
3.配置场景视图到一片漆黑
第一步:把Hierarchy视图里面的Directinal Light的眼睛关闭,这样场景中就没有光源了,但是还是有微弱的光,是天空盒的环境光
第二步:Window---->Lighting---->SkyBox---->材质选择FrameDebuggerRenderTarget
4.这个时候就全黑了,打开Directinal Light的眼睛,记得要把Camera的Clear Flags替换Skybox为Dont Clear,不然Game视图无法显示摄像机拍到的内容
5.我们可以自己创建一个点光源create---->Light---->Point Light看效果和调光的强度,Intensity越大光越亮。
6.我们可以自己创建一个聚光灯create---->Light---->Spotlight看效果和调光的强度,Intensity越大光越亮。
7.我们可以自己创建一个区域光源create---->Light---->Arealight,区域光源什么效果都没有,必须配合烘焙使用。要想让其他的物体被这个光源所影响,就要设置其他的物体右上角为static或者Lightmap Static,烘焙需要时间(右下角进度条)
8.我们可以自己创建一个发光材质create---->Material---->Emission为红色,Global Illumi设置为Baked,把材质关联到cube,cube在黑暗中显示出红色,要想让其他的物体被这个光源所影响,就要设置其他的物体右上角为static或者Lightmap Static,烘焙需要时间(右下角进度条)
Light组件的参数
1: Type: 灯光当前的类型;
2: Directional: 光源为平行光
3: Point: 光源为点光源;
4: Spot: 光源为聚光灯;
5: Baking: 全局光照模式 Realtime/Baked/Mix模式;Mix表示静态物体使用Baked烘焙(只对标记成static的物体有效),动态物体使用Realtime实时计算,其他两种都是极端的显示,不管对方的(Baked模式时不是static的全黑)。
6: Range: 灯光所影响的最大访问,平行光不需要;
7: Color: 灯光发出光线的颜色;
8: Intensity: 灯光发射的明亮程度,0为关闭,1为最亮;
9: Bounes Intensity: 控制全局光照中光线的反弹强度。
10: Shadow Type: 灯光投影的阴影类型;
11: Cookie: 使用一个带有Alpha的纹理来制作一个遮罩,使光线在不同的地方有不同的亮度,当光源为点光源是必须为立方图纹理;
12: Draw Halo: 绘制光晕,如果勾选,光源会带有球形光晕;可以调整,后面再说。
13: Flare: (可选) 灯光耀斑,在光源位置绘制;
14: RenderMode: 灯光的渲染模式;
15: Auto自动渲染模式,更具灯光亮度和当前设置的质量在运行时确定;
16: Important: 灯光会按照逐个像素渲染,用于重要的灯光特效;
17: Not Important: 灯光一最快的速度渲染;
18: Culling Mask: 选择某些层不受光源影响;层在右上角可以编辑。
光照贴图
把光照的效果做成贴图贴在物体上面,省计算机资源。
1: 光照贴图的烘培
将不同的物体,和光源预先烘焙出来,生成一个光照贴图。
(1) 讲要做光照烘培的物体配置成Light static模式;
(2) 将光源的Light组件上的Baking选为Baked;
(3) 打开烘培窗口;Window-->Lighting
(4) 确认无误后,在Lighting窗口中的Scene面板中选择Build进行烘培, 将Auto(自动烘培)关闭;
2: 光照贴图:
光照烘培出来的贴图,贴到模型物体上,减少运算负担,对静态物体有很好的效果;保存在scenes/game_scene文件夹下
光照烘培的参数详解
Window---->Lighting
Object
1: Light过滤按钮:
type: 设定灯光的类型,可以将灯光设置成平行光,点光源,区域光,聚光灯;
Baking: 光源的烘培模式;
Realtime: 对场景的物体都采取实时光照;
Baked: 对静态物体采用烘培光照,对非静态物体不起作用;
Mixed:对静态物体使用烘培光照,对非静态物体使用实时光照;
Bounce Intensity: 调节间接光的强度(从一个物体反射到另外一个物体上的光)
2: Render过滤按钮:
Lightmap static: 游戏对象是否为static /Lightmap static,如果是游戏对象参与到GI计算光照;
Scale In Lightmap: 该值影响了用于选中对象的lightmap的像素数目,默认值为1.0,每个对象所占的光照图像素的比例,可以通过它来优化光照,不重要对象减少比例,重要物体来获得更多的光照图像素来优化场景;
Preserve UV: 保护光照图UV,若模型没在3DMax等建模软件中展示UV,必须勾选住;
AutoUV Max Distance: 手动设置UV最大距离;
AutoUV Max Angle: 手动设置UV最大角度;
Important GI: 让自发光物体的照射范围更大;
Advance Parameters: 设置光照的质量;
Scene
1: 环境光照选项(整个环境的光,有点像滤镜)
Skybox: 场景中使用的天空盒;
Sun: 场景中的太阳光,可以为其指定一个固定的平行光源;
Ambient Source: 环境光的来源;
Ambient Intensity: 环境光的强度;
Ambient Color: 环境光的颜色;
Ambient GI: 指定环境光的光照模式是实时光照还是烘培,若两种GI模式都没有开启,该选项没有效果;
Reflection Source: 反射源,可以指定反射源氏天空盒或一个自定义的立体纹理图;
Reflection Instensity: 反射强度,可以设置来自天空盒或立体纹理图的反射强度;
Reflection Bounce: 反射计算的次数;
2: Bake GI参数:
Bake Resolution: 烘培的分辨率: 若该值为10,代表每一个单位分布10个纹理像素;
Blake Padding: 在LightMap中不同物体烘培图的间距;
Compressed: 是否压缩光照贴图;
Ambient Occlusion: 烘培光照图产生一定数量的环境阻光,环境阻光计算每一点被一定距离内的其他物体或一定距离内自身物体的挡住的遮挡程度(用来模拟物体表面环境光以及阴影的覆盖比例,达到全局光照的效果);
Final Gather: 控制从最终聚焦点发射出的光线的数量,较高数值可以达到更好的效果;
3: Other 设置可以设置光晕的效果;
总结
1.光源有3种光照模式,RealTime,Baked,Mixed
2.物体也可以发光,需要发光材质
3.物体分2种,static和非static
4.烘焙时光源的光照模式必须是Baked或者Mixed,要烘焙的物体必须是static的
5.环境光也是一种光源,也可以用来烘焙
关于Unity中的光照(二)的更多相关文章
- 关于Unity中的光照(七)
全局光照 GI 这里所说的反射就是,一个红色的物体,当太阳照射它的时候,它周围的物体也会变得有点红. 1:Realtime每帧都会计算光照,实时光照是不会反射的,所以它的光影显得单调;2:Baked ...
- 关于Unity中的光照(三)
法线贴图 次时代游戏用的比较多 1:法线贴图是凹凸贴图技术上 的一种应用,有时也称为Dot3(仿立体)凹凸纹理贴图;2: 法线贴图是不增加多边形的情况下,增强模型的细节;3: 法线贴图是高精度模型导出 ...
- 关于Unity中的光照(六)
反射探头 1:镜子金属等具有光滑表面的物体都会反射,而游戏中计算实时反射非常消耗CPU的资源, unity5.0新增了一个反射探头的技术,通过采样点,生成反射Cubemap,然后通过特定的着色器从Cu ...
- 关于Unity中的光照(五)
Mobile Diffuse Unity自带的一种shader,用的比较多,性能还可以.我们默认创建的unit shader基本和它一致,但是没有参与光照计算,看起来和Mobile Diffuse有区 ...
- 关于Unity中的光照(四)
渲染路径和颜色空间 1:Unity光影效果可以通过设置 渲染路径和颜色空间;2: 渲染路径: 光照到物体表面,物体着色的时候,算上光的颜色的时候有这么几种光照的着色方式,计算着色的方式 forward ...
- 关于Unity中的光照(一)
一.光源定义 光源,是一个普通节点加一个Light组件,创建的时候可以直接创建光源节点,也可以先创建一个空节点,再添加Light组件实例. 二.颜色形成 看到的物体颜色受两个很重要的因素的影响,一个是 ...
- Unity中创建二维码
在网络上发现了一个可以把字符串转换成二维码的dll,但是我们要怎么使用他呢.不废话,直接进入主题. 用到的引用 using UnityEngine;using ZXing;using ZXing.Qr ...
- 浅析Unity中的Enlighten与混合光照
0x00 前言 在Unity的5.6版本之前的5.x中,主要使用了Geomerics公司的Enlighten[1]来提供实时全局照明以及烘焙全局照明,在5.6之后Unity引入了新的Lightmapp ...
- 关于Unity中的刚体和碰撞器的相关用法(二)
在关于Unity中的刚体和碰撞器的相关用法(一)的基础上 有一个plane平面,一个ball球体,都挂了碰撞器,ball挂了刚体Rigidbody,写了一个脚本ball挂载在球体上,球体从空中落下装机 ...
随机推荐
- 关于generate用法的总结
Abtract generate语句允许细化时间(Elaboration-time)的选取或者某些语句的重复.这些语句可以包括模块实例引用的语句.连续赋值语句.always语句.initial语句和门 ...
- HTML5学习笔记(十四):变量作用域
在JavaScript中,用var申明的变量实际上是有作用域的. 如果一个变量在函数体内部申明,则该变量的作用域为整个函数体,在函数体外不可引用该变量: function foo() { var x ...
- Speech and Language Processing, NLP 处理
https://www.amazon.com/Speech-Language-Processing-Daniel-Jurafsky/dp/0131873210 http://web.stanford. ...
- 解决myeclipse/eclipse创建或导入maven工程时引发的问题
起因: 最近学习maven,按照教程把命令行创建的maven工程导入到eclipse/myeclipse,由于库中没有一些依赖包,所以在导入工程的时候开发工具自动下载依赖包.可是,由于天朝特殊环境的问 ...
- K-th string
这两天参加了hihocoder上的小竞赛,下面把自己做的记录一下!(最痛心的是,开始竟然把main函数,写成了mian,浪费了将近一个小时时间,伤不起啊) Description Consider a ...
- 17、uwp 打包失败记录
今天在打包时,总是打包失败, visual studio 报错误: 严重性 说明 代码 项目 文件 行 禁止显示状态错误 Error info: error 80080204: All app pac ...
- Python模块学习——tempfile
主要有以下几个函数: tempfile.TemporaryFile 如何你的应用程序需要一个临时文件来存储数据,但不需要同其他程序共享,那么用TemporaryFile函数创建临时文件是最好的选择.其 ...
- Linux命令格式及帮助命令详解
昨天看了一个教程,关于Linux命令的,本来以为当是复习随便看看的,结果看了不禁汗颜,这个真挺有学问的,很多东西都是我还不知道的,故此做总结,此文适合于对Linux命令有一定了解但又不是很深入的孩子, ...
- linux远程拷贝命令-scp
因为某种原因需要远程一个CentOS主机,只能通过ssh访问并下载文件.搞了半天不知道怎么处理文件,比如上传和下载.那就学习下吧. 基本命令格式 由于使用ssh,登录之后的本机地址是不需要给出的.但是 ...
- Nvidia显卡安装驱动
首先要知道需要安装哪个类型的显卡驱动,可以使用如下指令查看 sudo add-apt-repository ppa:graphics-drivers在#current那一栏中找到显卡驱动型号,使用的是 ...