1、为什么要用Lightmapping?

简单来说就是实时灯光计算十分耗时,随着光源越多,计算耗时会倍增。使用Lightmap模拟灯光带来的效果,便不用去计算灯光,会带来性能上的大大提升。

当然一个复杂的游戏场景不可能只用一个光源。如果要得到一个逼真的光照环境需要很多不同的灯光相互配合。我们知道灯光会消耗很大的资源。如果一个游戏我们打了很多盏灯。游戏就会运行缓慢。Unity3d给我们提供一种很好的方式来解决这个问题。就是讲灯光信息烘焙到物体表面。以贴图的形式进行存储,这样既保证了场景的效果,又节约了资源。

那么在游戏制作中这种灯光贴图是怎么得到的呢。现在一般用到两种方式

1:在3dmax等模型制作软件中对场景进行烘焙。将烘焙好的模型以及贴图导入到unity3d。

2:用unity3d自身的烘焙系统对场景进行烘焙。两者方式选择一个即可!都差不多!

既然两者都能达到差不多的效果,那么究竟他们之间有什么差别呢?

3dmax烘焙:

1、可以使用各种高级渲染器对模型进行烘焙,比如Vray。

2、可以烘焙像反射这样的效果。

3、因为光影是固定了,所以在引擎里面只能按照在3DMax里面的摆放,不然就会穿帮。所以模型贴图不能在各个不同场景通用。

unity的LightMapping烘焙:

1、设置的参数相对没有3DMax里面高级渲染器丰富。

2、只能烘焙光影的追踪效果,不能烘焙反射。

3、可以一个模型放在不同场景单独烘焙,模型可以通用。 
4、由于每个场景需要烘焙一组贴图,所以如果场景多了,也会增加贴图数量。
Unity内置的光照贴图烘培工具是Illuminate Labs 的Beast。烘培光照贴图流程被完美的整合到Unity中。这就意味着使用Beast可以根据你的网格物体,材质贴图和灯光属性的设置来烘培你的场景,从而得到完美的光照贴图。同时也意味着光照图将作为渲染引擎的一部分。只要你烘培一次光照贴图你就不需要其他任何操作。光照图将自动指定到物体上。

2、为什么要使用LightProbes?

因为场景中都是假光,只是把光影烘焙到贴图上面,所以并不会对周围的动态物体产生真正的光照效果。动态的物体或角色没有受光会很突兀,显得格格不入。若觉得没关系便不需要管了,想要角色也有这样的效果就需要用到LightProbes。

3、烘焙前展UV

无论哪种烘焙,你都需要对模型进行展UV操作,假如UV没有展,或者UV的范围超出了0-1的框,烘焙都是会出错的。

选中要烘培的模型,在Inspector面板勾选“Generate Lightmap UVs”,应用-Apply。读条完成后UV成功展开,模型面数越多展UV时间越长。

4、调整好灯光

聚光灯和点光源阴影是最昂贵的---最耗费资源的!

在这之前先对灯光几个参数进行说明

Cookie:这个纹理的阿尔法(alpha)通道作为一个遮罩,使光线在不同的地方有不同的亮度。(摄像机的渲染模式顶点模式Vertex Lit是不支持的!)

如果灯光是聚光灯或方向光,这必须是一个2D纹理。如果灯光是一个点光源,它必须是一个立方图(Cubemap)。

我们来设置一下平行光的Cookie,2D纹理图片为一张背景透明的星星图片如左图,设置好Cookie之后,场景如右所示

  

也就是说纹理透明的部分会显示为亮度暗的地方,其他颜色则为亮的地方!

有alpha通道的图片表示形式有两种:

一种就是向这个星星一样的,背景为透明的图片

另一种就是有alpha通道的,如下

他设为Cookie的表现效果如下:

要想知道一个图片,是否带aphla通道,最简单的方法就是把此纹理的Texture Type设为Sprite,如果有透明区域,即带alphla通道

 

在这分享一个photoshop制作带alpha通道的图片的方法

我们先看看带透明通道纹理的通道是什么样的

 

不带透明通道纹理的通道

选择 魔棒工具 → 点击图片 → 按住shitf键选择选取 如下:

然后 菜单栏下: 选择 → 存储区域  → 填写名称 → 确定

选择 → 取消选择

图片通道就会生成对应的alpha通道

 

应用于平行光的Cookie效果为

Cookie Size:缩放Cookie投影。只用于方向光。

size为1时                           size为10时

 

在场景内设置好灯光位置和光亮,并选择一种阴影模式。默认情况下只有平行光才能实时显示阴影,其它类型光照没有实时阴影。

