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

Unity光照相关

1. 光源类型

Unity支持多种类型的光源,包括:

1. 点光源(Point Light):从一个点向四周发射光线,适用于需要突出物体的光源。

2. 平行光(Directional Light):从无限远处的一个方向照射,适用于需要模拟太阳或月亮等光源。

3. 聚光灯(Spot Light):从一个点向一个方向发射光线,适用于需要集中光源来照亮某个区域。

4. 区域光源(Area Light):将光源区域化,使得光源在某个区域内分布均匀,适用于需要模拟某种特定的照明效果。

重要属性

1.在Range属性上向右或向左拖动以增加或减少光在场景中的传播距离;

2.在Intensity属性上向右或向左拖动以增加或减少其设置范围内的灯光强度;将Intensity属性设置为200到600之间更实际

3. Indirect Multiplier属性会影响 此光源提供的间接光的强度(被传感器接收前多次反弹的光);

如果你设置它:

低于1时,间接光每次从物体反弹时都会变暗。这是真实光照的行为方式,但您可能希望覆盖该行为以实现特定的光照效果。

高于1,间接光会随着每次反弹而变亮。这并不自然,但如果您试图照亮场景中的黑暗封闭空间,它会非常有用。

4. 选择color属性框打开颜色选择器窗口并调整灯光的颜色

2. 光照模式

1. realtime: 设置为realtime模式的光源,都会对所有能被它照射到的表面施加影响,那为啥叫realtime呢,其实所谓的realtime就是平时我们写shader的时候直接在shader里拿到并用于计算的光源,它是在shader里每帧更新的,所以叫realtime模式,

2. baked: 对于这种光照模式的光源就要设计到光照烘焙了,所谓的光照烘焙,是利用的另外的程序获得unity中的场景数据,然后在场景中各种光源的相应方向上发射出很多束光线,这些光线经过反弹,就会形成所谓的间接光对场景施加更多的影响,然后经过几次反弹后,就完成了每个物体的光照计算,并把结果保存在每个物体各自的贴图中,下次在场景启动的时候,直接采样这些贴图就行了

3. mixed: 在烘焙的时候烘焙间接光照信息,而运行时就是跟realtime模式一样贡献直接光就行了

3. 阴影

  • Light中Shadow Type
  • BlobShadowProjector
  • 平面网格制作阴影

常见的几种模式 (realtime非常耗费性能)

1. realtime: 在这种模式下,无论是静态对象和动态对象都会在每帧实时的计算该光源对表面的影响,众所周知,一般动态光源的阴影都是利用阴影贴图计算的,而一个光源就需要一张阴影贴图,像是点光源的话更是需要六张阴影贴图,所以为了避免不必要的开销,unity中针对比较远的物体可以直接不渲染它的阴影贴图,这里究竟多远就不渲染呢?在quality setting里面有一个shadow distance参数就是控制究竟什么距离下才渲染阴影的。也就是收realtime模式的光源会对所有动态和静态的物体投射阴影,前提是它们距离摄像机的距离要小于阴影距离。

2. baked: 这里因为是baked模式,所有对于设置为此模式的光照,它的所有光照信息都会被烘焙到所有静态物体上,包括光照探针,注意这里说的是静态物体,意思就是烘焙光照的时候相当于把动态物体直接完全忽略了,然后运行游戏的时候因为该光源所有的光照信息都已经存在相应的静态物体的光照贴图中了,所有运行时具有baked光照模式的光源就会直接“退休”,如同没有存在过一样。

3. mixed: 因为unity针对mixed模式的阴影表现有一些额外的设置,这些设置就是在light setting里面mixed lighting下的light mode设置,有三种,分别为baked indirect,shadowmask,subtractive,注意这些设置只对mixed光照模式有效果,而且是针对场景中所有的mixed光源的。先说说baked indirect设置,这是最符合直觉的设置,上面说过mixed光照模式实时计算直接光,烘焙间接光,所以这种设置下光源会把它的间接光直接烘焙到静态物体的光照贴图中的(记住这一点,烘焙光照永远只能烘焙进静态物体中,光照探针也算),注意间接光因为太弱了一般不会造成阴影,烘焙完以后你还能在editor模式中看见阴影那是因为mixed模式光源的直接光是实时的。所以运行的收mixed模式造成的阴影效果就更realtime模式一摸一样(使用阴影贴图的动态阴影)。

接下来是subtrative模式,这是三种模式里开销最低得一种模式,为什么呢,启用这种设置以后,场景中所有的mixed光源会在烘焙的时候烘焙间接光和直接光,前面说过baked indirect设置下尽管间接光被烘焙进光照贴图里去了,但是mixed光源的直接光部分会像realtime光照模式的光源一样既照射到静态物体上又照射在动态物体上

4. Post-Processing后期处理

触发器为摄像机本身,一般用于调整屏幕颜色和添加光晕效果,提升画质。

