• ue4自定义Shader教程
  • 自制UE4通用材质、玻
  • 室内小图
    • 引擎世界丨EngineWorld.CN
    • 引擎世界丨EngineWorld.CN
    • 引擎世界丨EngineWorld.CN
    • 引擎世界丨EngineWorld.CN
    • 引擎世界丨EngineWorld.CN
    • 引擎世界丨EngineWorld.CN

Unity_全局光照系统的使用与介绍.

8
回复
3060
查看
[复制链接]

33

主题

299

帖子

2577

积分

初始化成员

积分
2577
发表于 2018-2-20 19:09:36 | 显示全部楼层 |阅读模式
  很久没来发帖了,今天找空把之前说的Gi文章的填上,具体内容就是介绍Unity的Gi系统与使用,最后还会与虚幻的Lightmass做个简单的对比。分三部分。灯光,Gi,反射有些内容会涉及到Unity2018。

  第一部分的灯光。
先插一个阴影的知识,Unity在56的更新加入了ShadowMask功能,此功能分为两种模式ShadowMask和DistanceShadowMask。前者可以让场景内所有静态物体使用Bake阴影动态物体使用实时阴影最后把两种阴影无缝混合在一起。后者是距离角色一定范围内的阴影是全实时阴影范围外则使用Bake的阴影。这个范围可以在ProjectSetting的QualitySetting里面设置ShadowDistance来改变,一般都是64。如果开太大实时阴影精度会损失很大。同样的QualitySetting里的ShadowmaskMode可以切换ShadowMask的类型。
Qulity.png

在UnityEditor下的GameObject面板可以找到灯光的实体,点击即可创建。Unity的灯光分为:平行光,点光源,聚光灯,面光源(这个面光源在2018版本以前只能使用Bake光照实现效果,不能实时照明,Unity2018里增加了实时面,球光源和线,管光源的使用并且支持PCSS投影)。因为四种灯光属性都差不多所以不一一解读了,这里就拿聚光灯来介绍。
所有的灯光都有三种运行模式(RealTime,Mixed,Bake)。用过虚幻的话应该很熟悉(滑稽)。
LightModel.png

使用Gi效果的物体必须得把右上角的Static勾上不然是不能创建光照贴图用的。
Static.png

以下是Bake灯光的参数。
BakeLight.png

Type就是切换点 面 平行光的一个枚举选项,Range是可以控制聚光灯的椎体的长度,颜色和Mode以及两地就不用说了,ShdowType可以切换为无阴影以及硬阴影和软阴影,如果你开启了Bake模式的话下面会出现一个阴影范围,这个值是控制灯光的阴影软化效果的,开大阴影就会虚掉开小则会很硬,这里为了得到那种距离投影物体越近阴影越硬反之越虚的效果我开到了0.07,最终得到一个还不错的效果。下面放一个对比图大家自己看看(左边是0,右边是0,0.07)。
SoftShadow.png

但是因为这是Bake的光照所以如果场景里面增加一个新的的动态物体放到这个Bake灯光下他不会产生阴影这个时候就有了Mixed和RealTime灯光了。当你切换到Mixed模式再重新烘焙光照的话这时候就可以实现静态物体使用BakeShadow,动态物体使用RealTime Shadow,但是这个模式的灯光最多在同一个区域重叠四次。使用的时候的注意一下。Mixed灯光对比Bake会多出一个实时阴影的控制如下。
RealTimeLight.png

至于RealTime模式和Mixed的参数只是少了SoftShadow的控制,因为目前实时灯光还没有很好的软阴影解决方案所以这个功能也只能Bake使用。如果切换到实时模式那所有的灯光效果都将会变成实时计算,阴影 Gi都会实时计算消耗也是相当大的,大家可以斟酌使用。


然后来看看全局光照模块的东西。
Unity有两种Gi模式的选择,实时Gi和烘焙Gi。要使用的话第一步得把接受Gi效果的物体变成Static然后去Window-Lighting-Setting里面开启即可使用。
Light1.png Light2.png

