Unity3D自带功能:灯光及光照烘焙

合集下载

Unity3D光照贴图烘焙知识详解

Unity3D光照贴图烘焙知识详解

Unity3D光照贴图烘焙知识详解欢迎来到unity学习、unity培训、unity企业培训教育专区,这里有很多U3D资源、U3D 培训视频、U3D教程、U3D常见问题、U3D项目源码,我们致力于打造业内unity3d培训、学习第一品牌。

今天简单地跟大家分享一下Unity5.0里面的光照贴图烘焙技术。

由于时间只有20分钟,所以只能给大家一些概要性的介绍,没有办法深入,等到Unity5.0版本正式推出之后,我会给大家一些更详细的介绍。

接下来我会分3个部分跟大家讲解,第一部分讲解一下在以往的Unity版本中所采用的光照烘焙方法,以及Unity5.0中为什么会采用一套全新的光照贴图烘焙方法。

第二部分讲解Imagination的PowerVR Ray Tracing方法。

第三部分讲解Geomerics的Enlighten方法。

后两种方法都会被引入到Unity 5.0版本当中去。

首先我们来介绍Unity在4.X版本里面使用光照烘焙的方法。

我们采用的是Autodesk的Beast,而我们在5.0版本中可能会把它彻底移除。

这是为什么呢?我们先介绍一下Beast的弱点吧。

Beast只能烘焙静态的光照贴图,而不支持动态光照。

一般而言,使用Beast的工作流程是:先建造一个场景,然后在场景中布置各种光源,进而点击Bake操作键,接下来大家就可以喝喝咖啡,或者直接下班回家了,因为整个烘焙过程可能需要几分钟、几小时,甚至是更长的时间。

这样的过程还不一定得到正确的结果,如果发现前面的烘焙结果存在问题,还要重新返回到第一步,直至得到满意的烘焙结果。

这样的过程对于广大开发者来说肯定是一个不太友好的过程,势必会影响大家的工作效率。

那么既然我们说原来的方法存在着一定的问题,那么理想的光照方案是什么样的呢?第一,理想的方法不需要任何的预计算时间;第二,它能够让场景中所有与光照有关的信息都能够实现动态改变,比如说动态改变光源、改变材质、改变环境光照,甚至改变场景中几何体的形状;第三,这样的一套方法还需要做到实时渲染,这不仅包括Console设备,也包括我们手中的移动设备。

unity的光照烘焙技术摘选

unity的光照烘焙技术摘选

一、光照烘焙技术的概念1.1 光照烘焙技术的定义光照烘焙(Lightmapping)是一种用来模拟光照效果的技术,它通过预先计算并存储场景中的光照信息,然后在运行时应用于渲染过程中,以提高图形渲染的效率和质量。

1.2 光照烘焙技术的优点- 增加渲染效率:光照信息在运行时已经预先计算好,不需要实时计算,可以降低渲染负载,提高性能。

- 改善光照质量:通过光照烘焙可以获得更真实、更精细的光照效果,提高场景的逼真度和观赏性。

- 节省资源:由于光照信息是预先计算好的,不需要实时计算,可以节省系统资源,适用于移动设备等资源受限的评台。

二、光照烘焙技术的原理2.1 光照烘焙的基本原理光照烘焙技术是通过将三维场景中的光照信息计算并存储为纹理或纹理集,然后在运行时应用于模型的表面,以模拟真实的光照效果。

光照烘焙的基本原理包括光照采样、纹理映射和渲染应用等步骤。

2.2 光照烘焙的计算方法- 光照贴图(Lightmaps):通过将场景中的光照信息渲染到纹理上,然后在运行时将光照信息映射到模型表面,以获得真实的光照效果。

- 光子映射(Photon Mapping):通过模拟光子在场景中的传播和相互作用,计算场景中的光照信息,并存储为纹理或纹理集,然后在运行时应用于模型的表面。

三、Unity中的光照烘焙技术3.1 Unity的光照烘焙工具Unity提供了丰富的光照烘焙工具和功能,包括实时光照、烘焙照明、环境光遮蔽(AO)等,可以满足不同场景的照明需求。

3.2 使用Unity进行光照烘焙的步骤- 设置光照参数:在Unity中设置场景的光源、材质和照明参数,为光照烘焙做准备。

- 执行光照烘焙:在Unity中执行光照烘焙,将场景中的光照信息计算并存储为纹理或纹理集。

- 应用光照烘焙:在运行时将光照信息映射到模型的表面,以获得真实的光照效果。

四、光照烘焙技术在游戏开发中的应用4.1 光照烘焙技术的作用在游戏开发中,光照烘焙技术可以用于优化场景的渲染效果和性能,提高游戏的视觉质量和用户体验。

unity 灯光-烘焙光照贴图剖析

unity 灯光-烘焙光照贴图剖析

灯光-Light对于每一个场景灯光是非常重要的部分。

网格和纹理定义了场景的形状和外观,而灯光定义了场景的颜色和氛围。

可以通过从菜单中选择 GameObject->Light并将其添加到你的场景中。

有3种类型的灯光。

一旦添加了一个灯光你就可以像操作其他物体一样操作它。

