Unity Lighting -- 为场景烘焙lightmap

news2024/10/3 4:39:50

烘焙光照是什么?

        Unity中有两种不同的光照方式:实时光照和烘焙光照。

实时光照

        Unity会在运行时实时计算光照。实时光源每一帧都会进行计算,这意味着它们对于场景中移动的角色和物体的响应性非常好,但它的开销也很大。

烘焙光照

        Unity会在运行前预先计算出烘焙光照。在运行时这些光照效果无法进行修改,对于动态的游戏物体来说,烘焙灯光不会有任何响应。

        计算烘焙光照的过程涉及为整个场景生成UV坐标,这个坐标和材质里的纹理映射的UV坐标是类似的。烘焙后的纹理映射被称为光照贴图(lightmap),创建lightmap的过程被称为光照贴图映射(lightmapping)或烘焙(baking)。

        烘焙光照更加高效,也能用于为用户提供更多更加真实和体验感的光照效果。

改变光照模式

        在Unity中,Light Mode设置能够让我们选择我们想要使用的光照方法:

  •         烘焙的(baked)
  •         实时的(real-time)
  •         混合的(Mixed)

        如果要改变光照模式:

        1. 选择场景中的某个光源游戏物体(比如Directional Light或Spot Light),查看其Inspector里LIght组件的Mode属性:

         2. 将Mode修改为Baked,即可修改光照模式

        3. 如果想要更快速地配置光源的光照模式,可以在Windows->Rendering->Light Explorer窗口中进行快速配置(避免从Hierarchy或场景中去一个个找):

将场景中的光源设置为Static

        如果在运行时一个游戏物体不会发生移动,那么它被认为是静态的(static)。对于此类物体我们可以标记这些游戏物体为static。当游戏物体标记为static时,Unity会预先计算一些相关数据,包括用于全局光照的光照贴图数据。

        在烘焙光照贴图前,我们需要将场景中的光源设置为static。下面的例子以两个路灯模型为例。设置为static的路灯,光源的模式选择为Baked,另外一个非static的则是real-time。

 

 

烘焙光照贴图

        我们可以为渐进光照贴图器(Progressive Lightmapper)选择两种后端。Unity默认使用渐进式CPU光照贴图器(Progressive CPU Lightmapper),这种后端计算上使用的是计算机的CPU和系统RAM。另一种光照贴图器,渐进式GPU光照贴图器(Progressive GPU Lightmapper),则使用计算的GPU和VRAM来计算光照贴图。

        使用GPU方式的光照贴图能够极大地提升光照贴图计算的速度,但前提是计算机的配置能够满足相关的硬件和软件要求,这个要求在这里查看:

Unity - Manual: The Progressive GPU Lightmapper (preview)https://docs.unity3d.com/Manual/GPUProgressiveLightmapper.html

烘焙光照贴图

        1. 在Lighting窗口中(Window -> Rendering -> Lighting),选择Scene标签页,然后点击New Lighting Settings

        2. 将这个光照配置文件命名为BakedLighting 

         3. 将Lighting Mode设置为Baked Indirect。如果你的机器满足GPU光照贴图器的要求,可以将Lightmapper设置为Progressive GPU(Preview)以便加快烘焙速度

        4. 在Lighting窗口,选择Generate Lighting来烘焙光照贴图。我们会在Unity Editor的右下角看到烘焙的进度。

        5. 烘焙过程中注意观察场景中的两个路灯,选择了static和没有选择static的路灯模型有什么区别

        6. 烘焙完成后,移动一下static的路灯模型,可以看到其光照和阴影没有随着路灯的移动而改变。

添加一个面光源(Area Light)

        之前的笔记中提到过,Area Light仅能用烘焙方式作用。我们在场景中添加一个带面光源的模型来看看。

        可以看到,这个模型添加到场景中后,并没有什么光照效果出来。

        

 

        我们再次生成一下烘焙光照贴图,现在就能看到它的效果了。

        如果我们要修改面光源的参数,修改之后,也必须再次烘焙才能看到效果。

