Games101学习笔记 Lecture17 Materials and Appearances

news2024/9/23 17:17:41

Lecture17 Materials and Appearances

  • 材质 == BRDF
  • 一、Diffuse/Lambertian Material
  • 二、Glossy Material
  • 三、Ideal reflective/ refractive Material (BSDF)
    • 1.镜面反射
    • 2.镜面折射
    • 3.菲涅尔项 Fresnel
  • 四、Microfacet BRDF 微表面
  • 五、Isotropic / Anisotropic Materials (BRDFs)
    • Anisotropic BRDFs
  • 六、BRDF的属性
    • 1.非负性
    • 2.线性
    • 3.可逆性(互易性)
    • 4.能量守恒
    • 5.Isotropic vs. anisotropic
  • 七、测量BRDF
    • 一般方法
    • 提高效率

材质 == BRDF

一、Diffuse/Lambertian Material

  • 漫反射材质的BRDF为c(常数)—— 反射率 —— 通常表示为 材质的反射颜色
  • 光线进来会被均匀地漫反射出去
    在这里插入图片描述
  • 假设 入射光照是均匀的 f r L i ( ω i ) f_{r}L_{i}(ω_{i}) frLi(ωi)为常数)
  • L o ( ω o ) = ∫ H 2 f r L i ( ω i ) c o s θ i d ω i = f r L i ∫ H 2 c o s θ i d ω i = π f r L i L_{o}(ω_{o}) = \int_{H^{2}}^{}f_{r}L_{i}(ω_{i})cosθ_{i}dω_{i} = f_{r}L_{i} \int_{H^{2}}^{}cosθ_{i}dω_{i} = \pi f_{r}L_{i} Lo(ωo)=H2frLi(ωi)cosθidωi=frLiH2cosθidωi=πfrLi
  • 又因为 入射光线 = 出射光线 → \rightarrow f r = 1 π f_{r} = \frac{1}{\pi} fr=π1
  • 得到 f r = ρ π f_{r} = \frac{ρ}{\pi} fr=πρ (ρ为albedo(color),范围在0~1),范围在 0 ∼ 1 π 0\sim \frac{1}{\pi} 0π1

二、Glossy Material

  • 多少有一点点镜面
    在这里插入图片描述
    在这里插入图片描述

三、Ideal reflective/ refractive Material (BSDF)

  • BSDF双向散射分布函数,描述了光线在物体表面反射和折射的行为 = BRDF(反射) + BTDF(折射)

1.镜面反射

  • 入射角 = 反射角
    在这里插入图片描述
  • ω o + ω i = 2 c o s θ n ⃗ = 2 ( ω i ⋅ n ⃗ ) n ⃗ → ω o = − ω i + 2 ( ω i ⋅ n ⃗ ) n ⃗ ω_{o}+ω_{i} = 2cos\theta\vec{n} = 2(ω_{i} \cdot\vec{n})\vec{n} \rightarrow ω_{o} = -ω_{i} + 2(ω_{i} \cdot \vec{n})\vec{n} ωo+ωi=2cosθn =2(ωin )n ωo=ωi+2(ωin )n (假设 ω o 、 ω i 、 n ⃗ ω_{o}、ω_{i}、\vec{n} ωoωin 是单位向量)

2.镜面折射

  • 镜面折射遵循折射定律,也称为 斯涅尔定律
    在这里插入图片描述
  • η i s i n θ i = η t s i n θ t \eta_{i}sin\theta_{i} = \eta_{t}sin\theta_{t} ηisinθi=ηtsinθt η \eta η为两边的折射率)
  • c o s θ t = 1 − s i n 2 θ t = 1 − ( η i η t ) 2 s i n 2 θ i = 1 − ( η i η t ) 2 − ( 1 − c o s 2 θ i ) cos\theta_{t} = \sqrt{1-sin^{2}\theta_{t}} = \sqrt{1-(\frac{\eta_{i}}{\eta_{t}})^{2}sin^{2}\theta_{i}} = \sqrt{1-(\frac{\eta_{i}}{\eta_{t}})^{2} -(1-cos^{2}\theta_{i})} cosθt=1sin2θt =1(ηtηi)2sin2θi =1(ηtηi)2(1cos2θi) ,当 η i η t > 1 \frac{\eta_{i}}{\eta_{t}}> 1 ηtηi>1时,式子 1 − ( η i η t ) 2 s i n 2 θ i 1-(\frac{\eta_{i}}{\eta_{t}})^{2}sin^{2}\theta_{i} 1(ηtηi)2sin2θi 就不符合根号内部 > 0,此时没有折射,全反射

