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}) fr?Li?(ω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?)=H2?fr?Li?(ωi?)cosθi?dωi?=fr?Li?H2?cosθi?dωi?=πfr?Li?
  • 又因為 入射光線 = 出射光線 → \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(ωi??n )n ωo?=?ωi?+2(ωi??n )n (假設 ω o 、 ω i 、 n ? ω_{o}、ω_{i}、\vec{n} ωo?ωi?n 是單位向量)

2.鏡面折射

  • 鏡面折射遵循折射定律,也稱為 斯涅爾定律
    在這里插入圖片描述
  • η i s i n θ i = η t s i n θ t \eta_{i}sin\theta_{i} = \eta_{t}sin\theta_{t} ηi?sinθi?=ηt?sinθ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?=1?sin2θt? ?=1?(ηt?ηi??)2sin2θi? ?=1?(ηt?ηi??)2?(1?cos2θ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?)=H2?fr?(p,ωi?ωr?)Li?(p,ωi?)cosθi?dω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 ?ωr?H2?fr?(p,ωi?ωr?)cosθi?dωi?1

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.pswp.cn/web/42650.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42650.shtml
英文地址,請注明出處:http://en.pswp.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…