光照烘培
- 一级目录
- 二级目录
- 问题目录
- 烘焙光照在手机不起作用
一级目录
二级目录
Unity 2020.3.25
打开灯光面板
Wingdow -》 Rendering -> Lighting
Lighting Settings 灯光设置文件
Realtime Lighting
Realtime Global lllumin
Realtime Environme
Mixed Lighting
Baked Global lllumin
Lighting Mode
Baked Indirect
Subtractive
Shadowmask
Lightmapping Settings
Lightmapper
Progressive CPU
Ambient Occlusion
还需要勾选环境遮蔽(Ambient Occlusion),也就是AO,如下第二张图所示,这个选项会在物体或物体间内转角或内转折处产生软阴影,例如墙内凹角,对于表现细节很有帮助。至此场景的辅助光和光照参数就设好了。
模型设置
【Unity】导入模型材质的无法编辑 - 设置使用外部材质
选中导入的FBX模型,点击Inspector面板的Materails按钮,我们发现下面的所有材质都显示“none”,这就是裸模的根源,有童鞋说,前面不是说导出FBX时不勾选“Embedmedia”选项,就会出现裸模,这都勾选了,怎么还是裸模呢?这里需要说一下,如果前面不勾选,这里一定是裸模,但是,勾选之后,还需要一点点设置,否则依然会裸模,也就是前面和现在的设置缺一不可。
灯光布置
无论是游戏,还是VR场景,烘焙前首先要做的事是灯光的布设,因为烘焙的主要任务是渲染灯光的光影效果,没有灯光,烘焙也就无从谈起。unity3d的布光原则,和其他3D软件并无二样,也就是要根据所要表现的意境和气氛来决定如何打灯。一开始我们就说要烘焙正午时分的场景,下面我们就按正午时刻的光照来布设灯光。大家都知道,正午时分,阳光明媚,光照明暗分明,太阳光近乎垂直投射,但是,这个场景只有顶部一个可进光的开口,其他部分都是密闭的,表现正午的气氛,如果灯光垂直向下投射,阴影会与场景物体重合,所以我们不能垂直打灯,因此将灯光调至与地面夹角大约60-80度,合理的灯光布设是场景光影出彩和营造气氛的先决条件,不同的时间段,灯光角度不同。
⑴ 下面我们用平行光来模拟太阳光,作为主光源(照亮场景的主要光源)照亮场景的部分区域(也就是迎光面),产生光斑,与此同时,在其他区域产生阴影。照亮区和阴影区必须形成强烈的反差,才能显示出阳光的明媚,很多人烘焙的场景平淡,就是因为明暗对比不强烈,该亮的不亮,该暗的不暗。非洲人之所以看起来牙齿很白,是因为黑色脸部的衬托所致,因此要表现优秀的阳光效果,光照明暗反差要大,但暗区也不能死黑一片。Unity一创建新的场景,就默认为我们创建了一盏平行光,现在我们将其调至如下图所示的投射角度,既要考虑让一二层都有阳光投射的痕迹,又不至于灯光垂直入射。
接下来选中平行光(Directional Light),将inspector面板中的灯光强度(intensity)调至2,如下图所示,默认值是1,很多人马上说灯光已经曝光了,但必须调大,因为我们最终要的是烘焙光照,不是实时光照,现在只是实时光照曝光了,因为烘焙光照的算法和实时光照不同,不调大,烘焙后阳光不够强烈。另外,顺便将灯光的模式“Mode”改为“baked(烘焙模式)”
主光源设定之后,我们还需要考虑阴影区域的照亮,虽然阴暗区相对照亮区较暗,但也不能有伸手不见五指的感觉,正午阳光充足的时候,在强光的照射对比下,阴影区会显得比较暗,但物体还是能看清,而且有层次感的,这主要是天光的贡献,因此我们需要开启Unity的天光作为辅助光源来照亮阴暗区域,与此同时,主光源照射到迎光面后,反射到周围的物体上,这些物体又作为二次光源照亮其他物体,多次反弹后到达阴暗区,也起到光照的作用,因此,这个场景的辅助光源除了天光,还有主光源-太阳光多次反弹光,或者说两者的综合效果作为辅助光,共同照亮阴影区。现在我们打开光照面板,点击window/lingting/settings,如下图所示,弹出光照面板,然后按下面第二张图所示,将光照面板的标签拖至inspector面板标签之后,使其和inspector面板并排,这样节省屏幕空间,如下面第三张图所示。
接下来将光照面板(Lighting)下场景(Scene)标签中的环境反射(Environment Reflections)的反弹次数改为5,这个值越大,光线会充分传递到阴暗区,亮度越亮,但亮度不会超过照亮区。然后将实时光照(RealTime Lighting)下实时全局光照(RealTime Global ILLumination)后的复选框取消勾选,也就只进行烘焙全局光照计算。接着将混合光照(Mixed Lighting)的光照模式(Lighting Mode)后的下拉框中的选项改为烘焙间接光(Baked Indirect),最后再将光照贴图设置(Lightmapping Setings)下的光照运算器(Lightmaper)后的下拉框选项改为渐进式(Progressive),如下图所示。还需要勾选环境遮蔽(Ambient Occlusion),也就是AO,如下第二张图所示,这个选项会在物体或物体间内转角或内转折处产生软阴影,例如墙内凹角,对于表现细节很有帮助。至此场景的辅助光和光照参数就设好了。
烘焙模型设置
做完以上的设置之后,还需要对模型进行必要的设置。选中层级面板中所有需要烘焙的模型物体,勾选Inspector面板右上角的Static,将所有物体设定为静态,如下图所示,否则烘焙之后没有阴影和任何效果,切记!然后在assets面板中,选中导入的所有FBX模型,勾选inspector面板模型(model)下的创建光照贴图坐标(Generate Lightmap UVs)复选框,如下第二张图所示,否则烘焙后,模型会遍布黑斑,其实是光照图错乱,因为没有贴图坐标,光照图不知道怎么贴。
烘焙
完成上面的设置,就可以进行场景烘焙了。点击下图所示的“Generate Lighting(生成光照)”按钮,即可开始光照烘焙
提升渲染速度
Lightmap Parameters
Default - LowResolution 低分辨率
低质量渲染
1、四种模式,主要区别在于烘焙出的光照图、阴影图内容,也就影响到动、静态物件在运行时的受光、投影效果,效果越好越丰富的,开销自然也越大。
2、效果最单纯的substrative:所有颜色和阴影都烘死在光照图上,运行时静态物件不参与阴影图渲染,结果是不管光源怎么变,静态物件的受光和阴影都不变。
3、好一点的是shadowmask:静态物件的阴影不变,但是受光情况可以随光源变化而变
4、再好一点的是distance shadowmask:静态物件的阴影和受光都可以变
5、跟4差不多好的baked indirect:仅烘焙间接光照(也就是物体之间漫反射导致的表面明暗效果),其它东西(如阴影)全部在运行时计算,跟实时差不多了。
当然这里总结的只是一些肉眼可见的明显差别,具体区分,尤其是动静物件互投影情况,还是看下面原文里的表格吧。
问题目录
烘焙光照在手机不起作用
在手机上光照贴图丢失问题解决,可能是以下两方面的引起的:
一、对光照贴图LightData.assets 设置了AB
unity是把光照贴图和场景文件打包在一块的,不需要对Lightdata.assets 文件做ab名称的设置。就会在mainfest文件中存在依赖关系;从而导致在运行时不会去寻找跟场景打在一块的光照信息。但是在打包是对Lightdata.assets 又会报warning,如果没注意,就会把该出错给忽略掉了。
二、需要在Shader stripping 的设置选项
默认是automatic:因为是自动设置,如果在一个空场景下进行打包,就会将该场景中的shader 代码逻辑;从而导致光照信息的丢失。所以强烈建议将该选项设置成Manual; 包括Lightingmap Module 和 Fog Module;而下面的具体选项就要根据在场景烘焙时的选择而定。
设置路劲在:
Shader stripping
Editor–》Project Setting --》Graphic --》 Shader stripping