设置Mixed光照模式

        我们还可以将Light Mode设置为Mixed来创建混合模式的光源,这种方式结合了动态(real-time)阴影以及烘焙的光照。相比于纯烘焙光照,它会增加存储和运行时开销,但也能改善阴影的质量。对于一个相对较小的轻量级项目来说,通常可以使用Mixed方式,虽然会消耗一定性能但很值得。

        要切换光源为Mixed模式,和前面设置Light mode的操作是一样的,这里不再赘述。

         选择完Mixed模式后,需要在Lighting窗口中点击Generate Lighting来更新烘焙光照贴图。

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

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

相关文章

DJ1-3 操作系统引论

目录 操作系统的结构设计 1. 无结构操作系统 2. 模块化 OS 结构 3. 分层式 OS 结构 4. 微内核 OS 结构 操作系统的结构设计 操作系统是一个大型系统软件,其结构已经历了四代的变革: 第一代 OS 是无结构第二代 OS 采用模块式结构第三代是层次式结构…

韩国绿芯1~16通道触摸芯片型号推荐

随着技术的发展,触摸感应技术正日益受到更多关注和应用,目前实现触摸感应的方式主要有两种,一种是电阻式,另一种是电容式。电容式触摸具有感应灵敏、功耗低、寿命长等特点,因此逐步取代电阻式触摸,成为当前…

炫龙游戏本Win10系统总是蓝屏崩溃怎么办?

炫龙游戏本Win10系统总是蓝屏崩溃怎么办?有用户使用的炫龙游戏本最近总是在运行的过程中出现自动蓝屏的情况,有的时候自己还在操作电脑,而屏幕却蓝屏了,导致自己的工作被中断了。那么这个情况要怎么去进行修复呢?来看看…

关于centos虚拟机设置固定ip、设置后无法上网、宿主机无法ping通的解决方案

一.centos设置固定ip 1.虚拟机设置 编辑→虚拟网络编辑器,选择NAT模式。 2.NAT设置,设置网关(前面三个需要与你设置的静态虚拟机ip一致(我的是192.168.2.40))。 3.虚拟机设置为NAT模式 4.设置虚拟…

数据结构2——线性表1:基本概念

1、线性表的概念 线性表是具有相同特性的数据元素的一个有限序列。就像用细线串珠子,一个接着一个串起来。 2、线性表的逻辑特征 ① 在非空的线性表中有且只有一个开始结点a1,他没有直接前驱,而仅有一个直接后继a2,相当于a1是…

关于JS中this对象指向问题总结

一、前言 关于JS中this对象指向问题,相信做过项目的小伙伴多多少少都会遇到过,明明感觉代码写的没问题,可是运行的时候,就会报错,比如报错 xxx is not a function。 我最近也遇到了,百度学习了不少前辈对于…

Codeforces Round 703 (Div. 2)(A~D)

A. Shifting Stacks给出一个数组,每次可以将一个位置-1,右侧相邻位置1,判断是否可以经过若干次操作后使得数列严格递增。思路:对于每个位置,前缀和必须都大于该位置应该有的最少数字,即第一个位置最少是0&a…

Vue 2 组件发布到 npm

本教程使用官网教程中指示的 Rollup 作为打包工具,并尽量遵循官网教程的指引进行实践;组件项目的初始化创建方式亦是使用官网提倡的 Vue CLI 工具简便生成。另外组件打包发布到 npm 还可以使用 webpack 作为打包工具,但不在本文讨论范围。 前…

YOLOv5s网络模型讲解(一看就会)

文章目录前言1、YOLOv5s-6.0组成2、YOLOv5s网络介绍2.1、参数解析2.2、YOLOv5s.yaml2.3、YOLOv5s网络结构图3、附件3.1、yolov5s.yaml 解析表3.2、 yolov5l.yaml 解析表总结前言 最近在重构YOLOv5代码,本章主要介绍YOLOv5s的网络结构 1、YOLOv5s-6.0组成 我们熟知YO…

