Unity | 光照系统

对于一本指南的书,如果不给出足够的参考资源,而去空谈,会让读者产生很不好的感觉。

文 / 丁建雄
图 / Iurie Belegurschi

小白是单纯为兴趣而写作的独立创作人,如果您喜欢小白的文章,欢迎关注、交流、分享(引用请链接到本文)。

Unity | 光照系统_第1张图片
冰山一角

光源简介

  1. 四种光源类型:
    Directional Light: 平行光,被照物效果只与角度有关。
    Point Light:点光源,与相对位置有关(被照物与光源相对距离)。
    Spot Light:聚光灯,模拟手电筒、车灯(被照效果与角度和距离都有关)有方向限制的扇形点光源。
    Area Light:区域光,模拟室内光源效果,只能作用于烘焙模式下。
  2. 烘焙的背景、原理与方法:
    背景与原理:全局光照效果需要考虑到多光源组合的显示效果,如果实时更新,需要消耗大量的计算资源;而对于光源固定后,全局光照其实不需要实时更新,只需要预先烘焙好,效果数据存储到一张记录表之中,每次只需要查表就能更新光照效果,这种方案采用离线查表法代替了实时更新法,用存储空间换取了计算运行的时间,可以大大优化程序运行效率。
    方法:选取除main camera 和 Directional Light 之外的所有对象 -- 选择 Static -- Lightmap Static,这样就完成了需要烘焙的对象选取;接着,将所有需要固定效果的光源选中 -- Mode -- Baked,这样默认模式下会自动进行烘焙操作;烘焙过程中,大家可以看到光影会有细微的变化。
  3. 对于运动物体的实时渲染讨论:
    a. 运动物体随着物体的移动,其光照效果也会发生变化,因此,不能使用 baked 模式;而环境物体由于其相对于光源没有位置变化,因此可以采用 baked 模式。
    b. 对于需要完全采用烘焙模式的对象,可以统一烘焙,同时将光源属性设置为 Mixed。这种模式下,烘焙物体光照效果不变,而运动物体也能产生实时的光照效果。
    c. 对于Area Light的使用,由于其只能使用在烘焙模式下,因此不会对运动的物体产生影响;而如果需要其对进入其中的物体产生影响,则需要采用光照探头组(Light Probe Group),探头组会对处于范围之内的移动物体统一进行实时的光渲染,且能收集到该范围内所有光源光照效果(包括Area Light)。
    d. 对于物体之间的反射(次级反射效果),可以采用Reflection Probe(反射探头)进行渲染,这样可以使得光场分布看上去更真实。
    e. 只有静态物体才能参与烘焙,因此烘焙之前必须将物体设置为static。

结束语

光源是设置虚拟环境真实性的基础,以上只是设置光源属性的一些基本知识点。但是,对于熟练掌握光源设置技巧,还有很长的一段路要走,需要在实践中不断总结。
其实这部分知识应该属于光场分布研究的范畴,在真实世界中,室内装潢设计常常需要用到光场分布模拟,以达到不同要求的光场分布效果。学习unity的过程,就是一个不断接触新的知识领域的过程,虽然都只是看到了冰山一角,但足以让人耳目一新,对新的东西充满期待。

你可能感兴趣的:(Unity | 光照系统)