2018-08-09 19:52:37 qq_38061677 阅读数 3848
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

灯光Light

一、简介
光源 (Lights) 是每个场景的重要组成部分。网格和纹理决定了场景的形状和外观,而光源则决定了三维环境的颜色和氛围。您可能会在每个场景中使用多个光源。让它们一起工作需要一些实践,但结果却相当惊人。
二、灯光类型
Unity 5.5中有 4 种灯光。创建灯光的方式同创建其他游戏对象的方式相似:
这里写图片描述
(1)Directional

方向光源。这种类型的灯光可以被放置在无穷远处,可以影响场景中的一切游戏对象,类似于自然界中太阳光的照明效果。“定向光”非常适合用来模拟阳光,它的特性就像是个太阳,定向光能从无限远的距离投射光源到场景,从定向光发出来的光线是互相平行的,也不会像其他种光源会分岔,结果就是不管对象離定向光源多远,投射出来的阴影看起来都一样,这其实对户外场景的照明很有利。定向光没有真正的光源坐标,放置在场景任何地点都不会影响光的效果,只有旋转会影响定向光的照射结果。其他有光源坐标的灯光类型,例如投射灯(Spotlights),角色阴影会因为接近或远离光源而改变,这也许在照亮室内环境时会是个问题,一般来说,避免角色太接近隐形的光源,我们会建立一个亮点来假装光源.使用定向光不用考虑距离,不管多远它都会影响场景所有的表面(除非被剔除),当使用延迟(Deferred)著色路径时会造成一些效能损耗,要注意的是,使用这个著色路径时,光的效能代价和他影响的像素数目是成正比的,但虽然需要消耗效能,起码结果较为统一,因此比较容 易调整平衡。 在预设情况下,新的场景都会附带一盏定向光,在Unity里还会与天空盒系统关联(Lighting->Scene->Skybox),你也可以删除预设的定向光并创建一个新的光源,然后从Sun这个属性重新指定(Lighting->Scene->Sun)旋转预设的定向光会导致天空盒也跟着更新,如果光的角度和地面平行就可以做出日落的效果,把光源转到天空导致变黑就能做出夜晚的效果,从上往下照就会模拟日间的效果。如果天空盒有指定为环境光源(Ambient Source),那么天空盒的颜色就会影响环境里面的对象。

这里写图片描述
(2)Point

点光源从一个位置向四面八方发出光线,影响其范围(Range)内的所有对象,类似灯泡的照明效果。点光源的阴影是较耗费图像处理器资源的光源类型。点光源可以想象是在3D空间里一个对着所有方向发射光线的点,很适合用来制作像是灯泡、武器发光或是从物体发射出来的爆炸效果,点光源的亮度从中心最强一直到范围属性(Range)设定的距离递减到0为止,光的强度从光源到距离成反比,这是所谓的”平方反比 定律”,类似光在现实世界的行为。点光源从它的位置对四面八方射出光线,球形的小图示代表光的”范围”,光线到达此范围是会”衰减”到0,但如果有间接光源或反射光则会继续投射。 点光源开启阴影运算是很耗效能的,因此必须谨慎使用,点光源的阴影为了要给六个不同的世界方向会运算六次,在比较差的硬件开启此功能会造成较大的效能负担。当在场景中加入点光源时要注意,目前它们不支持阴影的间接反射,这代表由点光源产生的光线,只要在距离内有可能会穿过对象反射到另外一面,这可能会导致墙壁或地板”漏 光”,因此放置点光源要格外注意,然而如果是采用Backed GI的话,就不会有这类的问题产生。

这里写图片描述
(3)Spot
聚光灯。这种灯光从一点发出,在一个方向按照—个锥形的范围照射,该锥形是由聚光灯角度
(Spot Angle) 和范围 (Range) 界定的。
聚光灯是较耗费图形处理器资源的光源类型。
聚光灯投射一个锥体在他的Z轴前方,这个锥体的宽度由投射角度(Spot Angle)属性控制着,光线会从源头到设定的范围慢慢衰减到0,同时越靠近锥体边缘也会衰减,把投射角度的 值加大会让锥体宽度加大,同时也让边缘淡化的力度变大,这现象学名叫做”半影”。
这里写图片描述
聚光灯有许多用途,他们可以用来模拟路灯, 壁灯,或许多创意用法,例如模拟手电筒,因为投射区域能精确的控制,因此很适合用来模拟打在角色身上的光或是模拟舞台灯光效果等等
这里写图片描述
(4)Area
区域光/面光源。该类型的光源无法应用于实时光照,仅适用于光照贴图烘焙 (lightmap baking)), 这种光能从各方向照射一个平面的矩形截面的一侧。区域光可以当作是摄影用的柔光灯,在Unity里面他们被定义为单面往Z轴发射光线的矩形,目前只能和烘焙GI一起使用,区域光会均匀的照亮作用区域,虽然区域光没有范围属性 可以调整,但是光的强度也是会随着距离光源越远而递减。区域光照亮表面并在区间产生漫反射与柔和的阴影,区域光用在建立柔和的照明效果非常有用,光线在任何方向穿过光的表面时会产生不同方向的折射 - 造成在对象上产生漫反射,常见的用途是拿来当作天花板壁灯或是背光灯,为了实现这功能,我们必须从每个光照贴图像素上发射一定数量的光线,背对着区域光以确定光有能见度,这代表区域光的计算是消耗很大的,而且会延长烘焙的时间,但如果运用得宜可以增加场景光的深度,那么消耗就很值得,值得注意的是区域光只能用在烘焙,因此不影响游戏效能。
这里写图片描述
关于灯光的其他属性以后会更新

2014-03-28 22:50:22 qq_bingfeng_8 阅读数 3847
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

转载地址:http://www.narkii.com/club/thread-284051-1.html

今天我们来看一下unity场景正的另外一个重要组成部分—灯光。灯光为一个场景提供光照支持,并决定一个场景的颜色和氛围。
打开unity3d导入在3dmax中制作好的场景。
我们发现在Game视图中的场景非常灰暗,下面我们为场景添加一盏灯光。
添加方法如图:


Unity一共给我们提供了四种灯光可供选择
1:Directional lights:平行光,对场景的照明不受灯光位置的影响。
2:Point Light:点光源,从一个位置向所有方向发射相同强度的光。
3:Spot lights:射线光源,从一个点向一个方向发光。
4:  Area Light:面光源,在场景中是看不到效果的。只有烘焙后才可以看到效果。
首先添加一盏平行光。
查看效果。


             添加前                                添加(平行光)后
我们试着添加另外两种灯光,看下效果。

添加(点光源)后                         添加(射线光源)后
根据不同需要,选择不同的光源类型。
下面看下灯光的属性怎么调节,首先选中一盏灯光。在inspector视图中看到如下属性,如图:




上面为属性的详细介绍,可参考http://game.ceeger.com/Components/class-Light.html。
需要注意的是灯光阴影的调节。我们发现只有平行光可以添加阴影,点和射线光都添加不了阴影。
如图:

意思是不能在 foward rending这种渲染模式下产生阴影。我们要想让他们产生阴影,只需要改变一下渲染模式即可。方法如下:Edit>>roject Setting>>layer


在inspector视图中看到如下界面:


将上图红笔画出的位置改为:即可。
当然一个复杂的游戏场景不可能只用一个光源。如果要得到一个逼真的光照环境需要很多不同的灯光相互配合。我们知道灯光会消耗很大的资源。如果一个游戏我们打了很多盏灯。游戏就会运行缓慢。Unity3d给我们提供一种很好的方式来解决这个问题。就是讲灯光信息烘焙到物体表面。以贴图的形式进行存储,这样既保证了场景的效果,又节约了资源。
   那么在游戏制作中这种灯光贴图是怎么得到的呢。现在一般用到两种方式,1:在3dmax等模型制作软件中对场景进行烘焙。将烘焙好的模型以及贴图导入到unity3d。2:用unity3d自身的烘焙系统对场景进行烘焙。
第一种方法过程比较复杂,当然效果是非常好的,在以后的教程中在进行讲解。今天我们主要看下第二种方式如何制作。
首先打开unity场景,添加灯光并进行调节,直到满意为止。
如图:


当然我这里制作演示使用。如果是项目使用还需要继续调节细节。
调节完成后点击菜单栏的Window – Lightmapping


得到如图所示的Lightmapping窗口。


