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

untiy 室内灯光最佳实践

文章目录

    • 前言
      • 声明
      • unity 版本和渲染管线
      • 前置文章
      • 明确一件事情
    • 最终效果
    • 处理步骤
      • 1比例尺
      • 2处理材质和模型
      • 3 天空盒
      • 3 设置灯光
        • 方向光
        • 射灯
        • 点光源
        • 平面光
      • 4 设置反射球
        • 反射球是什么
        • 为什么要设置反射球
        • 如何设置反射球
      • 5 烘焙光照贴图和反射球
      • 6 后处理
      • 7 屏幕空间反射

前言

声明

本文将根据自己的理解,分步解析如何布局室内灯光,如何达到一个比较好的效果
由于作者并非专业技美,仅根据工作经验分享处理思路,如果有错误希望读者不惜指正

unity 版本和渲染管线

Unity版本2021.3.8,URP

前置文章

强烈建议先阅读这个文章
烘焙参数

明确一件事情

实时渲染的目的不是一比一的还原现实世界中的光照效果,而是得到一个可以接受的效果,不要过分的追求画面的真实,只要让普通人看不出来有问题即可。

最终效果

在这里插入图片描述

处理步骤

1比例尺

确保你的模型是按照1=1米制作的,不是的话自行缩放到合适的大小,因为Untiy里的光照单位是1=1米

2处理材质和模型

1 整好材质的金属度和光滑度是十分必要的,这会影响最后的反射、高亮效果
尤其是对于金属表面,地砖,玻璃等光滑表面,正确的材质是十分必要的
在这里插入图片描述
将所有需要烘焙光照的模型勾选静态
在这里插入图片描述
2 自发光材质
对于灯条,我们需要为材质设置自发光,后边加上屏幕后处理后,自发光将会显示出非常漂亮的辉光效果
自发光强度一般1-2即可
在这里插入图片描述
下图为上方材质有无有处理的对比,左侧为没有后处理,后处理在后面的章节讲,所以如果设置了自发光但是没有辉光效果,不要着急
请添加图片描述

3 天空盒

正确的选择一个天空盒,尽量和模型匹配,因为通常情况下我们会把天空盒当做环境光的光源,这会显著的影响物体表面的最终颜色。
在这里插入图片描述
我的办公室场景选择城市作为天空盒

3 设置灯光

方向光

1 方向光一般选择在窗户的位置照射进来, 方向光选择mix模式,这样既可以为静态物体烘焙光照贴图,又可以为动态物体提供光源。
2 一般白天时将强度设置为1即可。
3 可以根据需要设置颜色,配合天空盒的颜色或者环境的主题色调调整偏冷或偏暖。
在这里插入图片描述
本例子中的方向光

射灯

1 在现代风格办公室、住宅、展厅中,通常有射灯作为辅助光源,我们需要根据模型的位置添加光源。
2 射灯可以根据需要设置为实时模式或者烘焙模式。
3 强度一般为2或者3,不要用射灯来照明。
在这里插入图片描述

点光源

不推荐使用点光源,建议用平面光代替,除非有个灯泡,注意是灯泡。

平面光

1 如果房间是完全密封的,可以用来均匀的照亮,但这样会失去拟真性。
2 平面光可以用来模拟日光灯管、氛围灯、吊灯等光源。
3 模拟日光灯时应该保持范围足够大,不要只有灯管的一部分,应该覆盖灯管可能照亮的所有区域,光源强度在1-2即可。
在这里插入图片描述
这个例子里,用区域光模拟两个日光灯管照亮桌子。

4 模拟氛围灯时应该尽可能的小,光源强度3-5合适,以下是另一个场景的氛围灯
在这里插入图片描述

5 需要注意的是,平面光不是直直的往下射的,而是同时会向周围发射,并且光线经过反弹后,可以照亮平面光背后的区域,所以不用担心平面光照不到的地方是黑的。

这个例子中,平面光照亮了不在正下方的电视墙区域在这里插入图片描述
6 对于阳光直射的大玻璃窗,我们可以放一些局域光进行补光操作,局域光的的强度设置为1即可
下图中的落地窗进行了补光
在这里插入图片描述

4 设置反射球

反射球是什么

可以将反射球理解为一个全景相机,烘焙反射球就是使用全景相机拍摄周围的照片,反射球会影响包围盒内其他物体的反射颜色

需要注意的是,反射球不能为镜面物体提供逼真的反射效果,镜面物体受反射球影响显示的反射颜色是以反射球为中心的,而不是镜面物体本身,使用反射球无法得到正确的反射效果。

反射是一项非常消耗性能的操作,不要要求实时渲染的反射能有多么真实的效果,反射球更大的意义在于提供一个快速的、近似的反射颜色,让场景的颜色布局更加合理。

为什么要设置反射球

这很重要,请确保场景中至少有一个包围了所有物体的反射球,反射球的存在将直接影响最后物体表面颜色。

左侧为没有反射球,右侧为有反射球,很明显左侧反射了天空的颜色,右侧反射的反射球采集的室内环境的颜色。如果没有反射球,场景中的物体都将反射天空的颜色,看起来非常不真实。
请添加图片描述

如何设置反射球

