概念

Lightmapping光照贴图技术是一种增强静态场景光照效果的技术,其优点是可以通过较少的性能消耗使静态场景看上去更加真实,丰富,更加具有立体感;缺点是不能用来实时地处理动态光照。当游戏场景包含了大量的多边形时,实时光源和阴影对游戏的性能的影响会很大。这时使用Lightmapping技术,将光线效果预渲染成贴图使用到多边形上模拟光影效果。

烘焙参数

Object选项卡

“All”组中的参数

Lightmap Static:选中则表示该物体将参与烘焙。

Scale In Lightmap:分辨率缩放,可以使不同的物体具有不同的光照精度。这样可以根据实际场景,令远景中的物体采用较低的分辨率,节省光照贴图的存储空间。而较近的物体采用较高的分辨率,使贴图更加逼真。

Lightmap Index:渲染时所使用的光照贴图索引。值为0,表示渲染时使用烘焙出来的第一张光照图;值为255,表示渲染时不使用光照图。

Tiling X/Y和Offset X/Y共同决定了一个游戏对象的光照信息在整张光照图中的位置,区域。

“Lights”中的参数

Lightmapping:有3种类型可选

  1)RelatimeOnly:光源不参与烘焙,只作用于实时光照。

  2)Auto:表示光源在不同的情况下作不同的响应。在烘焙时 ,该光源会作用于所有参与烘焙的物体;在实际游戏运行中,该光源会作为实时光源作用于那些动态的或者没有参与过烘焙的物体 ,而不作用于烘焙过的静态物体。在使用Dual Lightmaps的情况下,对于小于阴影距离 (shadow Distance,Unity中用于实时生成阴影的范围,范围之外将不进行实时生成阴影)的物体 ,该光源将作为实时光源作用于这些物体 ,不管是静态还是动态 。

  3)表示光源只在烘焙时使用,其他时间将不作用于任何物体。

Color:光源颜色。

Intensity:光线强度。

Bounce Intensity:光线反射强度。

Baked Shadows:烘焙阴影。有三种类型可以选择

  1)Off:光源对象不产生阴影。

  2)On(Realtime:Hard Shadows):产生轮廓生硬的阴影。

  3)On(Realtime:Soft Shadows):产生平滑的阴影。

Shadow Samples:阴影采样数,采样数越多生成阴影的质量越好。

Shadow Angle:光线衍射范围角度。

Bake选项卡

Mode:映射方法。

  1)Single Lightmaps:最简单直接的方法,对性能及空间的消耗相对较小。可以很好地表现大多数静态场景的光影效果。

  2)Dual Lightmaps:在近处使用实时光照和部分Lightmap光照,在远处则使用Lightmap光照,同时在实时光影和静态光影之间做平滑过渡,使得动态光照和静态光照可以很好的融合。

  3)Directional Lightmaps:一方面将光影信息保存在光照贴图上,同时还将收集到的光源方向信息保存在另一张贴图中,从而可以在没有实时光源的情况下完成Bump/Spec映射,同时也还原了普通光照图的光影效果。

Quality:生成光照贴图的质量。

Bounces:光线反射次数,次数越多,反射越均匀。

Sky Light Color:天空光颜色。

Sky Light Intensity:天空光强度,值为0时,天空色无效。

Bounces Boost:加强间接光照,用来增加间接反射的光照量,从而延续一些反射光照的范围。

Bounces Intensity:反射光线强度的倍增值。

Final Gather Rays:光照图中每一个单元采光点用来采集光线时所发出的射线数量,数量越多,采光质量越好。

Interpolation:控制采光点颜色的插值方式,0为线性插值,1为梯度插值。

Interpolation Points:用于插值的采光点个数。个数越多,结果越平滑,但是过多的数量也可能会把一些细节模糊掉。所以说采光点并不是越多越来,这容易导致过度平滑。

Ambient Occlusion:环境光遮蔽效果。

LOD Surface Distance:用于从高模到低模计算光照贴图的最大世界空间距离。类似于从高模到低模来生成发现贴图的过程。

Lock Atlas:选中,则会将所有的光照图区域锁定,即将物体使用光照图相关的Tiling X/Y和Offset X/Y属性锁定,同时也将不可以再调整光照贴图的分辨率属性以及添加新的烘焙物体到光照图。

Resolution:光照贴图分辨率。勾选视图窗口右下角Lightmap Display面板的ShowResolution选项,即可显示单元大小。假设Resolution为50,那么在10*10个单位面积的平面网格上将占用光照贴图上500*500个像素的空间。

Padding:不同物体的烘焙图的间距。

Maps选项卡

Light Probes:用于设置当前使用的Light Probes Group的引用。

Array Size:设置光照贴图个数。

Compressed:启用使用压缩纹理格式。

烘焙

Bake Scene有三个选项:

1)Bake Scene:烘培整个场景,如果场景中有编辑好的Light Probes,那么也同时烘焙Light Probes。

2)Bake Selecte:只烘焙选择的部分。采用Bake Selected功能在原有基础上进行添加或者更新,同时系统会保留之前的光照图。这样不会因为部分改动而需要重新烘焙整个场景,只需要烘焙改动的部分,大大提高了烘焙效率。

3)Bake Probes:只烘焙Light Probes。

示例

1 创建一个项目,在场景中绘制如下:

选中Cube,在Inspector面板中勾选Static,这样可以使得Cube参与烘焙。

