【Unity学习笔记】光照简介

在这里插入图片描述

本节主要是简单介绍一些常见的光照组件和渲染设置。


文章目录

  • 灯光类型
    • 平行光Directional Light
    • 点光源Point Light
    • 聚光灯Spot Light
    • 面积光 Area Light
  • 阴影设置
  • 全局光照明
    • 光照模式
    • 直接光照与间接光照
    • Mixed Lighting
  • 光照探针
    • Light Probe Group光照探针组
  • 反射探针


灯光类型

在Unity场景中,灯光的一般可以由以下五类属性描述:

位置,方向,颜色,强度,衰减

位置指的是光源在场景中的坐标,方向即为光源的朝向,颜色是光源的色彩,强度代表了光源的曝光度,衰减代表了光照随距离减弱的程度。

而一般来说光照的烘焙属性可以分为RealTime,Mixed,Baked三种属性,这些涉及到光照渲染,我们先从对灯光类型的介绍开始讲起。

平行光Directional Light

平行光就是场景中的太阳,平行光的光照效果是全局的,不会随位置而改变。通过改变平行光的Rotation属性可以调整平行光的方向。
平行光是不会衰减的。

点光源Point Light

在这里插入图片描述

点光源是从一个点发出的,以该点为球心向一个球形范围发散光照。由于发散的特性,因此点光源的方向属性在场景中无法调整,如果需要控制点光源的照射方向可以在代码中获取。

物体离点光源的球心越近,光照强度就越大。

聚光灯Spot Light

在这里插入图片描述
在这里插入图片描述
聚光灯的形状是以光源为顶点发散的一个锥形体,离光源越近接收光照越强,并且光照范围是物体与圆锥的切面重叠处。

面积光 Area Light

在这里插入图片描述
面积光并不是以点为光源的,它是一种二维的光源,它的亮度不仅与强度相关,也与面积大小直接相关。

面积光的发光方向是始终朝向Z轴的,这个面的形状可以设定为方形或者圆形。

由于面积光在Unity中不是RealTime(实时渲染)的,因此直接使用无法发光,需要烘焙后才能使用。

首先如果要在物体表面烘焙出光照效果的话,需要被光照的物体的Static(静态)属性是要勾选上的:
在这里插入图片描述

然后需要在Lighting选项中勾选选项:Baked Global illumination(全局光照烘焙),并生成光照。
在这里插入图片描述
等待烘焙完成,我们才能在场景中看见光源的效果:
在这里插入图片描述
面积光非常适合室内的光照。但是如果物体不是静态的话就不会接收到光照。

但是在HDRP高清渲染管线中,Area Light已经支持实时预览了,所以在制作氛围的时候,可以更加方便的判断和调整了


阴影设置

在之前场景中设置光源的时候,光照并没有产生影子。如果需要产生影子的话,我们需要勾选相应设置:

在这里插入图片描述
在光照的选项中,都有关于阴影的shadow相关选项,如果我们需要物体在光线照射下显示阴影,就需要勾选相应选项。

在这里插入图片描述
对于阴影的选项也可以细分到每一个物体上,在物体的MeshRenderer下也有光照选项:
在这里插入图片描述
在CastShadows里可以选择计算阴影的类型。而ReceiveShadows则代表了物体表面渲染可接受其他阴影。

此外,在游戏设置里,我们可以在Quality选项中看到关于阴影的一些设置,
在这里插入图片描述
在Quality中可以选择Shadowmask mode,例如Distance Shadowmask代表了Unity 渲染实时阴影的最大距离,如果物体离得摄像机太远就不渲染实时阴影。或者直接不渲染阴影。

在这里插入图片描述

再例如Shadows中的Hard and Soft Shadows,软阴影和硬阴影,软阴影的阴影更接近现实,边缘更加柔和,当然也更消耗内存。

如果shader是透明通道的话,光就无法被阻挡,自然也就不会有阴影。


全局光照明

