我們不是做元宇宙的公司----《計(jì)算機(jī)圖形學(xué)入門》學(xué)習(xí)筆記分享
為什么“不是做‘元宇宙’的公司”?
最近經(jīng)常遇到這樣的情景:
“你們公司是做什么的?”
“我們是做線上虛擬空間,&%&¥#¥%R&$%#%...”
“哦,你們做的就是那個(gè)元宇宙啊?!?/p>
“我們做的事跟“真正的元宇宙”有一定的關(guān)系,但其實(shí)我們覺得關(guān)系并不大?!?/p>
作為從業(yè)者,我們相信元宇宙、web3.0確實(shí)是未來,但目前硬件、軟件和應(yīng)用場景都還不成熟,至于什么時(shí)候能成熟,在我們這一代能不能成熟,我們并不知道,現(xiàn)階段的“元宇宙”,還只是一個(gè)初期概念。
當(dāng)下熱衷于“元宇宙”概念的個(gè)人或者企業(yè),目的不外乎:綁定熱點(diǎn)提高知名度,提升形象拉高產(chǎn)品或服務(wù)的售價(jià),借勢概念炒高估值或股價(jià)。
但對于我們這樣一個(gè)年輕的團(tuán)隊(duì),從創(chuàng)立之初我們就決定靠自身的核心競爭力去做有門檻的事,在市場上站著把錢掙到,并且在這個(gè)前提下做好了長期發(fā)展的規(guī)劃和準(zhǔn)備,概念的紅利,我們確實(shí)不需要
不做元宇宙,那我們在做些什么?
靈境至維專注為品牌和藝術(shù)活動(dòng)打造開放和連接的線上虛擬空間。每一個(gè)虛擬空間包含可漫游的3D虛擬空間、虛擬形象,多媒體內(nèi)容、社交網(wǎng)絡(luò)和多樣化的互動(dòng)內(nèi)容,這些虛擬空間相互連通,形成完整的虛擬社區(qū)和世界。

