[Unity] 怎么在Unity5中烘焙lightmap

原文链接:Game Dev Tip: How to bake Lightmap in Unity 5 !

什么是Light-map

Light-map是一张贴图(texture),存储了从场景(scene)中直接烘焙而来的灯光信息,通过这张贴图,我们可以减少draw call,提升我们游戏的性能。light-map通常没有阴影(shadow)。全局光照(Global Illumination)和环境光散射(Ambient occlusion)会被烘焙到Light-map上,在不影响帧率(FPS)的情况下给环境一种惊人的深度(give an amazing depth to the environment )。实时灯光只会被运用在移动或者需要动态阴影的棘手物体上。场景以来烘焙light-map都是游戏开发过程中一项非常标准化的工作,用空间换时间来加快渲染速度。

接下来需要什么

为了学习本教程,我们将学习一下基础知识并使用unity中最原始的物体来烘焙light-map以为示例。之后,你就可以在unity中使用相同的技术来烘焙那些非常酷炫的模型了。

  • 包含一个平面(plane)和一个盒子(box)的3D场景


    A 3D scene exported from any 3D software with a plane and a box

  • 盒子需要两个UV通道(uv channel),一个((UV 2 is not mandatory but it is always better to manual unwrap for better quality light-maps))用来做漫反射,另一个(channel2)用来做ligt-map。(UV2 不是必要的,但手动解包能得到更高质量的ligth-map)


    The box should have two UV channels. Channel 1 for Diffuse and Channel 2 for Light-mapping

做完了上面的准备之后,在Unity中建立一个正确的场景。我们会以FBX或者Obj等任意unity支持的3D格式导出3D模型。

建立场景

  • 将3D模型导入到Unity场景中。对导入的模型使用下面的导入设置以确保你能得到高质量的light-map。
    Note: 如果你的3D物体没有UV2通道,可以在import settings里打开 ’ GENERATE LIGHTMAP UVs’,这样可以自动为3D物体打开UV2通道


    这里写图片描述

  • 复制box并把它们穿插交叠在一起,这样可以看到接触阴影(contact shadow)或周环境光散射(Ambient occlusion)


    这里写图片描述

  • 标记3D物体为static,light-map只会烘焙static的物体(note: Lightmap static也可以)


    这里写图片描述
    这里写图片描述

  • 选中平行光源,标记为static,这个光源会为我们的light-map提供光照信息

  • 按下图改变平行光源的设置,将Baking选项中的Real-time改为Baked


    这里写图片描述

  • Project setting -> Quality setting,改成下图所示的设置。为什么这么做呢,因为默认的shadow setting不怎么好而且模糊。


    这里写图片描述

    接下去我们就可以接触light-map的设置了。

调整Light-map设置

设置位置在 Windows > Lighting > Scenes(注:我是用的Unity5.6.0f3中在Windows > Lighting > Settings 中)。

如果想要获取更过关于此处setting的属性信息,可以查看unity官方文档,强烈建议上手前先阅读一遍。

请参阅下面的图片并按下图所示更改设置。

这里写图片描述

一定要记住选中所有你想要烘焙的物体。一旦所有物体被选中,按下“build”按钮开始进行烘焙。

烘焙Lightmap

当构建按钮被按下时,进度条将出现在Unity 5窗口的右下角,指示烘焙过程已经开始!

这里写图片描述

一旦处理完成,烘焙lightmap的任务就完成了,一个令人惊奇的场景出现了,阴影都被烘焙进去了!

这里写图片描述

烘焙时需要注意的事项

  • light-map分辨率的尺寸在light-map settings中。确保使用合适的尺寸,不要使用太大的尺寸,因为这会影响游戏的性能。
    这里写图片描述
  • 如果你想要清除light-map,你可以在Light-map setting中点击Build->Clear Baked Data。
    这里写图片描述
  • 如果你想要手动更改light-map的分辨率,你可以在Light-maps的Tab中,点击某个Light-map,然后你会看到这个light-map对应的贴图,可以在这个贴图上手动的修改贴图的压缩方式和分辨率。

    这里写图片描述

猜你喜欢

转载自blog.csdn.net/rickshaozhiheng/article/details/72773705
今日推荐