三維重建基礎【知識點總結】
- rasterization
- volumetric ray-marching
- SfM(Structure from Motion)
- Spherical Harmonics
- 多視圖立體(Multiple View Stereo, MVS)
- 動畫制作專業術語
rasterization
Rasterization,中文通常譯為“光柵化”,是計算機圖形學中的一個關鍵技術,主要用于將三維幾何數據轉換為二維屏幕上可顯示的像素數據的過程。這個過程是實時渲染管道中的關鍵一步,特別是在視頻游戲、CAD設計、虛擬現實等應用中。
柵格化的基本概念
在三維場景中,復雜的模型由許多簡單的幾何形狀(如三角形)組成。光柵化就是將這些三維空間中的幾何形狀投影到二維的圖像平面上,并決定哪些像素應該被繪制以及它們的顏色應該是多少。這一過程可以分為幾個子步驟:
- 投影(Projection):首先,三維模型通過投影變換轉換到二維屏幕上,常見的有透視投影和正交投影。這一步驟確定了物體在最終圖像上的大小和位置。
- 裁剪(Clipping):將投影后位于視錐(view frustum)以外的部分去除,只保留可視部分。
- 三角形設置與遍歷(Triangle Setup and Traversal):將模型簡化為一系列三角形,并為每個三角形計算其邊界框,確定它覆蓋哪些像素。
- 像素著色(Pixel Shading):對于每個確定應被繪制的像素,計算其顏色、紋理坐標、光照效果等屬性。這通常涉及到紋理映射、陰影計算、法線貼圖等高級渲染技術。
- 深度測試和混合(Depth Testing and Blending):為了避免隱藏面的錯誤顯示,會進行深度測試,確保離觀察者更近的物體覆蓋遠的物體。混合則處理透明或半透明對象的顏色疊加。
實現算法
- 投影法:從物方(對象空間)出發,將三角面直接投影到屏幕空間并計算像素顏色。這種方法效率較高,但可能在處理邊緣和細節時精度稍差。
- 光線法:從像方(屏幕空間)出發,模擬光線與物體表面的交點來確定像素顏色。雖然這種方法在理論上能提供更高的精度,但計算成本更高,因此較少用于實時渲染。
GPU的角色
現代圖形處理器(GPU)專門優化了光柵化過程,能夠高效地執行上述步驟,尤其是在處理大量幾何數據和復雜場景時。GPU利用并行處理能力快速遍歷像素和三角形,計算每個像素的顏色值,從而實現實時渲染效果。
總的來說,光柵化是連接三維幾何世界與最終二維顯示圖像的橋梁,是圖形渲染中不可或缺的一環。
volumetric ray-marching
Volumetric Ray-Marching 是一種用于體積渲染的技術,尤其適用于表現諸如煙霧、火焰、云朵等半透明、彌散的介質。與傳統的光柵化或光線追蹤技術不同,體積光追跡是專為處理具有體積的數據而設計的,它能夠精確地模擬光線在不透明度連續變化的介質中的傳播過程。
基本原理
在Volumetric Ray-Marching中,從觀察者的視角出發,向場景中的每一個像素發出一條光線。與傳統光線追蹤每次直接尋找最近的交點不同,體積光追跡是逐步推進的(marching),即光線不是直接射到物體表面停止,而是在進入體積區域后,按照固定的步長或者根據密度場調整步長逐步前進,同時累積沿途中與介質相互作用產生的顏色和透明度信息。
關鍵特點
- 逐步推進(Step-by-step Advancement):光線不是直接尋找到交點,而是按照預定的步長或根據介質密度動態調整步長前進,直到超出體積范圍或達到預設的終止條件。
- 累積貢獻(Accumulation of Effects):每一步,根據當前點的介質密度和光源信息,計算光線的散射、吸收或發射等效果,并累加到最終的顏色上。
- 適合體積渲染:特別適合于沒有明確表面的、連續分布的介質,如氣體、液體中的光影效果模擬。
- Signed Distance Functions (SDFs):常與Ray-Marching配合使用,SDF定義了場景中每個點距離最近物體表面的距離,正負號表示內外,這有助于精確控制光線在體積中的推進。
- 靈活性與藝術控制:藝術家和開發者可以靈活控制體積內部的外觀,通過調整密度函數、光照模型等,創造豐富的視覺效果。
應用場景
● 電影特效與動畫:創建逼真的爆炸、煙霧、水流等自然現象。
● 視頻游戲:在游戲中實時渲染云、霧、火等環境效果。
● 醫學影像:用于可視化人體內部結構,如CT掃描的三維重建。
● 科學研究與可視化:展示流體動力學、氣象模型等科學數據。
技術挑戰
● 性能優化:體積渲染計算密集,特別是在高分辨率下,需要高效的算法和硬件加速。
● 內存使用:體積數據通常占用大量內存,如何有效管理內存是一個挑戰。
● 真實感模擬:模擬真實的物理交互,如散射、吸收、發射,對算法精度要求高。
Volumetric Ray-Marching作為一種強大的渲染技術,隨著硬件能力的提升和算法的不斷優化,其在多個領域的應用前景越來越廣闊。
SfM(Structure from Motion)
3D的SfM(Structure from Motion)是一種計算機視覺技術,用于從一系列二維圖像中恢復并重建三維場景的結構和相機的運動軌跡。這項技術是基于多視圖幾何原理,通過分析不同視角下同一場景的圖像來估計場景中點的三維坐標以及拍攝這些圖像時相機的位置和姿態。以下是SfM技術的關鍵步驟和組成部分:
- 特征提取與匹配:首先,從各個圖像中提取特征點,如角點、邊緣等,并在不同圖像間進行特征匹配。這些匹配點是后續三維重建的基礎。
- 相機姿態估計:利用特征匹配的結果,通過幾何算法(如基礎矩陣、本質矩陣)計算出相機之間的相對姿態(旋轉和平移)。這一過程通常涉及RANSAC(隨機抽樣一致)算法來去除錯誤匹配。
- 三維點云重建:通過三角法或其他算法,結合已知的相機姿態和匹配點對,計算場景中特征點的三維坐標,形成稀疏或稠密的點云模型。
- 捆綁調整(Bundle Adjustment):這是一個優化過程,旨在同時優化所有相機的姿態參數和場景點的三維坐標,使得重投影誤差最小化。這個步驟對于提高整個三維重建的準確性和穩定性至關重要。
- 稠密化與表面重建:在得到稀疏點云后,可以通過各種方法進一步稠密化點云,并構建表面模型,如使用多視圖立體匹配技術或基于機器學習的方法填充空隙,生成精細的三維網格或體素模型。
SfM技術的優勢在于不需要專門的設備,僅需一組普通的二維圖像即可進行三維重建,廣泛應用于考古學、地理信息系統、電影特效、虛擬現實、無人機測繪、機器人導航等領域。然而,它也面臨一些挑戰,如在低紋理區域的特征匹配困難、大尺度重建的精度問題以及對大量計算資源的需求等。
Spherical Harmonics
Spherical Harmonics,即球諧函數,是一組定義在三維空間中單位球面上的復雜函數,常用于表示周期性或具有某種對稱性的函數。它們構成了在球面上的正交完備基,類似于在一維空間中的正弦和余弦函數,或在二維平面上的復指數函數(Fourier級數)。
球諧函數的基本性質和應用包括:
- 數學定義:球諧函數由兩個參數索引,通常是整數l(階數)和m(從-l到l的整數,稱為序數),記作Y_l^m(θ, φ),其中θ是極角(天頂角),φ是方位角(方位角)。它們是Legendre多項式的徑向函數與角度函數的乘積,并滿足球面上的拉普拉斯方程。
- 正交性與完備性:不同階數和序數的球諧函數在單位球面上是正交的,并且作為函數空間的一組基,可以用來展開任何在球面上的平方可積函數。
- 物理與工程應用:
○ 物理學:在量子力學中,球諧函數用于描述原子軌道的形狀,特別是在解決薛定諤方程時。
○ 圖形學:在計算機圖形學中,球諧函數用于高效地表示和處理全局光照,特別是環境光照的預計算和動態物體的光照計算(球諧光照)。
○ 信號處理與數據分析:用于處理具有球對稱性質的數據,例如地球物理數據、醫學成像中的腦部掃描等。 - 可視化:球諧函數的圖形通常展示為具有特定對稱性的模式,隨著階數增加,這些模式變得更加復雜,展現出從簡單的偶極子、四極子到更高階的多極子結構。
- 數學工具:在數學上,球諧函數是研究旋轉對稱性問題的重要工具,也是傅里葉分析在球面上的推廣。
由于其獨特的性質和廣泛的應用范圍,球諧函數在多個學科領域內都是一個重要的數學工具。
多視圖立體(Multiple View Stereo, MVS)
3D的多視圖立體(Multiple View Stereo, MVS)是一種計算機視覺技術,它可以從多個不同視角拍攝的2D圖像中重建出場景的三維幾何結構。MVS是立體匹配概念的擴展,它不僅限于一對圖像,而是利用兩個以上的圖像來估計場景的深度和三維形狀。以下是MVS技術的一些關鍵方面:
- 基本原理:MVS技術依賴于立體匹配的原則,即同一場景點在不同視角下的對應關系。通過對多幅圖像中的對應特征點進行匹配,可以計算出這些點的空間位置。這涉及到解決視差問題,即將不同視圖中同一物理點的投影差異轉換為深度信息。
- 三維重建目標:MVS的主要目標是從一組已知視點拍攝的照片中,估計出最有可能解釋這些照片的三維形狀。這一過程通常假定材料特性、相機視點和照明條件是已知的,盡管實際操作中這些因素往往是未知或需要估計的。
- 技術流程:
○ 特征提取與匹配:首先在各個視圖間找到對應的特征點。
○ 相機校準:確定各相機的內在參數(如焦距)和外在參數(如位置和朝向)。
○ 三維成本體構建:創建一個三維體積,其中每個體素代表場景中某點的可能性或成本,依據視圖間對應特征的匹配質量和幾何一致性。
○ 深度估計與優化:通過分析成本體,估計場景點的深度,并通過優化算法(如 Bundle Adjustment)精化結果,減少誤差。
○ 稠密化與表面重建:將深度圖轉換為點云,進一步處理得到表面模型,如網格或體素模型。 - 深度學習方法:近年來,深度學習技術被引入MVS,如MVSNet,它使用深度神經網絡直接從多視圖圖像中估計深度圖,提高了精度和效率。這類方法通常包含特征提取、成本體構建、深度圖預測和后處理等多個階段。
- 應用:MVS技術廣泛應用于地圖制作、三維建模、虛擬現實、增強現實、文化遺產保護、機器人導航、自動駕駛汽車等領域。
MVS面臨的挑戰包括處理無紋理區域、光照變化、遮擋問題以及大規模場景重建時的計算復雜度和內存需求。隨著算法的進步和計算能力的提升,這些挑戰正在逐步被克服。
動畫制作專業術語
科普幾個有關動畫制作的關鍵詞(可能不是很正確),對于一個動畫人物模型,比如Unity模型,有:
- 頂點(vertex):動畫模型可以看成多個小三角形(四邊形)組成,每個小三角形就可以看成一個頂點。頂點越多,動畫模型越精細。
- 骨骼點:人體的一些關節點,類似于人體姿態估計的關鍵點。每個骨骼點都由一個三元組作為參數去控制(可以查看歐拉角,四元數相關概念)
- 骨骼蒙皮(Rig):建立骨骼點和頂點的關聯關系。每個骨骼點會關聯許多頂點,并且每一個頂點權重不一樣。通過這種關聯關系,就可以通過控制骨骼點的旋轉向量來控制整個人運動。
- 紋理貼圖:動畫人體模型的表面紋理,即衣服褲子這些。
- BlendShape:控制動畫角色運動有兩種,一種是上面說的利用Rig,還有一種是利用BlendShape。比如:生成一種笑臉和正常臉,那么通過BlendShape就可以自動生成二者過渡的動畫。這種方式相比于利用Rig,可以不定義骨骼點,比較方便。
- 蒙皮:將模型從一個姿態轉變為另一個姿態,使用的轉換矩陣叫做蒙皮矩陣。(Linear Blend Skinning算法)
- 頂點權重(vertex weights):用于變形網格mesh
- uv map:將3D多邊形網格展開到2D平面得到 UV圖像
- texture map:將3D多邊形網格表面的紋理展開到2D平面,得到紋理圖像
- 拓撲(topology):重新拓撲是將高分辨率模型轉換為可用于動畫的較小模型的過程。兩個mesh拓撲結構相同是指兩個mesh上面任一個三角面片的三個頂點的ID是一樣的(如某一個三角面片三個頂點是2,5,8;另一個mesh上也必有一個2,5,8組成的三角面片)
- linear blend skinning algorithm
每個關節的數據結構包含:關節名字、骨骼中其父節點的索引、關節的綁定姿勢之逆變換(蒙皮網格頂點綁定至骨骼時,關節的位置、定向及縮放)
參考https://zhuanlan.zhihu.com/p/256358005