计算机图形学入门22:双向反射分布函数(BRDF)

news2024/11/17 7:30:45

1.定义

        所谓BRDF(Bidirectional Reflectance Distribution Function,双向反射分布函数),指的是从辐射度量学的角度去理解光线的反射,如下图所示。

       所谓反射就是一个点从ωi方向发出的Radiance转化为dA接收到的功率E,然后功率E将转换为其他任何方向ωr发出的Radiance。 也就是一个点(微分面积元)在接受到一定方向上的亮度dE(ωi)之后,再向不同方向把能量辐射出去dLr(ωr)

        因此所谓BRDF就是描述这样一个光线从不同方向入射之后,反射光线的分布情况的函数。数学定义如下。

        上图中下方的式子即为BRDF,它接收两个参数,入射光方向ωi,反射光方向ωr,函数值为反射光的radiance与入射光的iiradiance的比值(从某个方向接受到的光能有多少反射到另外一个方向)。

        从直观的理解来说,不同材质的表面自然会把一定方向上的入射光线反射到不同方向上,如理想光滑表面会把入射光线完全反射到镜面反射方向,其它方向则完全没有。而理想粗糙表面会把入射光线均匀的反射到所有方向。

2.性质

        1.BRDF是非负的(Non-negativity),表示了能量的分布。

        2.BRDF是线性的(Linearity),可以拆分和叠加。

        3.BRDF是可逆的(Reciprocity principle),调换入射方向和出射方向依然成立。

        4.BRDF满足能量守恒(Energy conservation),入射能量等于反射能量(存在能量吸收的情况时,入射能量大于反射能量)。

3.反射方程

        借助BRDF,可以定义出反射方程如下。

        因为BRDF表示从某一个方向考虑入射,然后往某一个方向反射出去会是什么样的结果。假如以某一个反射方向ωr出去的点,从相机方向看到的这个着色点可以接收来至四面八方的不同的光照。那就考虑对于每一个入射方向ωi,都会对应入射方向着色点和出射方向这样的BRDF。BRDF会告诉我们从某一个方向进来的光反射到出射方向有多强,那就将每个方向的入射光线的强度(Radiance)乘以BRDF,再乘以cos\theta(之前的定义),然后把每一个方向上对出射光线的贡献相加,这样就得到了这个点在所有可能得入射光下反射到ωr上的情况

        如上可知,所谓的反射方程定义了任何一个着色点在各个不同的光照环境下,考虑任何一个光照入射方向对观察方向(出射方向)的一个贡献,将所有入射方向的贡献相加,相加就是求一个积分,得到最终的着色效果。

        在进入到渲染方程之前,再仔细观察一下反射方程。

        假如从某个方向观察某个着色点,要考虑所有能够到达这个着色点的所有光线,但是能够达到的可不止是光源发出的光线,还有可能有其他物体上着色点反射的光线,即间接光照。也就是说考虑的入射radiance不止来至光源,也可能来至其他物体反射出去的radiance,这是一个递归的过程。即任何出射的radiance都可能是其他入射的radiance,这就是为什么光线在场景中不止弹射一次的原因,这是一个很难计算的问题。

4.渲染方程

4.1 定义

        渲染方程只是在反射方程的基础之上添加了一个自发光项(Emission term),用来模拟物体自发光(物体有自发光和反射光),从而使得反射方程更加的通用,适用于所有物体表面上的光线传播问题。如下公式。

        其中Le(p,ω0)为自发光项,反射方程中的 cosθ 用 n·ωi 代替 (一样)。注意:所有光线方向均以从平面向外为正方向。