其中软阴影(Soft Shadows)更为昂贵。(耗资源)不建议使用

其中分辨率Resolution有如下设置:

Use Quality Settings表示使用Edit → Project Settings → Quality 下对阴影的设置,如下面箭头所指的地方

也就是说不同的灯光可以使用不同的分辨率,分辨率越高,渲染出来的图片越精细,如下,第一张是原图,第二张是Low Resolution,第三张是Very High Resolution

当然了,根据项目需求,我们得自己根据效果和效率来权衡使用哪一个!

虽然平行光是可以实时显示阴影,但是这也是和摄像机Camera的渲染路径Rendering Path有关的

渲染路径请参考http://www.cnblogs.com/MrZivChu/p/RenderingPath.html

摄像机的渲染路径有四个选项,Use Player Settings表示渲染路径依照Edit → Project Settings → Player 下面的设置来渲染

也就是说不同的摄像机可以使用不同的渲染模式

当使用Vertex Lit顶点光照的时候,平行光是无法渲染出实时阴影的,只有设置为其他两项(Deferred Lighting延迟光照  Forward正向渲染)才可以显示出来!

如果不在乎实时阴影效果,为了获得最佳性能,使用VertexLit 着色。这个着色器(shader)只进行顶点光照,在低端卡提供高得多的吞吐量。

点光源、聚光源也想要实时阴影怎么办?

我们先为点光源和聚光源的Shadow Type设为Hard Shadows,他会提示你“Only directional lights have shadows inforward rendering”,此时我们只需把对应摄像机的渲染路径改为延迟光照 Deferred Lighting模式即可!只有延迟光照Deferred Lighting模式才能实时显示阴影,其他两种模式对于不是平行光的光源来说是不行的!

如果我们的摄像机的渲染模式应用的是Use Player Settings的话

那么我们打开PlayerSettings面板(Edit > Project Settings >  Player)。将Rendering Path 设置为延迟光照 Deferred Lighting,这时点光源的阴影也被显示出来了

或者也可以直接设置摄像机应用哪一个渲染模式

5、烘焙

http://game.ceeger.com/Manual/LightmappingInDepth.html

http://blog.sina.com.cn/s/blog_471132920101etyp.html#cmt_2435395

相关参数说明:

Mode:
(1)Dual Lightmap mode:近景烘焙图(near lightmaps)和远景烘焙图(far lightmaps)都会被烘焙,只有deferred rendering path支持该模式

选择这项,会多出这一项的设置:Use in forward rendering:一般可以忽略这个。针对Dual lightmaps的设定,只在Mode选的是Dual时才会出现。在forward rendering模式下是否激活      dual lightmaps,需要自己写对应的Shader。
(2)Single Lightmap mode:只有远景烘焙图(far lightmaps)会被烘焙
(3)Directional Lightmap mode:

Quality:
          High low 2个选项。决定采集射线的数量,对比界限,以及反锯齿等设置。

Bounces:
Global Illumination模拟中 light bounces的数量。0表示只有直接光照会被计算,如果要加入柔软的,真实的间接光照的话,则至少填1。

双通道后配出后不带影子,灯光需要保留。

单通道烘培后附带影子,可以不保留灯光。单通道烘培省资源。(适当的调节参数效果更好)

参考:http://unity.jb51.net/meigongsheji/shanweisheji/35.html

6、AreaLight

Area Light,俗称面灯。没有任何实时光照的效果,仅用于Light baking即烘焙。

Color:颜色
Intensity:强度,
Width:宽
Height:高
Scale缩放对光没有任何影响。主要是宽高调整面的区域大小。选中Arealight后,Arealight的区域会在Scene窗口中以黄线框显示,AreaLight的Z轴指向的方向即光照的方向。

用AreaLight烘焙室内灯光效果
(1)创建一个空场景
(2)创建Cube并缩放成扁平面后。复制Cube并旋转拼接搭建成一个敞口的盒子。
(3)再创建一个Cube拉伸成下图中的简易灯模型,并把Shader改为Self-Illumin/Diffuse。
(4)创建Arealight,并旋转使z轴朝下。之后调整Arealight的宽高,使AreaLight的框与灯符合。最后光的颜色选择黄色。
(5)点击烘焙

转载于:https://www.cnblogs.com/MrZivChu/p/light.html