Unity学习之PostProcessing的使用_post processing_斗淇的博客-CSDN博客

几种常用的功能:

1. Color Grading颜色分级:见下方

2. Bloom 高斯模糊:再现真实世界相机的成像伪像的效果。该效果产生从图像中明亮区域的边界延伸的光的条纹。

3. Vlgnette渐晕:渐晕是用于与中心相比朝向图像边缘变暗和/或去饱和

5. Global illumination全局照明

是一组可在 Unity 中用于提供逼真照明效果的技术。这些技术被称为全局照明,因为它们模拟直接光和间接光,而不仅仅是直接光。

1. 烘焙全局照明系统:光照贴图、光照探针、反射探针

2. 实时全局照明系统:Enlighten光照贴图、光探头

全局Light-Scene-New LightSetting配置全局烘焙模式

6. Light Probe光照探针

用于处理烘培的场景下,需要对动态物体进行正确的照亮。

使用Scene-shader-Contributors / Receivers 查看光照情况

7. Reflection Probe反射探针

默认情况下,场景内的对象直接从天空盒中获取反射并形成光照贴图,加入反射探针后,将从探针范围内取样并把结果写入到y一张立方体贴图中,让周围经过的物体获得反射影响。

  • 检查其Type是否设置为Baked
  • 启用Box Projection属性

相关文章:

Unity光照相关

1. 光源类型 Unity支持多种类型的光源,包括: 1. 点光源(Point Light):从一个点向四周发射光线,适用于需要突出物体的光源。 2. 平行光(Directional Light):从无限远处…...

Qt基本类型

QT基本数据类型定义在#include <QtGlobal> 中&#xff0c;QT基本数据类型有&#xff1a; 类型名称注释备注qint8signed char有符号8位数据qint16signed short16位数据类型qint32signed short32位有符号数据类型qint64long long int 或(__int64)64位有符号数据类型&#x…...

前端基础(Element、vxe-table组件库的使用)

前言&#xff1a;在前端项目中&#xff0c;实际上&#xff0c;会用到组件库里的很多组件&#xff0c;本博客主要介绍Element、vxe-table这两个组件如何使用。 目录 Element 引入element 使用组件的步骤 使用对话框的示例代码 效果展示 vxe-table 引入vxe-table 成果展…...

C++学习记录——이십팔 C++11(4)

文章目录 包装器1、functional2、绑定 这一篇比较简短&#xff0c;只是因为后要写异常和智能指针&#xff0c;所以就把它单独放在了一篇博客&#xff0c;后面新开几篇博客来写异常和智能指针 包装器 1、functional 包装器是一个类模板&#xff0c;对可调用对象类型进行再封装…...

UE学习记录03----UE5.2 使用拖拽生成模型

0.创建蓝图控件&#xff0c;自己想要展示的样子 1.侦测鼠标拖动 2.创建拖动操作 3.拖动结束时生成模型 3.1创建actor , 创建变量EntityMesh设为可编辑 生成Actor&#xff0c;创建变量EntityMesh设为可编辑 屏幕鼠标位置转化为3D场景位置 4.将texture设置为变量并设为可编辑&am…...

Spring Cache框架(缓存)

1、介绍&#xff1a; Spring Cache 是一个框架&#xff0c;实现了基于注解的缓存功能&#xff0c;只需要简单加个注解&#xff0c;就能实现缓存功能。它提供了一层抽象&#xff0c;底层可以切换不同的cache实现。具体就是通过CacheManager 接口来实现不同的缓存技术。 针对不同…...

Linux学习之Ubuntu 20使用systemd管理OpenResty服务

sudo cat /etc/issue可以看到操作系统的版本是Ubuntu 20.04.4 LTS&#xff0c;sudo lsb_release -r可以看到版本是20.04&#xff0c;sudo uname -r可以看到内核版本是5.5.19&#xff0c;sudo make -v可以看到版本是GNU Make 4.2.1。 需要先参考我的博客《Linux学习之Ubuntu 2…...

[数据集][目标检测]疲劳驾驶数据集VOC格式4类别-4362张

数据集格式&#xff1a;Pascal VOC格式(不包含分割的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;4362 标注数量(xml文件个数)&#xff1a;4362 标注类别数&#xff1a;4 标注类别名称:["closed_eye","closed_mouth"…...

matlab使用教程(25)—常微分方程(ODE)选项

1.ODE 选项摘要 解算 ODE 经常要求微调参数、调整误差容限或向求解器传递附加信息。本主题说明如何指定选项以及每个选项与哪些微分方程求解器兼容。 1.1 选项语法 使用 odeset 函数创建 options 结构体&#xff0c;然后将其作为第四个输入参数传递给求解器。例如&#xff0…...

MybatisPlus简单到入门