掃碼可進(jìn)入OPPO MWC World虛擬空間
我們會(huì)用到的技術(shù)包括:虛擬空間、虛擬人、3D視覺、平面視覺、游戲引擎、云服務(wù)器、云渲染、各種名交互技術(shù)等,為我們服務(wù)的客戶解決真實(shí)的痛點(diǎn)和問題,為品牌和用戶創(chuàng)造價(jià)值。
去年底我們上線了國內(nèi)首個(gè)具有虛擬世界體驗(yàn)的基于Web的線上虛擬科技大會(huì)——OPPO未來科技大會(huì),活動(dòng)為期2天,線上空間訪問量超過200萬,活動(dòng)結(jié)束后2個(gè)月,空間訪問量仍有近50萬。在未來我們將提供包括針對會(huì)議活動(dòng)、音樂節(jié)、藝術(shù)展和線上社區(qū)等多種不同場景類型的虛擬空間服務(wù)。
相較于追逐熱點(diǎn),我們更熱衷于追求知識(shí),享受用知識(shí)去實(shí)現(xiàn)理想和夢想的過程,并堅(jiān)信一定可以實(shí)現(xiàn)。當(dāng)我們的才華撐不起我們野心的時(shí)候,靜下心來學(xué)習(xí)是我們唯一的選擇。
計(jì)算機(jī)圖形學(xué)基礎(chǔ)內(nèi)部學(xué)習(xí)分享
計(jì)算機(jī)圖形學(xué)跟當(dāng)下的許多技術(shù)和熱點(diǎn)息息相關(guān),游戲、影視、設(shè)計(jì)建模、計(jì)算機(jī)圖形界面、AR、虛擬人、動(dòng)漫等等,我們用戶做虛擬的空間的“實(shí)時(shí)渲染”這塊要想做好,需要知其所以然,這個(gè)學(xué)科就是基礎(chǔ)。
這是我們內(nèi)部的一次學(xué)習(xí)分享,分享人是靈境至維團(tuán)隊(duì)的前端主程,學(xué)習(xí)內(nèi)容是加州大學(xué)圣芭芭拉分校閻令琪教授在GAMES平臺(tái)上開設(shè)的《GAMES101: 現(xiàn)代計(jì)算機(jī)圖形學(xué)入門》課程(點(diǎn)擊可跳轉(zhuǎn)至觀看完整課程),分為22講,總時(shí)長約28小時(shí),根據(jù)課程內(nèi)容以及分享人的個(gè)人理解,將分為以下7個(gè)主要部分來進(jìn)行分享。
這門課程是國內(nèi)應(yīng)該是首個(gè)講底層原理的課程(之前只有國外),非常感謝閻令琪教授為這個(gè)領(lǐng)域在中國計(jì)算機(jī)圖形學(xué)發(fā)展做出的貢獻(xiàn)。
以下就是這次課程分享的內(nèi)容實(shí)錄:
一、圖形學(xué)概述
這部分主要介紹計(jì)算機(jī)圖形學(xué)的一些基礎(chǔ)概念。
1. 什么是計(jì)算機(jī)圖形學(xué)(CG)?和計(jì)算機(jī)視覺(CV)、數(shù)字圖像處理(DIP)有什么區(qū)別?
事實(shí)上,圖形學(xué)發(fā)展到現(xiàn)在,內(nèi)容已經(jīng)變得十分豐富,與很多學(xué)科都有交叉,目前并沒有一個(gè)很好的定義能夠準(zhǔn)確解答這個(gè)問題。
因此這里從數(shù)據(jù)處理的角度出發(fā),說一下圖形學(xué)與幾種相似學(xué)科的區(qū)別,便于大家理解。
首先,圖形學(xué)是一種將二維或三維的圖形數(shù)據(jù),經(jīng)過一系列數(shù)學(xué)算法,轉(zhuǎn)化為顯示設(shè)備上柵格圖像的科學(xué),核心概念是由數(shù)據(jù)到圖像,其主要應(yīng)用領(lǐng)域有電子游戲、影視、設(shè)計(jì)建模、計(jì)算機(jī)圖形界面等。
計(jì)算機(jī)視覺則與之正好相反,是通過給定的圖像,提取其中的信息,轉(zhuǎn)化為計(jì)算機(jī)可分析的數(shù)據(jù),核心概念是由圖像到數(shù)據(jù),主要應(yīng)用領(lǐng)域有人臉識(shí)別、無人駕駛等。
數(shù)字圖像處理則是一門將圖像轉(zhuǎn)成數(shù)字信號,由計(jì)算機(jī)處理的科學(xué),核心概念可以大致理解為由圖像到圖像,主要應(yīng)用領(lǐng)域有圖片美化、航天航空、顯微圖像分析等。
2. 圖形學(xué)有哪些子領(lǐng)域?
這里根據(jù)中科大教授劉利剛老師2013年發(fā)表的一篇文章為參考,將圖形學(xué)的主要研究領(lǐng)域分為建模、渲染、動(dòng)畫、人機(jī)交互,這門課主要涉及到前三種領(lǐng)域,重點(diǎn)介紹了圖形學(xué)渲染基礎(chǔ)。其中渲染根據(jù)渲染速度可分為實(shí)時(shí)渲染和離線渲染;根據(jù)風(fēng)格可分為真實(shí)感渲染(也叫基于物理的渲染)和非真實(shí)感渲染(NPR)。
3. 為什么要學(xué)計(jì)算機(jī)圖形學(xué)?
這個(gè)問題的答案就因人而異了,但歸根結(jié)底都是為了讓顯示的視覺效果達(dá)到賞心悅目的程度。

二、線性代數(shù)基礎(chǔ)
這部分主要介紹了學(xué)習(xí)圖形學(xué)所需的一些線性代數(shù)基礎(chǔ),其中主要是利用向量和矩陣,對數(shù)據(jù)進(jìn)行變換操作。
1. 向量
一個(gè)同時(shí)具有大小和方向,且滿足平行四邊形法則的幾何對象。
1.1 單位向量
指長度為1的向量

1.2 向量加法

1.3 向量點(diǎn)乘
性質(zhì):滿足結(jié)合律和分配律和交換律
笛卡爾公式:

幾何意義:

1.4 向量叉乘
性質(zhì):滿足結(jié)合律和分配律,但不滿足交換律
笛卡爾公式

幾何意義:求法線的內(nèi)外方向

