關於CG角色的毛髮,可以說是影視製作流程中的頂級難題之一。最早只是透過貼圖製作角色毛髮,這在當時可以說是十分了不起的嘗試。
20多年過去了,隨著CG技術的不斷進步,毛髮製作也精細了許多。先來康康《玩具總動員》第一部和第四部的角色毛髮對比吧。
《玩具總動員4》
想要讓CG創作的毛髮具有真實感,這背後複雜的解算以及計算量等方面,一直都是CG製作中棘手難題。隨著技術迭代升級,如今藝術家們腦海中CG角色毛髮大都可以活靈活現的呈現。
CG毛髮技術的進步少不了行業人士不斷地探索與學習。來自義大利的資深行業技術講師和大家分享使用Houdini建立高階感的毛髮的教程,讓角色的毛髮時髦起來~一起來學習一下吧~
Denis Zen,有20多年三維製作及講師經驗,參加他課程的學生有很多在全球頂尖的工作室工作,包括迪斯尼、工業光魔、維塔等。
Zen製作的 Grooming 案例
前言
Houdini通常被視為一個解算(模擬)工具,其實是一個功能齊全的DCC軟體,可以做毛髮造型,視效開發,燈光渲染等。在這個教程中,我們會展示毛髮梳理之前和梳理之後的兩種造型,當中會學習到如何使用皮克斯出品的著色器和燈光。
教程會主要介紹毛髮梳理“之後”的版本,因為它結合了Houdini 18的最新技術,包括新的繪畫屬性節點。
PS:感興趣的小夥伴建議下載教程素材檔案,動手學起來(微信公眾號後臺回覆“CG界託尼老師”)
記得要在Houdini開啟檔案之前設定專案(檔案>設定專案。。。),以便讀取$JOB變數,並在專案的tex目錄中找到所有紋理,在geo目錄中找到頭部模型。
Zen使用的頭部模型來自3D SCAN STORE,而且是免費。
Scene Setup 場景設定
首先,將模型匯入到Houdini並且設定一個非常簡單的燈光來檢查Groom。這一點非常重要,因為毛髮非常稀薄,光線與毛髮的互動方式對於造型和視效開發過程至關重要。
第一步(燈光設定將在後面介紹),選擇Pxr環境日光,簡單而寫實的效果是這個燈光的主要特點。
建立一個用於渲染最終幀的新相機也很有用。可以移動透視攝像機拍攝模型。
如圖所示,PxrEnvDayLight非常具有互動性,在主燈光階段可以提供很好的反饋。你只需要調整強度和方向。
要改變光的方向,你可以使用旋轉工具或調整基本控制引數(經度,緯度等)。
Latitude(緯度)
Longitude(經度)
你也可以透過調整Sun Size數值以調整陰影的柔軟度。
Sun size &;gt; 陰影的柔軟度
如圖所示,因為這是一個Omni Lights(全域性光),光線沒有變換,也就是說,燈光放置的位置不會影響結果。
Grooming
對於CG界的髮型師而言(製作寫實毛髮的通則),參考素材是基本的。找到360度的髮型參考素材並不容易,所以Zen搜尋YouTube Beardbrand頻道,那裡每個影片結尾,髮型師會360度展示客戶的髮型,這就是參考素材。
參考素材源自YouTube Beardbrand頻道
Grooming 包括兩個步驟:
1、Guide Styling 引導線造型(毛髮種植的方式)
2、Hair Styling 毛髮造型
Guide styling
Zen喜歡Houdini的程式化工作流程,自帶的梳理工具很棒,但Zen通常更願意使用GroomBear,由Kamil Wacławiak所開發。這個工具很贊,讓你髮型製作的非常快。
你可以輕鬆地無損地烘焙該節點,沒有這個外掛的朋友也可以開啟該場景檔案或使用雲渲染也沒問題。
Zen把Grooming分成不同的部分,給他們不同的引導方向和密度。
Hair 頭髮
Moustache 八字鬍
Beard 絡腮鬍
Eyebrows 眉毛
Eyelashes 睫毛
Nostril hairs 鼻毛
Peach fuzz 絨毛
引導線的造型是關鍵,也是最困難和費時。
下面這一步在Guide Groom節點中操作:
頭頂毛髮引導線設定
這些製作過程並不都是一樣的。Houdini十分有用的工具之一是Guide Advect工具,它使你可以簡單地透過繪製筆觸輕鬆地覆蓋毛髮。
透過速度場來設定引導點
在這個過程中,繼續使用Houdini Grooming工具和GroomBear工具去設計引導線風格。這個過程不是很難,但如果你想做成真實的效果是非常耗時的。
這是最終的樣子:
接下來是為每個部分繪製遮罩。這是Grooming的重要部分,因為它可以讓你使用顏色圖(color maps)控制毛髮的生長方式和位置。
Houdini 18引入了一個新版本的Attribute Paint(繪畫屬性)節點,有了很大改進。
你繪製的遮罩越多,你獲得的控制也就越大。以下是Zen的設定:
在這裡,我們可以在模型上看到一些視覺化內容:
從紅外線顏色圖可以輕鬆檢視細微的密度差異
Hair styling毛髮造型
現在是時候為頭髮做造型了,因此對於每個引導部分,都建立了一個Hairgen Generate節點,新增各種修改器,使頭髮看起來儘可能真實。
每種毛髮造型都是不同的,但大多數情況下最終會使用相同的修改器。區別在於它們的設定和組合。
最常見的修改器是 Clump、 Noise、 Bend 和 Length。
Zen通常從Clump開始,因為它是每個毛髮的靈魂,而且層次是一個關鍵特徵。
你可以用不同的方式設定層次
方法一
你可以使用Clump節點的Clump設定,為每個層次調低數值。
方法二
Houdini Clump節點有一個Fractal Clumping的選項,這個功能很棒。
設定“Fractal Clumping”的數值,你可以使用一個節點來細分發束Clump。
方法三
建立髮束層的另一種方法是將“Hair Generate”節點與“Clump”節點的“Custom Clump Curves(自定義聚集曲線)”相連。這樣你可以得到更多的控制甚至為毛髮/引導線新增修改器:
你也可以用Hair Generate節點製作第一層毛髮。使用這個節點的優勢是,你可以使用節點引數(density密度, masks遮罩等)更好地控制髮束曲線。
為了清楚地視覺化你的髮束,你可以將“Color(顏色)”節點連線到Hairclump節點的第一個輸出(引導線),並分配一個Clumpid變數。
在這之後,Zen使用了一個Noise Modifier (噪波修改器),比如Frizz(毛躁)節點賦予了頭髮很自然的感覺。透過調整它的設定,你幾乎可以得到任何你想要的毛躁效果。
這個節點實現自然的髮型的另一個關鍵特徵:飄逸的毛髮。打造由於乾燥,靜電,護髮產品和其他原因而產生捲曲的毛髮。
要獲得飄逸的毛髮,使用“Mask(遮罩)”選項卡的“Noise Mask(噪聲遮罩)”。將“Gain”設定為1,並調整“Noise Mask Frequency(噪聲遮罩頻率)”和“Bias”設定,以決定你想要的飄逸感:
變化是另一個關鍵特徵,遮罩Masks就尤為重要。用它們來驅動儘可能多的屬性,因為毛髮由大約15萬個獨立的髮束組成,這些髮束根據許多元素(Dirt汙垢,Age年齡,Length長度,Gender性別等)而建立多種樣式。
除了我們剛剛看到的Paint屬性Mask外,幾乎每個Houdini節點屬性都有一個選單,可以讓你選擇不同型別的Mask。
不幸的是,Houdini沒有像Maya中的“噪點”畫筆。因此如果要獲得一些“邋遢”效果,必須從部繪畫應用程式中匯入貼圖。
另一個很棒的修改器Bend(彎曲)節點,和Curve Mask(曲線遮罩)一起結合使用:
設定Effect Position(效果位置)和Range Min(最小範圍) 和Max(最大值),你可以決定哪一部分(紅色)受了影響(選中“Visualize Masks視覺化遮罩”以檢視它)。
關於毛髮真實感的最後一個技巧是Clump節點中的Curl選項。低數值在大多數情況下都能達到很好的效果。
沒有選擇Curl捲曲。注意,製作的毛髮十分規則。
使用Curl捲曲。髮型更自然了。有時候很微妙,但是每個細節都很重要。
我們也可以在八字鬍和鬍鬚上應用同樣的技術。唯一的區別在於修改器的設定,因此你要發揮創意!
這是最終的效果:
Lighting and Shading 燈光和著色
現在我們得到了想要的髮型,現在是時候新增一些燈光並開始為模型著色了。
燈光設定非常重要,因為它可以讓你檢查頭髮的流動和外觀。如果你想轉盤渲染(render a turntable),那麼你的模型要360度完美呈現。
Zen通常從三點布光開始(Key,Fill,Back)並新增其它的燈光,確保良好展示所有角度:
為了更好地理解燈光是怎樣影響你的模型,每次只使用一個燈光。
Houdini網格分佈:
Shop通常是建立著色器的地方。
在建立最終著色器之前,Zen通常使用兩個簡單的灰色著色器:淺灰色的用於頭髮,深灰色的用於面板。
有了這些,可以快速檢查模型的毛髮和色調的差異,顯示髮型的空洞或其它一些問題。直到你滿意了,才建立最終的。
RenderMan著色器顏色在“Scene View(場景圖)”中不可見,並且應用在模型中顯示為灰色。為了克服這個問題,必須在材料網路中構建原生的Houdini材質:
點選Scene View工具欄的Texture圖示以視覺化材質:
如果無法看到著色器的應用,關閉當前的“Scene View”並開啟一個新的:
然後建立一個簡單的面板著色器。。。在這裡就不作深入講解啦~本文只是讓大家瞭解Zen如何使用Houdini製作毛髮。
幸運的是,3D Scan Store的模型都帶紋理,你需要在連線紋理之前轉換成。tex檔案格式。最簡單的方法是使RenderMan Texture Manager(紋理管理器),它可以為你處理所有的紋理轉換。
你還可以使用 txmake,它位於 $rmantree / bin 中。
貼圖轉換的一個快速技巧是開啟一個空的命令提示符,將txmake可執行檔案拖放到cmd視窗中(而不是編寫路徑),然後拖放要轉換的紋理。
要快速儲存新的tex檔案,請在cmd視窗中拖動紋理兩次,併為最後一個新增。tex副檔名。
一旦轉換了紋理,建立一個RIS Shader Network(單擊RenderMan選項卡中的圖示),然後進入新建立的網路,建立一個PxrSurface材質。
在這個節點中你可以建立你的材質。
如圖所示,Zen將最終材質分為兩部分,一部分是BXDF,另一部分是Displacement,它們透過Collect節點連線在一起,PxrSurface處理表面著色,PxrDisplace處理幾何著色。
作為一名Groomer,Zen不會花很多心思處理著色器,因為視效開發人員通常會在製作中完善它,所以Zen簡單地將對映(Diffuse漫反射,Specular高光,Normal法線等等)連線輸入,並調整一些常規的著色器設定。
請注意,修飾之前的模型面板看起來不夠清爽,當油漬和汙漬覆蓋面板時,會發生這種情況。你可以使用高光貼圖和數值進行調整。
準備好將其應用到模型中,將其載入到Geo節點的Render Tab的材質引數中:
對於頭髮,Zen製作了四個不同的著色器以實現之前說的變化:
如圖所示,每個著色器由兩部分組成:Pxr Hair Color和Pxr Marschner Hair。
PxrHairColor是Melanin-besed黑色素樣式,所以我們可以透過數值讓頭髮從金色變成黑色:
另一個需要特別注意的設定是Hair ID Primvar,每一個髮束都有一個獨特的值。如果hairIndexPrimvar數值為空,隨機選項不會發揮作用。
看看它們之間的區別:
PxrMarschner毛髮著色器可以處理毛髮的物理著色。透過更改高光設定(Primary主要,Secondary次要和Transmit透射),你可以從光澤/溼潤的外觀變為柔和:
對於髮色,以下有很好的文件資源:
PxrHairColor:
https://
rmanwiki。pixar。com/disp
lay/REN23/PxrHairColor
PxrMarschnerHair:
https://
rmanwiki。pixar。com/disp
lay/REN23/PxrMarschnerHair
Rendering 渲染
現在可以渲染模型了,Groomer的任務通常還會包含一個360度的轉盤渲染,小夥伴們可以嘗試旋轉相機,這樣比較節省時間。通常Zen會這樣操作:
·建立一個空物件Null Object;
·把它放在模型的中心;
·動畫旋轉360度;
·將渲染相機作為“動畫化的空物件 Animated Null”(已與燈光作為父項)的父項。
該空物件驅動這一切:
在為燈光設定父物件之前,記得檢查保持燈光的位置,避免它們錯位。
Render Settings渲染設定
建立一個RIS節點,轉到Out Network,按Tab並從下拉選單中選擇 RenderMan:
單擊剛剛建立的RIS節點,以在Parameter Pane Tab中訪問其設定(或按P鍵)。
Samples取樣
已著色的毛髮渲染起來非常耗時,你必須特別注意設定,特別是Sampling(取樣)。Zen做了很多測試,以下這些數值是速度和質量之間的良好折衷:
噪波在影象的較暗部分中更為明顯。要消除它,您可以減小Pixel Variance或增加Maximum Samples:
最後,你可以在燈光設定的“高階”選項卡中增加“Light Samples”:
使用這些設定,噪波更小,光線取樣更清晰,但渲染時間也隨之更長。
渲染通道Render Passes(AOVs & LPEs)
要想增加照片逼真度,每個影象渲染後要進行後期處理,如果不想費勁處理渲染設定,可以選擇多通道渲染,然後在Nuke合成最終效果。
在“Out Network”選擇要儲存的渲染通道,選擇RIS節點,然後在“Parameters Pane Tab”中選擇“Images(影象)”:
這些是Zen通常用於合成的通道:
·Standard: z (depth)
·Lighting: albedo, directDiffuse, directSpecular, indirectDiffuse, IndirectSpecular, subsurface
新增渲染通道不會增加渲染時間,因此可以隨意選擇所需的渲染通道,並將渲染檔案另存為OpenEXR(。exr)檔案格式。
Compositing 合成
最後~使用Nuke修改影象。
產生逼真的首個基本效果是景深。儘管DOF在後期中並不像在渲染中那樣完美,但很多時候在後期中做會更好,因為:
耗時
不能改變主意
使用z(Depth深度)通道十分輕鬆,可以在幾秒鐘內確定影象的焦點在哪一部分。
只需建立一個 ZDefocus 節點:
選擇你要的焦點放置focal_point;
將Math設定為Direct(或任何其他選項);
調整景深(影象的焦距);
尺寸和最大值(示效果要多強烈)。
如果將滑鼠游標停在字域的值上,Nuke會顯示相應的解釋。
要使用其他通道,你必須使用Shuffle節點從。exr檔案中提取它們:
選擇合適的通道後,你需要選擇遮罩作為顏色分級。
現在,你可以應用Nuke Color Correction(顏色校正)節點獲得最終外觀。以下是Zen用來校正影象的簡單網路:
這是其中一種結果:
Conclusion 總結
教程中涵蓋了Groom到渲染的主要步驟,希望給各位小夥伴們提供一些新的思路。瞭解了Grooming的過程後,你可以將其中的思路應用到其他地方:例如 XGen、YETI 或者Ornatrix 等一些主流的產品。
素材源自RenderMan及網路