Unity3D - 照明技术 (Lighting Technology)

2023-11-22 17:59

本文主要是介绍Unity3D - 照明技术 (Lighting Technology),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

广义上说,Unity中的照明可以以某种方式被视为“实时(realtime)”或“预先计算(precomputed)”,并且两种技术都可以组合使用来创建身临其境的场景照明。

实时照明(Realtime lighting)

在Unity中定向光(Directional),点光(point),聚光灯(spot)都是实时光源。它们会时刻照明整个场景。随着光源或者物体的移动,照明会立即更新。

这里写图片描述

这是实时灯光的效果。请注意,因为没有反弹光,所以阴影是完全黑色的。只有落在聚光灯锥体内的表面才会受到照明影响。

实时照明是场景中照明对象的最基本的方式,对于照亮人物或其他可移动几何是有很用的。

但是,Unity的实时灯光线不会反弹。为了使用全球照明技术创造更逼真的场景,我们需要启用Unity的预计算照明解决方案

烘焙全球照明(Baked GI Lighting)

当“烘焙(baking)”一个“光照贴图(lightmap)”时,会将光对场景中静态物体的影响写入到纹理中,然后将其覆盖在场景的物体之上,以产生光照效果。

左:一个简单的光照场景。右:Unity生成的光照贴图(lightmaps)纹理。注意:阴影和光信息是如何被捕获的。

这些“光照贴图(lightmaps)”可以包括撞击物体表面的直射光(direct light)以及从场景中的其他物体的表面反射的间接光(indirect light)。

使用烘焙照明(backed lighting),这些光照贴图(lightmaps)在游戏过程中不能改变,因此被称为“静态”的。光照贴图(lightmaps)可以叠加使用,但是不可以自己选择。

通过这种方式,将照明效果计算从游戏进行中移除,从而提升性能,从而可以去适应硬件不太强大的移动平台。

这里写图片描述

工程中实现的效果

预先计算的实时全球照明(Precomputed Realtime Gl Light)

虽然传统的静态光照贴图无法对场景内照明条件的变化作出反应,预先计算的实时全球照明为我们提供了更新复杂场景照明的技术。

通过这种方式,可以创建具有丰富的全局照明的光线环境,具有反射光,并且实时响应照明条件的变化。

这里写图片描述

一个使用预计算实时全球照明的时简单例子。

为了在可播放的帧速率中传递这些效果,预先计算会将游戏中发生的复杂光线行为的负担转移,当时间效率变得不是那么重要时再去计算这些,这可以称之为“离线”过程。

最常见的,当我们想要在我们的场景照明中创造更加现实的效果时,我们可能想要把间接(反弹)光存储在光照贴图中。幸运的是,间接(反弹)光颜色趋向于柔和,几乎没有尖锐或高频的变化。Unity的预先计算的实时全球照明解决方案利用了间接光源的这些“弥散”特征,以达到我们的优势。

更明亮的照明细节,例如清晰的阴影,通常可以用实时灯光更好地生成,而不是将其烘烤成光照贴图。假设我们不需要捕捉这些复杂的细节,我们可以大大降低我们全球照明解决方案的分辨率。

通过在预计算中进行这种简化,有效地减少了在游戏过程中更新全球照明所需的计算次数。

为了加快预先计算,Unity不会直接在光照贴图上工作,而是创建一个更分辨率的近似于静态几何的世界,这称作集群(clusters)。

左:将场景视图设置为“Albedo”,可以清楚地看到Unity预先计算的实时全球照明产生的纹理元素。
右:一旦照明已经计算出来,场景就会出现在游戏中,并将结果转换为光照贴图并应用。

通过将世界简化为关系网络,我们消除了对游戏性能(performance-critical)至关重要的昂贵的光线跟踪需求。

好处和成本

虽然可以同时使用烘焙全球照明(Baked Gl lighting)和预先计算的实时全球照明(Precomputed Realtime Gl),但是请注意,同时渲染两个系统的性能成本恰好是它们的总和。我们不仅必须在视频存储中存储两套光照贴图,还可以在着色器中支付解码的处理成本。