2. 矩陣
Wiki:將一些元素排列成若干行,每行放上相同數(shù)量的元素,就是一個(gè)矩陣
2.1 矩陣乘法
性質(zhì):滿足結(jié)合律和分配律,但不滿足交換律
矩陣與矩陣相乘(A的列數(shù)必須等于B的行數(shù))

矩陣與向量相乘

2.2 轉(zhuǎn)置矩陣

2.3 逆矩陣

2.4 正交矩陣(wiki)
性質(zhì):矩陣轉(zhuǎn)置等于矩陣的逆

幾何意義:
行(列)之間兩兩正交,因此各個(gè)行(列)可表示為坐標(biāo)系的坐標(biāo)軸,通常用于表示線性變換。
三、圖形渲染管線
圖形渲染管線是實(shí)時(shí)渲染的底層工具。其最主要的功能就是根據(jù)一個(gè)虛擬的相機(jī)、3D的物件、光照等信息,渲染生成一個(gè)2D的圖片。
管線根據(jù)概念大致可分為四個(gè)階段(非標(biāo)準(zhǔn),以RRT書中為參考):
應(yīng)用階段(課程中沒有提及);
幾何處理階段;
光柵化階段;
像素處理階段。
需要注意的是,其中每個(gè)階段本身通常又可分為幾個(gè)小的階段。以下分別對這四個(gè)階段進(jìn)行梳理。
1.應(yīng)用階段
跟之后的幾個(gè)階段需要硬件參與的情況不同的是,應(yīng)用階段是全部通過軟件實(shí)現(xiàn)的,軟件開發(fā)者對這一階段有完全的控制。這一階段執(zhí)行的功能通常有:碰撞檢測、輸入檢測、動(dòng)畫等。
在應(yīng)用階段的結(jié)尾,CPU會(huì)將模型數(shù)據(jù)傳遞給GPU,這一過程被成為Drawcall。
2.幾何處理階段
幾何處理階段的主要目的是將3D空間的數(shù)據(jù)轉(zhuǎn)化到屏幕空間上,其中最主要的步驟就是MVP變換
2.1模型變換(Modeling Transformation)
模型變換的目的是將需要處理的幾何體頂點(diǎn)/法線數(shù)據(jù)統(tǒng)一到世界坐標(biāo)系下,這個(gè)過程主要會(huì)應(yīng)用到上一章節(jié)提到的線形代數(shù)的知識(shí)。
齊次坐標(biāo)(引入齊次坐標(biāo)的目的是為了將仿射變換統(tǒng)一到一個(gè)矩陣中)

縮放矩陣

平移矩陣

旋轉(zhuǎn)
- 繞坐標(biāo)軸旋轉(zhuǎn)

- 繞任意軸旋轉(zhuǎn)(羅德里格旋轉(zhuǎn)公式)

2.2視圖變換(View/Camera Transformation)
視圖變換的目的是規(guī)范化相機(jī)在世界空間下的位置和朝向。當(dāng)然,如果只移動(dòng)相機(jī)而不移動(dòng)物體,則會(huì)導(dǎo)致相機(jī)與物體的相對位置發(fā)生變化,因此在變換相機(jī)的同時(shí),也要改變物體。
規(guī)范相機(jī)矩陣

以右手坐標(biāo)系為例,需要將相機(jī)位置e移到原點(diǎn),相機(jī)朝向g正對z軸負(fù)方向,相機(jī)頂部t正對y軸正方向,g與t的叉乘方向?yàn)閤軸正方向。然而按照這個(gè)思路很難做變換矩陣,因此需要巧妙借用正交矩陣的特性:轉(zhuǎn)置矩陣=逆矩陣,進(jìn)行逆變換:

經(jīng)過視圖變換的相機(jī)與物體如圖

2.3 投影變換(Projection Transformation)
投影變換的目的就是將三維坐標(biāo)投影成二維,其中涉及兩種類型:正交投影和透視投影。
正交投影的視圖體通常為一個(gè)矩形框,正交投影將其轉(zhuǎn)成一個(gè)單元立方體。其主要特點(diǎn)就是變換后平行線要依然保持平行。這種變換是平移和縮放的組合。

