- 最后登录
- 2020-7-6
- 注册时间
- 2019-8-17
- 阅读权限
- 10
- 积分
- 51
- 纳金币
- 2
- 精华
- 0
|
本文小姐姐将以著名的斯蓬扎宫3dmax场景为例,和大家一起探讨3dmax场景在unity3d 2019中的布光方法及快速烘焙过程。3dMax模型情况如下图所示(由图可见,模型的面数为6万多(见截图左上角),模型一定要采用精简的单面建模,否则这个场景的面数会多达几百万,甚至上千万的面,如此多的面数,Unity是吃不消的,无论烘焙过程的展UV,还是烘焙,甚至烘焙之后的场景运行,都会陷入无休止的等待、假死机和卡顿状态,毕竟烘焙之后也会个场景带来一些负载,而且最终作品要在用户机器或手机上运行,所以从模型的面数方面,必须充分考虑给场景留出足够的裕度)
下图是在3dmax中拆分的光照UV截图
1. 模型导出
无论你用3dMax、maya、C4D、Blender或Sketchup建的模型,建议都以fbx格式导出,因为Unity3d对fbx格式兼容的最好,这也是官方的建议,导出时一定要勾选“EmbedMedia”(嵌入媒体),否则在导入Unity时会成为无贴图的“裸模”。
2. 模型导入Unity
⑴ 在导入模型前,按下图所示,勾选掉Unity3d的“Auto Generate”(自动烘焙)选项,好多人一打开Unity3d,不知道怎么啦,总感觉系统处于运算状态,就是因为Unity默认这个选项是勾选的,当导入模型后,什么还没做,就一直陷入莫名的忙机,也是这个原因,所以导入前取消这个选项。
⑵ 按下图所示将刚才从3d软件导出的FBX模型拖入Unity3d的Assets文件夹,2017版之后,可能出于别的考虑,Unity不再直接导入材质和贴图,所以很多人发现模型导入后总是无材质和贴图的裸模,这里还需要做一点设置,看下一步。
⑶ 选中刚导入的FBX模型,点击inspector面板的Materails按钮,我们发现下面的所有材质都显示“none”,这就是裸模的根源,有童鞋说,前面不是说导出FBX时不勾选“Embedmedia”选项,就会出现裸模,这都勾选了,怎么还是裸模呢?这里需要说一下,如果前面不勾选,这里一定是裸模,但是,勾选之后,还需要一点点设置,否则依然会裸模,也就是前面和现在的设置缺一不可。
⑷ 继续,此时拉开“location”后面的下拉框,将设置改为第一项,也就是“use external materails(legacy)”,意思是“使用外部材质(旧版)”,如下图所示:
⑸ 接下来还需要将“naming”后面的下拉框改为“from model‘s materails’”,如下图所示,意思是贴图名称取自模型材质,然后点击下面第二张图中所示的“apply”(应用)按钮,这时unity就稀里哗啦地将所有材质和贴图真正导入Unity。
⑹ 导入材质和贴图后,unity的assets文件夹中会多出“materails”和与FBX同名的后缀为".fbm"的两个文件夹,一个存放的是材质,一个用来存放贴图,如下图所示。
⑺ 接下来将assets中的FBX模型拖入“Herarcy(层级面板)”,此时我们可以看到,FBX模型连同材质和贴图被完美地导入了Unity,如下图所示。
到此模型导入完毕,从下面的图可以看到,在unity3d默认灯光的照射下,场景看起来很苍白,没有一点层次,你的作品功能再强大,场景没有出色的视觉美感,所有功夫全白费,受众是不能接受这样的作品,这就是烘焙的重要意义!考虑到一些童鞋导入模型都成问题,所以前面啰嗦了一堆,熟悉的童鞋可以跳过。接下来就进入unity3d烘焙的正题。
3. Unity3d场景布光及光照参数设置
无论是游戏,还是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,如下第三张图所示,这个选项会在物体或物体间内转角或内转折处产生软阴影,例如墙内凹角,对于表现细节很有帮助。至此场景的辅助光和光照参数就设好了。
4. 烘焙模型设置
做完以上的设置之后,还需要对模型进行必要的设置。选中层级面板中所有需要烘焙的模型物体,勾选Inspector面板右上角的Static,将所有物体设定为静态,如下图所示,否则烘焙之后没有阴影和任何效果,切记!然后在assets面板中,选中导入的所有FBX模型,勾选inspector面板模型(model)下的创建光照贴图坐标(Generate Lightmap UVs)复选框,如下第二张图所示,否则烘焙后,模型会遍布黑斑,其实是光照图错乱,因为没有贴图坐标,光照图不知道怎么贴。
5. 烘焙
完成上面的设置,就可以进行场景烘焙了。点击下图所示的“Generate Lighting(生成光照)”按钮,即可开始光照烘焙
说明:最近Unity2019版的正式版发布,由于一直在测试破版的稳定性,所以到现在才更新,请童鞋们谅解!下面就改用2019版来和大家继续探讨Unity3d的光照烘焙。
接上面的步骤,烘焙完成共耗时7.5分钟,且无任何报错提示,如下图所示:
下面是烘焙完成后光照图的截图,由图可见,Unity3d老老实实按照3dmax中拆分的UV2布局烘焙出了光照图
下面从不同角度来看看烘焙的效果,由下列截图可见,烘焙成果非常干净,未见很多童鞋所说的黑斑、白斑、麻点、漏光、漏阴影、撕裂、破面、硬边等现象,而且烘焙速度非常快。一般情况下,最终的正式渲染烘焙,很多人都得1,2个小时,大部分没经验的童鞋,得5,6个小时,甚至几十个小时,还有的童鞋陷入了无休止的死机状态。无论质量好坏,有的童鞋想看一眼效果,一时半会都看不到,搞得非常心塞。前面说过,我们此次的目标是烘焙正午时分的光照效果,大家看看有没有正午的效果?小姐姐个人认为,整个场景明暗对比强烈,阴暗区域虽然很暗,但是层次还是很清晰的。
我们再来看看细节效果
好了,这个实例的烘焙就到这儿,更多vray级Unity3d的场景快速烘焙,可参阅我的CSDN博客或知乎文章-Unity3d场景快速烘焙【2019】。
|
|