Unity灯光效果及设置详解

2023-11-13


【unity灯光效果及设置详解】

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

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

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

预设条件

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

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

定向和非定向光

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

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

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

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

【unity灯光效果及设置详解】

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

【unity灯光效果及设置详解】

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

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

【unity灯光效果及设置详解】

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

【unity灯光效果及设置详解】

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

【unity灯光效果及设置详解】

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

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

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

光照探测器

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

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

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

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

【unity灯光效果及设置详解】

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

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

【unity灯光效果及设置详解】

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

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

【unity灯光效果及设置详解】

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

【unity灯光效果及设置详解】

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

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

【unity灯光效果及设置详解】

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

【unity灯光效果及设置详解】

点光源

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

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

【unity灯光效果及设置详解】

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

【unity灯光效果及设置详解】

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

第二个参数是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定义了当渲染器渲染场景时照明是多么重要。更重要的是,渲染将更密集。渲染模式可以设置为自动的,重要的,或不重要的。最后,剔除遮罩用于选择或排除,由点光源影响的对象组。

聚光灯

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

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

【unity灯光效果及设置详解】

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

【unity灯光效果及设置详解】

Spot Angle决定光锥度数的角度

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

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

区域灯光

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

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

【unity灯光效果及设置详解】

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

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

【unity灯光效果及设置详解】

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

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

结论

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity灯光效果及设置详解 的相关文章

随机推荐

  • acc 蓝牙_蓝牙中的三种音频编码:Apt-X、SBC、AAC,请问分别有什么区别?

    展开全部 SBC一般的音频格式 蓝牙传输在不支持AAC aptx的时候都用SBC传输 音质一般 现在80 都是这种格式 AAC 当蓝62616964757a686964616fe4b893e5b19e31333365653164牙支持AAC
  • NCBI(pubmed)里医学主题词(MeSH)完整词库获取

    NCBI pubmed 里医学主题词 MeSH 完整词库获取 转载提示 原创文章 转载前请联系我 文章目录 NCBI pubmed 里医学主题词 MeSH 完整词库获取 前言 一 MeSH词库是什么 二 获取MeSH词库的方式 1 从官网的
  • caffe代码阅读8: Data_layers的实现细节(各个数据读取层的实现细节) 2016.3.25-28

    一 Data layers hpp文件的作用简介 Data layers hpp在目前caffe的master分支中已经不能存在了 分散到各个文件中去了 而之前是存在于cafferoot include caffe中 现在已经变成了各个类的
  • 火线、零线和地线及开关接线参考

    火线 零线和地线及开关接线参考 1 火线 零线和地线 1 1 What is Live wire Live wire L 火线 相线 火线是电路中输送电的电源线 1 2 What is Neutral wire Neutral wire N
  • 2022陕西省网络搭建及应用技能大赛windows服务器搭建部分答案视频

    2022陕西省网络搭建及应用技能大赛windows服务器搭建部分答案视频资源 CSDN文库 https download csdn net download weixin 41687096 87684084
  • Gateway服务网关入门

    Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目 该项目是基于 Spring 5 0 Spring Boot 2 0 和 Project Reactor 等响应式编程和事件流技术
  • Android之 内存泄漏问题检测和解决

    一 背景 1 1 什么是内存泄漏 内存泄漏指程序在申请内存后 无法释放已申请的内存空间 导致系统无法及时回收内存并且分配给其他进程使用 1 2 内存管理 1 3 垃圾回收 上面可以看出GC回收的主要对象是java堆 也就是new出来的对象
  • Zipkin链路追踪

    Zipkin链路追踪技术分享 什么是Zipkin Zipkin 是 Twitter 的一个开源项目 它基于 Google Dapper 实现 它致力于收集服务的定时数据 以 解决微服务架构中的延迟问题 包括数据的收集 存储 查找和展现 我们
  • Python实现移动平均数

    首先 什么是移动平均数呢 来自百度百科 若依次得到测定值 时 按顺序取一定个数所做的全部算术平均值 例如 等是移动平均值 详细可以点击此处链接 Python中是如何实现呢
  • 电子科技大学计算机系统结构复习笔记(三):流水线技术

    目录 前言 重点一览 流水线定义 基本概念 流水线分类 流水线特点 流水线时空图 流水线性能分析 流水线特点 经典5段流水线RISC处理器 流水线的三种冒险 冒险分类 停顿流水线 结构冒险 数据冒险 控制冒险 流水线处理机的指令系统 流水线
  • kitti数据集解析以及在mmdection3d中的pkl文件参数解析

    kiiti数据集介绍 kitti数据集存在4个相机 其中0和1为灰度相机 2和3为彩色相机 各设备之间的安装示意图如下所示 如图所示 相机坐标系 x轴向右 y轴向下 z轴向前 雷达坐标系 x轴向前 y轴向左 z轴向上 GPS IMU坐标系
  • STM32项目设计:基于stm32f4的智能门锁(附项目视频全套教程、源码资料)

    文章目录 智能门锁 一 项目背景 二 项目功能要求 三 元件准备 四 项目设计 一 原理图设计 二 硬件设计 三 程序设计 五 上机调试 六 知识扫盲 七 项目图片展示 智能门锁 资料链接 智能门锁 rar 2022年1月1日前 单片机设计
  • 机器学习项目入门篇:一个完整的机器学习项目

    本部分 我们会作为被一家地产公司雇佣的数据科学家 完整地学习一个项目 下面是主要步骤 项目概述 获取数据 发现并可视化数据 发现规律 为机器学习算法准备数据 选择模型 进行训练 微调模型 给出解决方案 部署 监控 维护系统 一 项目概述 任
  • 05-Redis

    1 Redis为什么快 1 纯内存操作 2 单线程可以省去多线程时CPU上下文会切换的时间 3 渐进式ReHash 缓存时间戳 数组需要扩容的时候 他会维护两张hash表 比如第一张的数组长度为6 另一张的数组长度为12 在set和get的
  • Android Stuido卡顿解决方法

    修改Android studio的安装目录下bin studio vmoptions和studio64 vmoptions 两个文件的以下属性就可以在内存配置比较大的电脑上有效减少Android Stuido卡顿现象 多开也不怎么卡了 Xm
  • Gate仿真错误Illegal application state /gate/source/addSources ***

    我采用vGate8 2进行仿真 仿真程序是gate GateContrib CT vrt 出现如下错误 Illegal application state source addSources xraygun gt google搜索发现 是I
  • addr2line 定位bug

    addr2line e 文件地址 exe so a 地址 0x
  • Qt 的TCP网络通信

    Qt网络通信 Socket 通信 Qt 中提供的所有的 Socket 类都是非阻塞的 Qt 中常用的用于Socket 通信的套接字类 QTCPServer 用于TCP IP 通信 作为服务器端套接字使用 QTCPSocket 用于TCP I
  • 第四章. Pandas进阶—数据格式化

    第四章 Pandas进阶 4 2 数据格式化 1 设置小数位数 round函数 DataFrame round decimals 0 args kwargs 参数说明 decimals 用于设置保留的小数位数 args kwargs 附加关
  • Unity灯光效果及设置详解

    时间 2017 03 03 发布 Unity3D培训 来源 Unity3D教程 分享到 Unity已经成为游戏程序员中越来越受欢迎的游戏引擎 这是因为Unity直接支持多种平台 如移动 桌面和控制台环境 此外 对于低收入开发者或工作室来说