你可能希望选择一种照明方法,这取决于你的项目的性质和你预期硬件的性能。例如,在视频存储和处理能力更受限制的移动设备上,可能使用烘焙全球照明(Backed Gl lighting)方法更具性能。在具有显卡的PC桑,可以使用预计算实时全球照明,或者同时使用这两个系统。

必须根据项目的性质和所需的目标平台来评估采用哪种照明方法。

启用烘焙全球照明(Baked Gl)或预计算实时全球照明(Precomputed Realtime Gl)

可以在Unity的Lighting面板(Windows > Lighting > Setting > Lighting >Scene)中启用Baked Gl和Precomputed Realtime Gl。

这里写图片描述

使用哪种技术也可以通过灯光对象来控制(Light > Inspector>Light>Baking)。

在场景中同时使用Baked Gl和Precomputed Realtime Gl可能会对性能造成不利影响。一个好的做法是确保一次只能使用一个系统,禁用另外一个系统。

这个可以通过勾选Unity的Lighting面板中Precomputed Realtime GI或Baked GI右侧的框来实现。只有选中的选项才会出现在场景中,并且每个灯的任何设置将会被覆盖。

灯的设置

灯的默认的烘焙模式是’Realtime’。这意味着所选择的灯会为您的场景提供直射光,并由Unity的Precomputed Realtime Gl提供间接的光。

如果烘焙模式设置为“Baked”,则这个灯将仅由Unity的Baked Gl提供照明光。

当选择’Mixed’模式时,标记为静态的GameObjects仍将包含这些光在其Baked Gl光照贴图中。’Mixed’灯还将为场景中的非静态GameObjects提供实时的直接照明的光线。

当在静态环境中使用光照贴图,而且仍然希望角色使用这些相同的光线将实时阴影投射到光照贴图的几何体上的情况下非常有用。

这篇关于Unity3D - 照明技术 (Lighting Technology)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/411912

相关文章

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

金融业开源技术 术语

金融业开源技术  术语 1  范围 本文件界定了金融业开源技术的常用术语。 本文件适用于金融业中涉及开源技术的相关标准及规范性文件制定和信息沟通等活动。

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出

AI(文生语音)-TTS 技术线路探索学习:从拼接式参数化方法到Tacotron端到端输出 在数字化时代,文本到语音(Text-to-Speech, TTS)技术已成为人机交互的关键桥梁,无论是为视障人士提供辅助阅读,还是为智能助手注入声音的灵魂,TTS 技术都扮演着至关重要的角色。从最初的拼接式方法到参数化技术,再到现今的深度学习解决方案,TTS 技术经历了一段长足的进步。这篇文章将带您穿越时

系统架构设计师: 信息安全技术

简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo : 文章目录 系统架构设计师: 信息安全技术前言信息安全的基本要素:信息安全的范围:安全措施的目标:访问控制技术要素:访问控制包括:等保

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

Unity3D自带Mouse Look鼠标视角代码解析。

Unity3D自带Mouse Look鼠标视角代码解析。 代码块 代码块语法遵循标准markdown代码,例如: using UnityEngine;using System.Collections;/// MouseLook rotates the transform based on the mouse delta./// Minimum and Maximum values can

Unity3D 运动之Move函数和translate

CharacterController.Move 移动 function Move (motion : Vector3) : CollisionFlags Description描述 A more complex move function taking absolute movement deltas. 一个更加复杂的运动函数,每次都绝对运动。 Attempts to

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在

java线程深度解析(六)——线程池技术

http://blog.csdn.net/Daybreak1209/article/details/51382604 一种最为简单的线程创建和回收的方法: [html]  view plain copy new Thread(new Runnable(){                @Override               public voi

java线程深度解析(二)——线程互斥技术与线程间通信

http://blog.csdn.net/daybreak1209/article/details/51307679      在java多线程——线程同步问题中,对于多线程下程序启动时出现的线程安全问题的背景和初步解决方案已经有了详细的介绍。本文将再度深入解析对线程代码块和方法的同步控制和多线程间通信的实例。 一、再现多线程下安全问题 先看开启两条线程,分别按序打印字符串的