【Unity灯光与渲染技术】Global Illumination全局光照

2023-11-19



本系列主要参考Unity灯光与渲染技术教程Unity Lighting And Rendering,同时会加上一点个人实践过程和理解。


========================================== 分割线 ==========================================
这篇文章主要讲全局光照,在看教程的时候就有一个点不是很理解,就是作者开启物体的static这个选项。在网上查找一些资料,有的说”static表示物体时静态的,多用于静止不动的物体,此外static有多种,有的用于烘焙,有的用于遮挡剔除“;还有的指出”所谓静态就是静止的,你如果要改变它位置,就不是静态了,静态物体在脚本加载的时候就开始渲染,不随着update 每侦更新,你如果要移动物体,就必然要重新刷新,就是动态了 “
总结来看,就是说unity3d中物体组件上的static选项是包括很多种static含义的,而本文中主要研究的是Lightmap Static。也就是在游戏中如何实现全局光照的方式。
而为什么要选择这种方式主要是由游戏的需求决定的,在游戏运行中,速度是最重要的,所以在跟渲染质量进行比较的时候,就要做出取舍,然而我们仍然在追求着更真实的视觉效果,全局光照即是实现虚拟物体真实性的一个很重要的因素,因为它可以模拟真实世界中各个物体反射光线的相互作用。这种交互是非常消耗性能的,因此选择了游戏中的光线通常会用lightmap这种静态的光照技术来代替动态的光照,从而在保证游戏运行帧数的同时提高渲染效果。
一般而言,在场景中完全静止的物体标记成static是比较好的。这个静止是指在游戏运行过程中没有发生移动或者缩放或者旋转等。因为每当物体进行运动,都需要重新进行模拟运算。这不仅仅是在光照方面,在其他的方向上也可以提高效率,比如静态物体的碰撞检测要更快,同时多个使用同一材质的静态物体在绘制的时候只使用一个drawcall,进而节省了CPU。在光照计算上,static的物体也更快一些。
在进行操作之前还要说明,个人免费版基本上无法实时渲染,大部分情况下只能静态渲染。这篇文章的内容我用免费版的时候开启static就直接挂掉了,换成专业版就没问题,猜想如果要是出现故障,可以考虑是这个原因。
步骤如下:
点击物体Cornell Box-点击static-选择yes,change children,即可实现全局光照的效果。 
这篇文章的步骤很简单,到这里就结束了,然而这只是后续讲解的一个引子,因为现在每移动小球或者改变光照方向都需要重新逐帧烘焙light map,后续将通过多种方式来实现。当然,改变光照的时候,光照贴图自动烘焙的前提是需要开启连续的烘焙选项,在lighting面板系统中默认开启。
遗留问题:
在实现小球的static效果的时候,并没有得到作者那种光滑的光照贴图。设置完全相同结果不同不知道为什么。
我得到的是下图这种很硬的效果,而且小球上似乎反射了一些不平整的阴影。
就在这篇文章快写完的时候去论坛看到一篇关于 Unity4和Unity5灯光烘焙差别的文章,其中提到由于版本采用的光照烘焙技术不同,所以有很大的出入。官网介绍在 这里
这个面板的区别似乎解决了我最开始的疑惑,因为必须把烘焙的物体设置为静态。
再有就是之前操作的时候没有把灯光的烘焙模式调为Baked,只有在这个设置好,同时自动烘焙关闭才能看到烘焙后的效果。
最后Scale In Lightmap  Realtime Resolution Baked Resolution 个参数都试过仍然没有解决我球体为什么上面有奇怪阴影的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Unity灯光与渲染技术】Global Illumination全局光照 的相关文章