透視投影比較復(fù)雜,它的視圖體是一個(gè)截錐。應(yīng)用透視投影會(huì)讓物體有現(xiàn)實(shí)世界中“近大遠(yuǎn)小”的現(xiàn)象。求透視矩陣的思路是先將其轉(zhuǎn)化為正交投影,再進(jìn)行求解。那么目的就是找出透視轉(zhuǎn)化正交的矩陣,這里直接貼結(jié)論

求出轉(zhuǎn)化矩陣后,還有個(gè)問題,轉(zhuǎn)化后的正交矩陣的top、bottom、left、right怎么求呢?

3.光柵化階段
經(jīng)過幾何變換步驟,頂點(diǎn)已經(jīng)能夠投影到屏幕上了。而光柵化的目的則是將空間中連續(xù)的坐標(biāo)離散化為屏幕上一個(gè)個(gè)的像素點(diǎn)。其主要步驟可以分為:
1)使用包圍盒等算法求出圖像區(qū)間;
2)使用叉乘或漸進(jìn)增量等方法對像素進(jìn)行遍歷,求幾何內(nèi)部的點(diǎn)。
這個(gè)步驟也會(huì)產(chǎn)生一些問題,例如圖像的“鋸齒”問題,其生成原因是由于信號的采樣頻率跟不上圖像變化,業(yè)界目前也有一些相對可行的優(yōu)化算法,例如:MSAA(模糊邊界超采樣)、FXAA(基于數(shù)字圖像處理優(yōu)化)、TAA(基于上一幀對比數(shù)據(jù)優(yōu)化)。

4.像素處理階段
像素處理階段分為著色階段和合并階段,課程中主要對著色進(jìn)行了講解,而著色的目的就是計(jì)算出每個(gè)采樣像素點(diǎn)的顏色是多少并將結(jié)果儲(chǔ)存起來,要考慮的因素通常有:光照、著色頻率、紋理。
4.1光照模型
當(dāng)光照射到物體表面時(shí),物體對光會(huì)發(fā)生反射、透射、吸收、衍射、折射、和干涉,其中被物體吸收的部分轉(zhuǎn)化為熱,反射、透射的光進(jìn)入人的視覺系統(tǒng),使我們能看見物體。為模擬這一現(xiàn)象,我們建立一些數(shù)學(xué)模型來替代復(fù)雜的物理模型,這些模型就稱為光照模型。
光柵化技術(shù)的特點(diǎn)是只能考慮單個(gè)像素的顏色值,而不能考慮這個(gè)像素受其它像素影響的光照部分?;诖说墓庹漳P捅怀蔀榫植抗庹漳P?,課程中介紹了現(xiàn)階段比較常用的一種局部光照模型——BlinnPhong光照模型。
BlinnPhong光照模型主要由三部分組成:Diffuse(漫反射)、Specular(高光)、Ambient(環(huán)境光)。

Diffuse

Specular

Ambient

4.2著色頻率
知道光照模型等式后,還需要了解模型上每個(gè)著色點(diǎn)的分布,這里就需要引入著色頻率的概念,常見的著色頻率有三種:Flat Shading、Gouraud Shading、Phong Shading。分別對應(yīng)以下三種樣子:

從左到右的算法消耗依次增加,需要注意的是,Phong Shading雖然可以讓模型表面看上去更為光滑,但是卻解決不了地面模型邊界棱角的問題。
4.3紋理(Texture)
解決了光照模型和著色頻率的問題后,我們已經(jīng)能夠模擬光線照到物體上的現(xiàn)象了,那么接下來如何描述物體本身的復(fù)雜材質(zhì)呢?這里就要引入紋理的概念了,紋理就是使用預(yù)處理的數(shù)據(jù)(大多數(shù)是圖片)豐富3D表面的表現(xiàn)。
如何將2D紋理對應(yīng)到3D模型的表面上?
通過UV(紋理坐標(biāo))來實(shí)現(xiàn),實(shí)現(xiàn)上UV通常都是通過3D設(shè)計(jì)工具(如c4d、blender)實(shí)現(xiàn)的。
非頂點(diǎn)位置的屬性值如何計(jì)算?
插值,插值的實(shí)現(xiàn)主要用到重心坐標(biāo)。