相关属性介绍◆Type:灯光的类型⏹Directional:平行灯,类似太阳光;⏹Point:点光源,类似灯泡;⏹Spot:聚光灯,类似舞台聚光灯;◆Baking:该选项有三个选择⏹Realtime:即光源不参与烘焙,只作用于实时光照;⏹Baked:表示光源只在烘焙时使用⏹Mixed:该光源会在不同的情况下做不同的响应;在烘焙时,该光源会作用于所有参与烘焙的物体;在实际游戏运行中,该光源会作为实时光源作用于那些不参与烘焙的物体或者动态的物体(不作用于静态的物体,就是勾选了Static);◆Color:光源的颜色,根据不同的环境设置不同的颜色,营造出不同的氛围;◆Intensity:光线强度;◆Bounce Intensity:光线的反射强度;◆Shadow Type:设置是否显示光源作用在的物体的阴影,⏹No Shadows不显示阴影,阴影不存在;⏹Hard Shadows:硬阴影(无过滤),效果不是很自然比较生硬;⏹Soft shadows:柔化阴影,更加贴近实际生活中的阴影显示,但比较消耗资源;◆Strength:阴影黑暗程度,取值范围0~1◆Resolution:阴影的清晰度,细化度,越高消耗越大;◆Bias:阴影的偏移量,越小,物体表面会有来自它自身的阴影,太大光源就会脱离了接收器;◆Cookie:灯光投射的纹理,如果灯光是聚光灯和方向灯就必定是一个2D纹理,如果是点光源必须是一个Cubemap(立体贴图);◆Cookie Size:缩放Cookie的投影,只适用于方向光◆Draw Halo:如果勾选,那光源带有一定半径范围的球形光源◆Flare:在选中的光源的位置出现镜头光晕;◆Render Mode:此项决定了选中的光源的重要性,影响照明的保真度和性能;⏹Auto:渲染的方法根据附近灯光的亮度和当前的质量设置在运行时由系统确定;⏹important灯光是逐个像素渲染的;⏹Not Important灯光总是以最快速度渲染;Culling Mask:剔除遮罩,类似摄像机的遮罩,选中指定的层收到光照影响,未选中的不受到光照影响;设置全局光照和烘焙光照贴图-LightMap一个场景中灯光添加多了资源消耗也就大了,为了降低资源的消耗,可以选择烘焙光照贴图;把光源的效果烘焙到贴图上,形成自带光源效果的贴图,这样就可以减少灯光的使用。

Unity2019烘焙四种分类

Unity2019烘焙四种分类

Unity2019烘焙四种分类烘焙四种四种分类:(1)静态灯光下的静态物体烘焙设置步骤:1.将物体勾选为静态。

2.灯光的Mode属性设置为Baked。

3.Lighting⾯板下的Realitime Illumination(实时全局光照)取消勾选,Mixed Lighting下的Baked Global Illumination设置勾选。

最后点击Generate Lighting开始烘焙此时⽆论怎么修改灯光,场景都没有变化(2)静态灯光下的动态物体烘焙设置步骤:1.将物体取消静态勾选。

2.灯光的Mode属性设置为Mixed。

3.Lighting⾯板下的Realitime Global Illumination(实时全局光照)取消勾选,勾选Mixed Lighting下的Baked Global Illumination,Mixed Lighting下的Lighting Mode属性设置为Shadowmask。

4.添加光照探针(3)动态灯光下的静态物体烘焙1.物体勾选为静态。

2.灯光的Mode属性设置为Runtime。

3.Lighting⾯板下勾选Realitime Global Illumination,取消Baked Global Illumination勾选。

(4)动态灯光下的动态物体烘焙1.将物体取消静态勾选。

2.灯光的Mode属性设置为Runtime。

3勾选.Lighting⾯板下的Realitime Global Illumination(实时全局光照),取消勾选Mixed Lighting下的Baked Global Illumination,4。

添加光照探针。

unity灯光-烘焙光照贴图讲解

unity灯光-烘焙光照贴图讲解

灯光-Light对于每一个场景灯光是非常重要的部分。

网格和纹理定义了场景的形状和外观,而灯光定义了场景的颜色和氛围。

可以通过从菜单中选择 GameObject->Light并将其添加到你的场景中。

有3种类型的灯光。

一旦添加了一个灯光你就可以像操作其他物体一样操作它。

相关属性介绍◆Type:灯光的类型⏹Directional:平行灯,类似太阳光;⏹Point:点光源,类似灯泡;⏹Spot:聚光灯,类似舞台聚光灯;◆Baking:该选项有三个选择⏹Realtime:即光源不参与烘焙,只作用于实时光照;⏹Baked:表示光源只在烘焙时使用⏹Mixed:该光源会在不同的情况下做不同的响应;在烘焙时,该光源会作用于所有参与烘焙的物体;在实际游戏运行中,该光源会作为实时光源作用于那些不参与烘焙的物体或者动态的物体(不作用于静态的物体,就是勾选了Static);◆Color:光源的颜色,根据不同的环境设置不同的颜色,营造出不同的氛围;◆Intensity:光线强度;◆Bounce Intensity:光线的反射强度;◆Shadow Type:设置是否显示光源作用在的物体的阴影,⏹No Shadows不显示阴影,阴影不存在;⏹Hard Shadows:硬阴影(无过滤),效果不是很自然比较生硬;⏹Soft shadows:柔化阴影,更加贴近实际生活中的阴影显示,但比较消耗资源;◆Strength:阴影黑暗程度,取值范围0~1◆Resolution:阴影的清晰度,细化度,越高消耗越大;◆Bias:阴影的偏移量,越小,物体表面会有来自它自身的阴影,太大光源就会脱离了接收器;◆Cookie:灯光投射的纹理,如果灯光是聚光灯和方向灯就必定是一个2D纹理,如果是点光源必须是一个Cubemap(立体贴图);◆Cookie Size:缩放Cookie的投影,只适用于方向光◆Draw Halo:如果勾选,那光源带有一定半径范围的球形光源◆Flare:在选中的光源的位置出现镜头光晕;◆Render Mode:此项决定了选中的光源的重要性,影响照明的保真度和性能;⏹Auto:渲染的方法根据附近灯光的亮度和当前的质量设置在运行时由系统确定;⏹important灯光是逐个像素渲染的;⏹Not Important灯光总是以最快速度渲染;Culling Mask:剔除遮罩,类似摄像机的遮罩,选中指定的层收到光照影响,未选中的不受到光照影响;设置全局光照和烘焙光照贴图-LightMap一个场景中灯光添加多了资源消耗也就大了,为了降低资源的消耗,可以选择烘焙光照贴图;把光源的效果烘焙到贴图上,形成自带光源效果的贴图,这样就可以减少灯光的使用。

