作者:Anto Matkovic
翻譯:Hammer Chen
當Softimage推出ICE功能時, 認真的用戶不會再懼怕'multiply vector by matrix'這類的字眼, 因為他們可以開發出頭髮造型系統, 不需要寫任何的程式碼. 對於"火星女警"這個案子, 我利用我自己寫的免費頭髮系統---Kristinka Hair來製作頭髮. 這個系統利用了NURBS表面, 用程序性的方式產生細節. 在斯拉夫語系裡, Kristinka的意思是"親愛的克莉絲汀"或是"小克莉絲汀".
第一步是表面發射器與兩個ICE的點雲(point clouds), 第一步只有很少的導引(guides) ,第二個就會有很多頭髮. 在導引中間有很多的內差計算. 一般來說, 第一個是用來做造型的, 第二個是拿來算圖.
Follow NURBS 2節點的效果, 這個節點會找尋最近的髮根, 然後平滑地在兩個NURBS表面之間產生圖層, 在經過一些微調後, 我得到了大致形狀. 為了要更容易編輯, NURBS附著到有相同拓樸的mesh上面, 然後套用envelope. 到目前為止, 可以開始進行最後的姿勢了!
最後的細節層由"Offset By NURBS"節點所產生. 是用好幾個增加的NURBS表面, 這個用來re-mapping頭髮流向, 操作跟UV編輯很類似, 微調的方式是以"2.5"D的方式調整, 沿著NURBS的表面的UV空間來調整, 就是你在右圖看的圖片, 這個節點也會程序性地產生頭髮的群組.
增加的NURBS表面與"Follow NURBS Lite"節點, 用來產生更有趣味的髮型. 節點有簡化, 只需要一個NURBS表面就可以了, 但如果有好幾個表面也是可以輸入的.
"Curls"節點產生新的圖層, 用在程序性變形上面, 跟常見的程序性節點一樣, 它有很多參數可以調整循環的數量, 波浪的內差, 卷曲...等等 .在這裡我刻意讓循環的啟始點在髮尖的部位.
現在, 我們進入到第二個步驟--- ICE 點雲, 用來處理細節. 我改變了內差, 從髮根的平均分布改成從髮尖開始.
最後的細節: 隨機化頭髮的長度.
再次增加細節, 移動了某些頭髮, 不過還都是用程序性的控制.
現在, 讓我們上材質吧. 火星女警完全是用3delight來算圖的. 3delight是RenderMan相容的算圖器. 我用了常見的打燈設定: 太陽光, 背光, 用20盞等所打的光環做為環境光. 所有的燈光都有很深的shadow maps ,都有開啟diffuse與specular lighting照明. 這樣的設定很容易做調整, 也可以對整個角色做照明, 不只是頭髮而已. 一開始時, 我從手繪的HDR影像轉移了顏色過來 最後我手動調整所有的燈光, 頭髮的透光效果是以背光建立出來的, 具有比較高的shadow bias. 其他所有的光, 我試著用銳利的陰影, 小的bias數值. 根據shadow map的大小所決定, 至於太陽光 shadow map是4096, 背光是2048, 其他光源是1024. 我還用expression設定了每盞光的icon與顏色的顯示.
頭髮表面的材質軟體就有提供(out-of-box) 提供頭髮常見的顏色, 而頭髮陰影的shader. 我用了比較暗的, 比較飽和的顏色. 高光顏色是採用了隨機變化的灰色, 每根頭髮都具有一點點不同的高光強度. 最後, 大約產生了三萬根頭髮, 每根具有約0.15像素的厚度.
Kristinka Hair軟體介紹:
Compounds:
- Hair from NURBS Plus 提供很多選項: 例如髮叢(hair clumping) ,需要"am Hair from NURBS Ctrl"才能正確運作.
- Hair from NURBS Single: 比較簡單, 提供一樣的參數, 但多了hair locks, 主要是用在產生細的NURBS髮條.
- Hair from NURBS Ctrl :只是一個hair locks的產生器, 只有當你使用"for am Hair from NURBS Plus" compound才會需要用到
- Hair from NURBS MotionBlur :用來產生動態模糊
使用方式
- 建立一個空的點雲(point cloud), 輸入"am Hair from NURBS Ctrl" compound, 連接NURBS surface.
- 建立另一個空的點雲, 導入"am Hair from NURBS Plus" compound, 連接第一個點雲NURBS surface 以及你要黏附的mesh.
- 頭髮的基礎是在NURBS surface U邊界, 如果你啟動了NURBS boundary屬性, 在Softimage viewports U boundary會顯示成紅色. 如果頭髮方向無法吻合, 那就切換surface UV .同樣, 檢查NURBS surface法線方向, 這對很多參數都很重要, 髮線必須要與頭模型的法線平行.
[相關文章]