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.mfbz.cn/a/782500.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python - 文件 / 永久存储:pickle / 异常处理

一.文件 利用help(open)可以看到open()函数的定义: >>> help(open) Help on built-in function open in module _io:open(file, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone) 默认打开模式是’rt’&#xff0…

王者荣耀与和平精英的语音识别不准确怎么办?分享一次意想不到的解决经历!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 完整经历 📒🔍 问题初现 🔍🔎 排查之路:从绝望到希望的转折 🔎🎉 顿悟时刻:原来是“她”的恶作剧 🎉⚓️ 相关链接 ⚓️📖 介绍 📖 作为一位打字速度惊人的玩家,我向来自豪于能在王者荣耀和和平精英等游戏…

Three.js机器人与星系动态场景(四):封装Threejs业务组件

实际在写业务的时候不会在每个组件里都写几十行的threejs的初始化工作。我们可以 将通用的threejs的场景、相机、render、轨道控制器等进行统一初始化。同时将非主体的函数提到组件外部,通过import导入进组件。将业务逻辑主体更清晰一些。下面的代码是基于reactthre…

DHCP与TCP的简单解析

目录 一、DHCP 1.1 DHCP概述 1.2 DHCP的优势 1.3 DHCP的模式与分配方式***** 1.3.1 DHCP的模式:C/S模式(客户机与服务器模式) 1.3.2 DHCP的分配方式 1.4 DHCP的租约过程及原理 1.4.1 DHCP的工作原理***** 1.4.2 更新租约原理***** …

智慧校园-基础平台功能总体概述

智慧校园基础平台是现代教育信息化的核心,它集成了系统管理、基础数据、系统监控、系统工具、流程管理等关键功能,构建了一个全面、智能、安全的校园生态系统。系统管理部分,通过权限管理和用户管理,实现了对用户访问权限的精细化…

使用qt creator配置msvc环境(不需要安装shit一样的宇宙第一IDE vs的哈)

1. 背景 习惯使用Qt编程的童鞋,尤其是linux下开发Qt的童鞋一般都是使用qt creator作为首选IDE的,通常在windows上使用Qt用qt creator作为IDE的话一般编译器有mingw和msvc两种,使用mingw版本和在linux下的方式基本上一样十分简单,不…

warning: GOPATH set to GOROOT (D:\go) has no effect

warning: GOPATH set to GOROOT (D:\go) has no effect gopath 设置一下,并且不要和 goroot 设置成同一个目录

【carla】ubuntu安装carla环境

我们可以通过查看 CARLA 的 GitHub release 页面来找到最新版本的下载链接。 下载 CARLA 压缩包 访问 CARLA Releases 页面: CARLA Releases on GitHub 查找最新版本: 找到最新的版本,点击下载,第一个压缩包 3. 解压 CARLA 包&…

在先企业字号被申请注册成商标!

今天一网友联系普推商标知产老杨,说自己注册的商标被某公司无效宣告了,去年联系老杨时,当时就给说这个商标名称存在风险,与别人的字号权存在高度近似,而且是同行业同地区在后面注册的。 十几年前某公司先成功注册成字号…

AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界

AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界 MetaGPT 以一条需求作为输入,并输出用户故事/竞争分析/需求/数据结构/API/文档等。内部而言,MetaGPT 包含产品经理/架构师/项目经理/工程师等角色。它为软件…

树目标、抓过程、要结果

一个好的管理理念不会因为一两个成功案例而发扬,一定是有无数个案例验证了它的价值所在,既然OKR在国外已经取得成功,那么国内依然如此。那么OKR这么成功,它到底好在哪呢? 一、OKR是连接企业战略和落地执行的最佳方式。…

ftp服务

1.什么是FTP FTP(文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。tcp协议&a…

1.2 如何让机器说人话?万字长文回顾自然语言处理(NLP)的前世今生 —— 《带你自学大语言模型》系列

本系列目录 《带你自学大语言模型》系列部分目录及计划,完整版目录见:带你自学大语言模型系列 —— 前言 第一部分 走进大语言模型(科普向) 第一章 走进大语言模型 1.1 从图灵机到GPT,人工智能经历了什么&#xff1…

【3GPP核心网】【5G】精讲5G核心网系统架构主要特征

目录 前言 1. 5G核心网系统架构主要特征 1.1 5G核心网与4G核心网EPC区别 1.2 5G核心网系统架构主要特征 2. 5G网络逻辑架构 2.1 新型基础设施平台 2.2 逻辑架构 前言 首先需要理解核心网的角色定位,作为移动通信网络的核心部分,核心网起着承上启下的作用…

阶段三:项目开发---大数据开发运行环境搭建:任务3:安装配置Hadoop集群

任务描述 知识点:安装配置Hadoop 重 点: 安装配置Hadoop 难 点:无 内 容: Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威…

JS进阶-作用域

学习目标: 掌握作用域 学习内容: 作用域局部作用域全局作用域作用域链JS垃圾回收机制拓展-JS垃圾回收机制-算法说明闭包变量提升 作用域: 作用域规定了变量能够被访问的"范围",离开了这个"范围"变量便不能被…

批量爬取B站网络视频信息

使用XPath爬取B站视频链接等相关信息 分析B站html框架获取内容完整代码 对于B站,目前网上的爬虫大多都是使用通过解析服务器的响应来爬取想要的内容,下面我们通过使用XPath来爬取B站上一些想要的信息 此次任务我们需要对B站搜索到的关键字,并…

本地多卡(3090)部署通义千问Qwen2-72B大模型提速实践:从龟速到够用

最近在做文本风格转化,涉及千万token级别的文本。想用大模型转写,在线的模型一来涉及数据隐私,二来又不想先垫钱再找报销。本地的7-9B小模型又感觉效果有限,正好实验室给俺配了4卡3090的机子,反正也就是做个推理&#…

Python falsk 接口挂载 步骤

Python falsk 接口挂载 步骤 1.首先要有自己独立的python环境,因为如果和别人共用环境的话,会有依赖包冲突的情况 2.找到python.exe的安装路径 3.CMD切换到该路径下 4.执行指令activate,进入到专属的python环境 5.然后执行指令 pip freeze > re.tet…

CentOS 7遗忘了root密码怎么办?

正文共:666 字 12 图,预估阅读时间:1 分钟 说来也巧,突然发现使用KVM在部署CentOS时(笔记本电脑安装CentOS系统),会有一个神奇的现象,还不是偶然出现的,在最近的三四次部…