3.菲涅尔项 Fresnel

  • 表明反射率和折射率都取决于入射角和光的偏振状态,用于 模拟光线在物体表面的反射行为
  • 反射率取决于入射角
    在这里插入图片描述
  • 数学表达式
    在这里插入图片描述
  • R 是反射率,n1 和 n2 分别是两种介质的折射率

四、Microfacet BRDF 微表面

  • 将物体表面视为由无数微小的、镜面反射 的微表面组成(远处看认为是个平面)
    在这里插入图片描述
  • 当半程向量 h 与法线方向重合时才能沿出射方向反射(粗糙表面半程向量 h 不会完全等于表面的法线 n)
  • 微表面BRDF公式主要由三个部分 : 菲涅尔项 F ( i , h ) F(i,h) F(i,h),遮挡-遮蔽项(自遮挡) G ( i , o , h ) G(i,o,h) G(i,o,h),半程向量(描述微表面法线分布情况) D ( h ) D(h) D(h)
  • f ( i , o ) = F ( i , h ) G ( i , o , h ) D ( h ) 4 ( n , i ) ( n , o ) f(i,o) = \frac{F(i,h)G(i,o,h)D(h)}{4(n,i)(n,o)} f(i,o)=4(n,i)(n,o)F(i,h)G(i,o,h)D(h)

五、Isotropic / Anisotropic Materials (BRDFs)

  • 区分这两种材质的关键在于 表面法线的方向性
    在这里插入图片描述

Anisotropic BRDFs

  • 各向异性材质的表面法线分布存在明显的方向性(例如沿着某个方向排列)
  • BRDF 的值不仅取决于 wi 和 wo 之间的夹角 (i, r),还取决于 wi 和 wo 的具体方向,例如,沿着某个方向的反射强度会更强

六、BRDF的属性

1.非负性

  • BRDF 的值必须大于等于 0 → \rightarrow 反射光线的亮度 ≤ \le 入射光线的亮度 (因为反射光线是由入射光线引起的)
  • f r ( ω i → ω r ) ≥ 0 fr(ω_{i} \rightarrow ω_{r}) \ge 0 fr(ωiωr)0

2.线性

  • 反射光线的亮度与入射光线的亮度成正比 → \rightarrow 入射光线的亮度增加,反射光线的亮度也会相应地增加
  • L r ( p , ω r ) = ∫ H 2 f r ( p , ω i → ω r ) L i ( p , ω i ) c o s θ i d ω i L_{r}(p,ω_{r}) = \int_{H^{2}}^{}f_{r}(p,ω_{i} \rightarrow ω_{r})L_{i}(p,ω_{i})cosθ_{i}dω_{i} Lr(p,ωr)=H2fr(p,ωiωr)Li(p,ωi)cosθidωi

3.可逆性(互易性)

  • 光线在介质中的传播是可逆的
  • f r ( ω i → ω r ) = f r ( ω r → ω i ) fr(ω_{i} \rightarrow ω_{r}) = fr(ω_{r} \rightarrow ω_{i}) fr(ωiωr)=fr(ωrωi)
    在这里插入图片描述

4.能量守恒

  • 对于任何方向 ωr,反射光线的亮度不会超过入射光线的亮度
  • ∀ ω r ∫ H 2 f r ( p , ω i → ω r ) c o s θ i d ω i ≤ 1 {\forall}ω_{r}\int_{H^{2}}^{}f_{r}(p,ω_{i} \rightarrow ω_{r})cosθ_{i}dω_{i} \le 1 ωrH2fr(p,ωiωr)cosθidωi1