unity灯光Lightmapping、LightProbes相关推荐

  1. Unity 灯光与渲染 (一)

    最近翻自己记录的笔记的时候,发现之前学的Unity 灯光lighting设置渲染一块没有总结过,因此特地将笔记内容整理至博客中. 一.常见光源Light 一说到Unity中的Light,大家能回忆起有 ...

  2. Unity灯光、烘焙小结(一)Unity灯光烘焙教程

    *****************Unity灯光烘焙教程************* https://space.bilibili.com/26063436/channel/detail?cid=867 ...

  3. Unity灯光烘焙设置详解

    游戏场景中灯光照明的构成 现实生活中的光线是有反射.折射.衍射等特性的.对这些基本特性的模拟一直以来都是计算机图形图像学的重要研究方向. 在CG中,默认的照明方式都是不考虑这些光线特性的,因此出来的效 ...

  4. Unity灯光(light)

    目录 一.光源种类 1.Directional Light(方向光,平行光) 2.Point Light(点光源) 3.Spotlight(聚光灯) 4.Area Light(区域光,面光源) 二.光 ...

  5. Unity灯光的一些设置(一)自带灯光

    最近项目需要有好的灯光效果,我会依次讲解,灯光,灯光烘焙,反射探针,光照探针,屏幕渲染以及相关优化的问题.主要是用来自己学习,大牛看了勿喷.话不多说... 老规矩介绍版本:unity2017.3 首先 ...

  6. Unity灯光渲染之自发光材质

    在unity里面有一种材质,勾选上Emission,可以让物体自身发光.可以通过这种方式来给场景打灯光. HDR模式可以让同一种颜色更加鲜艳明亮 通过一个小场景来看一下自发光材质烘焙的场景,创建两个P ...

  7. Unity灯光、烘焙小结(二)sikiedu光照烘焙教程

    ****************sikiedu光照烘焙教程*************** https://www.bilibili.com/video/av56087784?p=1 1.Ctr+shi ...

  8. Unity灯光一:Unity中的灯光设置

    我相信unity开发者,除了一些所在的公司部门比较完善,大部分都是需要开发自己做一些场景或者资源的调整,我也是有这样的经历,那今天我就简单说一下灯光的设置 Unity 提供了四种光源:Directio ...

  9. 关于Unity 灯光烘焙模型UV有重叠的问题(UV Overlap)

    Hello!大家好,我是小洋. 1.最近我遇到了unity里烘焙的问题,错误提示灯光烘焙UV(UV2)有重叠问题.导致了烘焙的光影图是模糊和布满脏斑等缺陷的. 重叠部分为红色: 2.UV1是控制纹理贴 ...

  10. Unity 灯光Shader

    一.一些光照模型的概念讲解 我们知道,光照模型是真实感图形渲染的基础,从 1967 年 Wylie 等人第一次在显示物体的时候加进光照效果后,该领域迅速的发展.而这一节,我们主要看看最常见的漫反射.L ...

最新文章

  1. linux汇编div除法,汇编:div 除法指令
  2. Centos7安装Apache和PHP,包含配置过程
  3. 【2021年度训练联盟热身训练赛第四场】Happy Number(python)
  4. 烟台大学计算机学院老师,王鹏-烟台大学计算机与控制工程学院
  5. NEFU704(AC自动机+状态压缩)
  6. python自动批量发邮件脚本_Python实现自动发送邮件功能
  7. arcgis点按角度生成固定长度线
  8. JavaScript笔记-对wheelDeltaY和deltaY的体会
  9. Python查找任意字符串中只出现一次的字符(2016奇虎笔试题)
  10. ini文件中文乱码 python_用心盘Python:中文文件处理早晚会用到的将中文转成拼音...
  11. android Volley解析之自定义CookieObjectRequest
  12. 带宽、特征频率、截止频率、-3dB
  13. 2018-9-15AGV项目笔记
  14. 主机如何做好防勒索病毒措施
  15. windows电脑端同时打开多个微信的方法
  16. android获取网络图片方法,Android获取网络图片并显示的方法
  17. linux查看文件内容常用命令
  18. android 本地地址转换为url,安卓 File和url之间的转换
  19. CSS 自动换行样式
  20. 《天天魔塔》源码下载

热门文章

  1. 一味地追求流量正确么?
  2. vue的一些基本指令,搭建、编译、运行、打包
  3. C语言结构体初始化(转载)
  4. 编程菜鸟的日记-初学尝试编程递归
  5. MFC对话框增加状态栏 以及设置状态栏滚动字幕
  6. 算法习题---4-5IP网络(Uva1590)
  7. 重装上阵,全新的「极光开发者」公众号来了,关注送大礼!
  8. Codeforces Round #342 (Div. 2) D. Finals in arithmetic(想法题/构造题)
  9. Sublime Text3插件管理
  10. EJBCA 在windows上的安装