使用全局光照明,场景效果会更加细致,真实,但是会较为消耗性能。

首先对于需要接受全局光照明的物体,需要在MeshRenderer里勾选上Contribute Global illumination
在这里插入图片描述
随后,在lighting settings设置Baked Global illumination把全局光烘焙打开,顺便勾选Ambient Occlusion环境光遮挡。然后对场景进行渲染。
在这里插入图片描述

在这里插入图片描述
可以看到全局光烘焙后边缘的阴影,正方体不同面的亮度,阴影投射到墙体上的明暗等细节都被渲染出来了。

在这里插入图片描述

全局光渲染后会为我们的场景生成光照贴图,光照贴图本质上就是一张或者多张应用在场景模型上的贴图。它们包含的是通过光照贴图烘焙方式进行预计算所获得的间接光照,阴影等信息(可以在烘焙时选择只烘焙间接光照,不烘焙阴影)。使用光照贴图可以避免在游戏运行时进行实时的光照和阴影计算,提高游戏的运行性能,特别适合用于性能较弱的计算平台比如移动平台上。

所以使用烘焙(或者说其实是对光照贴图的预计算)静态物体获取光照贴图,能够避免实时运算的性能消耗,又能带来较好的光照效果。

光照模式

光照的烘焙属性可以分为RealTime,Mixed,Baked三种属性

现在我们又可以回头讲讲上文提到的光照模式了,Baked其实就是刚才讲到的对光照进行预计算以获取光照贴图。RealTime则是将光照效果始终使用实时计算,对性能消耗更大。还有一种Mixed模式,可以对部分光照进行Baked,部分光照进行RealTime计算。

在这里插入图片描述
通过在光照选项卡下勾选Realtime或者Mixed Lighting来允许光源在全局光照下使用对应的光照模式。
在这里插入图片描述
现在我们在场景中使用RealTime模式。如图所示有两个立方体,其中左边是静态的,右边是动态的。在没有光线照射的情况下,我们发现静态立方体依然出现了光照效果,因为它是提前烘焙过的,不参与光照计算,因此即使没有光照,依然出现了光照效果。

在这里插入图片描述
切换为Baked模式,在Baked模式下,动态物体是不会被渲染的
在这里插入图片描述

最后是Mixed模式,可以看到Mixed模式下,左边的静态物体依旧是提前烘焙的效果,右侧的动态物体则是计算了实时光照。

直接光照与间接光照

在这里需要插播一下直接光照与间接光照的区别。
直接光照就是照射物体的光线,间接光照则是光线照射到物体表面之后折射到其他物体上的光照。犹记之前看到虚幻5demo时,lumen系统加上光追的炫目效果。在金属材质上的光照能够将自身材质色彩的间接光照反射到周边的物体上。

在这里插入图片描述
上图就是间接光照的一个效果演示,可以看到黄色立方体的间接光照映射到了地板上(当然这个是Baked模式的光照贴图烘焙出的效果)。这些间接光照的信息还会被加入到光照探测器(ReflectionProbe)中。

Mixed Lighting

混合光照模式中还有一些模式的细分,具体分为:Baked Indirect,Subtractive,Shadowmask

关于在MixedLighting下不同Lighing Mode对静态物体和动态物体的光照效果影响,请看下图:

拓展——内置渲染管线下静态物体和动态物体的区别

在这里插入图片描述
从性能消耗的情况下看,Shadowmask > Baked Indirect > Subtractive, 效果上也是如此,其中Distance Shadowmask 不仅比Shadowmask好,性能也更节省。


光照探针

Light Probe Group光照探针组

在这里插入图片描述

在上图中有两个立方体,左边的立方体是静态的,右边的立方体是动态的,在经过Shadowmask烘焙之后发现,静态物体受到了粉色和蓝色的反光效果。而动态物体却没有反射光照。如果想要动态物体也能接收到间接光照,可以为动态物体挂载一个光照探针组
在这里插入图片描述
使用光照探针组包裹动态物体,由代表顶点的小球记录光照信息。