一、MybatisPlus简介 1、入门案例&#xff08;重点&#xff09;&#xff1a; 1.SpringBoot整合MP1).创建新模块选择&#xff0c;Spring项初始化。2).选择当前模块使用的技术&#xff0c;只保留MySQL Driver就行&#xff0c;不要选择mybatis避免与后面导入mybatisPlus的依赖发…...

9. 优化器

9.1 优化器 ① 损失函数调用backward方法&#xff0c;就可以调用损失函数的反向传播方法&#xff0c;就可以求出我们需要调节的梯度&#xff0c;我们就可以利用我们的优化器就可以根据梯度对参数进行调整&#xff0c;达到整体误差降低的目的。 ② 梯度要清零&#xff0c;如果梯…...

go学习之流程控制语句

文章目录 流程控制语句1.顺序控制2.分支控制2.1单分支2.2双分支单分支和双分支的四个题目switch分支结构 3.循环控制for循环控制while 和do...while的实现 4.跳转控制语句breakcontinuegotoreturngotoreturn 流程控制语句 介绍&#xff1a;在程序中&#xff0c;程序运行的流程…...

docker基于已有容器和通过Dockerfile进行制作镜像配置介绍

目录 一.制作镜像的两种方式 1.在已有容器中更新并提交这个镜像 2.使用Dockerfile来制作 二.基于容器制作镜像 1.格式 &#xff08;1&#xff09;主要格式 &#xff08;2&#xff09;可选参数 2.案例 基于容器创建镜像设置标签并进行验证是否可用 &#xff08;1&…...

2022年09月 C/C++(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;最长上升子序列 一个数的序列bi&#xff0c;当b1 < b2 < … < bS的时候&#xff0c;我们称这个序列是上升的。对于给定的一个序列(a1, a2, …, aN)&#xff0c;我们可以得到一些上升的子序列(ai1, ai2, …, aiK)&#xff0c;这里1 < i1 < i2 &…...

二级MySQL(九)——表格数据处理练习

在Mysql中&#xff0c;可以用INSERT或【REPLACE】语句&#xff0c;向数据库中已一个已有的表中插入一行或多行记录。 在Mysql中&#xff0c;可以用【DELETE】或【TRUNCATE】语句删除表中的所有记录。 在Mysql中&#xff0c;可以用【UPDATE】语句来修改数据表中的记录。 为了完…...

QT ListQvector at赋值出错以及解决办法 QT基础入门【QT存储结构】

1、问题 error: passing const QString as this argument discards qualifiers error: assignment of read-only location vec.QVector<int>::at(0) 在Qt中QList,Qvector一般获取元素都是通过at(index)来获取,但是at()的返回是一个const & 常引用,也就是元素不支…...

STM32 CubeMX (H750)RGB屏幕 LTDC

STM32 CubeMX STM32 RGB888 LTDC STM32 CubeMX一、STM32 CubeMX 设置时钟树LTDC使能设置屏幕参数修改RGB888的GPIO 二、代码部分效果 RGB屏幕线束定义&#xff1a; 一、STM32 CubeMX 设置 时钟树 这里设置的时钟&#xff0c;关于刷新速度 举例子&#xff1a;LCD_CLK24MHz 时…...

Redis问题集合(三)在Redis容器里设置键值对

前言 前提是已经拉取了Redis镜像并创建了对应的容器做个记录&#xff0c;方便后续查看 步骤 查看Redis容器的ID&#xff1a;docker ps -a 进入容器&#xff1a;docker exec -it 容器ID /bin/bash进入redis命令行&#xff1a;redis-cli输入密码&#xff1a;auth 配置密码 查看…...

spark中排查Premature EOF: no length prefix available

报错信息 /07/22 10:20:28 WARN DFSClient: Error Recovery for block BP-888461729-172.16.34.148-1397820377004:blk_15089246483_16183344527 in pipeline 172.16.34.64:50010, 172.16.34.223:50010: bad datanode 172.16.34.64:50010 [DataStreamer for file /bdp/data/u9…...

numpy高级函数之where和extract函数

1 numpy.where() 函数返回输入数组中满足给定条件的元素的索引 ---------------------------------------------------- 代码&#xff1a; n1np.random.randint(10,20,10) n2np.where(n1>15) 结果&#xff1a; [17 15 19 15 12 10 16 11 15 13] #原始数组 (array([…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节&#xff1a;强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说&#xff0c;这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发&#xff08;例如 Flutter、React Na…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能

指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...

快速排序算法改进:随机快排-荷兰国旗划分详解

随机快速排序-荷兰国旗划分算法详解 一、基础知识回顾1.1 快速排序简介1.2 荷兰国旗问题 二、随机快排 - 荷兰国旗划分原理2.1 随机化枢轴选择2.2 荷兰国旗划分过程2.3 结合随机快排与荷兰国旗划分 三、代码实现3.1 Python实现3.2 Java实现3.3 C实现 四、性能分析4.1 时间复杂度…...