unity3d烘焙场景设置注意事项

unity3d烘焙场景设置注意事项

unity3d烘焙场景设置注意事项Fbx、贴图导入Unity时的注意事项:在导出Fbx之前,Maya中已经对物体连接了正确的贴图,并且贴图文件名不能更改。

把Fbx和贴图放在同一文件夹内,直接把此文件加拖入Unity内。

此时Diffuse贴图应能自动识别。

此时,对贴图修改后,在Unity中更新贴图(删除老贴图,导入新贴图,并保持命名,路经一致),模型能够自动更新。

假如Unity中删除贴图,关闭Unity,再打开Unity,导入之前删除的贴图,模型不会自动更新贴图。

------------------------------------------------------i3D的这篇教程中的模型比例有问题,先根据Unity官方帮助文档中的内容说一下:Unity官方帮助文档中认为,模型的缩放尺寸是非常重要的。

特别是涉及到一些物理特效模拟的时候。

Unity认为,在理想状态下,不要更改模型的Transforms Scale 值,保持Scale值为(1,1,1)。

(这样的话,模型在Maya中制作时需要freeze,使缩放值为(1,1,1))。

原因是,额外的缩放数值会增加不必要的计算量。

Unity首先推荐模型在创建时使用真实尺寸。

其次是在Unity的Import Settings中更改尺寸。

Unity在进行场景优化时会根据物体尺寸来进行优化。

当在Unity中把一个物体parent到另外一个物体时,最好父级物体的坐标值是(0,0,0),否则之后会遇到不少头痛问题。

Unity的粒子系统不受Transforms Scale值的影响。

物体的不均匀缩放值在Parent后会产生不良后果(这个情况和Maya中是一样的)Unity中,1个单位尺寸代表1米。

即在Unity中创建一个Cube的尺寸是1x1x1米大小。

Unity推荐把人的身高定为大约2个Unity单位高度(2米)。

在Max中,只要正确设置单位尺寸(系统单位尺寸设置以及输出时单位尺寸设置)成厘米后,得到的效果是一致的。

unity 灯光烘焙原理

unity 灯光烘焙原理

unity 灯光烘焙原理Unity是一款广泛应用于游戏开发的引擎,其中灯光烘焙是其重要的功能之一。

本文将介绍Unity灯光烘焙的原理和作用。

一、什么是灯光烘焙灯光烘焙(Lightmapping)是指将场景中的灯光效果预先计算并存储为纹理的过程。

在运行时,游戏引擎会根据这些预计算的灯光纹理来渲染场景,从而提高渲染效率和画面质量。

二、灯光烘焙的作用1. 提高渲染效率:灯光烘焙可以减少实时计算光照的工作量,从而提高渲染性能。

在运行时,引擎只需要根据预计算的灯光纹理来渲染场景,大大减少了CPU和GPU的负荷。

2. 提高画面质量:通过灯光烘焙,可以实现更加真实的光照效果。

预计算的灯光纹理可以包含更多的光照信息,使场景中的物体产生更加明暗的阴影,增强真实感。

三、灯光烘焙的原理1. 光照贴图:灯光烘焙的核心原理是将场景中的光照信息计算并存储为光照贴图(Lightmap)或光照图(Lighting Map)。

光照贴图是一张纹理,其像素值表示场景中每个点的光照强度和颜色。

2. 光照计算:在进行灯光烘焙之前,需要设置场景中的光源和材质属性。

Unity会根据光源的类型(如点光源、聚光灯、方向光等)和材质的属性(如反射率、折射率等)来计算场景中每个点的光照强度和颜色。

3. 光照采样:为了生成光照贴图,Unity会在场景中的每个点进行光照采样。

采样过程中,会考虑光源的位置、颜色、强度等因素,以及材质的反射率、折射率等属性。

通过多次采样和计算,得到最终的光照贴图。

4. 光照传递:在生成光照贴图之后,Unity会将光照贴图应用到场景中的物体上。

渲染时,引擎会根据物体的UV坐标和光照贴图的像素值来确定物体的光照强度和颜色。

通过多次传递光照,实现场景中物体的明暗效果。

5. 光照合并:在场景中存在多个物体时,为了提高渲染效率,Unity会将多个物体的光照贴图进行合并。

合并过程中,需要考虑物体之间的遮挡关系,以及光照的传递效果。

通过合并光照贴图,可以减少纹理的数量,提高渲染性能。

unity 灯光烘焙原理

unity 灯光烘焙原理

unity 灯光烘焙原理Unity是一款广泛应用于游戏开发的引擎,其中的灯光烘焙功能是实现游戏场景真实感的重要一环。

本文将探讨Unity中灯光烘焙的原理和作用。

灯光烘焙是一种将动态光照转换为静态光照的技术,即将实时计算的光照效果预先计算出来,然后将其作为纹理贴图应用到场景中的物体上。