设置反射球的原则是分区域、立方体
分区域:应该为每个区域尽可能的独立设置反射球,确保反射结果相对正确,请注意反射球只会影响他包围盒中的物体,如果反射球包围盒和物体部分重合,那么只有重合的部分会显示为反射球的颜色,剩余部分依然反射天空。
下图展示了如何分区域设置反射球
在这里插入图片描述
立方体:反射球的包围盒应该被设置为接近立方体的形状,如果反射球的包围盒太扁,反射纹理会变形
下图中包围盒过扁的反射球是错误的,不要这样设置
在这里插入图片描述

5 烘焙光照贴图和反射球

理论上点一下烘焙按钮就可以了,但是还是有一些细节可以操作
1确保你的环境光是正确的,默认是天空盒
在这里插入图片描述
2不建议烘焙实时全局光,很鸡肋
3烘焙方式改为显卡烘焙,速度会快很多,他这个预览已经预览了十年了,不知道什么时候变正式版
4采样数最好改为2的整数次幂,理论上会加快速度
5 LightmapResolution,光照贴图的分辨率,每一米的untiy物体在光照贴图上占几个像素,早期调整光效时可设到10或20,来大致的查看亮度分布,时间会呈指数倍下降,可以快速预览烘焙效果,会导致阴影错误,确定光源后再调到40-60来最终烘焙。
6 LightmapCompression启用后可以减小贴图大小
7 烘焙AO根据跟人选择吧,我习惯用后处理AO

在这里插入图片描述

6 后处理

建议直接用我这个

免积分下载
下面讲解一下比较重要的参数
bloom
辉光效果,强烈建议一定要加上,可以让高亮区域发出辉光
在这里插入图片描述
在这里插入图片描述
ChromaticAberration
色差,在屏幕边缘形成红蓝色的颜色偏移,不喜欢可以关掉
在这里插入图片描述
左侧没有色差,右侧有色差
请添加图片描述
ColorAdjustments
颜色调整,重要
在这里插入图片描述

三个打对钩的是需要重点关注的
PostExposure:后期曝光,烘焙后的画面通常会发暗,可以额外给1的曝光补偿,这个通常都是要给的
Contrast:明暗对比度,值越高明暗对比越明显,值为0画面为中值灰
Saturation:饱和度,稍微高一点让颜色更鲜亮
FilmGrain
胶片颗粒,不喜欢可以关掉
在这里插入图片描述
ShadowsMidtonesHighlights
暗部,中部,亮部
可以微调各个部分的颜色,并且用色盘下的横条左右拖动微调各个部分的明暗,建议各个部分都微调一下,来让各个部分更亮或更暗
在这里插入图片描述
SplitToning
色彩分离
调整阴影和高亮的颜色,以及他们如何混合,但是应该值调整亮度,不要真的添加颜色
在这里插入图片描述
Tonemapping
色调映射,必选,必选ACES模式,ACES是CG或者电影中常用的色调映射模式,用这个准没错
在这里插入图片描述
Vigentte
镜头晕影
可以为屏幕的周围添加一些黑影,模拟摄影机的感觉,提高画面的层次敢,推荐加上
在这里插入图片描述
WhiteBalance
白平衡,可以根据场景的主题色调,添加一些冷光或暖光的感觉,推荐加上
在这里插入图片描述

7 屏幕空间反射

urp没有自带的屏幕空间反射,可以使用插件实现,具体可以参考我的这篇文章
文章链接

相关文章:

  • 爬取博客的图片并且将它存储到响应的目录
  • C#高级:DataGridView的详解
  • 练习2-线性回归迭代(李沐函数简要解析)
  • 命令行启动mongodb服务器的问题及解决方案 -- Unrecognized option: storage.journal
  • springboot 实现本地文件存储
  • SD NAND:为车载显示器注入智能与安全的心脏
  • selenium测试工具用来模拟用户浏览器的操作
  • MySQL常见面试题总结
  • Node.js基础---Express中间件
  • 利用 lxml 库的XPath()方法在网页中快速查找元素
  • kvm虚拟机修改网络模式
  • MySQL进阶之(三)InnoDB数据存储结构之数据页结构
  • SpringBoot源码解读与原理分析(三十八)SpringBoot整合WebFlux(一)WebFlux的自动装配
  • 利用FFMPEG 将RTSP流的音频G711 转码为AAC 并 推流到RTMP
  • Git源码管理
  • 【译】JS基础算法脚本:字符串结尾
  • Druid 在有赞的实践
  • ES6--对象的扩展
  • Java精华积累:初学者都应该搞懂的问题
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Laravel Mix运行时关于es2015报错解决方案
  • Linux Process Manage
  • Node项目之评分系统(二)- 数据库设计
  • Otto开发初探——微服务依赖管理新利器
  • Service Worker
  • socket.io+express实现聊天室的思考(三)
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 好的网址,关于.net 4.0 ,vs 2010
  • 基于遗传算法的优化问题求解
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端相关框架总和
  • 深度解析利用ES6进行Promise封装总结
  • 实现简单的正则表达式引擎
  • 详解移动APP与web APP的区别
  • 小程序 setData 学问多
  • 一文看透浏览器架构
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 字符串匹配基础上
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #ifdef 的技巧用法
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (简单) HDU 2612 Find a way,BFS。
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (四)汇编语言——简单程序
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)