Games101学习笔记 Lecture17 Materials and Appearances

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.mzph.cn/web/42650.shtml

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

相关文章

博客标题:C++中的继承:构建面向对象的基石

目录 ​编辑 引言 继承的基本形式 示例1:基本继承 继承的类型 示例2:不同类型的继承 多重继承 示例3:多重继承 继承与多态性 示例4:继承与多态 结论 结尾 引言 在面向对象编程(OOP)中&#xff…

【持续集成_03课_Linux部署Sonar+Gogs+Jenkins】

一、通过虚拟机搭建Linux环境-CnetOS 1、安装virtualbox,和Vmware是一样的,只是box更轻量级 1)需要注意内存选择,4G 2、启动完成后,需要获取服务器IP地址 命令 ip add 服务器IP地址 通过本地的工具,进…

新手教学系列——crontab 使用不当引发的服务器性能问题

起因及症状 最近,我们的一台服务器随着运行时间的增加,逐渐出现了压力过大的问题。具体表现为数据库连接数飙升至 4000+,Redis 频繁超时,系统报错文件打开数过多等。针对这些问题,我们逐一检查了数据库连接池、Redis 连接池以及系统的 ulimit 配置,但都未能找到问题的根…

第241题| 确定极限中参数问题 | 武忠祥老师每日一题

解题思路:确定极限中的参数的方法是求这个极限;求极限根据类型选方法。 形可以用到三种方法:洛必达,等价,泰勒。 先观察题目,将看成一个整体,同时,并令,整理之后如下: 这里也要想办…

mysql怎么调整缓冲区大小

MySQL中调整缓冲区大小是数据库性能优化的重要一环。缓冲区大小直接影响了数据库的读写性能和响应速度。以下是一些常见的MySQL缓冲区及其调整方法: 一、InnoDB缓冲池(InnoDB Buffer Pool) InnoDB缓冲池是InnoDB存储引擎用来缓存表数据和索…

代码随想录第7天 454 、 383 、15、18

代码随想录第7天 454. 四数相加 II 思路就是先统计nums1和num2各个元素之和出现的次数&#xff0c;然后遍历num3和nums4各个元素之和&#xff0c;看其相反数是否在map中&#xff0c;若在加上出现次数 class Solution { public: int fourSumCount(vector<int> &num…

nginx.conf配置文件

1、全局模块 worker_processes 1; 工作进程数&#xff0c;一般设置成服务器内核数的2倍&#xff08;一般不超过8个&#xff0c;超过8个反而会降低性能&#xff0c;一般是4个&#xff0c;1-2个也可以&#xff09; 处理进程的过程必然涉及配置文件和展示页面&#xff0c;也就是…

高斯过程的定义

高斯过程 1. 高斯过程的定义2. 协方差矩阵的构建3. 协方差矩阵的性质3.1. 计算挑战3.2. 解决方法 1. 高斯过程的定义 高斯过程可以看作是对函数的分布&#xff0c;它假定任何有限数量的函数值的集合服从一个多元高斯分布。给定输入数据点集合 { x 1 , x 2 , … , x n } \left…

2024.7.9作业

1、提示并输入一个字符串&#xff0c;统计该字符串中字母、数字、空格以及其他字符的个数 #include <stdio.h> #include <string.h> int main(int argc,const char *argv[]) { char arr[30]{0}; int zm0,kg0,sz0,qt0; printf("请输入字符串&…

OpenStack是一个开源的云计算平台

OpenStack是一个开源的云计算平台&#xff0c;由多个组件组成&#xff0c;这些组件协同工作&#xff0c;提供包括计算、网络、存储和身份服务在内的基础设施即服务(IaaS)。OpenStack最初由NASA和Rackspace合作开发&#xff0c;目的是创建一个开放源代码的云操作系统。 OpenSta…

智慧光伏一站式解决方案