这样做的好处是可以大大减少计算量,提高游戏的运行效率,并且能够实现更高质量的光照效果。

在Unity中,灯光烘焙的原理可以简单地概括为以下几个步骤:场景建模、灯光设置、烘焙计算和应用烘焙结果。

我们需要进行场景建模。

在Unity中,我们可以使用内置的编辑工具或者第三方建模软件来创建游戏场景。

场景建模的目的是为了营造出游戏所需的世界观,包括地形、建筑、道具等元素。

接下来,我们需要设置灯光。

在Unity中,可以设置各种不同类型的灯光,比如平行光、点光源、聚光灯等。

每种灯光都有不同的属性可以调整,比如光照强度、颜色、阴影等。

通过设置灯光,我们可以达到不同的光照效果,从而营造出不同的氛围和场景。

然后,我们需要进行烘焙计算。

在Unity中,可以使用烘焙工具来计算光照的预烘焙贴图。

预烘焙贴图是一种包含了场景中静态光照信息的纹理贴图,它记录了光照在场景中的分布情况。

通过烘焙计算,可以将实时计算的光照效果转换为静态的贴图,从而减少运行时的计算量。

我们需要将烘焙结果应用到场景中的物体上。

在Unity中,可以通过设置物体的烘焙贴图属性来应用烘焙结果。

烘焙贴图可以实现物体在不同光照条件下的阴影和反射效果,从而增强物体的真实感和细节。

总结起来,Unity中的灯光烘焙原理是通过将动态光照转换为静态光照,从而提高游戏场景的真实感和性能表现。

通过场景建模、灯光设置、烘焙计算和应用烘焙结果等步骤,可以实现高质量的光照效果和真实感的游戏场景。

灯光烘焙的使用不仅可以提高游戏的视觉效果,还能够提高游戏的性能,给玩家带来更好的游戏体验。

unity烘焙光照贴图

unity烘焙光照贴图

光影烘焙,英文叫Lightmapping 或 light baking。

Unity 自带了 Lightmapping 的功能(是 Illuminate Labs出的名为Beast的产品)。

本系列教程分为4讲:第一讲光影烘焙第三讲 Light Probes第四讲脚本控制其中第三第四讲讲解的是动态物体与烘焙后场景的融合。

打开方式Window - Lightmapping有几点需要注意:1.所要烘焙物体的mesh必须要有合适的lightmapping uv。

如果不确定的话,就在导入模型设置中勾选 Generate Lightmap UVs2.任何Mesh Renderer, Skinned Mesh Renderer 或者 Terrain 都要标注为static(lightmap static)界面一:Objec点击Bake Scene即开始烘mappingObject MapsRan d4rersVBipODI Pelvis (Skinned Mesh Renderer)Lightmsp StaticScale In Lightmap 1CleatI lightmap2: 2K 1 024M1024P::烘焙参数的设置Mode:(1)Dual Lightmap mode:近景烘焙图(near lightmaps)和远景烘焙图(far lightmaps)都会被烘焙,只有deferred rendering path支持该模式。

(2)Single Lightmap mode:只有远景烘焙图(far lightmaps)会被烘焙,(3)Directional Lightmap mode:Use in forward rendering:一般可以忽略它。

针对Dual lightmaps的设定,只在Mode选的是Dual时才会出现。

在forward rendering模式下是否激活dual lightmaps,需要自己写对应的Shader。

Unity3D之Lightmap入门、烘焙贴图、场景技巧

Unity3D之Lightmap入门、烘焙贴图、场景技巧

Unity3D之Lightmap入门作者:李志健Unity内置的光照贴图烘培工具是Illuminate Labs 的Beast。

烘培光照贴图流程被完美的整合到Unity中。

这就意味着使用Beast可以根据你的网格物体,材质贴图和灯光属性的设置来烘培你的场景,从而得到完美的光照贴图。

同时也意味着光照图将作为渲染引擎的一部分。

只要你烘培一次光照贴图你就不需要其他任何操作。

光照图将自动指定到物体上。

准备需要烘培的光照贴图的场景从菜单栏选择Window – Lightmapping打开光照图工具窗口。

1.检查你将要烘培的模型上是否存在一个合适的用来定位光照贴图的UVs。

你也可以从mesh import settings面板中的勾选Generate Lightmap UVs选项来生成一个用于定位光照图UV的集。

2.在物体面板中将要烘培光照贴图的物体设置为Static(静态),这样Unity就会知道哪些物体是需要被烘培的。

3.在Bake面板下调整Resolution的值控制光照贴图的分辨率。

(在Scene View面板里勾选上小窗口LightmapDisplay中的Show Resolution选项可以帮助你更直观的查看贴图分辨率设置)。

4.点击Bake(烘培)5.在Unity编辑器底部的状态栏的右边会出现一个进度条。

6.当烘培结束时,你可以从光照图编辑器的底部预览窗口中查看所有烘培好的贴图。

场景和游戏窗口将会更新。

现在在你的场景中已经可以看到光照贴图效果了!Tweaking Bake Settings 调节烘焙设置最终场景的渲染效果取决与你对灯光和烘培选项的更多设置。

让我们来看一个通过基础设置改进光照的质量的小例子。

这是一个简单的场景,包含一组立方提和一个位于场景中心的点光源。

灯光产生硬阴影,看起来这个效果十分的晦暗和不自然。

Selecting the light and opening the Object pane of the Lightmapping window exposes Shadow Radius and Shadow Samples properties. Setting Shadow Radius to 1.2, Shadow Samples to 100 and re-baking produces soft shadows with wide penumbra - our image already looks much better.选择灯光打开物体面板,展开阴影范围和阴影采样属性。