在这里插入图片描述
在这里插入图片描述
可以看到这个动态的立方体在不同的反射光照下,表面也被渲染上了不同的色彩。

在这里插入图片描述

在这里插入图片描述

如果我们用两个光照探针组分开左半边和右半边,就能对左右分别进行渲染。使用更多的光照探针组来探测更丰富的光照信息。

但是在运行时,只会给出四个探针来收集光照


反射探针

在这里插入图片描述
反射探针是一种可以收集周边场景光照反射信息的探测器。
如果仔细观察不难发现,反射探针内部呈现的图样和天空盒十分相似。反射探针蕴含的思想,不仅和天空盒贴图一脉相承,而且实际上是互逆的:天空盒贴图通过Cube map纹理获取像素信息,渲染场景;而反射探针通过获取范围内场景信息,输出Cube map形式的反射贴图。

周边的MeshRenderer会自动读取反射探针并加入。

在这里插入图片描述

反射探针拥有三种模式,Baked,custom,realtime,根据模式名也好理解,baked代表提前烘焙的反射探针,custom代表自定义的反射贴图,realtime则是实时计算。
在这里插入图片描述
上图中,红圈物体是反射探针,蓝圈物体是一个小球。我们将小球的材质的光滑度和金属度都设置为1,就能实现百分百反射的效果。图中白色立方体范围代表了反射探针能影响的MeshRenerer的范围。小球在反射探针范围内映射出的样式和反射探针内的样式是一样的。说明小球读取了反射探针内的反射贴图并显示出来。
在这里插入图片描述
如果将小球置于反射探针范围之外,则小球只反射天空盒。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/218149.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工具应用:Robot Framework->对协议级接口进行测试

实验简介 本节实验主要为大家讲解如何利用Robot Framework结合常用的关键字完成对Agileone系统中的“需求提案”模块进行协议级接口的自动化测试脚本开发。 实验目的 (1) 掌握RF的Requests库的常用关键字及用法。 (2) 能够熟练…

一文速览字节最新分布式操作系统KubeWharf

一文速览字节最新分布式操作系统KubeWharf KubeWharf 是字节跳动基础架构团队在对 Kubernetes 进行了大规模应用和不断优化增强之后的技术结晶。 这是一套以 Kubernetes 为基础构建的分布式操作系统,由一组云原生组件构成,专注于提高系统的可扩展性、功…

怪兽吃糖果

欢迎来到程序小院 怪兽吃糖果 玩法:左右飞出的糖果,点击鼠标糖果即为怪兽吃掉,不同的糖果不同的分数奖励, 吃不掉的糖果会扣除一次生命,共三次生命值,点击炸弹游戏结束,快去吃糖果吧^^开始游戏…

基于ssm大学生创新创业平台项目管理子系统设计与实现论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对大学生创新创业项目信息管理混乱,出错率高,信…

Redis持久化AOF详解

