当前位置: 首页 > news >正文

Unity填坑-灯光烘焙相关

Unity填坑-灯光烘焙相关

文章目录

  • Unity填坑-灯光烘焙相关
  • 前言
  • 一、Light的模式
  • 二、光的效果分类
  • 三、各种Light模式与烘焙的说明
    • 1.Realtime,实时光
    • 2.baked,烘焙光
    • 3.mixed,混合
  • 四、实时全局光
  • 五、其他说明
    • 1.动态物体的全局光照效果
    • 2.手机使用烘焙注意的点
    • 3.其他设置


前言

项目组对灯光烘焙那块参数以及工作流程有一定疑问,单独抽时间把整个机制做了一次单独的调研,错漏之处恳请指点。


一、Light的模式

Unity中的Light模式分为三种:
在这里插入图片描述
实时,混合,烘焙。
这三种要结合在Lighting设置一起工作来看。

二、光的效果分类

一种是直接光照,即光直接照到物体上,反射到相机里。
二种是全局光,即光照到物体上,再反射到其他物体上,如此再反射到相机里的光。
三种是环境光,即没有任何灯的情况下,场景还会被天空盒、环境设置的光等照亮的光。

三、各种Light模式与烘焙的说明

1.Realtime,实时光

在运行时,直接对场景物体进行光照,产生高光、漫反射、阴影等实时效果。这时Light的变化,会带来场景物体接受灯光的实时变化。
备注:其中阴影通过实时的阴影深度图实现。

这个灯和Lighting设置有关系的是设置RealtimeLighting开启(即实时全局光),后面单独说这个设置的流程。

2.baked,烘焙光

提前利用这个灯的信息在场景里面找到设置Static(特别是ContributeGI)的物体,进行整个场景烘焙,得到场景的烘焙信息数据:光照贴图、光照方向、光照信息、ShadowMask贴图、光照探针的信息。其中光照贴图,会因为Lighting设置不同,生成不同的光照贴图(比如:用于采样间接光的间接光照贴图,用于实时计算间接光的物体位置信息贴图,用于阴影采样计算的ShadowMask贴图)。
需要注意的是,当场景中没有进行烘焙时(即没有烘焙数据时),baked光等同于Realtime光。
如果已经烘焙出了场景的各种贴图,那么baked光就无用了,在运行时无论是开启还是关闭都没有任何效果。
运行时,对应标记的物体,会直接去采样这些贴图信息(在shader中会有不同关键字去开启对应的流程)然后进行渲染显示各种效果。

3.mixed,混合

字面意思就是又有烘焙光的功能,又有实时光的功能。对于动态物体,它就是提供Realtime光的功能,提供实时照明效果。

对于标记了静态(特别是ContributeGI)的物体,要根据Lighting设置中的,MixedLighting设置会有不同效果。
如果LightMode是:BakedIndirct,烘焙只会包含间接光照数据,那么这些静态物体在渲染时,会去间接光照贴图中采样间接光照,从而显示出逼真的效果。

在这里插入图片描述

此时,如果灯光Light的RealtIme部分会产生实时阴影、高光漫反射等效果,即光源变化时,阴影等效果都会跟随变化,而间接光(比如上图中的泛红色部分不会变化)。

LightMode:subtractive,直接光与间接光效果都会进入烘焙贴图中,从而运行时这些静态直接采样这些贴图进行渲染,这个mix灯产生的直直接光与间接光效果(与baked灯效果一样,但是这个mix灯还可以对其他动态物体进行直接光照效果)都进入贴图。此时移动这个灯,不会产生任何变化。

LightMode:Shadowmask,比BakedIndirct多一个shadowMask贴图。即阴影也会进入到贴图信息中。此时需要关注Project中Quality设置的阴影模式,如果是shadowMask,那么这个静态物体产生的阴影会从贴图中读取,意味着mix的灯变化的话,阴影不会有任何变化。
在这里插入图片描述

如果Quality设置为Distance ShadowMask,那么在近距离内,阴影为mix灯产生的实时阴影,远距离时,会变为采样shadowMask中的阴影信息产生阴影。这个距离指的是摄像机与阴影的距离,在URP中的MaxDistance设置。
在这里插入图片描述

四、实时全局光

如果开启了实时全局光,那么烘焙会烘焙出静态物体的位置信息贴图数据,且关联的是场景中LightMode为Realtime的光。烘焙好之后,当这些灯(realtime)发生变化时,全局光也会相应的变化。可以理解为实时渲染出全局光照贴图,供给这些静态物体进行渲染,产生更加逼真的效果。

