虚幻学习4---制作实时逼真的毛发【笔记】
文章僅供個人學習使用,內容來源于:
https://www.unrealengine.com/zh-CN/blog/realistic-hair-and-fur-with-unreal-engine-get-the-white-paper
正文:
一、前言
毛發和流體可以并稱為CG制作中的兩個大難題,這兩者涉及到的計算資源都是很恐怖的。簡單的制作毛發不難,但如果涉及到角色的運動,則其數量龐大,計算量會很大。不光只有運動部分,還要求有真實感。要想讓毛發有真實效果,就必須模擬毛發下面肌肉的運動[1]。
其次,關于毛發的長短、粗細、顏色等等,還有毛發間的碰撞和摩擦等計算。不同環境下的毛發狀態,如光照、陰影或者水、風等因素。
下面的內容主要來源于虛幻的白皮書,基于實時渲染的高真實度 Groom: 虛幻引擎中的毛發運用。
我們能夠一眼認出毛發的獨特光澤,是因為發絲本身擁有獨特的半透明與反光屬性,而且容易形成發束并卷曲在一起。
創建計算機生成(CG)毛發的最大難點在于如何瞞過肉眼。但是由于計算機處理能力有限,在完成耗時良久的渲染流程之前,CG美術師通常無法看到CG毛發的最終色彩、場景環境中的陰影,或是頭發對光照和運動的反應。渲染結束后,還需要進行微調,然后再次渲染。因此,要制作精美的CG毛發,整個流程通常費時費力。 所以在虛幻中推出了可以實時渲染毛發的功能。
這個白皮書主要介紹實時渲染毛發的流程。
二、 DCC應用中的毛發
虛幻中的毛發是在Maya、3ds Max或Houdini等數字內 容創作(DCC)應用中創建的。毛發會附著在人臉或動物模型等多邊形表面上。
用于制作毛發的常用工具包括XGen、Yeti和Ornatrix等DCC插件,還有Houdini所包含的Hair Utils工具。除了毛發之外,這些工具也能制作鳥類的羽毛。
在DCC應用中完成毛發的設置后,就可以將其導入到虛幻引擎中,以進行實時渲染。
2.1?術語(與制作CG毛發有關):
毛發導線、引導曲線(Guide hair,guide curve):代表一組毛發發絲樣條類型的圖元。
毛發工具包括了操控毛發導線的機制,能夠確定最終毛發(插值毛發)的表現——插值毛發的形狀取決于和最近的引導曲線的加權平均距離,其長度通常由引導曲線的長度決定。
毛發和導線的關系見下圖:
控制頂點(Control vertices):- 引導曲線上會放置一個或多個控制頂點,以便在曲線上控制該點。毛發導線上的控制頂點數量越多,毛發導線的形狀就更為精確。然而,控制頂點的增多會增加處理時間,從而降低性能。
圖片來自于[2]。
造型 (Styling)- 沿著特定的方向對毛發導線或插值毛發進行推拉、塑形和卷曲等操作,使CG毛發更符合參考圖片。
Groom - 定義毛發生長和自然毛發屬性的過程,此外還包括毛發的造型過程。其中包括了設置發絲的厚度及卷曲聚叢的傾向。由此產生的設置及保存設置的文件被稱為Groom文件。在DCC應用中,使用毛發導線和參數設置就能實現Groom。
2.2?Groom工作流程
這個過程發生在DCC應用中,此時模型尚未導入到虛幻中。作為起點,先使用一組毛發導線來確定形狀,然后會在網格體區域中創建體積。可以使用Groom筆刷定位、雕刻和縮放可塑性的引導曲線,?Groom筆刷可以卷曲、修剪甚至移除毛發。
渲染毛發的色彩可以通過材質參數或毛發采樣的紋理確定。
程序化造型:
DDC應用中的毛發工具包括各種程序化造型參數,用來調整毛發導線或插值毛發的效果。這些參數的名稱與現實生活中的發型設計術語類似,比如修剪(trim)、卷曲 (curl)和卷發(frizz)。每個程序都有相關的一個或多個數值,以表明毛發導線或發絲的相對變動程度。
- 修剪(trim)值會限制毛發導線或插值毛發的長度。
- 卷曲(curl)設置會獲取卷曲的數量和范圍,并相應地執行。
- 鬈曲(frizz)或噪點(noise)會根據輸入的數值,使曲線的控制頂點位置隨機化。
對于此類參數,控制頂點的數量會直接影響到曲線可以支持的細節程度。由于復雜的形狀需要大量的控制頂點,也許需要經常重建曲線,才能確保控制頂點在整根毛發中均勻分布。
密度與厚度:
渲染帶有毛發的圖片時,系統需要在每個像素中渲染多根可見的發絲。
人類的頭部長有數十萬根發絲——在虛幻里,人類發型的合理發絲數量大約為5萬根——每根發絲的平均直徑約為100微米(動物毛皮的發絲數量和平均直徑會根據動物不同而不同)。
最適宜的Groom會找到密度與厚度的平衡點,在真實感和性能之間把握平衡。
聚叢:
聚叢是毛發自然發生的現象,常見于發束、單獨卷曲或潮濕的毛皮。添加聚叢水平的主要目的是為較大的形體增添細節、變化和層次,以獲得更為逼真的外觀。
在CG中,聚叢算法(?)會在渲染期間將發絲的尖端拉扯到一 起,由此打造出這種效果。
為了讓毛發產生層次效果和自然結構,聚叢又被細分成三個等級:大聚叢、中聚叢和小聚叢,也可以將其稱為主要聚叢、次要聚叢和三級聚叢。主要聚叢是主要的毛發發絲集群,從中會衍生出次要聚叢和三級聚叢。
何時使用這些額外的聚叢并沒有固定規則,一切都要看對應的參照物。現實中的聚從效果往往細節豐富,(因此)要完全獲得參照圖片中的效果會十分困難。最好先從較大的聚叢結構入手,然后再著手處理更細微的聚叢效果,直到整體結構符合參照圖片中的效果。
程序化與人工方法:
程序化方法會使用參數(修改器、表達式)來放置毛發,并設置一根或多根毛發的卷曲和長度等屬性。
人工方法與之相反,需要手動放置毛發,并使用鼠標刷對單根或小群毛發進行雕刻,以匹配參照物。
2.3?Groom最佳實踐
參照:
要獲得最出色的逼真度,最好的方法莫過于尋找參照物并仔細觀察細節。收集高清圖片可以確保纖細發絲和微妙層次等特寫細節能夠清晰展現。尋找能夠覆蓋多個角度的參照是重中之重,因為它們能夠透露Groom的綜合體積與形狀。
從多個不同的來源選擇有趣的結構并結合參考,就能創造出基于現實而又獨一無二的Groom。在Groom設計流程中, Groom設計師可以將關鍵參照圖片分作主要參照,將其他參照圖片作為次要參照。
假如Groom包含大量方向性變化,則可以在平面圖像中勾勒出變化方向。這一技巧能夠加快進程,讓你更快地將引導曲線布置在正確的區域中。
生長網格體:
生長網格體的作用就是 “生成”毛發。將Groom導入虛幻引擎時,就能將Groom綁定在主要網格體的皮膚上。
三、?虛幻引擎中的毛發實時渲染
虛幻引擎主要執行優化、渲染、模擬以及毛發LOD的生成,以及有限的造型控制。
3.1?優化
就基于發絲的毛發系統而言,高密度的Groom可以包含數十萬甚至百萬根發絲,每根發絲也會包含數十個控制頂點。這兩點共同構成了導入、渲染和模擬的性能影響因素。
在影片特效等離線渲染流程中,通常會參照真實世界中的(毛發)密度和寬度來盡可能營造真實感。但在實時渲染中,雖然也可以一開始參照就現實中的密度和寬度,以求盡可能還原參考資料中的效果,但通常最后都需要對性能進行評估并進行優化。
優化時可以先從控制頂點的數量入手。如果毛發短而直,就可以大幅減少控制頂點。
然后就是優化密度和寬度。首先將密度減半,將寬度調整為兩倍,并根據需要重新評估。在選取人類毛發的平均寬度時,通常可以先從0.008厘米開始,而發際線處、鬢角處和散落的纖細發絲通常會使用更低的寬度值。通常來說,在降低密度的同時,最好通過提高寬度作為補償,直到在性能與真實性之間取得平衡。
但是如果資產距離攝像機非常近,這種方法未必能夠奏效,因為寬度將看起來不夠真實。
導入流程(略)
Groom資產編輯器(略)
表面附著(略)
3.2 皮膚形變
當皮膚表面形變時,附著在表面上的發絲可能會縮緊或是移動到不自然的位置上。
睫毛、眉毛或胡須等精細的Groom有時可能難以渲染出真實感,因為它們都是由纖細的發絲在不平坦的皺縮皮膚表面上構成的。
為了解決這些問題,Groom可以選用全局形變約束。即使皮膚嚴重形變,這一約束也能迫使毛發盡可能地保留原狀。一組徑向基函數(RBF)會在附著的骨骼網格體的多個點位進行預運算,然后在運行時應用,以維持原本的Groom位置。
3.3 光源近似
在現實中,我們看見的毛發色彩會受到許多因素的影響:毛發本身的色彩、光線照射的方式、光的折射與散射,以及其他發絲折射的光線對其產生的影響。
發絲既有反光性,也有透光性。部分光線會被發絲直接反射,形成光澤和高光;其他光線則會被發絲吸收,隨即散射。
光線照射到毛發的發絲時發生的情況:
被發絲吸收的光線有兩種散射方式:可以直接從發絲的另一側射出,也可以在發絲內反彈后射出。這兩種光線散射方式 被稱為“纖維散射”,以表示毛發獨特而復雜的外觀。這個現象眾所周知,名為“雙向散射分布函數”( Bidirectional Scattering Distribution Function)的數學函數也對此進行了充分描述。
早期的CG毛發著色方式會嘗試模擬光線照射到毛發時的物理效果,雖然效果確實非常逼真,但對計算的要求巨大,渲染時間極長。然而,一些較快的“捷徑”運算已經被開發出來,其效果已經非常接近于真實的物理效果。虛幻引擎使用了眾多近似手段,使得實時渲染時也能得到逼真的毛發效果。
以雙重散射(dual scattering)近似為例,該方法會將復雜的散射現象分解成兩個部分:
- 全局散射會粗略/宏觀地評估光線穿過纖維/毛發的方式;
- 局部散射會通過簡單的模型評估光線在單根纖維周圍的反彈。
與計算每個光源在一系列毛發上產生的效果相比,計算雙重散射效果所需的時間會大幅減少,所獲得的效果卻與其他運算密集型的方法相似。
另一種能夠在近似表現毛發真實感時節省時間的方法是使用深度不透明貼圖(deep opacity maps)。
密度體積(略)
渲染(略)
模擬(略)
四、用MetaHuman Creator制作人類毛發
MetaHuman Creator是一款基于云服務的應用,能幫助任何人在幾分鐘內創建照片級逼真的數字人類。MetaHuman包含完整的綁定,可在虛幻引擎項目中用于制作動畫。
在創建出滿意的MetaHuman后,可以通過免費的Quixel Bridge應用將其下載。
之前成功申請到了搶先版體驗的名額,現在可以直接制作。
內容中有很多不太了解的知識和相關名詞,還需要繼續學習。
[1]?http://www.360doc.com/content/19/1103/08/39548115_870776196.shtml
[2] 海飛絲頭發的研究和實現?https://gameinstitute.qq.com/community/detail/132949
總結
以上是生活随笔為你收集整理的虚幻学习4---制作实时逼真的毛发【笔记】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 区间直觉模糊集相似度及matlab应用
- 下一篇: 蓝桥杯杨辉三角形java