unity烘焙原理

unity烘焙原理

unity烘焙原理
Unity中的烘焙(Baking)是指将光照信息预先计算并存储在纹理或顶点颜色中,以减少实时渲染时的计算量,从而提高游戏的性能。

烘焙的原理涉及到光照、阴影和全局光照等多个方面。

首先,烘焙会计算场景中的光照信息,包括直接光照和间接光照。

直接光照是指来自光源直接照射到物体表面的光线,而间接光照则是指光线经过多次反射、折射后达到物体表面的光线。

这些光照信息会被计算并存储在纹理或顶点颜色中。

其次,烘焙还会计算阴影信息。

阴影是指物体之间、物体与光源之间的遮挡关系所产生的暗部。

在烘焙过程中,Unity会计算出每个物体在静态光照条件下的阴影信息,并将其存储在纹理中,以便在实时渲染时使用。

另外,全局光照也是烘焙的重要原理之一。

全局光照是指考虑了场景中所有光照信息的综合效果,包括反射、折射、漫反射等。

在烘焙过程中,Unity会计算全局光照的影响,并将其存储在纹理中,以提高实时渲染时的表现。

总的来说,Unity中的烘焙原理涉及到光照、阴影和全局光照等多个方面,通过预先计算并存储光照信息,可以有效减少实时渲染时的计算量,从而提高游戏的性能和表现效果。

2.6.12.6虚拟现实基础操作灯光与烘焙上

2.6.12.6虚拟现实基础操作灯光与烘焙上

定向光
当定向光的角度和地面平行,可以做出日落的效 果;当把光源转到天空时会导致变黑,得到夜晚的效 果;从上往下照可以模拟日间的效果。
定向光
天空盒指定为环境光源时会影响环境里面的对象。
点光源
点光源从一个位置向 四面八方发出光线,影响 其范围内的所有对象,类 似灯泡的照明效果。在只 有一个点光源的场景中, 直接照射某个物体的一条 光线,一定是从点光源中 心发射到被照射位置的。
主讲教师:石卉
未来已来
你来不来
点光源
点光源的亮度从中 心最强一直到范围属 性设定的距离递减到0 为止,光的强度从光 源到距离成反比,这 是所谓的“平方反比 定律”,类似光在现 实世界的行为。
区域光源
区域光源在空间是 一个矩形,光线从矩形 的表面均匀地向四周发 散,但是光线只会来自 矩形的一面,而不会出 现在另一面。
区域光源
学习目标
1)了解Unity3d光照 2)学习Unity3D灯光的类型 3)掌握灯光烘培的类型
知识点
1
光照简介
2ter 01
灯光简介
灯光简介
Unity3D中光照的工作方 式类似于光在现实世界中的情 况,赋予了场景生命,如果说 一个场景有了模型和贴图就具 备了骨架和外表,那么有了光 照则有了色调和情感。很多时 候我们会用到多个灯光,同时 调节多个灯光以让它们协同工 作。从而得到理想的效果。
定向光
定向光没有真正的光源坐标,放置在场景任何地 点都不会影响光的效果,只有旋转会影响定向光的照 射结果。
定向光
在预设情况下,新的场景都会附带一盏定向光。 在Unity3D里定向光还会与天空盒系统关联。用户也 可以删除预设的定向光并创建一个新的光源
定向光

[指导]Unity烘焙教程

[指导]Unity烘焙教程

unity自带LightMapping和3Ds Max烘焙贴图的小对比对于做虚拟现实的朋友来说,烘焙贴图应该不是一个陌生的东西。

想要在有限性能的电脑上面即时运算较好的光影效果,一般都会采用烘焙贴图的方法。

而除了在3dmax里面烘焙贴图之外,Unity3D也自带了LightMapping烘焙贴图的功能。

下面我们来做一个小例子,对两者的意义和效果做一个小对比。

在3dmax里面,我简单的建立了几个模型,并分别赋予他们不同的颜色:然后使用3dmax自带的光线追踪渲染一下,会出现这样的效果:很明显的,光线追踪之后的渲染效果比没有光线追踪时立体感强了很多。

这是因为高级渲染器模拟了真实环境里面光线的各种反射和散射,使物体看起来接近真实的效果。

我们所要做的烘焙,其实就是把这种经过高级渲染器计算的光影效果,记录在贴图上面。

我对上面的几个物体展了UV,并使用3dmax的烘焙功能,烘焙出相应的贴图。

并把这个带着UV信息的模型导出为FBX,放进Unity里面。

在unity里面,我拉出了两个模型,一个按照原来的颜色直接给予他材质,另外一个把3dmax里面烘焙的贴图贴上了模型,会出现上图的情况。

场景里面也没有打灯光,假如是只有颜色的材质时,模型会没有任何的轮廓和立体感。

而贴上了烘焙贴图的模型,看起来会和在3dmax里面使用光线追踪时渲染的效果差不多。

接下来我们对只有颜色的这个模型进行LightMapping烘焙处理。

选择该模型,然后在Static里面选择Lightmap Static。

在菜单栏的Window——>lightMapping打开lightMapping面板,在bake栏里面设置一下烘焙的参数,我这里用了如下参数:设置好之后,就可以烘焙了,在烘焙之前先保存场景,然后点击Bake Scene按钮。