5.Isotropic vs. anisotropic

  • 如果是各向同性,那么它 只依赖于两个方向之间的夹角,而不依赖于这两个方向各自的具体方向
  • f r ( θ i , ϕ i ; θ r , ϕ r ) = f r ( θ i , θ r , ϕ r − ϕ i ) f_{r}(\theta_{i},\phi_{i};\theta_{r},\phi_{r}) = f_{r}(\theta_{i},\theta_{r},\phi_{r}-\phi_{i}) fr(θi,ϕi;θr,ϕr)=fr(θi,θr,ϕrϕi)
  • 又因为互易性
  • f r ( θ i , θ r , ϕ r − ϕ i ) = f r ( θ i , θ r , ϕ i − ϕ r ) = f r ( θ i , θ r , ∣ ϕ r − ϕ i ∣ ) f_{r}(\theta_{i},\theta_{r},\phi_{r}-\phi_{i}) = f_{r}(\theta_{i},\theta_{r},\phi_{i}-\phi_{r}) = f_{r}(\theta_{i},\theta_{r},|\phi_{r}-\phi_{i}|) fr(θi,θr,ϕrϕi)=fr(θi,θr,ϕiϕr)=fr(θi,θr,ϕrϕi)
  • 意味着BRDF 的值只取决于入射光线和反射光线之间的夹角 θi 和 θr,以及这两个方向 在水平面上的投影之间的夹角 |φr - φi|
    在这里插入图片描述

七、测量BRDF

  • 可以避免建立复杂的物理模型,并可以准确渲染真实世界材质

一般方法

  • 选择出射光方向 wo: 首先 确定一个出射光方向,即我们想要测量反射光的方向
  • 移动光源: 将光源移动到与出射光方向一致的位置,并照射目标材质
  • 遍历入射光方向 wi: 对于每个可能的入射光方向,将传感器移动到该方向,并测量反射光的强度
  • 重复: 重复以上步骤,直到测量完所有感兴趣的出射光方向和入射光方向组合

提高效率

  • 各向同性表面: 如果目标材质是各向同性的,即反射特性与方向无关,则可以将 BRDF 的维度从 4D 降低到 3D,从而减少测量次数
  • 互易原理: 互易原理表明,BRDF 满足 f r ( ω r , ω i ) = f r ( ω i , ω r ) f_{r}(ω_{r}, ω_{i}) = f_{r}(ω_{i}, ω_{r}) fr(ωr,ωi)=fr(ωi,ωr),即入射光方向和出射光方向互换时,BRDF 的值不变,利用这一原理,可以将测量次数减少一半
  • 巧妙的光学系统: 设计巧妙的光学系统,例如旋转光源和传感器,可以进一步提高测量效率

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

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

相关文章

背部筋膜炎的症状及治疗

背部筋膜炎,也称为胸背肌筋膜炎,主要是由于劳损或风寒湿邪侵入引起的。其典型症状主要包括: 1、疼痛:背部筋膜一旦出现炎症性病变,会对周围交感神经组织产生刺激作用,从而引起不同程度的疼痛症状。 2、僵…

【爱上C++】vector用法详解

文章目录 一:vector简介二:vector的创建和初始化三:vector的遍历1.[]下标2.at()3.迭代器遍历4.范围for 四:vector的空间1.size2.max_size3.capacity4.reserve5.resize6.empty 五:vector的增删查改1.push_back2.pop_back3.find4.insert5.erase6.swap7.assign Hello~同学们好&…

人脸检测(Python)

目录 环境: 初始化摄像头: 初始化FaceDetector对象: 获取摄像头帧: 获取数据: 绘制数据: 显示图像: 完整代码: 环境: cvzone库:cvzone是一个基于…

初识Kettle插件

问题反馈 如有问题可通过微信公众号“假装正经的程序员”反馈 前言 由于kettle设计的特殊性,kettle的处理流程均是通过插件组装的形式来进行工作,因此kettle插件开发是目前kettle二次开发的核心内容。 插件类型 转换步骤插件:在kettle转换…

探索TXE、TC、RXNE标志位在串口通信中的轮询与中断应用

浅谈一下STM32串口中断之TXE,TC,RXNE标志位 之前做一个项目,用到了串口中断,但是对TXE、TC和RXNE标志位的作用和使用方法不是很清楚,导致在调试过程中遇到了一些问题。通过查阅相关资料和实际操作,我对这三个标志位有了更深入的了…

GD 32中断系统实现

1.0 中断的概念 中断:简单来说就是打断的意思,在计算机系统中CPU在执行一个操作的时候,有一个比当前任务更为紧急的任务需要执行,cpu暂停当前任务转而去执行更为紧急任务的操作,执行完更为紧急任务之后再返回来执行原来未执行完的…

FullCalendar日历组件集成实战(18)

背景 有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件&#xff0…

两年经验前端带你重学前端框架必会的ajax+node.js+webpack+git等技术 Day2