4.2 理解渲染方程

        1.一个点光源和单个物体的场景

        点光源对一个点来说自然只有一个方向有入射光,所以这里没有了积分(相加)。

        2.多个点光源一个物体的场景

        将所有的点光源的贡献全部求和即可。

        3.那么如果有一个是面光源呢?

        其实面光源就相当于无穷多个点光源的集合,由于多个点光源贡献可以相加,那么对面光源任意一点的贡献积分(相加)道理是一样,所以对这个面占据的立体角范围进行积分,然后考虑所有的方向Radiance经过BRDF反射出去的样子。

        4.在场景当中加入其它物体,使得物体之间发生光线交互之后是什么情况呢?

        可以把其它物体同样考虑成面光源,对其所占立体角进行积分即可,只不过对其它物体的立体角积分不像是面光源所有入射方向都有radiance,物体的立体角可能只有个别几个方向有入射的radiance(即多次物体间光线反射之后恰好照射到着色点x),其它方向没有,但本质上都可以视作是面光源。

        图中的渲染方程除了两个radiance,其它所有项都是知道的,可以将上式进一步写成如下图下方所示的简单式子。

        其中各项与原渲染方程中一一对应,(这里其实是有数学严格推导的,不过我们只是为了接下来构建直观的物理解释,对于这些推导不必在意,默认成立即可),再接着,可以把该式子离散化写为线性代数的形式。

        经过两步我们不是很清楚但其实是正确的数学推导之后,得到了这样一个递归式。

        其中L其实就是想要求得的反射光,E是自发光其实就是光源的发光项,K可以理解为对光线进行反射的一种算子操作(因为它由BRDF转化来的)。

        那么利用线性代数的知识很容易就可以推导出L的结果如下。

        其中 为单位矩阵,再接着使用广义二项式定理得到。

        仔细观察这个式子,注意E是光源所发出的光,K为反射算子,这样一个式子的物理含义如下图所示。

        E为光源发出的光,KE则代表对光源反射一次的结果,即直接光照,那么前两项之和就是光栅化当中着色所考虑的结果。对于全局光照(所有光线弹射次数加起来)来说,还考虑了第三项K^{2}E,即一次弹射的间接照明,K^{3}E就是两次弹射的间接照明,依次类推。

        这样来看整个结果就很清晰了,就是光源发光加上直接光照与多次间接光照的结果!而这一切都是从渲染方程推导而来的,因此这也正是渲染方程的物理意义!

        不同弹射次数下同一场景的渲染效果如下。

        显然弹射次数越多越接近真实图片效果,但提升幅度逐渐递减。

        注意:图片顶部中间有块玻璃,当进行第4次弹射时才从黑色变亮。这是因为光从相机出来到玻璃球里至少弹射2次才能出来,如果玻璃是双层的2次弹射只能进去,再经过2次弹射才能出来。

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

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

相关文章

【存储】相关内容

【存储】相关内容 1. 存储类型1. 块存储2. 文件存储3. 对象存储4. 三种存储类型对比 2. 常见的存储分类1. DAS2. SAN3. NAS4. 存储分类分析比较 3. 一些存储的概念1. LUN2. volume3. HBA4. iSCSI 1. 存储类型 块存储和文件存储是我们比较熟悉的两种主流的存储类型,…

可燃气体报警器检定规程最新标准:行业规范与监管要求的解读

随着工业、商业和民用领域对安全要求的不断提高,可燃气体报警器作为预防火灾和爆炸事故的重要设备,其准确性和可靠性受到了广泛关注。为了保障可燃气体报警器的正常运行和有效使用,制定并执行最新的检定规程至关重要。 在这篇文章中&#xf…

论文笔记:MobilityGPT: Enhanced Human MobilityModeling with a GPT mode

1 intro 1.1 背景 尽管对人类移动轨迹数据集的需求不断增加,但其访问和分发仍面临诸多挑战 首先,这些数据集通常由私人公司或政府机构收集,因此可能因泄露个人敏感生活模式而引发隐私问题其次,公司拥有的数据集可能会暴露专有商…

RabbitMQ消息可靠性等机制详解(精细版三)

目录 七 RabbitMQ的其他操作 7.1 消息的可靠性(发送可靠) 7.1.1 confim机制(保证发送可靠) 7.1.2 Return机制(保证发送可靠) 7.1.3 编写配置文件 7.1.4 开启Confirm和Return 7.2 手动Ack(保证接收可靠) 7.2.1 添加配置文件 7.2.2 手动ack 7.3 避免消息重复消费 7.3.…

【Python爬虫】Python爬取喜马拉雅,爬虫教程!

一、思路设计 (1)分析网页 在喜马拉雅主页找到自己想要的音频,得到目标URL:https://www.ximalaya.com/qinggan/321787/ 通过分析页面的网络抓包,最终的到一个比较有用的json数据包 通过分析,得到了发送json…

《梦醒蝶飞:释放Excel函数与公式的力量》7.3 RIGHT函数

