写给美术看的Unity全局光照详解
要对物体投射阴影,除了要Light的设置外,还需要对物体进行相应设置。 场景中的物体的Mesh Renderer组件也具有Cast Shadows和Receive Shadows属性,必须根据需要启用它们。 ![]() 主要注意的是,Unity烘焙的阴影都是根据“双面”的方式生成的,所以上面所谓“单面”“双面”的情况只适用于实时阴影。 如果你发现烘焙前和烘焙后的阴影差别很大,检查是不是因为这个原因。 还有,烘焙并不能控制mesh是否接受投影,所有参与烘焙的物体会接受阴影。 技巧:Shadows only 模式适用于:可以用一些物体来投射出想要的阴影效果,但并不需要渲染他们。需要强调的是,实时阴影模式下,他们都是“单面”投影的。 Scene窗口的可视化GI数据 Scene 窗口有许多绘图模式来帮助您可视化不同方面的场景内容。 其中包括一组模式,让你看到GI是如何影响你的场景。 ![]() 默认的是Shaded模式,也就是正常渲染的效果,此外常用的还有Overdraw,Mipmaps等,但不在本文讨论范围,有兴趣可以自己试试。 与GI有关的模式是分为三类: Global Illumination:显示GI程序的一些必要数据以及Dynamic Lightmap的分辨率:Systems、Clustering、Lit Clustering Realtime GI:显示Realtime GI的数据以及Dynamic Lightmap的分辨率。 Baked GI:显示Baked GI的数据以及Lightmap的分辨率。 最下方Show Lightmap Resolution复选框控制是否显示lightmap的分辨率,其作为棋盘格的形式与相应的数据混合显示。 比如你选择的是Realtime GI的Indirect模式,并勾选了此选项,就会显示Indirect数据以及Dynamic Lightmap的棋盘格。 通常来说,该选项是这里面最有用的功能,实时查看lightmap的分辨率,有利于我们对光照效果精度的把控。 需要再次强调,Baked GI会执行GI程序的所有流程,所以Realtime GI的数据也是可以看到,但反过来仅开启Realtime GI,就看不到Baked GI的数据。 想要查看相应的可视化数据,需要确保GI程序已经完成了该步骤的计算。例如你要看可视化的Clustering数据,需要等待GI Process中5/11步骤执行完毕。具体见上文GI Process。 当你关掉Unity重开,想要再看这些数据,需要重新执行GI程序,因为这些数据缓冲已经被清除。 你可以打开Auto Generate开关,并在GI程序执行过程中,切换到这些GI视图模式,可以看到他们是怎么生成的。 下面来主要介绍几个常用的模式: Shaded ![]() System GI进程中3/11Create Systems阶段,将根据物体的接近度和光照贴图参数自动将场景细分为多个System,换句话说,System即是共享相同的Realtime Lightmap的对象组。 这是为了在更新间接照明时,实现多线程和优化性能。 上图的可视化显示了不同颜色的System。 ![]() UV Charts 这显示了在Realtime GI进程的4/11Create Atlas阶段时使用的优化的UV布局。 Enlighten会自动生成物体的第三套UV用作生成Dynamic Lightmap,UV Charts表示其实就是lightmap中属于物体自身的一小块纹理区域,详细可见官方教程,优化UV Charts的布局有利于减少dynamic lightmap的大小,从而提高计算速度,是Realtim GI的重要优化策略。 UV Charts场景视图模式可帮助您识别需要UV或缩放比例调整的几何图形(使用“Lightmap Parameters”中的“Resulotion”参数更改比例,或者更改Indirect Resolution来全局调整)。 此视图在调整Realtime Lightmap分辨率时也很有用。 每个UV Charts都有不同的颜色。 ![]() Clustering 这显示的是Enlighten从Lightmap Static物体中生成的Clustering。 Enlighten在5/11Clustering阶段生成Clustering,被用于计算间接照明。Clustering的数量由Lightmapping Settings的Indirect Resolution和Lightmap Parameters中的Cluster Resolution参数控制。这个过程非常耗费内存和烘焙时间,如果您看到高内存使用甚至报错或烘烤时间过长,这可能是因为场景中的静态几何体被切割成比实际需要的更多的Clustering。你可以通过使用更低级别的Lightmap Parameters,或者适当降低Indirect Resolution来解决该问题。 ![]() Baked Lightmap 这显示了应用于场景物体的烘焙光照贴图。 棋盘格显示烘焙的Lightmap分辨率。该视图可以帮我们看到场景各物体占用的lightmap像素,通过调整场景的Lightmap Resolution和物体的Scale In Lightmap来优化Baked GI的效果,这是Baked GI重要的优化策略。重要的光效明显的地方,我们应该分配更多的像素,而像一些小的物体,照明不明显的物体,要减少其分辨率,以最大程度地利用Lightmap的空间。有时,我们还可以选中物体,在Lighting窗口的Object maps栏中可以检查该物体的Baked Charting,看是否充分利用其空间,有必要时可导回3D MAX等软件重展第二套UV。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |