Unity3D】【unity灯光】unity怎么调灯光亮度

2020-12-24 13:58发布

14条回答
Ross
2楼 · 2020-12-24 17:51

在脚本里面可以先得到灯光Light组件,然后调节组件中的Intensity属性即可.

一条哈士奇
3楼 · 2020-12-24 15:56

灯光将给你游戏带来个性和味道。你用灯光来照亮场景和对象 以至创造了完美视觉的气氛。灯光可以用来模拟太阳,燃烧的火柴,手电筒,枪火光,或爆炸,等等等等,在此就不一一列举。

kitidog2016
4楼 · 2020-12-25 09:09

Unity已经成为游戏程序员中越来越受欢迎的游戏引擎。这是因为Unity直接支持多种平台,如移动、桌面和控制台环境。此外,对于低收入开发者或工作室来说,它是免费使用的。

Unity支持多种技术和组件。一些关键部件是灯光和照明技术。在Unity中,你可以通过模拟复杂的灯光行为或者通过简单的灯光模型来照亮场景。

本教程将重点讲解如何在Unity 5使用照明工程,照明类型和属性,以及如何使用它们来创建丰富的照明效果。

预设条件

首先,确保你有最新版本的Unity。在本教程中,我们使用的版本5.5.0f3。确保您使用的是最新的Unity版本,否则您可能会在教程中使用物理连接后出现问题。

下一步,下载LightingIn-Starter文件,解压并在Unity中打开项目。Demo场景应该能够自动打开,如果不行,可以从Assets文件夹中打开。

定向和非定向光

在现实世界中,你有两种类型的照明效果:直接和间接照明。直接照明,顾名思义,是直接从光源照射的灯光(灯,太阳或其他)。另一方面,间接照明是来自另一物体的光。

在场景中的Action中你就可以看到直接照明,正如你能注意到的一样,场景中有一个直接光源叫做Directional Light

直接光源主要用于太阳以及月亮等户外光源,他们影响场景中所有物体的表面。他们也是开销最小的图形处理器

你可以在检视面板中选择Directional Light并查看其属性。你会注意到一些有趣的属性,比如类型,颜色以及敏感度等等。你可以改变颜色和旋转属性并实时查看结果。通过改变这些值,你可以直接改变你的定向光。

这时候,你的3D场景中没有任何的非定向光。你可以通过将球体移动至贴近红色或者绿色的墙来检查,发现球体颜色没有改变,说明场景中没有非定向光。

使用非定向光的方法之一就是使用静态对象。请记住,静态对象的使用可以提高游戏渲染的性能,但也会降低游戏质量,所以你必须在游戏中找到最佳的平衡。

在场景中添加一个方块,将它放置到球体的旁边,并命名为Cube

选中这个Cube,并在细节面板中启用静态属性

当启用静态属性时,Unity将自动为该对象创建一个光照贴图,并应用正确的光照模型。现在你可以将相机移动到Cube并发现非定向光开始起作用了。绿色或者是红色的光现在蔓延到了立方体上。

如果你改变定向光的方向,你会发现Unity将会自动更新光照贴图。

被施加到立方体上的间接照明不适用于球体,因为球体不是静态的。你可以通过使球体静态(检视>静态)来解决这个问题。

这个时候,你可以添加和配置定向以及非定向光到静态对象。然而,3D大多都是由动态对象组成。因此,我们如何将这些效果应用到那些动态对象呢?我们接下来将具体说明

光照探测器

当你的场景中包含非静态的物体,你需要使用特定的照明技术,正确地照亮他们,使他们看起来不像从场景中断开

通过使用光探针及其位置,可以在场景中采样点。每个光探针可以采样特定区域,然后计算该特定区域的照明。这些计算足够快,可用于游戏期间。光探针的使用避免了移动物体的照明和场景中的静态光映射对象之间的连接断开

球体是一个动态物体,因此,与它看起来的相反,它没有被正确地照亮。如果你把定向灯关闭,你会注意到,唯一影响球的照明是环境光。要正确地照亮球体,你需要使用光探测器

要添加光探针,你需要在Component > Rendering > Light Probe Group下打开。这样会在场景中创建一个光探针组

下一步是将探头放在正确的位置。你现在要将他们放在盒子的每个角落

最好的办法是改变一个视图(单击在场景右上角的立方体)。然后,选择每个光探测节点并将其拖到每个框角

重复上述步骤,直到你在所有的角落中安装了光探头

有些场景需要额外的探针正确地照亮物体。为了添加更多的探针,您可以选择一个探头,然后在检视面板中,单击重复选定按钮。

复制之后,您需要将新节点放置在正确的位置(复制的一个节点将与所选的位置处于同一位置)

如果你仔细查看界面的督察,你会注意到,您还可以添加自定义探针(添加探针),删除探针(删除选定),或选择所有的探针从组(选择所有)。

在运动中观察光探头,选择球体,并为它添加一个刚体(添加组件>刚体)。然后,给对撞机分配一个材质。您可以使用橡胶材料。

现在,把球体放在盒子的顶部并按下播放键,现在你可以看到球体的适当光照了。要观察差异,禁用光照探头,并且再次播放

点光源

点光源是游戏中最常见的光源。它们通常用于爆炸和灯泡。因为它们在各个方向发光,所以它们在图形处理器上有一个平均成本。然而,计算阴影时使用点光源更昂贵。

通过选择对象>光>点光源加一点光源。然后,将点光源放在靠近顶部的盒子内。

选择点光源,并查看检视面板中的参数

第一个参数是类型。这里可以设置要使用的光类型。您可以选择点,方向,点,或区域。每个提供了特定的光效果。您可以选择任何选项,并看到结果的实时。然而,对于本教程,您将使用点选项。这将创建一个灯泡效果(光照所有方向相同)。

第二个参数是Baking。您可以将其设置为实时、烘焙或混合。将值作为默认值。范围参数定义光从点光源的中心发射多远。颜色参数定义发出的光的颜色

Intensity定义了光的亮度,并且Bounce Intensity定义了间接光强度倍数。 Shadow Type定义了阴影属性和阴影类型。你可以设置它 No Shadows, Hard Shadows,或者是Soft Shadows。记住,电光源的阴影对于引擎来说开销是最大的,所以要小心选择此选项。

如果选择Hard Shadows 或Soft Shadows,你会看到球体和点光源产生的阴影。当你改变强度值时,阴影也会减轻或加重。该分辨率允许您定义阴影的详细级别。最后, Bias 和Normal Bias让您在配置偏移时被使用来比较像素位置在光空间与阴影贴图。

cookie是一个可选的参数,它代表一个纹理的alpha通道,用来确定不同位置的光的亮度。因为这是一个点光源,必须使用一个立方体贴图纹理

Draw Halo选项只在光源周围呈现光晕。耀斑定义了一个在光的位置呈现的耀斑的引用。当调试3D场景和可能的瓶颈时,耀斑和Draw Halo可能是有用的

Render Mode定义了当渲染器渲染场景时照明是多么重要。更重要的是,渲染将更密集。渲染模式可以设置为自动的,重要的,或不重要的。最后,剔除遮罩用于选择或排除,由点光源影响的对象组。

聚光灯

点光源从特定区域的光源发射光。它们只照亮一个特定区域内的物体,一个由三维圆锥体分隔的区域。基本上,他们的工作就像汽车的前灯。你可以想象,他们是完美的手电筒,汽车大灯,或灯柱。他们在图形处理器中也是开销很大的。

现在让我们把点光变成聚光灯。选择您创建较早的点光源并将其类型更改为聚光灯。下一步,旋转的光线,以便它可以照亮地板的盒子。重命名为聚光灯。

正如你可能已经注意到的,在检视面板中,聚光灯的参数和点光源的参数是很相似的。但是,有一个新的参数叫做Spot Angle

Spot Angle决定光锥度数的角度

无论直接和间接照明,聚光灯工作完全像点光源。你有同样的局限性和优势。因此,在游戏中设置灯光平衡时必须小心。

注意,你可以总是使用阴影和烘烤以平衡外观和性能

区域灯光

区域光是在一个平面的矩形区域的所有方向上发出的光。这个矩形是定义在宽度和高度属性。区域光仅在光贴图烘焙时可用,这意味着它们在运行时不会对对象产生影响。

选择点光源并将其类型更改为区域,并将其名称改为区域光。下一步,把灯放在盒子里,然后在检查员里面改变宽度和高度,以盖住盒子里面的整个区域。

通过查看区域灯光参数,你会发现大多数的参数都类似于以前的,例如,Draw Halo, Flare, Render Mode, 以及Culling Mask.

真正的新参数是宽度和高度。两者都用来设置矩形光区的大小。

如果你按播放,你会看到该地区的光是投在其范围内的所有对象的光。矩形的大小由宽度和高度属性决定。光被投射的一侧是平面的法线,与光的正z方向相同。光从矩形的整个表面发射出去。正因为如此,阴影和阴影从受影响的对象往往是比点光源或定向光源要柔和得多。

区域光的照明计算相当处理器密集型,所以它们在运行时不可用,只能被烘烤成光贴图。

结论

这结束教程关于照明Unity 5。你了解了几种照明效果和配置。有了这方面的知识,您现在可以应用几个照明效果到您的游戏或应用程序。


像风没有归宿
5楼 · 2020-12-25 09:20
  1. 直接模拟光线从被光源发出到最终被物体完全吸收的正向过程,也就是常说的GI(Global Illumination);

  2. 不直接模拟光线,而是反向搜集物体表面特定点的受光照强度来模拟现实照明效果,也就是常说的FG(Final Gathering);

  3. 完全不考虑光线的行为,单纯基于“物体上与其他物体越接近的区域,受到反射光线的照明越弱”这一现象来模拟模拟现实照明(的一部分)效果,也就是常说的AO(Ambient Occlusion);

  4. 将场景光照结果完全烘焙到模型贴图上,从而完完全全的假冒现实光照效果,也就是我们所说的Lightmap。


Kindery
6楼 · 2020-12-25 09:27

预览的时候,把shader改为不接受灯光的shader,会亮一些,这个直接调亮度是不行的,因为是默认灯光,不可调

Unity中提供了四种光源:

Directional light:方向光,类似太阳的日照效果。直线光可以照射无限空间范围。

Point light:点光源,类似蜡烛。可以向四面八方照射,通常用于爆炸,霓虹灯。

Spotlight:聚光灯,类似手电筒。在一个圆锥体范围内发射光线

Area Light:区域光,无法用作实时光照,一般用于光照贴图烘培。

Type:可以选择以上介绍的四种光源类型;

Range:设置光源范围的大小,从光源对象的中心发射的距离。只有Point和Spotlight有该参数;

Color:光源的颜色;

Instensity:光源的强度,聚光灯以及点光源默认为1,方向光默认值是0.5;

Cookie:用于为光源设置拥有alpha通道的纹理,时光线在不同地方有不同的亮度,如果是聚光灯(Spotlight)和方向光(DirectionalLight),可以指定一个2D纹理。如果是一个点光源(Point light),必须指定一个 Cubemap(立方体纹理);

Cookie Size:用于控制缩放Cookie投影,只有方向光(DirectionalLight)有该参数;

Shadow Type:阴影类型;

No Shadows :关闭阴影;

Hard Shadows :硬阴影;

Soft Shadows :软阴影。

与现实世界对比,硬阴影就好比太阳光特别的强烈,照出来的影子有棱有角;软阴影就好比阴天的时候,但是有有那么一丝丝阳光,影子相比没那么明显,需要注意的是软阴影会消耗系统更多的资源。

注意:默认设置下,只有Directional light光源才可以开启阴影,Pointlight、Spotlight光源开启阴影的话会弹出提示(Only directionallight have shadows in forward redering),意思就是说只有Directionallight光源在Forward模式下才可以开启阴影


蜗牛
8楼 · 2020-12-25 13:06

Unity场景中找到灯光,找到Intensity属性,调节数值即可,也可以在脚本中获取该属性,设置数值

image.png

Mantra
9楼 · 2020-12-25 15:29

选择灯光,之后再属性面板中调整Intensity即可。

QQ截图20201225152855.png

相关问题推荐

  • 回答 17

    还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学  学学js flash as等等  有个梯度就好多了如果要用好unity  不会编程那是不行的  学习的过程中都有个头疼的过程  记住  头越痛  代表你要接受的东西越多  坚持 你的大脑在和知识兼容中:D...

  • unity如何自学Unity3D 2022-01-06 15:24
    回答 18

    可以先思考学习的目的,是什么因素在驱动你。是完成一款作品?进入某个行业?还是探究某类问题?否则和技术相关的知识浩如烟海,很容易迷失在细枝末节上。而要找到动力源头。个人的经验,就是关注一些和自己同方向,同类型的创作者。他们输出的作品会激励你,...

  • 回答 23

    可以让模型师直接作出这样的形状,如果用纯Unity制作,就要用基本游戏对象拼接了,包括楼梯,城堡,都可以拼接出来。正常情况不会这样做,因为不够精美,都是建模师来实现,毕竟Unity不属于专业的建模软件,侧重于实现功能。...

  • 回答 2

    Shader Unlit/Test{Properties{_MainTex(MainTex,2D)=white{}_MainColor(MainColor,COLOR)=(1,1,1,1)_AddTex(AddTex,2D)=white{}_Maxset(Max,Range(0.1,1.0))=0.1}SubShader{Tags{RenderType=Transparent Queue=Tran...

  • 回答 4

    文章主要为大家详细介绍了Unity Shader实现水波纹效果,文中示例代码介绍的非常详细具体代码实现如下:Shader Custom/shuibowen{ Properties{ _MainTex(Base (RGB),2D)=white{} _distanceFactor(Distancefactor,float)=1 _timeFactor(time factor,float)=...

  • 回答 7

    策划的最基本的原则就是:改进缺点,做别人没有做到的。无论游戏策划还是其它策划都是一样!    游戏策划的第二个原则:放飞思想。也许你认为我是说策划们应该充满想象力,能想一些匪夷所思的东西!对不起。不是这意思!一个合格的策划不是为了发泄自己的...

  • 回答 7
    已采纳

    可以多玩一些其它的游戏,看一些科幻电影等,寻找灵感。

  • 回答 3
    已采纳

    游戏架构与设计不纯粹是一门科学,它不需要提出假设或探究真理,也不被逻辑或正规方法的严格标准所束缚。游戏的目的就是通过玩来获得娱乐,因此游戏设计即需要艺术家一样的创造力,也需要工程师一样的精心规划。游戏设计是一门手艺,就像好莱坞的电影摄像或服...

  • 回答 5

    void Update(){          transform.rotation = Quaternion.Euler(Vector3.zero);}可以试一下,保证物体x轴和z轴为0就可以使其一直垂直。

  • 回答 3

    界面左右移动、上下移动。。本质都是:手指滑动。。。可以参考这些:https://www.cnblogs.com/coldcode/p/5362537.htmlhttps://blog.csdn.net/totosj/article/details/80112852https://blog.csdn.net/zcc858079762/article/details/85253120...

  • 回答 6

    首先新建一个C#脚本,命名为MyFollow,然后把以下代码粘贴进去,保存:AخA 1using UnityEngine;2using System.Collections;3public class MyFollow : MonoBehaviour4{5    public float distanceAway = 5;          // distance...

  • 回答 5

    安装高通的Vuforia插件即可。

  • 回答 5

    不可以,只能一个工程打一个包。

  • 回答 2

    Edit->Project Settings->Graphics 找到Shader Stripping 中fog mode设置为custom(原来是Automatic),然后选中你想要的模式,最后重新打包就ok

  • 回答 2

    用到的插件:System.Drawing.dllSystem.Windows.Forms.dllSystem.Deployment.dll(运用基于.Net4.x的dll打包时,需要用到该dll,否则会报错)代码如下:using System;using System.Runtime.InteropServices;using UnityEngine;using UnityEngine.UI; p......

  • 回答 6

    如下图,设置为none,然后删掉滑动条就可以了。

没有解决我的问题,去提问