选择主光源,在Object面板下将Shadow samples(阴影采样)设为100,将Shadow Angle(阴影范围)设为1.2。在Bake(烘培)面板设置Bounces(反弹)为1,Sky Light Intensity天光强度为0.5。
选择需要烘焙的物体,将Static勾选,将物体设置为静态。


然后点击Back Scene烘焙场景。


在屏幕右下角可一看到烘焙进度


点击Lightmapping窗口中的cancel可以取消烘焙。


烘焙完成后删除场景中的灯光即可。烘焙的详细参数可以参考
(http://game.ceeger.com/Manual/LightmappingInDepth.html)

    最后就是要把摄像机的渲染方式改为Vertex Lit :顶点光照。

2018-06-08 10:49:43 s1314_JHC 阅读数 1831
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

本篇博客作为收尾,介绍探针(重点是反射探针)以及一些后期处理与优化方式。
传送门:
Unity3D灯光与渲染学习之(三):探针使用、后处理与批处理

7.探针的使用

7.1 灯光探针(适用于运动物体),覆盖整个场景,运动物体在覆盖的场景进行移动时,能实时改变运动物体的颜色信息。这方面由于暂时不需要使用,并未过多学习,可以参照PassionY的博文https://blog.csdn.net/yupu56/article/details/76176338
7.2 反射探针(适用于室内场景,相当于一个全景摄像机),将对当前物体有影响的信息保存并体现在物体上。
导入Reflection Probe资源包,找到Scene1场景文件,打开如下图所示。(下载地址(包括第8节的后处理资源):https://download.csdn.net/download/s1314_jhc/10466588

创建新材质赋给小球,并设置为全反射。

为小球添加反射探针(Light > Reflection Probe),可以看到反射探针有一个区域,只有区域内的物体能影响反射探针

现在只反射的是天空盒,原因是Inspector面板中设定了它的type为Baked,即只反射游戏中的静态物体。因此将两个Cube设置为Static即可。再稍微移动下反射探针,即可看到效果。如上右图所示。

对于动态物体而言,首先将灯光探针的type修改为RealTime(比较费效率),并将Refresh Mode设置为每帧。并将反射探针设置为小球的子物体,即可在小球移动时正确显示效果。

8.后处理(Post-Processing)

导入Post Processing Stack资源包,该资源包包括各种对环境的后处理功能,下载资源中也在探针处一并包括(这块内容比较繁琐,之后整理补充)。

9.批处理

在屏幕上渲染物体,引擎需要发出一个绘制调用来访问图形API。每个绘制调用需要进行大量的工作来访问图形API,从而导致了CPU方面显著的性能开销。因此Unity在运行时可以将一些物体进行合并,从而用一个绘制调用来渲染他们。这一操作,我们称之为“批处理”。一般来说,Unity批处理的物体越多,就会得到越好的渲染性能,下图中的Batches就是批处理的数目。

可以批处理的物体:
只有拥有相同材质的物体才可以进行批处理。因此,如果你想要得到良好的批处理效果,你需要在程序中尽可能地复用材质和物体。如果你的两个材质仅仅是纹理不同,那么你可以通过纹理拼合操作来将这两张纹理拼合成一张大的纹理。一旦纹理拼合在一起,你就可以使用这个单一材质来替代之前的两个材质了。比如下图展台的玻璃盖部分,这么做可以提升场景的流畅度(即上图中的FPS)。

批处理分为动态和静态两种。

9.1动态批处理

如果动态物体共用着相同的材质,那么Unity会自动对这些物体进行批处理。动态批处理操作是自动完成的,并不需要你进行额外的操作。批处理动态物体需要在每个顶点上进行一定的开销,所以动态批处理仅支持小于900顶点的网格物体。

9.2 静态批处理

相对而言,静态批处理操作允许引擎对任意大小的几何物体进行批处理操作来降低绘制调用(只要这些物体不移动,并且拥有相同的材质)。因此,静态批处理比动态批处理更加有效,你应该尽量使用它,因为它需要更少的CPU开销。为了更好地使用静态批处理,你需要明确指出哪些物体是静止的,并且在游戏中永远不会移动、旋转和缩放。想完成这一步,你只需要在检测器(Inspector)中将Static复选框打勾即可


2018-06-08 10:04:43 s1314_JHC 阅读数 6497
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

最近在学习Siki学院中的U3D渲染,将学习的笔记进行整理,方便日后查阅,也方便各位交流学习。课程大纲如下:

先介绍灯光渲染的大致内容,灯光效果主要分为实时光照(RealTime) 和烘焙(Baked),实时光照根据场景中的运动信息,实时更新光照信息,比较耗费性能。而烘焙是将光照信息照射到静态物体上的影响生成光照贴图,之后便可保存灯光效果并删除灯光。接下来用几篇博客简要分析下其中的关键技术。
传送门:
Unity3D灯光与渲染学习之(一):天空盒、灯光以及色彩空间

1.天空盒

在项目的场景渲染时,并未涉及过多的天空盒内容,因此本篇博客只粗略介绍,详细的天空盒介绍可参照别志华大牛的博客:https://blog.csdn.net/biezhihua/article/details/77150512

1.1.天空盒的添加

天空盒是一个全景视图,分为六个纹理,表示上下左右前后六个方向的视图,如下图所示。经Unity处理后可以实现环绕式的显示效果,可以从网上下载并添加,也可以直接用U3D自带的天空盒,选用已有工程素材中的文件即可。

1.2.天空盒的反射

在添加了天空盒之后,添加几个物体,可以看到天空盒的颜色会对物体产生影响。

可以在Windows>Lighting>Setting中对天空盒的属性进行设定。控制场景对Cube的影响,可以选用颜色来改变小球的外观。

之后,在Cube的Inspector面板中,更改Metalic和Smoothness属性,可以改变Cube的反射情况,值越大,反射环境光的效果越明显,并且光滑度上升。

2.灯光设置

灯光设置的详细分析可以参照简书上shimmery的详细介绍,本节介绍只是抛砖引玉。https://www.jianshu.com/p/7594b044e6dc

2.1 .直射光

从很远距离打出来,可看作是太阳光,只能控制旋转角度,不能控制位置

直射光的Light选项,默认是实时的(RealTime),可修改为烘焙。烘焙只影响场景中的静态物体,因此将受影响的物体勾选右上角的Static即可

直射光的阴影类型有3种:无,Hard Shadows,Soft Shadows,Soft Shadows最耗性能,效果分别如下

在Hard和Soft模式下,以下参数可以修改

包括
  • 强度(Strength,控制阴影强弱)
  • 分辨率(影子显示的纹质量高低)
  • 偏移(影子显示错位时调整,一般不涉及)
  • Cookie(用一张透明贴图可以打出类似花纹的阴影效果,下左图)
  • 耀斑(太阳的特效,下右图)
Culling Mask表示遮罩,如果想让某些物体不受光照影响,可以改变物体Layer,并让直射光的Culling Mask不包括这个Layer即可

除了直射光,还有点光源、聚光灯和面积光。

2.2 点光源

模拟一个小灯泡向四周发出光线。

2.3 聚光灯

模拟一个点光源仅沿着一个圆锥体方向发出光线

2.4面积光

模拟一个较大的发光表面对周围环境的照明效果,通常面积光的灯光亮度衰减很快,阴影非常柔和。

3.色彩空间(Color Space)

整体环境的光亮调节可以在Edit>Project Setting>Player之中,控制Color Space为Linear或是Gamma,可看到不同效果,Linear光影细节更丰富,并且更亮

Linear的变化更平滑,Gamma的两极变化更剧烈,选用Linear更好,但不是所有设备都支持Linear,在配置较差的手机上只支持Gamma。

2017-03-21 20:41:43 MoMoLily 阅读数 1353
  • Unity 值得看的500+ 技术内容列表

    Unity3D是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

DirectionLight 模拟太阳光 属性:Color颜色 Intensity 光照强度 shadow影子类型

PointLight 模拟灯泡 没有影子  属性:color颜色 Range 光照的范围 Intensity强度  

AreaLight  模拟手电筒 属性:range光照的长度 SpotAngle 光照的半径

SpotLight 模拟聚光灯 锥形光或者车头灯 

没有图片,仅仅是个人的见解。如果想看专业版本的,下面有链接,谢谢。

http://blog.csdn.net/jbjwpzyl3611421/article/details/11050067

Unity3D 灯关

阅读数 83

没有更多推荐了,返回首页