Unity3D-光照贴图技术
概念
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-光照贴图技术的更多相关文章
- Unity3D光照前置知识——Rendering Paths(渲染路径)及LightMode(光照模式)译解
简述 Unity supports different Rendering Paths. You should choose which one you use depending on your g ...
- (转)Unity3D 游戏贴图(法线贴图,漫反射贴图,高光贴图)
原帖网址http://www.u3dpro.com/read.php?tid=207 感谢jdk900网友的辛苦编写 我们都知道,一个三维场景的画面的好坏,百分之四十取决于模型,百分之六十取决于贴图 ...
- 【Unity】第13章 光照贴图和光影效果
分类:Unity.C#.VS2015 创建日期:2016-05-19 一.简介 在Unity 5中,Lighting是—种增强场景光照和阴影效果的技术,它可以通过较少的性能消耗使静态场景看上去更真实. ...
- unity3d的优化场景技术LOD+IOC
一.unity3d的优化场景技术 LOD+IOC 遮挡剔除(occlusion culling)其实就是在摄像机范围内的物体才被渲染出来,没有在视野范围内的,统统关掉渲染,这样能让性能大大提高. I ...
- unity3d-地图制作之光照贴图Lightmapping
今天无聊随便翻看了暗黑战神的场景资源,发现了一个以前没怎么注意的静态场景优化问题. 什么是静态场景,也就是说这个场景是不会变化.比如MMO游戏中选择人物的场景. 就拿默认的暗黑战神的选择人物场景来看, ...
- Shadow Map阴影贴图技术之探 【转】
这两天勉勉强强把一个shadowmap的demo做出来了.参考资料多,苦头可不少.Shadow Map技术是目前与Shadow Volume技术并行的传统阴影渲染技术,而且在游戏领域可谓占很大优势.本 ...
- canvas 2d 贴图技术实践
最近在公司内部的技术协会论坛里闲逛的时候,无意中发现了一篇手淘前端大牛岑安两年前写的博文,讲述了canvas的2d贴图技术.看到后觉得相当神奇.于是就自己实现了一下.不过岑安前辈的那篇博文也只是大概讲 ...
- Unity3D ShaderLab 立方体图的菲涅尔反射
Unity3D ShaderLab 立方体图的菲涅尔反射 菲涅尔反射是反射类型中比较常见的一种类型,当我们的视线正对物体表面,那么反射量会明显增加, 我们几乎可以在任何支持反射类型的物体表面看到这种情 ...
- Unity3D ShaderLab立方体图的法线渲染
Unity3D ShaderLab立方体图的法线渲染 某些情况下,我们希望立方体图的材质球上产生法线效果,来更多的表现细节,比如菱形花纹的玻璃,冰块的表面. 在帧数的协调下,我们可以通过input结构 ...
随机推荐
- spineRunTime for cocos2dx v3 中动画播完删除animation
spineRunTime for cocos2dx v3 中删除animation,发现下面写法会崩溃: spine::SkeletonAnimation* animationNode = spi ...
- 修改tmp的临时目录的地址
https://nkcoder.github.io/2014/04/11/jetty-as-linux-service/ 我们在启动服务的时候添加-Djava.io.tmpdir=/data/jett ...
- ubuntu下gcc-avr安装
ubuntu下研究arduino时发现,原来可以不用arduino IDE开发,linux下还有gcc-avr直接开发avr系列的控制器. 于是,迫不及待的查看了下相关资料,总结一下安装gcc-avr ...
- php短域名转为实际域名的函数参考
将实际域名转换为短域名,有时也要反转查看下实际域名,可以参考如下的函数. 代码如下: <?php /** * php短域名互转 * edit by www.jbxue.com * 最后修改日期: ...
- 自动实时监控Windows2003服务器终端登录
朋友一台Windows服务器被黑了,而且还被人恶意删除了一些数据备份,帮其做了下安全加固,考虑到服务器都是通过Windows 终端服务器来管理的,就想办法对其登录做个监控,找了个命令行下发邮件的小工具 ...
- angular学习笔记(九)-css类和样式2
在上一个例子中,元素的类名使用拼接的方法,这样,类名中就不得不带有true或false,并且不易维护,所以,angular使用ng-class属性来控制元素的类名: 我们来看一个小例子,点击error ...
- 每日英语:In Digital Era, What Does 'Watching TV' Even Mean?
We spend a full five hours and 16 minutes a day in front of a screen, and that's without even turnin ...
- spring整合kafka项目生产和消费测试结果记录(一)
使用spring+springMVC+mybatis+kafka做了两个web项目,一个是生产者,一个是消费者. 通过JMeter测试工具模拟100个用户并发访问生产者项目,发送json数据给生产者的 ...
- QT 4.8 静态库编译方法
最最初踏上QT之路是受到了XiaomaGee的指点,相比于常规的窗口程序开发,QT有着以下特点: 1. 优良的跨平台特性(支持Win.Linux.Mac 不同的平台下只需重新编译即可使用) 2. 面向 ...
- Ribbon对于SocketTimeOutException重试的坑以及重试代码解析
背景 本文基于Spring-Cloud, Daltson SR4 微服务一般多实例部署,在发布的时候,我们要做到无感知发布:微服务调用总会通过Ribbon,同时里面会实现一些重试的机制,相关配置是: ...