屏幕分辨率和紋理分辨率不一致怎么處理?
- 當(dāng)1屏幕像素 < 1紋素(texel),也就是紋理圖片不夠清晰,會(huì)產(chǎn)生鋸齒現(xiàn)象,此時(shí)通常使用線形插值的做法進(jìn)行優(yōu)化。通常的算法有Nearest、Bilinear、Bicubic。
- 當(dāng)1屏幕像素 >1紋素(texel),也就是紋理圖片過于清晰(通常出現(xiàn)在場景遠(yuǎn)處),會(huì)產(chǎn)生摩爾紋現(xiàn)象。常用的解決方案有Mipmap、Anisotropic Filtering、EWA(橢圓加權(quán)平均)過濾。

部分紋理類型。
- 漫反射紋理

- 環(huán)境紋理

- 凹凸/法線紋理

- AO(環(huán)境遮擋)紋理

5. 圖形渲染管線作業(yè)

四、幾何圖形
正如渲染的目的是要將一個(gè)三維物體渲染成2D的畫面,幾何圖形部分的研究目的就是如何通過數(shù)學(xué)工具表示各種三維物體。

1. 表示形式
幾何的數(shù)學(xué)表示形式可分為隱式表示和顯示表示兩種:
1.1 隱式表示
隱式表示則是不通過笛卡爾坐標(biāo)來表示幾何圖形,例如:
Algebraic surface(代數(shù)曲面)

Constructive solid geometry (構(gòu)造實(shí)體幾何)

SDF(有距離函數(shù))

Level Set(水平集)

Fractals(分形)

隱式表示優(yōu)點(diǎn)在于根據(jù)給定點(diǎn)與隱式公式間的大小關(guān)系,可以很方便知道點(diǎn)是否在幾何體的內(nèi)部。缺點(diǎn)則是不方便進(jìn)行采樣。而顯示表示的優(yōu)缺點(diǎn)則與之相反。
1.2 顯示表示
顯示表示則通常有以下類型
Point Cloud(點(diǎn)云)

Polygon Mesh(多邊形網(wǎng)格)

The Wavefront Object File (.obj) Format

2. 曲線和曲面
構(gòu)造復(fù)雜幾何體最核心的問題是表示復(fù)雜的曲線和曲面。其中常見的算法有Bézier、B-splines、NURBS。課程中著重介紹來Bézier曲線與Bézier曲面。
2.1 Bézier曲線
屬性

幾何表示(de Casteljau Algorithm(德卡斯特里奧算法))

代數(shù)表示(伯恩斯坦多項(xiàng)式)

多段貝塞爾曲線如何保持平滑?
1)三點(diǎn)一線
2)兩邊長度相等

2.2 Bézier曲面
曲面無非就是將曲線進(jìn)行升維,在做插值的時(shí)候多考慮一維的信息。

3. 網(wǎng)格處理
網(wǎng)格指的是三維多邊形網(wǎng)格模型,以下簡稱為“網(wǎng)格”。簡單來說,可以給網(wǎng)格下一個(gè)簡單定義:由多邊形集合定義的,用以表示三維模型表面輪廓的拓?fù)浜涂臻g結(jié)構(gòu)稱為“網(wǎng)格”,英文稱作“polygon mesh”或“mesh”。
而我們在項(xiàng)目中使用網(wǎng)格模型時(shí),經(jīng)常會(huì)存在面過多或者過少的情況,這時(shí)就需要對網(wǎng)格進(jìn)行處理,常見的網(wǎng)格處理形式分為三種:Mesh subdivision(網(wǎng)格細(xì)分)、Mesh simplification(網(wǎng)格簡化)、Mesh regularization(網(wǎng)格規(guī)范化)。
3.1 網(wǎng)格細(xì)分
網(wǎng)格細(xì)分則是將相對低面的模型轉(zhuǎn)化為多面。

目前常見有兩種實(shí)現(xiàn)算法:1. Loop細(xì)分:針對三角面的細(xì)分方式,將一個(gè)三角面轉(zhuǎn)化為四個(gè)三角面。2.Catmull-Clark細(xì)分:針對任意形狀的細(xì)分,經(jīng)過一次細(xì)分可將原本不是四邊的面轉(zhuǎn)化為四邊面。
3.2 網(wǎng)格簡化
網(wǎng)格簡化則是將相對高面的模型轉(zhuǎn)化為低面。