第七章:文本处理函数 第三节:7.3 RIGHT函数 7.3.1. RIGHT函数简介 RIGHT函数用于从文本字符串的末尾提取指定数量的字符,适合在需要从文本中提取特定后缀或处理固定格式的数据时使用。 语法: RIGHT(text, [num_chars]) text…

1974Springboot医院远程诊断管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 springboot医院远程诊断管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库…

提高软件测试效率的7个技巧

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 软件测试是保证软件质量的重要环节,也是软件开发过程中不可或缺的一部分。 实际工作…

图片识别的3款神器!码住这篇!

在数字化飞速发展的今天,图片识别技术已经成为我们日常生活和工作中不可或缺的一部分。无论是学习、工作还是娱乐,图片识别软件都为我们带来了极大的便利。接下来,就让我们一起了解三款备受推崇的图片识别软件,看看它们是如何在我…

【密码学基础】对随机不经意传输(Random Oblivious Transfer)的理解

ROT在offline阶段生成大量的OT对,在online阶段通过one-pad方式高效加密,并且只需要简单的异或运算就能实现OT过程(去随机化)。 在ROT中,有一个关键点是:需要考虑offline阶段的选择比特和online阶段的选择比…

第15周:RNN心脏病预测

目录 前言 二、前期准备 2.1 设置GPU 2.2 导入数据 2.2.1 数据介绍 2.2.2 导入代码 2.2.3 检查数据 三、数据预处理 3.1 划分训练集与测试集 3.2 标准化 四、构建RNN模型 4.1 基本概念 4.2 搭建代码 五、编译模型 六、训练模型 七、模型评估 总结 前言 &#…

2024年文化传播与对外交流国际学术会议(ICCCFE 2024)

2024年文化传播与对外交流国际学术会议(ICCCFE 2024) 2024 International Conference on Cultural Communication and Foreign Exchange(ICCCFE 2024) 会议简介: 2024年文化传播与对外交流国际学术会议(ICCCFE 2024)定…

Go线程实现模型-P

P 概述 P是G能够在M中运行关键。Go的运行时系统会适时地让P与不同的M建立或断开关联,以使P中的那些可运行的G能够及时获得,这与操作系统内核在CPU之上实时切换不同进程或线程的情况类似 改变P的数量 改变单个Go程序间拥有的P的最大数量有两种方法 调…

《塔瑞斯世界》国服震撼登场!AOC助力玩家开启游戏新征途!

一款真正高画质、重机制、轻数值的MMORPG大作! 你是否厌倦了在MMORPG游戏中被“氪金大佬”碾压?你是否渴望一个纯粹依靠技术和策略就能获得成就感的游戏世界?如果你对这两个问题的答案都是肯定的,那么《塔瑞斯世界》或许值得你一…

docker-compose搭建minio对象存储服务器

docker-compose搭建minio对象存储服务器 最近想使用oss对象存储进行用户图片上传的管理,了解了一下例如aliyun或者腾讯云的oss对象存储服务,但是呢涉及到对象存储以及经费有限的缘故,决定自己手动搭建一个oss对象存储服务器; 首先…

前端git约定式规范化提交-commitizen

当使用commitizen进行代码提交时,commitizen会提示你在提交代码时填写所必填的提交字段信息内容。 1、全局安装commitizen npm install -g commitizen4.2.4 2、安装并配置 cz-customizeable 插件 2.1 使用 npm 下载 cz-customizeable npm i cz-customizeable6.…

30秒就能完成3D翻页画册的工具

​在数字化时代,将传统画册转化为电子版,并赋予其3D翻页的动态效果,不仅能够增强视觉效果,还能提高资料的传播效率。对于需要在短时间内完成3D翻页画册制作的用户,这里推荐一款能迅速实现这一目标的在线工具。 首先&am…

Web3 游戏周报(6.23 - 6.29)

区块链游戏热度不减,你是否掌握了上周的重要动态? 回顾上周区块链游戏动态,查看 Footprint Analytics 与 ABGA 的最新数据报告。 【6.23 - 6.29】Web3 游戏行业动态: 继 Notcoin 之后,另一款 Telegram 游戏 Hamster …

沙箱在“一机两用”新规下的价值体现

在数字化时代,随着企业信息化建设的深入,数据安全问题愈发凸显其重要性。一机两用新规的出台,旨在通过技术创新和管理手段,实现终端设备的安全可控,确保敏感数据的安全存储与传输。SDC沙箱技术作为一种创新的安全防护手…