经过漫长的等待(等待的时间取决于你的模型的复杂程度),烘焙结束,生成了贴图,我们可以在maps里面查看:这时候,我们可以进行一个小对比了:同样是场景里面没有灯光,但不论是经过Lightmapping烘焙的模型,还是在3DMax里面烘焙贴图的模型,都有了较为真实的光影效果。

怎么在Unity3d中烘焙lightmap【2020】

怎么在Unity3d中烘焙lightmap【2020】

怎么在Unity3d中烘焙lightmap【2020】本⽂将就如何在Unity2019中烘焙lightmap的话题,以实例的⽅式与⽹友展开讨论,相关实例截图如下:⼲活!● Unity⽇景烘焙⾸先⼩姐姐以著名的斯蓬扎宫模型场景为例,和⼤家⼀起探讨⼀下正午时分的光影布光⽅法及烘焙过程。

3dMax模型情况如下图所⽰(由图可见,模型的⾯数为6万多(见截图左上⾓),模型⼀定要采⽤精简的单⾯建模,否则这个场景的⾯数会多达⼏百万,甚⾄上千万的⾯,如此多的⾯数,Unity是吃不消的,⽆论烘焙过程的展UV,还是烘焙,甚⾄烘焙之后的场景运⾏,都会陷⼊⽆休⽌的等待、假死机和卡顿状态,毕竟烘焙之后也会个场景带来⼀些负载,⽽且最终作品要在⽤户机器或⼿机上运⾏,所以从模型的⾯数⽅⾯,必须充分考虑给场景留出⾜够的裕度)1. 模型导出⽆论你⽤3dMax、Maya、C4D、Blender或Sketchup建的模型,建议都以fbx格式导出,因为Unity3d对fbx格式兼容的最好,这也是官⽅的建议,导出时⼀定要勾选“EmbedMedia”(嵌⼊媒体),否则在导⼊Unity时会成为⽆贴图的“裸模”2. 模型导⼊Unity⑴在导⼊模型前,按下图所⽰,勾选掉Unity3d的“Auto Generate”(⾃动烘焙)选项,好多⼈⼀打开Unity3d,不知道怎么啦,总感觉系统处于运算状态,就是因为Unity默认这个选项是勾选的,当导⼊模型后,什么还没做,就⼀直陷⼊莫名的忙机,也是这个原因,所以导⼊前取消这个选项。

⑵按下图所⽰将刚才从3d软件导出的FBX模型拖⼊Unity3d的Assets⽂件夹,2017版之后,可能出于别的考虑,Unity不再直接导⼊材质和贴图,所以很多⼈发现模型导⼊后总是⽆材质和贴图的裸模,这⾥还需要做⼀点设置,看下⼀步。

⑶选中刚导⼊的FBX模型,点击inspector⾯板的Materails按钮,我们发现下⾯的所有材质都显⽰“none”,这就是裸模的根源,有童鞋说,前⾯不是说导出FBX时不勾选“Embedmedia”选项,就会出现裸模,这都勾选了,怎么还是裸模呢?这⾥需要说⼀下,如果前⾯不勾选,这⾥⼀定是裸模,但是,勾选之后,还需要⼀点点设置,否则依然会裸模,也就是前⾯和现在的设置缺⼀不可。

Unity室内效果烘焙和设置【2020】

Unity室内效果烘焙和设置【2020】

Unity室内效果烘焙和设置【2020】下⾯以⼀个⼩客厅为例,和童鞋们⼀起讨论Unity3d的室内烘焙,⼀⽅⾯是对前⾯知识的综合应⽤,另⼀⽅⾯满⾜以下做装修童鞋的学习需求。

话不多说,开⼯!这个例⼦的3D场景如下图所⽰:拆分好的UV如下图所⽰导⼊Unity3d后的场景情况如下图所⽰:这个场景⽐较简单,⼀个窗户、⼀个沙发、⼀个茶⼏、⼀个书柜、两个落地灯、⼀个墙⾯装饰、还有⼀个挂画、茶⼏上⼀个杯⼦、两盆绿植,这⾥我们设想将场景烘焙成阴天的⽩昼⽓氛,也就是没有直射太阳光,室外光线完全是⼤⽓折射的太阳光,所以我们确定这个场景的主光源为从窗户投射的光线,可以使⽤Unity3d的⾯光源置于窗户附近,但我们这⾥选⽤Unity3d的材质灯光,也就是将某个模型的材质勾选“⾃发光”,这个模型就成了灯光了。

选中窗户玻璃,勾选其材质中的⾃发光(Emission),将⾃发光强度设为1.5,发光颜⾊设为⽩⾊,如下图所⽰:因为这个场景不可能有运动物体,光线也不会变化,所以选⽤静态灯光下的静态物体的⽅式烘焙场景,所以将⾃发光材质的Global Illumination(全局光照)设为Baked,勾选光照⾯板中的“Baked Global Illumination”,然后烘焙,得到如下图所⽰的结果(烘焙⽤时5分钟):从上图可见,场景太暗,但明暗关系已经有了,如果反复烘焙,太浪费时间,我们设想通过photoshop来调⾊,需要说明的是,这⾥所说的调⾊不是简单的图⽚调⾊,⽽是对整个场景调⾊。

如下图所⽰,将⼀个特殊的⾊带⽂件与相机关联起来,对这个⽂件调整,就会调整相机中的场景,这样我们将这个⽂件(png图⽚)⽤ps打开,然后截取⼀张相机视图的图⽚,按照图⽚调⾊的⽅法,对截取的图⽚调⾊,然后将图⽚调整的参数应⽤于那个⾊带⽂件,保存⾊带⽂件后,Unity3d的场景就回作相应的调整,关系就是这样。