2 打开菜单栏中Window->Lightmapping选项,会弹出Lightmapping视图。此时选中场景中的Directional Light,在Lightmapping视图中的Object标签页中会出现对光源的设置。参数设置如下:

3 Bake标签页下参数设置:

                                                          

4 在Scene视图右下角的Lightmap Display对话框中勾选Show Resolution复选框,就可以看到光照图在模型上的分辨率。

5 单击Lightmapping视图右下角的Bake Scene,选中Bake Scene映射模式,就开始生成Lightmaps。

前后对比效果如下:

1)烘焙后:

2)烘焙前:

注:必须将plane的属性设置为Static,否则Cube将不会有阴影显示。

没有将plane的属性设置为Static,效果图如下所示:

Unity3D-光照贴图技术的更多相关文章

  1. Unity3D光照前置知识——Rendering Paths(渲染路径)及LightMode(光照模式)译解

    简述 Unity supports different Rendering Paths. You should choose which one you use depending on your g ...

  2. (转)Unity3D 游戏贴图(法线贴图,漫反射贴图,高光贴图)

    原帖网址http://www.u3dpro.com/read.php?tid=207  感谢jdk900网友的辛苦编写 我们都知道,一个三维场景的画面的好坏,百分之四十取决于模型,百分之六十取决于贴图 ...

  3. 【Unity】第13章 光照贴图和光影效果

    分类:Unity.C#.VS2015 创建日期:2016-05-19 一.简介 在Unity 5中,Lighting是—种增强场景光照和阴影效果的技术,它可以通过较少的性能消耗使静态场景看上去更真实. ...

  4. unity3d的优化场景技术LOD+IOC

    一.unity3d的优化场景技术  LOD+IOC 遮挡剔除(occlusion culling)其实就是在摄像机范围内的物体才被渲染出来,没有在视野范围内的,统统关掉渲染,这样能让性能大大提高. I ...

  5. unity3d-地图制作之光照贴图Lightmapping

    今天无聊随便翻看了暗黑战神的场景资源,发现了一个以前没怎么注意的静态场景优化问题. 什么是静态场景,也就是说这个场景是不会变化.比如MMO游戏中选择人物的场景. 就拿默认的暗黑战神的选择人物场景来看, ...

  6. Shadow Map阴影贴图技术之探 【转】

    这两天勉勉强强把一个shadowmap的demo做出来了.参考资料多,苦头可不少.Shadow Map技术是目前与Shadow Volume技术并行的传统阴影渲染技术,而且在游戏领域可谓占很大优势.本 ...

  7. canvas 2d 贴图技术实践

    最近在公司内部的技术协会论坛里闲逛的时候,无意中发现了一篇手淘前端大牛岑安两年前写的博文,讲述了canvas的2d贴图技术.看到后觉得相当神奇.于是就自己实现了一下.不过岑安前辈的那篇博文也只是大概讲 ...

  8. Unity3D ShaderLab 立方体图的菲涅尔反射

    Unity3D ShaderLab 立方体图的菲涅尔反射 菲涅尔反射是反射类型中比较常见的一种类型,当我们的视线正对物体表面,那么反射量会明显增加, 我们几乎可以在任何支持反射类型的物体表面看到这种情 ...

  9. Unity3D ShaderLab立方体图的法线渲染

    Unity3D ShaderLab立方体图的法线渲染 某些情况下,我们希望立方体图的材质球上产生法线效果,来更多的表现细节,比如菱形花纹的玻璃,冰块的表面. 在帧数的协调下,我们可以通过input结构 ...

随机推荐

  1. 修改tmp的临时目录的地址

    https://nkcoder.github.io/2014/04/11/jetty-as-linux-service/ 我们在启动服务的时候添加-Djava.io.tmpdir=/data/jett ...

  2. 关于spring xml文件中的xmlns,xsi:schemaLocation(转)

    使用spring也有一段时间了,配置文件也见了不少了,但是发现配置文件的beans里面有很多链接,一开始也很迷惑,所以抽了一点时间整里了一下. 首先我们看到的一个spring的配置文件大概如下面这个样 ...

  3. 在linq to entities中无法使用自定义方法

    来源: http://support.microsoft.com/kb/2588635/zh-tw (繁体)

  4. [na]非对称加密方式&带加密的数字签名交互流程

    1,对称加密 2,混合加密 3.数字签名 4,带加密的数字签名

  5. iOS之Sqlite3封装

    一.代码下载 代码下载地址 二.实例效果展示 imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" alt="效果图二.png&q ...

  6. 每日英语:China Overtakes U.S. in Number of Diabetes Cases

    China is now home to the world's largest diabetes population. The number of people who have diabetes ...

  7. 【转】Oozie4.2.0配置安装实战

    什么是Oozie? Oozie是一种Java Web应用程序,它运行在Java servlet容器——即Tomcat——中,并使用数据库来存储以下内容: 工作流定义 当前运行的工作流实例,包括实例的状 ...

  8. interactive_timeout wait_timeout

    官方解释:     interactive_timeout            The number of seconds the server waits for activity on an i ...

  9. Makefile学习之路——4

    变量的类别有递归扩展变量和简单扩展变量.只用一个“=”符号定义的变量被称为递归扩展变量.通过下面例子观察递归扩展变量的特点. .PHONY: all foo=$(bar) bar=$(ugh) ugh ...

  10. 在js代码中调用jsp的变量

    <% int coblid=Integer.parseInt(request.getParameter("blid")); %> <script> var ...