為什么電腦打不開word文檔(為什么電腦打不開word文檔可以打開表格)
758
2025-04-04
一、曲面
1.1 Mesh subdivision 網格細分
在計算機圖形學中,網格細分指的是給定已知粗糙表面(由網格構成),通過某種方法生成光滑的表面。為什么需要細分?因為對于簡單模型來說,當紋理的頻率高于模型的面數時,如果直接使用高分辨率的紋理會導致失真(紋理出現拉扯的情況),這時就需要更加精細的模型,由此引入了網格細分。
網格細分本質上往模型引入更多的三角形,它是遞歸的,它通過一定的細分方案重新對原有網格進行劃分,生成更多的面和邊來讓表面變得光滑。同時,它還會根據附近舊頂點的位置計算網格中新頂點的位置,在某些細分方案中,舊頂點的位置也可能會改變。
這是一種針對三角形網格進行細分的方案,主要步驟分為兩步:①添加頂點 ②更新頂點位置
添加頂點
對于每個三角形網格,分別在每條邊的中點上添加頂點,此時會把該網格分成四個三角形。將添加的頂點看做新的頂點,原來的頂點看作舊的頂點,這兩種頂點分別用不同的更新方案對位置進行更新。
更新頂點位置
①新的頂點:
如圖所示,考慮一般情況,假設新的頂點為白點,那么它一定被兩個三角形所共享,分別找到這兩個三角形。設和白點同邊的頂點為 A ,B;不同邊的頂點為 C,D;那么新的點(白點)的更新方案為:
3
/
8
?
(
A
+
B
)
+
1
/
8
?
(
C
+
D
)
3 / 8*(A+B)+1 / 8*(C+D)
3/8?(A+B)+1/8?(C+D)
②舊的頂點:
如圖所示,以白點為例。不考慮新增加的頂點,首先找到它所有相鄰的三角形中舊的頂點,設為 u , n表示白點的度數(在圖論中,一個頂點在圖中的度 (degree)為與這個頂點相連接的邊的數目),白點的更新規則如下:
(
1
?
n
?
u
)
?
o
r
i
g
i
n
a
l
P
o
s
i
t
i
o
n
+
u
?
n
e
i
g
h
b
o
r
P
o
s
i
t
i
o
n
S
u
m
(1-n*u) * originalPosition + u*neighborPositionSum
(1?n?u)?originalPosition+u?neighborPositionSum
originalPosition 表示這個點原來的位置,neighborPositionSum表示相鄰點位置的和。這個公式的意義為:舊的點的更新需要考慮鄰接點和自身的權重,當鄰接點較多時,那么自身的權重就可以減少一些。
Loop Subdivision 適用于三角形網格細分,而 Catmull-Clark Subdivision 更加一般化,適用于非三角形網格。
①定義:
quad face:四邊形面
Non-quad face:非四邊形面
Extraordinary vertex :奇異點(degree != 4,即度不為4的點)
如圖所示: 非四邊形面指的就是沒有四個頂點的面(圖中橙色三角形),奇異點指的是度不為4的點(圖中紫色圓點)
細分規則:
在每個面中添加一個頂點(面的重心),在每條邊中添加一個中點。對于每個面來說,將面中添加的頂點與邊中添加的中點依次連接;得到的結果如圖所示:
由此可以得出 Catmull-Clark Subdivision 的性質:
在進行第一次 Catmull-Clark Subdivision 后,細分前的非四邊形面消失了,且新增了奇異點數,增加的頂點個數為細分前非四邊形的面數。在后續的 Catmull-Clark Subdivision 中,不會再增加奇異點。
頂點更新公式:
Catmull-Clark Subdivision 將頂點分為三類進行更新,分別是 Face point、Edge Point 和 Vertex Point,如圖所示:
1.2 Mesh Simplification 網格簡化
網格簡化指的是通過某種方法,將復雜的網格變得簡單,即減少一部分頂點和面,同時還需要保留原有網格的形狀與外觀。在游戲中,復雜的網格模型往往包含更多的頂點和面,但是如果這個模型距離相機較遠,我們就只需要簡單的包含物體輪廓的模型來顯示。
邊坍縮指的就是將網格中的兩個點捏成一個點,有將某個點合并到另一個點,也有將兩個點合并到他們的中點,如圖所示:
如何選定需要進行坍縮的那條邊呢?這里就引入了二次度量誤差來進行尋找。
本質是使得坍縮后得到的頂點到原本鄰接面的二次誤差最小,而這里的二次誤差采用的就是坍縮后的頂點到原本鄰接面的距離的平方和,所以我們只需要找到使得二次誤差最小的那條邊,對其進行坍縮即可。
需要注意的是每次坍縮會影響鄰接邊的二次誤差,所以需要對鄰接邊的二次誤差進行重排。
因此在工程實現上需要使用優先隊列或者堆結構。
1.3 Mesh Regularization 網格正規化
網格正則化通過修改頂點的位置,讓模型中的三角形更加趨于正三角形(更平滑)。
二、shadow mapping 陰影(光柵化階段)
Shadow mapping 是圖形學中計算陰影的過程。它本質上是一種圖像空間的算法,即在計算陰影的過程中不需要知道場景中的幾何關系。
理解 Shadow mapping 中最核心的一點是:如果物體不在陰影中,那么它肯定能被相機看見且被燈光照射到。此處說的是硬陰影(點光源情況下,邊緣銳利),軟陰影(有過度)后邊會涉及。
陰影按類型可分為硬陰影和軟陰影,硬陰影是由點光源產生的,軟陰影是由范圍光源產生的。
2.1 硬陰影
渲染步驟:
第一步: 從光源處出發,假設光源處有一個相機,計算光源處看向場景的深度,渲染成深度圖保存(記錄看到點的深度);
第二步: 從實際相機(眼睛)出發,計算相機看向場景的深度后,投影回光源處的相機空間(常稱為光源空間),并與第一步得到的深度進行比較。如果第二步得到的深度大于第一步得到的深度,那么說明該點在陰影內,反之不在。
①從光源看
② 記錄深度(Depth buffer/z-buffer)
③真正的相機看到的,對比shadow map和實際深度的關系
→④最終場景
①為什么需要投影回光源空間?
因為兩個相機看到的深度需要處于同一空間下進行比較
②如何將第二步看到的頂點變換到光源空間?
將第二步中得到的處于世界坐標系下的頂點乘以光源空間下的 PV矩陣即可(投影和視角)
③在計算陰影時的比較問題
如圖所示,非綠色部分表示陰影,圖中陰影部分明顯出現了較多的噪聲。這是因為深度緩沖區的深度采用的是浮點表示,而浮點比較會存在精度問題,無法直接判斷相等。
2.2 軟陰影
軟陰影是由范圍光源產生的。相比硬陰影,軟陰影的邊界更加模糊。
軟陰影是由自然中叫penumbra(半影)造成的。
軟陰影一定是因為光源有大小(點光源不可能有軟陰影)
VR視頻 圖像處理 渲染 游戲開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。