openFoam中cellZone的使用及编程

简介 通常在流体计算中需要对某个特定区域进行处理(比如添加源项,可参考这篇文章OpenFOAM编程:VOF法与多孔介质模型相结合),这是就需要用到cellZone. 通常有两种产生cellZone的方式: (1)从其他划分网格的…

一文带你看透通用文字识别 OCR

什么是 OCR? OCR技术指的是 Optical Character Recognition 或光学文字识别技术,即从图像中识别文字,并将其转换为电子文本或机器可读格式。它可以被广泛应用于图像处理,文字处理,自然语言处理,计算机视觉…

Kubernetes学习(五)持久化存储

Volume 卷 容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用带来了一些问题。首先,当容器崩溃时,kubectl将重新启动容器,容器中的文件将会丢失--应为容器会以干净的状态重建。其次,当在一个Pod中运行多个容…

【算法题目】【Python】彻底刷遍DFS/BFS的算法题目

文章目录参考资料树的前序、中序、后序遍历树的层次遍历回溯与剪枝组合组合总和 III电话号码的字母组合组合总和组合总和 II参考资料 参考这里面的一些讲解: https://github.com/youngyangyang04/leetcode-master。 树的前序、中序、后序遍历 看完 树的种类 之后…

网络 | UDP与TCP协议讲解 | TCP可靠性是怎样实现的?

文章目录前置知识查看网络状态的工具查看进程idUDP协议协议格式UDP只有接收缓冲区基于UDP的应用层协议TCP协议流的理解协议格式确认应答机制缓冲区序号的作用流量控制超时重传机制6位标志位紧急数据的处理三次握手listen的第二个参数全连接和半连接队列都维护了什么信息&#x…

史上最全若依管理系统修改页面标题和logo

整理若依框架去除 若依标题、logo及其他内容。一:网页上的logo进入ruoyi-ui --> public --> favicon.ico,把这个图片换成你自己的logo二:页面中的logo进入ruoyi-ui --> src --> assets --> logo --> logo.png,把…

Git版本控制工具(详解)

Git版本控制工具 Git常见命令速查表 集中式版本控制 cvs和svn都是属于集中式版本控制系统 他们的主要特点是单一的集中管理服务器 保存所有文件的修订版本协同开发人员通过客户端连接到这台服务器 取出最新的文件或者提交更新 优点每个人都可以在一定程度上看到项目中的其他…

动态规划——子序列、编辑距离、回文子串

目录 子序列问题 300.最长递增子序列 674.最长连续递增序列 718.最长重复子数组 1143.最长公共子序列 1035.不相交的线 53.最大子序和 编辑距离 392.判断子序列 115.不同的子序列 583.两个字符串的删除操作 72.编辑距离 回文子串 647.回文子串 516.最长回文子序列…

使用sapply函数改写for循环并绘制迟滞温度与污染物效应图

For循环应该是我们在R语言使用得最普遍的循环了,优势就是简单、易上手,缺点就是慢,特别对于跑数据量比较大的数据。Apply家族函数使用C来编写,运行得非常快,非常适合代替for循环。今天介绍一下sapply函数改写for循环并…

abp.net 5.0 部署IIS10

今天遇到了abp.net 5.0部署iis10被卡住的问题,网上找了一些资料,都不是我要的,最后我总结一下我用的是 5.0的版本,所以我需要给服务器安装 iis5.0的相关运行环境 1:https://dotnet.microsoft.com/zh-cn/download/dotne…

html--学习

javascrapt交互&#xff0c;网页控制JavaScript&#xff1a;改变 HTML 图像本例会动态地改变 HTML <image> 的来源&#xff08;src&#xff09;&#xff1a;点亮灯泡<script>function changeImage() {elementdocument.getElementById(myimage) #内存变量&#xff0…