下⾯我们就来调⾊,⾸先抓取相机视图的图⽚,然后在ps中打开,同时也将刚所说的⾊带⽂件也⽤ps打开,如下图:⾸先调⼀下截取的相机视图图⽚的亮度和对⽐度,亮度88,对⽐度-50,如下图所⽰:然后对⾊带也做这样的调整,如下图所⽰:然后保存⾊带⽂件,Unity的相机视图就会作相应的调整,调整后如下图所⽰:原理⼤家都明⽩了吧,这样就是以⽤ps灵活地为Unity3d场景调⾊了,只要Unity3d烘焙出场景的明暗关系,剩下的就交给ps了,这样可以节省⼤量反复测试烘焙的时间。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Unity3D自带功能:灯光及光照烘焙这一篇比较偏重于功能介绍,具体的实例操作请参考其他文章:未完成游戏场景中灯光照明的构成现实生活中的光线是有反射、折射、衍射等特性的。

对这些基本特性的模拟一直以来都是计算机图形图像学的重要研究方向。

在CG中,默认的照明方式都是不考虑这些光线特性的,因此出来的效果与现实生活区别很大。

最早期的时候,人们利用各种方式来模拟真实光照的效果,比如手动在贴图上画上柔和阴影,或者用一盏微弱的面积光源去照明物体的暗部以模拟漫反射现象等等。

然后出现了所谓的高级渲染器,用计算机的计算来代替我们的手工劳动来进行这个“模拟”的工作。

在漫长的发展过程中,出现过很多很多计算方案,总体上分为这样几类:直接模拟光线从被光源发出到最终被物体完全吸收的正向过程,也就是常说的GI(Global Illumination);不直接模拟光线,而是反向搜集物体表面特定点的受光照强度来模拟现实照明效果,也就是常说的FG(Final Gathering); 完全不考虑光线的行为,单纯基于“物体上与其他物体越接近的区域,受到反射光线的照明越弱”这一现象来模拟模拟现实照明(的一部分)效果,也就是常说的AO(Ambient Occlusion);将场景光照结果完全烘焙到模型贴图上,从而完完全全的假冒现实光照效果,也就是我们所说的Lightmap。

不论是GI还是FG,计算量都是非常大的,一帧图片需要几十分钟甚至几十小时来渲染,所以很难被应用在游戏设计领域。

因此在游戏设计领域,光照贴图技术依然是目前的主流方式。

由于光照贴图需要事先烘焙(baking)出来,且仅支持静态物体(Static Object),而我们的游戏场景中几乎不可能全都是静态物体,所以通常游戏场景中的灯光照明是多种照明方式的混合作用。

对于静态物体来说,大多使用光照贴图来模拟间接光的照明效果,然后加上直接光源的动态照明效果;对于运动物体来说,则仅用直接光源的动态照明效果,或者使用光照探针来模拟间接光的照明效果。

随着技术的发展以及计算机计算能力的提高,也许在未来,我们能够直接在游戏场景中进行动态的全局光照模拟也说不定呢。

新版Unity3D中就已经出现了Realtime Global Illumination,虽然这个技术还处于雏形阶段,所需要的计算量依然庞大,但确实为我们展示了一个令人激动的前景。

当然,技术是技术,产品是产品。

技术是为产品服务的,再先进的实时全局光照系统,对于像素风格的游戏场景的提升也是几近于0。

“选择合适的技术来完善我们的产品和制作流程”,以及“根据现有技术来设计产品和制作流程”,说的其实是同一个意思。

1. 直接照明(Direct Lighting)Unity3D中的直接照明主要来源于各种灯光物体,而灯光物体本质上是空物体加上灯光组件。

直接照明可以产生阴影,但光线不会反射、也不会折射,但可以穿透半透明材质物体。

1.1 灯光类型(Lights)Unity3D中默认可以创建这么几种灯光:聚光灯、点光源、平行光、面积光,另外还可以创建两种探针(Probe):反射探针(Reflection Probe)和光照探针组(Light Probe Group)。

Unity中可以创建的灯光类型物体平行光平行光通常用来做阳光,Unity3D新建场景后会默认在场景中放置一盏平行光。

平行光不会衰减。

unity_lighting04.pngType:灯光类型,所有类型的灯光都其实共用一个组件,本质上是一样的。

Color:灯光颜色Mode:灯光照明模式,每种模式对应Lighting面板中一组设定Realtime:对应Realtime LightingMixed:对应Mixed LightingBaked:对应Lightmapping SettingRealtime Lighting是新出现的一种烘焙光照技术,它并不像传统的烘焙技术一样直接烘焙间接光照颜色和亮度信息到光照贴图上,而是烘焙物体和物体之间的关系信息,比如A面对B面有漫反射效果,B面对C面有漫反射效果等等。

这样一来,只要物体之间的关系不变(也就是所有的静态物体都不移动位置),就不需要重新烘焙,从而使得我们可以在场景中随意运用动态光源(dynamic lights)。

而传统的Lightmapping光照贴图方式则不支持动态光源效果(改变光源不会改变场景光照)。

Realtime Lighting比Lightmapping要更耗费系统资源,所以手游上就不要考虑了。