光伏电站智慧化管理平台&#xff0c;将现代先进的数字信息技术、通信技术、互联网技术、云计算技术、大数据挖掘技术与光伏技术高度融合而形成。可以满足光伏企业对电站的高发电量、低初始投资、低运维成本等需求&#xff0c;从开发到运维的25年生命周期内&#xff0c;实现高收…

使用clion刷leetcode

如何优雅的使用clion刷leetcode 安装插件&#xff1a;LeetCode Editor) 插件配置&#xff1a; 这样我们每打开一个项目&#xff0c;就会创建类似的文件 我们的项目结构&#xff1a; 我们在题解文件中导入头文件myHeader.h并将新建的文件添加到cmakelists.txt文件&#xff0c;…

2024前端面试真题【JS篇】

DOM DOM&#xff1a;文本对象模型&#xff0c;是HTML和XML文档的编程接口。提供了对文档的结构化的表述&#xff0c;并定义可一种方式可以使从程序中对该结构进行访问&#xff0c;从而改变文档的结构、样式和内容。 DOM操作 创建节点&#xff1a;document.createElement()、do…

hnust 1965: 深度优先搜索

hnust 1965: 深度优先搜索 题目描述 输入一个图&#xff0c;用邻接矩阵存储&#xff08;实际上也可以选择邻接表&#xff09;&#xff0c;并实现DFSTraverse操作。 拷贝前面已经实现的代码&#xff0c;主函数必须如下&#xff0c;完成剩下的部分。 int main() { Graph g; Cre…

RTOS系统 -- 调试大法之FreeRTOS在M4上实现coredump功能

FreeRTOS内核崩溃&#xff08;coredump&#xff09;及异常打印技术 技术背景 在嵌入式系统中&#xff0c;FreeRTOS是一款广泛使用的实时操作系统。FreeRTOS本身并不包含默认的coredump机制&#xff0c;但我们可以通过自定义异常处理函数来实现异常打印和coredump功能。通过捕…

了解PPO算法(Proximal Policy Optimization)

Proximal Policy Optimization (PPO) 是一种强化学习算法&#xff0c;由 OpenAI 提出&#xff0c;旨在解决传统策略梯度方法中策略更新过大的问题。PPO 通过引入限制策略更新范围的机制&#xff0c;在保证收敛性的同时提高了算法的稳定性和效率。 PPO算法原理 PPO 算法的核心…

Oracle数据库自带的内置表和视图、常用内部视图

文章目录 一.Oracle数据库自带的内置表和视图1.dba_开头表2.user_开头表3.v$开头表4.all_开头表5.session_开头表6.index_开头表 三.按组分的几组重要的性能视图1.System的over view2.某个session的当前情况3.SQL的情况4.Latch/lock/ENQUEUE5.IO方面的 分类类别关系群集、表、视…

【docker 把系统盘空间耗没了!】windows11 更改 ubuntu 子系统存储位置

系统&#xff1a;win11 ubuntu 22 子系统&#xff0c;docker 出现问题&#xff1a;系统盘突然没空间了&#xff0c;一片红 经过排查&#xff0c;发现 AppData\Local\packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\ 这个文件夹竟然有 90GB 下面提供解决办法 步…

Spring-AOP(二)

作者&#xff1a;月下山川 公众号&#xff1a;月下山川 1、什么是AOP AOP&#xff08;Aspect Oriented Programming&#xff09;是一种设计思想&#xff0c;是软件设计领域中的面向切面编程&#xff0c;它是面向对象编程的一种补充和完善&#xff0c;它以通过预编译方式和运行期…

【课程总结】Day13(下):人脸识别和MTCNN模型

前言 在上一章课程【课程总结】Day13(上):使用YOLO进行目标检测,我们了解到目标检测有两种策略,一种是以YOLO为代表的策略:特征提取→切片→分类回归;另外一种是以MTCNN为代表的策略:先图像切片→特征提取→分类和回归。因此,本章内容将深入了解MTCNN模型,包括:MTC…