目前比較常見的算法是基于二次度量誤差
二次度量誤差(QEM,quadric error metric)指的是當(dāng)前頂點(diǎn)到其鄰域所有三角面(也稱關(guān)聯(lián)平面)的距離平方和。過程:
1)統(tǒng)計(jì)所有參與邊折疊的邊
2)計(jì)算所有頂點(diǎn)的QEM(v),計(jì)算所有邊的QEM(e)=QEM(v1)+QEM(v2)
3)根據(jù)QEM(e)的排序找到最小的QEM(e)的邊
4)折疊該邊并找到最優(yōu)的QEM的新頂點(diǎn)v’,刪除v1,v2,和相關(guān)face,更新v’的QEM為QEM(v1)+QEM(v2),更新相關(guān)聯(lián)的QEM(e)
5)重復(fù)3)、4)直到要求達(dá)到要求。
3.3 網(wǎng)格規(guī)范化
這塊課程中只是簡單提及,通過查資料了解到是與3D重建等技術(shù)相關(guān),游戲這塊用的并不多。

五、光線追蹤
之前在圖形渲染管線板塊有介紹BlinnPhong光照模型,其中有提到這種局部光照模型沒辦法處理全局光線傳播的效果,而現(xiàn)實(shí)世界中的場景是經(jīng)過無數(shù)次光線傳播再傳入人眼的。因此,要想渲染出更加逼真的效果,就需要引入光線追蹤的算法。
顧名思義,光線追蹤算法中對于光線的定義是非常重要的,這里圖形學(xué)中采用的是幾何光學(xué)的定義,主要把光線做了以下定義:
1)光線是沿直線傳播的;
2)光線間不發(fā)生碰撞;
3)光線到觀察點(diǎn)的路徑是可逆的。
根據(jù)第三點(diǎn)光路可逆的法則,我們就可以把光線的起點(diǎn)定在人眼(攝像機(jī)),以此來描述光線追蹤的步驟。
1. Ray Casting
從攝像機(jī)想投影平面的每一個(gè)像素點(diǎn)發(fā)出一條射線,通過射線尋找與物體的交點(diǎn),再將交點(diǎn)與光源進(jìn)行連線判斷交點(diǎn)是否在陰影中。

2. Recursive (Whitted-Style) Ray Tracing
Ray casting的過程仍然是局部的,那么如何引入全局概念呢?這里就用到了經(jīng)典的Whitted-Style路徑追蹤算法。算法中定義每一個(gè)交點(diǎn)的顏色貢獻(xiàn)是由直接光照、間接反射光照和間接折射光照(可能)組成的,將這些部分進(jìn)行權(quán)重累加,再使用BlinnPhong模型進(jìn)行著色,則得到投影平面上最終點(diǎn)的顏色。

3. 光線表示方程
將每條光線想象成一條射線,則這條射線由三部分組成:
起點(diǎn) - o
方向 - d
發(fā)射出去的時(shí)間(長度)- t

4. 光線求交
4.1 與隱式表面求交

4.2 與顯示表面求交

更快的求交方法(M?ller Trumbore Algorithm)

補(bǔ)充信息
光線追蹤這塊這篇文章寫的非常詳細(xì):https://blog.csdn.net/qq_38065509/article/details/106299336?spm=1001.2014.3001.5502
4.3 加速結(jié)構(gòu)
遍歷每一個(gè)面求交點(diǎn)的性能消耗是非??植赖模铀俚拇篌w思路就是不直接遍歷面數(shù),而是使用包圍盒等算法進(jìn)行加速。
軸對齊包圍盒


有了包圍盒還不夠,我們還可以對場景進(jìn)行分區(qū),常見的分區(qū)算法有以下幾種
Oct-Tree(八叉樹):每次都切割八份

KD-Tree:每次都沿軸線切割一次

BSP-Tree:按一定算法沿任意軸切一刀

BVH(推薦):在KD-Tree的基礎(chǔ)上以包圍盒為單位進(jìn)行分割
BVH的一些優(yōu)化:每次都分割最長的邊、分割點(diǎn)以中心物體為參照、當(dāng)節(jié)點(diǎn)中包含很少的物體時(shí)則停止。