前端框架必会的(ajaxnode.jswebpackgit)个人学习心得作业及bug记录 Day2 你好,我是Qiuner. 为帮助别人少走弯路和记录自己编程学习过程而写博客 这是我的 github https://github.com/Qiuner ⭐️ ​ gitee https://gitee.com/Qiuner 🌹 如果本…

LDR6282-显示器:从技术革新到视觉盛宴

显示器,作为我们日常工作和娱乐生活中不可或缺的一部分,承载着将虚拟世界呈现为现实图像的重要使命。它不仅是我们与电子设备交互的桥梁,更是我们感知信息、享受视觉盛宴的重要窗口。显示器在各个领域的应用也越来越广泛。在办公领域&#xf…

物料主数据BAPI 无法写入扩展(增强)字段问题

在使用BAPI_MATERIAL_SAVEDATA 去创建物料时,因为有增强字段。这时候需要通过extensionin 字段 进行赋值。 https://community.sap.com/t5/application-development-discussions/bapi-material-savedata-extensionin-dec-type-dump/m-p/11760099 但是赋值后仍然没…

不用SMTP实现联系表单提交后发信到指定邮箱

不使用SMTP,如何确保联系表单能安全发送至指定邮箱? 尽管SMTP是实现电子邮件发送的常用方法,但有时我们可能希望绕过SMTP,直接通过其他方式发送邮件到指定邮箱。AokSend将探讨如何在不用SMTP的情况下,实现联系表单提交…

基于mmap的读写工具封装案例

文章目录 注意事项C封装示例添加构造函数重载以支持追加模式支持文件大小动态变化异常安全性和资源泄漏预防提供更高级的数据访问接口示例代码改进 在很多高性能应用中,直接使用内存映射文件(mmap)进行文件的读写操作可以显著提高效率&#x…

【C++】stack和queue的模拟实现 双端队列deque的介绍

🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 🌈前言🔥stack的模拟实现🔥queue的模拟实现🔥deque(双端队列)deque的缺陷 🌈为什么选择…

从无计划到项目管理高手,只需避开这两大误区!

在项目管理的过程中,制定计划是不可或缺的一环。然而,在实践中,我们往往会遇到两种常见的误区,这些误区不仅阻碍了计划的有效实施,还可能让我们在追求目标的道路上迷失方向。 误区一:认为没有什么可计划的…

充电桩开源平台,开发流程有图有工具

慧哥充电桩开源平台产品研发流程是确保产品从概念阶段到市场推广阶段的有序进行的关键。以下是对您给出的步骤的详细解释和建议: 设计业务流程: 在这一步,团队需要确定产品的核心功能、目标用户以及如何满足用户需求。进行市场调研,了解竞争…

无线网卡怎么连接台式电脑?让上网更便捷!

随着无线网络的普及,越来越多的台式电脑用户希望通过无线网卡连接到互联网。无线网卡为台式电脑提供了无线连接的便利性,避免了有线网络的束缚。本文将详细介绍无线网卡怎么连接台式电脑的四种方法,包括使用USB无线网卡、内置无线网卡以及使用…

探索企业信用巅峰:3A企业认证的魅力与价值

在现代商业环境中,企业的信用和信誉是其发展的核心要素之一。3A企业认证作为信用评级的最高等级,正在吸引越来越多企业的关注。究竟什么是3A企业认证?它为什么对企业如此重要?本文将深入探讨3A企业认证的独特魅力和巨大价值。 3A企…

使用vue3-treeselect问题

1.当vue3-treeselect是单选时,使用watch监听绑定value,无法监听到值清空 对照后将:value改为v-model,如图 2.使用vue3-treeselect全部清空按钮如何置空select的值,使用watch监听 多选:pageInfo.officeName(val) {// …

mybatis中的标签

在MyBatis中&#xff0c;除了基本的SQL映射功能外&#xff0c;还有许多用于动态SQL构建的标签。这些标签允许我们根据不同的条件和需求构建复杂的SQL语句。主要的动态SQL标签包括<if>, <choose>, <when>, <otherwise>, <trim>, <set>, <…

加密与安全_ 解读非对称密钥解决密钥配送问题的四个方案

文章目录 Pre对称密钥的死穴 - 经典的密钥配送问题什么是非对称密钥非对称密钥解决密钥配送问题的四个方案共享密钥密钥分配中心&#xff08;KDC&#xff09;Diffie-Hellman 密钥交换体系公钥密码体系RSA算法 Pre 对称密钥的死穴 - 经典的密钥配送问题 假设 Alice 和 Bob 两个人…