基础面试题 什么是AOF AOF(Append-Only File)用于将Redis服务器收到的写操作追加到日志文件,通过该机制可以保证服务器重启后依然可以依靠日志文件恢复数据。 它的工作过程大抵分为以下几步: 收到客户端的写入命令(例如SET、DE…

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍 通过互联网交换数据时,数据要经过各种各样的网络和设备才能传到对方那里。数据在传输过程中有可能会经过某些恶意用户的设备,从而导致内容被盗取。 因此…

外汇天眼:新手做外汇交易需要注意什么?

外汇投资是一个充满机会和挑战的市场,对于新手来说,了解一些必要的知识和技巧是非常重要的。 以下是一些新手投资外汇必须注意以下几点: 1.了解外汇市场的基本知识 在进入外汇市场之前,了解一些基本知识是必要的。 这包括外汇市…

亚马逊鲲鹏系统:防关联技术守护您的账户安全

亚马逊买家账号注册是一项相当简便的操作,但当涉及到批量注册时,我们就需要更加注意防关联的问题。对于那些对此领域不够熟悉的朋友们,可以使用亚马逊鲲鹏系统,这款系统能够为我们提供一站式的解决方案。该系统不仅支持买家账号的…

从零开始学习 Python 网络爬虫:使用 Beautiful Soup 解析网页

在这篇文章中,我们将介绍如何使用 Python 编写一个简单的网络爬虫,以获取并解析网页内容。我们将使用 Beautiful Soup 库,它是一个非常强大的库,用于解析和操作 HTML 和 XML 文档。让我们开始吧! 一. 安装 Beautiful …

mysql,树形结构表中,查询所有末节点数据(叶子结点)

需求:在一个可以存放多级目录的表中,查询出某个课程目录下所有末节点(因为只有末节点可以挂载资源) 例如下图: 其中 1.11.2.12.1 都是末节点,因为他们已经没有下一级了 catalog表中重要字段有:c…

【论文解读】System 2 Attention提高大语言模型客观性和事实性

一、简要介绍 本文简要介绍了论文“System 2 Attention (is something you might need too) ”的相关工作。基于transformer的大语言模型(LLM)中的软注意很容易将上下文中的不相关信息合并到其潜在的表征中,这将对下一token的生成产生不利影响…

【docker四】使用Docker-compose一键部署Wordpress平台

目录 一、YAML 文件格式及编写注意事项(重要) 1、yaml文件使用时注意事项: 2、yaml文件的基本数据结构: 2.1、声明变量(标量。是单个的不可再分的值,类型:字符串,整数&#xff0c…

SpringIOC之DependsOn

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

scikit_feature_selection实战

在进行李宏毅HW01作业时,需进行特征选择。 选用scikit-learn 中的feature_selection. 参考: selectkbest feature selection 实战注意点: chi 2 适用于非零的参数, 如果报错,换用 f_classif model SelectKBest(…

Unity 修改游戏对象的旋转角度Rotation的方法

在Unity中要修改游戏对象中的旋转角度,即下图中的Rotation: 有三个方法: 1、 使用欧拉角(Euler Angles):欧拉角是一组表示旋转的三个角度值(绕X轴的旋转、绕Y轴的旋转和绕Z轴的旋转)。 transf…

2019年第八届数学建模国际赛小美赛A题放射性产生的热量解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 A题 放射性产生的热量 原题再现: 假设我们把一块半衰期很长的放射性物质做成一个特定的形状。在这种材料中,原子核在衰变时会以随机的方向释放质子。我们假设携带质子的能量是一个常数。质子在穿过致密物质时&#x…

重生奇迹MU翅膀合成方法

重生奇迹MU翅膀,攻击力和吸收伤害都相当强大,但是合成难度极高,下面给大家详解怎么合成! 方法/步骤 1、先到商店买加4追4物品,级别越高越好,可以买多个,数量越多,合成几率越高&…

【PWN】学习笔记(一)【二进制基础】

目录 课程教学一次简单的Hack程序的编译与链接Linux下的可执行文件格式ELF进程虚拟地址空间程序的编译与链接程序的装载与进程的执行x86&amd64汇编简述 课程教学 课程链接:https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12…

基于ssm的疫情物质管理系统论文

摘 要 进入信息时代以来,很多数据都需要配套软件协助处理,这样可以解决传统方式带来的管理困扰。比如耗时长,成本高,维护数据困难,数据易丢失等缺点。本次使用数据库工具MySQL和编程技术SSM开发的疫情物资管理系统&am…

全能数据分析软件Tableau Desktop 2019 mac功能亮点

Tableau Desktop 2019 mac是一款专业的全能数据分析工具,可以让用户将海量数据导入并记性汇总,并且支持多种数据类型,比如像是编程常用的键值对、哈希MAP、JSON类型数据等,因此用户可以将很多常用数据库文件直接导入Tableau Deskt…