五、其他说明

1.动态物体的全局光照效果

可以看到以上并没有实时的全局光照给动态物体的,所以需要额外的手段进行烘焙,即光照探针贴图,他可以收集场景中的光照信息,并且投射给接受全局光照为光照探针的场景物体。此时物体移动(只勾选了全局光照的信息)可以接受来自光照探针的全局光照信息。同样的,当全局光照为实时,光照探针的光照信息也会跟随光变化。
在这里插入图片描述
反射探针与光照探针原理类似,它会收集探针的六个面,进行投射,从而采样。

2.手机使用烘焙注意的点

手机由于性能问题,不建议开启实时全局光照。同时有时候烘焙效果,在手机内有很大差异,原因在于光照贴图的格式,在手机与PC上格式不一样,设置LightMap的Encoding时会有不同的编码格式,注意设置光照强度,手机上光照强度超过一定值都会被限制到一定数值内,从而导致与PC上看起来相差很大。所以一定要注意物体表面烘焙的光照强度。

在这里插入图片描述

3.其他设置

Lightmapping Settings:光照贴图的生成设置,对照Unity文档就能知道差异
Workflow Settings:光照探针的一些可视化设置。

Environment设置,环境光照的一些设置,环境光设置后,可以保证场景中没有灯,也会被环境光照亮。

相关文章:

Unity填坑-灯光烘焙相关

Unity填坑-灯光烘焙相关 文章目录 Unity填坑-灯光烘焙相关前言一、Light的模式二、光的效果分类三、各种Light模式与烘焙的说明1.Realtime,实时光2.baked,烘焙光3.mixed,混合 四、实时全局光五、其他说明1.动态物体的全局光照效果2.手机使用烘焙注意的点3.其他设置 前言 项目组…...

【python】TCP测速程序

一、服务端 下面是一个简单的 Python 服务端程序的示例,使用标准库中的 socket 模块来建立一个 TCP 服务器。该服务器接收客户端的连接请求,客户端发送一定大小的数据流以测试 TCP 带宽。 实际场景中带宽测试可能需要更复杂的逻辑来确保测试的准确性。 …...

新书速览|从零开始大模型开发与微调:基于PyTorch与ChatGLM

详细讲解大模型基本理论、算法、程序实现与应用实战,揭示大模型开发与微调技术 1 本书内容 大模型是深度学习自然语言处理皇冠上的一颗明珠,也是当前AI和NLP研究与产业中最重要的方向之一。本书使用PyTorch 2.0作为学习大模型的基本框架,以C…...

边缘计算:连接实时数据的力量与未来发展之路

边缘计算是一种分布式计算范式,它旨在将数据处理、存储和应用服务带到数据源的近端,即网络的“边缘”。在边缘计算模型中,算力和存储资源距离末端用户或数据源更近,这减少了数据在网络中传输的距离,从而降低延迟&#…...

ZooKeeper 实战(四) Curator Watch事件监听

文章目录 ZooKeeper 实战(四) Curator Watch事件监听0.前言1.Watch 事件监听概念2.NodeCache2.1.全参构造器参数2.2.代码DEMO2.3.日志输出 3.PathChildrenCache3.1.全参构造器参数3.2.子节点监听时间类型3.2.代码DEMO 4.TreeCache4.1.构造器参数4.2.代码DEMO4.3.日志输出 ZooKe…...

Spring Boot 构建工具插件

本文为官方文档直译版本。原文链接 Spring Boot 构建工具插件 引言Spring Boot Maven PluginSpring Boot Gradle PluginSpring Boot AntLib 模块Spring Boot Ant 任务使用 "exejar" 任务示例 使用 "findmainclass" 任务例子 支持其它构建系统重新包装档案嵌…...

Java集成消息队列Kafka

1.Kafka maven坐标 在使用Maven构建Java项目时&#xff0c;你可以通过添加Kafka的Maven依赖来引入Kafka相关的库。下面是Kafka的Maven坐标&#xff1a; <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId&g…...

第十四章JSON

第十四章JSON 1.什么是JSON2.JSON的定义和访问3.JSON在JavaScript中两种常用的转换方式4.JavaBean和JSON的相互转换5.List集合和JSON的相互转换6.map集合和JSON的相互转换 1.什么是JSON 2.JSON的定义和访问 JSON的定义 JSON的类型是一个Object类型 JSON的访问 我们要…...

0_项目git地址——正点原子minifly与crazyflie