Enviroment是设置天光用的,那个SkyBox可以贴一个HDR或者程序性生成的HDR,比如程序生成一个大气雾散射的天空。下面则是使用RealTime或者BakeGi用的选项,
LightingModel一般都是选择Shadowmask,这里先说BakeGi。

Lightmapper是一个Gi引擎的切换选项里面提供了Enlighten(EA的寒霜也是Enlighten)和Unity自己开发的一种PathTracing引擎,因为新的PathTracing引擎还是预览的关系就先介绍Enlighten。IndirectResolution是控制间接光照的分辨率越大的话间接光照越平滑真实。LightmapReslution是控制光照贴图分辨率这个开到越大光影细节更丰富,一般测试用16-28就够了,成品会用100-200。下面的则是一些品质的控制,比如是否压缩贴图,是否开启AO,间接光照强度,都很易懂就不多说了。然后就是LightmapParameter,这个选项是可以设置一些烘焙精度的类似Lightmass的ini。引擎提供了VeryLow,Low,Medium,High四种内置预设,一般情况都是够用的。如果你觉得效果不好可以自己自定义。

如果你不喜欢用BakeGi,则可以关闭Mexied开启RealTime,这个时候LightmapSetting的设置只有IndirectResolution能够使用其他的则会变灰。如果你的灯光全都用的实时模式再烘焙一次场景则可以对场景进行实时Gi和灯光的交互(因为Enlighten只是预先计算好Radiance所以模型是不能动的,材质和灯光和自发光则可以实时改变)
SunLightTransport.gif
SkyLightTransport.gif
EmissionTransport.gif

最后说说反射。
Unity默认提供了一个ReflectionProbes的实体。使用它可以为场景添加反射内容,在GameObject的Light里面可以创建这个实体,将它包裹在场景内则可提供反射。
Reflection.png
第一个是更新的设置,可以使用Bake或者实时更新,一般场景光照变化大的话可以使用实时更新这样能提供正确的环境光照反射。下面的则是是否启用视差矫正已经设置分辨率强度和大小等等。在2018里面还提供了球形的视差校正。另外配合商城的PostProcess的ScreenSpaceReflection可以让场景的反射更加真实。


基本上就是这些内容了,如果有什么遗漏以后会更新上来。

13

主题

373

帖子

1828

积分

中阶编码师

Rank: 2

积分
1828

架构师勋章初阶编码勋章高阶编码勋章

发表于 2018-4-16 09:50:59 | 显示全部楼层
谢谢大佬分享
回复

使用道具 举报

0

主题

18

帖子

2019

积分

中阶编码师

Rank: 2

积分
2019
发表于 2018-4-17 14:02:50 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

512

帖子

167

积分

初阶编码师

Rank: 1

积分
167
发表于 2019-4-8 01:10:03 | 显示全部楼层
感谢分享
回复

使用道具 举报

0

主题

12

帖子

4

积分

初始化成员

积分
4
发表于 2019-11-18 11:25:15 | 显示全部楼层
感谢LZ分享!
回复

使用道具 举报

0

主题

14

帖子

40

积分

初始化成员

积分
40
发表于 2020-1-20 16:27:14 | 显示全部楼层
资源哪里好,肯定引擎世界找!
回复

使用道具 举报

3

主题

16

帖子

11

积分

初始化成员

积分
11
发表于 2020-5-2 20:07:02 | 显示全部楼层
感谢LZ分享
回复

使用道具 举报

0

主题

69

帖子

167

积分

初阶编码师

Rank: 1

积分
167
发表于 2020-5-3 02:17:45 | 显示全部楼层

每天上引擎世界,回帖赚币两不误!
回复

使用道具 举报

0

主题

1159

帖子

4317

积分

高阶编码师

Rank: 3Rank: 3

积分
4317
QQ
发表于 2020-6-30 21:07:46 | 显示全部楼层
资源不错,感谢分享。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

用艺术创造世界
专业的开发者社区,汇聚众多创作人 提供作品展示
项目交流 工作机会等行业服务
社区邮箱:engineworld@qq.com

扫一扫捐助我们

Powered by 引擎世界中文社区™®© Engine World Inc.( 陕ICP备20012463号 )