5. 現(xiàn)代光線追蹤算法
上面描述的whited-style光線追蹤模型雖然將全局光線傳播的算法引入到光照模型中,但仍然不夠準(zhǔn)確,原因有二:
1)光線傳播中只考慮當(dāng)前交點(diǎn)反射和折射出去的光線,而沒有追蹤漫反射的光線;
2)著色采用的還是BlinnPhong這個(gè)經(jīng)驗(yàn)?zāi)P?,無法精確的模擬真實(shí)物理的現(xiàn)象。
針對以上的問題,我們就要引入真實(shí)的物理概念來定義光線追蹤的現(xiàn)象,因此就有了基于物理的渲染(PBR),而輻射度量學(xué)就是這樣一套測量光線能量的學(xué)科。
5.1 輻射度量學(xué)
一些比較重要的物理概念:
Radiant Energy(輻射能):表示能量,單位:J(焦耳)。
Radiant flux(輻射通量/功率):單位時(shí)間的輻射能量,單位:W(瓦特)/ lm(流明)。
Radiant intensity(輻射強(qiáng)度):每單位立體角的輻射通量,單位:W·sr?1。
Irradiance(輻照度)*:入射表面的輻射通量(不帶方向)(從所有方向到達(dá)某一點(diǎn)的能量之和),單位:W·m?2。
Radiance(輻射率)*:每單位立體角每單位投射表面的輻射通量(帶方向),單位:W·sr?1·m?2。

5.2 雙向反射分布函數(shù)(BRDF)
直觀的理解,不同物體表面材質(zhì)自然會(huì)把一定方向上的入射亮度反射到不同的方向的光線上,如理想光滑表面會(huì)把入射光線完全反射到鏡面反射方向,其它方向則完全沒有。如理想粗糙表面會(huì)把入射光線均勻的反射到所有方向。因此所謂BRDF就是描述這樣一個(gè)從不同方向入射之后,反射光線分布情況的函數(shù),定義如下:

5.3 反射方程

5.4 渲染方程

5.5 如何解出渲染方程(蒙特卡洛積分)
當(dāng)一個(gè)積分很難通過解析的方式得到答案的時(shí)候可以通過蒙特卡洛的方式近似得到積分結(jié)果。

5.6 真實(shí)照片(左)與基于物理渲染的效果(右)的對比

六、材質(zhì)與外觀
這一章主要介紹以下一些基于物理的常見材質(zhì):
Diffuse/Lambertian Material

Glossy Material

Ideal reflective/refractive Material

Microfacet Material

Anisotropic Material(各向異性材質(zhì))

七、動(dòng)畫與模擬
1. 圖形學(xué)中的動(dòng)畫分類
1.1 Keyframe animation(關(guān)鍵幀動(dòng)畫)

1.2 Physical simulation(基于物理的模擬)
Mass Spring System(彈簧質(zhì)點(diǎn)系統(tǒng))

1.3 運(yùn)動(dòng)學(xué)(Kinematics)
Forward Kinematics

Inverse Kinematics

1.4 Rigging

1.5 Motion Capture

2. 動(dòng)畫相關(guān)的算法
2.1 單粒子模擬
常微分方程(ODE)

歐拉方法

剛體模擬

流體模擬


3. 動(dòng)畫制作流程

《我們不是做“元宇宙”的公司》今后將成為一個(gè)圍繞“虛擬空間”主題進(jìn)行專業(yè)知識(shí)分享的系列內(nèi)容,不定期在靈境至維公眾號推出,歡迎大家掃碼關(guān)注,希望你能在這里看到想要的內(nèi)容!

(掃碼關(guān)注“靈境至維”)
轉(zhuǎn)載請?jiān)谖恼麻_頭和結(jié)尾顯眼處標(biāo)注:作者、出處和鏈接。不按規(guī)范轉(zhuǎn)載侵權(quán)必究。
未經(jīng)授權(quán)嚴(yán)禁轉(zhuǎn)載,授權(quán)事宜請聯(lián)系作者本人,侵權(quán)必究。
本文禁止轉(zhuǎn)載,侵權(quán)必究。
授權(quán)事宜請至數(shù)英微信公眾號(ID: digitaling) 后臺(tái)授權(quán),侵權(quán)必究。




評論
評論
推薦評論
暫無評論哦,快來評論一下吧!
全部評論(0條)