1、说明&#xff1a; 在每个专栏的第一篇文章&#xff0c;笔者都会贴出项目的git地址&#xff0c;方便后来者学习和复现&#xff1b; 下面介绍两个项目的官网资料和git地址&#xff0c;最后给出两者的对比&#xff1b; 2、正点原子minifly (1)minifly官网资料下载中心&#…...

php 字符串常用函数

目录 1.一些常用函数 2.代码示例 1.一些常用函数 函数名描述trim()删除字符串两端空行或其它预定义符rtrim()删除字符串右边空行或其它预定义符ltrim()删除字符串左边空行或其它预定义符dirname()返回路径中的目录部分str_split()把字符串分割到数组里explode()使用一个字符串…...

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(2)

Android基于Matrix绘制PaintDrawable设置BitmapShader&#xff0c;以手指触点为中心显示原图像圆图&#xff0c;Kotlin&#xff08;2&#xff09; 在 https://zhangphil.blog.csdn.net/article/details/135374279 基础上&#xff0c;增加一个功能&#xff0c;当手指在上面的图片…...

FlinkOnYarn 监控 flink任务

Flink任务一般为实时不断运行的任务&#xff0c;如果没有任务监控, 任务异常时无法第一时间处理会比较麻烦。 这里通过调用API接口方式来获取参数&#xff0c;实现任务监控。 Flink任务监控&#xff08;基于API接口编写shell脚本&#xff09; 一 flink-on-yarn 模式 二 编写she…...

C++内存管理机制(侯捷)笔记1

C内存管理机制&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youtube: 侯捷-C内存管理机制 Github课程视频、PPT和源代码: https://github.com/ZachL1/Bilibili-plus 第一讲primitives的笔记 截至…...

【论文阅读】Non-blocking Lazy Schema Changes in Multi-Version

Non-blocking Lazy Schema Changes in Multi-Version Database Management Systems 1. Intro 1.1 Motivation 一个是online能够提供不停机的更新的能力&#xff0c;在很多业务系统里面是必要的。第二个是满足高可用&#xff0c;SaaS、PaaS要提供高可用的系统给用户&#xff…...

Rust 最新版1.75.0升级记

升级方法 稳定版 C:\>rustup update stable info: syncing channel updates for stable-x86_64-pc-windows-msvc info: latest update on 2023-12-28, rust version 1.75.0 (82e1608df 2023-12-21) info: downloading component cargo 5.9 MiB / 5.9 MiB (100 %) 3.…...

使用 KubeSphere 与极狐GitLab 打造云原生持续交付系统

极狐GitLab 简介 极狐GitLab 是一个一体化的 DevOps 平台&#xff0c;可以简单理解为 GitLab 在国内的“发行版”。是由极狐(GitLab)公司推出的产品&#xff08;极狐(GitLab)公司是以“中外合资3.0”模式成立的公司&#xff0c;在国内独立运营&#xff0c;为国内用户提供适合本…...

EasyExcel的追加写入(新增POI、CSV)

总结&#xff1a;目前市面上流行的2种 EasyExcel和POI都不是真正的对物理excel文件进行追加导入。只是在缓存里面追加&#xff0c;最后一次性写入&#xff0c;并不能解决内存占用问题。 1.EasyExcel2.POI3.CSV 无非就是下面两种逻辑&#xff1a; 1.for循环查询数据&#xff0c;…...

JetBrains 开发工具——免费教育许可申请流程

JetBrains 开发工具——免费教育许可申请流程 本文将详细介绍通过教育邮箱申请Free Educational Licenses. Free Educational Licenses地址 1.选择符合自己的申请入口 2.填写申请表单提交 官方指南 &#x1f603;&#x1f603;&#x1f603;...

打造高性价比小程序,轻松降低成本

随着移动互联网的普及&#xff0c;小程序已经成为一个热门的应用开发方向。然而&#xff0c;对于许多企业和个人而言&#xff0c;制作一个小程序的费用却让人望而却步。那么&#xff0c;如何以最低的成本制作一款高性价比的小程序呢&#xff1f; 答案很简单&#xff0c;只需要找…...

mysql 索引优化查询

MySQL的索引可以提高数据库查询性能。下面是一些常用的MySQL索引优化技巧&#xff1a; 创建合适的索引&#xff1a;根据查询条件选择合适的列作为索引&#xff0c;并确保这些索引在WHERE子句中被使用到。 示例代码&#xff1a;CREATE INDEX idx_name ON table_name (column_nam…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...