随机推荐

  • 理解line-height和vertical-align

    来源 https www cnblogs com libo web p 15457582 html 行高 line height line height 属性是指文本行基线之间的距离 用于设置多行元素的空间量 如多行文本的间距 对于块级元素
  • 谈谈对Python爬虫的理解

    爬虫也可以称为Python爬虫 不知从何时起 Python这门语言和爬虫就像一对恋人 二者如胶似漆 形影不离 你中有我 我中有你 一提起爬虫 就会想到Python 一说起Python 就会想到人工智能 和爬虫 所以 一般说爬虫的时候 大部分
  • notepad++ 快捷键

    Notepad 绝对是windows下进行程序编辑的神器之一 要更快速的使用以媲美VIM 必须灵活掌握它的快捷键 下面对notepad 默认的快捷键做个整理 其中有颜色的为常用招数 1 文件相关 快捷键 动作定义 Ctrl O 打开文件 C
  • (20200720已解决)_pickle.UnpicklingError: A load persistent id instruction was encountered,

    but no persistent load function was specified 问题描述 如题 提取pickle数据 解决方案 直接解释是因为生成pickle文件的过程中使用了persistent load 但是读取过程中没有提
  • 云原生之使用docker部署mongodb数据库

    云原生之使用docker部署mongodb数据库 一 检查系统版本 二 检查docker状态 三 检查docker版本 四 下载mongodb镜像 五 创建mongodb容器 1 创建数据目录 2 创建mongodb容器 3 查看mongo
  • Python中的sns.set_palette函数是一个非常有用的函数,它可以设置Seaborn库中的调色板。这个函数允许用户设置颜色列表,并将它们应用于所选的...

    Python中的sns set palette函数是一个非常有用的函数 它可以设置Seaborn库中的调色板 这个函数允许用户设置颜色列表 并将它们应用于所选的绘图 在这篇文章中 我将详细介绍sns set palette函数的使用方法 并
  • STM32外设系列—L298N

    文章目录 一 L298N简介 二 L298N电路图 三 L298N使用方法 四 L298N驱动电机实例 4 1 麦克纳姆轮简介 4 2 定时器PWM配置 4 3 智能车行驶控制 五 拓展应用 一 L298N简介 L298N是SGS公司生产的
  • 强化学习 优势函数(Advantage Function)

    目录 什么是优势函数 归一化 激活函数等学习问题 为什么要使用优势函数 常见的优势函数 什么是优势函数 优势函数表达在状态s下 某动作a相对于平均而言的优势 从数量关系来看 就是随机变量相对均值的偏差 使用优势函数是深度强化学习极其重要的一
  • 用汇编语言实现结构体的输入和保存

    COUNT EQU 1 ALL INPUT MACRO STRING NUM FUNCTION MOV DX OFFSET STRING MOV AH 9H INT 21H MOV DI OFFSET INFO NUM MOV AX SIZ
  • 软件工程思考(四)

    Prototyping 在生成产品以前 一般需要进行原型验证 可以得到遇到的困难以及用户体验 需要增加的功能进行加入新的东西 原型验证中 平台选择 需求清晰化以及用户接口这些都是未知的 所以有较高的风险 原型验证中UI设计可以使用纸质或者是
  • 01_2_数字基带传输及其频谱特性

    一 数字基带信号的表示 g t g t g t 是一个基本的脉冲 有不同形状 a n
  • python 播放自定义的语句 MP3文件

    使用python播放自定义文本 比如播放你想说的话 运行以下PY代码 就会在项目路径下产生一个MP3文件 里面循环播放你写自定义语句 from PyQt5 QtCore import QUrl from PyQt5 import QtMul
  • Unikernel不适合生产环境

    最近我犯了个错 在Twitter上语气激昂的问是否该讲讲为什么unikernel不适合用在生产环境 结果响应十分强烈 有的人感觉unikernel走错方向了 在寻找支持这种观点的细节 有的人是unikernel的支持者 也很想知道反对uni
  • R-CNN系列论文综述

    本文首发自 CSDN 上几期我们讲过目标检测 One Stage 的代表 YOLOv3 本来这一期是打算写 SSD One Stage 的另一个代表 的 发现 SSD 其中涉及的知识是从 R CNN Two Stage 来的 故此 这一期我
  • 问题 D: 稀疏矩阵类型判断

    题目描述 输入一个稀疏矩阵 输出其类型 类型包括 上三角 对角线及其右上方的元素非0 其它元素为0 下三角 对角线及其左下方的元素非0 其它元素为0 对称 沿对角线对称的元素非0且相等 空矩阵 所有元素都为0 其它为普通矩阵 输入 输入包括
  • SpringBoot项目搭建并以打jar包方式部署运行

    一 项目搭建 1 去springBoot官网下载demo SpringBoot官网 https start spring io 2 点击Generate Project下载demo并将其以maven方式导入到eclipse中 3 选择要集成
  • axios用headers传参,设置请求头token

    不知道该怎么描述我这个问题 之前有听一个前端经理说 使用http协议的时候要用headers传参 新公司就是使用http协议的 在vue项目中 使用了axios 要根据header里的token判断用户是否登录 如上图 一开始的理解为是像d
  • 前段技术加html+css+JS

    前段技术加html css JS html 负责页面的结构 语义 网页制作语言 不是编程语言 css 负责页面的美化 样式 js 增加交互或特效 HTML基本知识点 HTML含义 html超文本标记语言 通过标签进行语义化描述 超文本 就是
  • No implementation found for int com.baidu.mapsdkplatform.comjni.tools.JNITools.initClass(java.lang.O

    今天又有一个历史项目需要维护 发现百度地图只显示网格 没有图像出来 感觉可能是签名问题 但是下载来的代码中只有那一个签名 所以干脆把百度地图的东西都替换掉 替换完一运行 直接崩溃了 E NativeLoader found libBaidu
  • 【Unity灯光与渲染技术】Global Illumination全局光照

    本系列主要参考Unity灯光与渲染技术教程Unity Lighting And Rendering 同时会加上一点个人实践过程和理解 分割线 这篇文章主要讲全局光照 在看教程的时候就有一个点不是很理解 就是作者开启物体的static这个选项