Intensity:灯光强度Indirect Multiplier:在计算该灯光所产生的间接光照时的强度倍乘Shadow Type:阴影贴图的类型No Shadows:无阴影贴图Hard Shadows:硬阴影贴图Soft Shadows:光滑阴影边缘(也就是阴影模糊效果)Baked Shadow Angle:烘焙阴影的角度Realtime Shadows Strength:实时阴影强度Resolution:阴影贴图分辨率Bias:阴影偏移,通常适当增加这个值来修正一些阴影的artifactNormal Bias:法线偏移,通常适当减少这个值来修正一些阴影的artifact(不同于Bias的使用场合)Near Plane:阴影剪切平面,对于与摄影机距离小于这个距离的场景物体不产生阴影Cookie:Cookie相当于在灯光上贴黑白图,用来模拟一些阴影效果,比如贴上网格图模拟窗户栅格效果Cookie Size:调整Cookie贴图大小Draw Halo:灯光是否显示辉光,不显示辉光的灯本身是看不见的Flare:Flare可以使用一张黑白贴图来模拟灯光在镜头中的“星状辉光”效果Render Mode:渲染模式Culling Mask:点光源点光源模拟一个小灯泡向四周发出光线的效果,点光源在其照亮范围内随距离增加而亮度衰减unity_lighting01.pngRange:光线射出的范围,超出这个范围则不会照亮物体聚光灯聚光灯模拟一个点光源仅沿着一个圆锥体方向发出光线的效果,聚光灯在其照亮范围内随距离增加而亮度衰减unity_lighting02.pngSpot Angle:灯光射出的张角范围面积光面积光模拟一个较大的发光表面对周围环境的照明效果,通常面积光的灯光亮度衰减很快,阴影非常柔和。

Unity3D的面积光仅在烘焙光照贴图时有效,并不像Maya 的Area Lights一样能动态照亮场景。

unity_lighting03.pngWidth:面积光宽度Height:面积光的高度总的来说,Unity3D中自带灯光比较简单,根据我们在Maya 中使用灯光的经验,可以很快熟悉这些灯光类型的使用。

1.2 阴影类型(Shadow)Unity3D的灯光可以设置不同的阴影类型,分别是:无阴影、硬阴影、软阴影。

要注意的是,不论是硬阴影还是软阴影,本质上都是用阴影贴图模拟的阴影效果,而不是真实光照而自然形成的暗色区域。

unity_lighting05..png灯光上阴影设置部分会随着Mode参数的不同而变化,Realtime Lighting Mode对应的选项很多,而Baked Mode仅对应Baked Shadow Angle一项。

无阴影灯光不产生阴影,新建场景后默认生成的平行光就是无阴影的。

硬阴影阴影边缘清晰软阴影阴影边缘柔和,有过渡效果阴影质量设置虽然我们在灯光的阴影设置中可以调节Resolution以提高阴影质量,但真正的阴影质量调节应该在Quality面板中来进行,灯光中的阴影Resolution参数默认设置是Use Quality Settings,就是从Quality面板的设定中来选择。

unity_lighting06.png从菜单Edit > Project Settings > Quality打开Quality面板,这里可以针对不同质量等级设置不同的参数。

unity_quality02.png我们现在先不在这里对Quality面板做全面介绍,仅介绍关于阴影的那一部分设置内容:Shadows:在当前质量下是不渲染阴影,还是只渲染硬阴影,还是软硬阴影都渲染Shadow Resolution:在当前质量下阴影贴图分辨率,这就对应了灯光面板中的Resolution参数。

Shadow Projection:阴影贴图的投影方式,Close Fit方式会优化近处的阴影质量,缺点是运动状态下可能会出现一些波动,Stable Fit方式不会有波动,但质量比较差有的时候阴影贴图会出错,比如无缘无故多出一条亮缝之类,通常可以选择切换到Close Fit方式来解决,如果不想切换的Close Fit方式,可以适当降低灯光阴影参数中的Normal Bias参数,或者将对应场景物体设置成双面显示。

Shadow Near Plane Offset:很近处不渲染阴影Shadow Cascades:阴影贴图叠加方式,可以是单层、2层或者4层Cascade Splits:不同层所对应场景区域的比例分配划分Shadow Cascades是一种阴影贴图算法,比如我们选择4层叠加,那么实际上会计算4次阴影贴图,每次对应距离摄影机一定距离范围以内的场景物体,而这个距离范围的划分就通过Cascade Splits中所显示的紫、绿、黄、红四种颜色区域所占比例来区分。

紫色代表最近处的区域,而红色代表最远处的区域。

紫色条越窄代表其对应的那一层阴影贴图所对应的场景区域越小,这样一来该区域的阴影贴图精度就很高了。

我们可以看到这里的Shadow Resolution就对应了灯光面板中的Resolution参数。

unity_lighting07.png1.3 渲染路径(Rendering Path)Unity3D提供两种渲染路径(Rendering Path),对于初学者来说,渲染路径这个概念不是很好理解,大家可以理解成是两种不同的渲染器,分别有利弊就好了。

1.3.2 Forward在Forward渲染路径下,每个物体会被每个光源渲染成一个“通道”,因此物体受到越多灯光的影响,其渲染次数就会越多。

Forward渲染路径的优势在于,在灯光比较少的情况下,Forward方式的渲染速度会非常快,处理透明贴图也非常快,还可以使用诸如“多重取样抗锯齿(MSAA)”这样的硬件处理技术技术。

但Forward渲染路径的渲染速度会随着灯光的增多而迅速变慢,在一些有很多灯光照明的特定场景中(比如高科技室内环境)并不适合使用Forward渲染路径。

1.3.1 Deferred使用Deffered渲染路径,渲染时间不会随着灯光的增多而提高,而是会随着受整体光照影响区域的扩大而提高(也就是说,场景中越多像素被照亮,渲染速度就越慢,但全屏被照亮的情况下,灯光设置复杂度不会进一步影响渲染速度了)。

相关文档
最新文档