前言:在 3D 中製作頭發效果至今仍是個難點,最常用的方法就是使用麵片加上頭發的紋理貼圖。但這種方法難以控製紋理貼圖和擺放麵片物體。 Maya 給我們提供了很好的解決方法,這就是 Paint Effects :不用紋理貼圖,設置簡單,渲染快速,占用更少的內存。
1. 準備
首先要想好一個發型並準備一個多邊形的角色頭部,然後選擇頭部,執行 Modify->Make Live , Create->CV curve tool 。如圖從頭的中後方向前繪製一條曲線,這條曲線決定頭發從哪裏開始分縫。執行 EditCurves->Rebuild curve , Number of spans =9 , degree =3 ,顯示曲線的 CV 點,將曲線命名為 hair_split_curve01 。
複製這條曲線,將第二條曲線命名為 hair_split_curve02 ,並如左下圖所示與第一條曲線分開一點。如右下圖所示在這兩條曲線前端之間橫向繪製一條短曲線,命名為 front_hair_split_curve ,不用太精確, spans 為 2 。將這 3 條曲線調整降低到頭皮的下方。
2. 頭發控製曲線
我們將繪製一係列的曲線粗略的表示頭發的生長方向。選擇頭部, Make Live , CV 曲線工具,從捕捉 hair_split_curve01 前端的第一個點開始,向左繪製大約 4-6 個 CVs 。 CV 點要保證足夠的數量來控製一會兒生成的頭發的形狀(你可以在開始的時候多建幾個點,然後再刪除掉多餘的)。繼續捕捉 hair_split_curve01 上其它的點來繪製曲線。
最終根據你的 spans 數(本篇教程為 9 )你會得到 9-11 條 hair_control_curve (頭發控製曲線),選擇 hair_control_curve ,調整它們的 CV 點以避免不要和頭部相交,並作出發型的形狀出來(這需要一定的耐心,大約要調 30 分鍾左右)。效果如下圖所示。將曲線群組並複製到另一邊,再做一些形狀上的調整。現在根據 front_hair_split_curve 繪製頭發簾的控製曲線,繪製 3 條就行(注意這三條曲線的形狀與左右的曲線形狀要保持連續平滑的過渡)。
3.Paint Effects
下麵我們將添加一些頭發,執行 Paint Effects->Get Brush 進入 Visor ,打開 brushes/hair/ 文件夾,選擇 hairRed1.mel (或其它你喜歡的樣式)。選擇 hair_control_curve01 , PaintEffects->Curve Utilities->Attach Brush to Curves ,這樣會為 hair_split_curve01 創建一個粗糙的毛發效果。在 outliner 中將新建的這個 stroke 命名為 hair_side_stroke01 ,新的筆刷命名為 hair_side_brush 。
在 outliner 中雙擊 stroke 打開屬性麵板,在筆刷頁中,首先調整 Global Scale 值,這個值的大小取決於你的頭部模型的大小,我的角色總共 8cm 高,在這裏將值設為 0.150 。如果你的角色高度為 160cm 的話,值應為 3 。打開 Brush Profiles 找到 Brush Width ,這個值控製從曲線長出的頭發的寬度,將值設為 0.8 (不要將它設的太低,這樣會使你的頭發看上去非常薄)。其他的屬性保持為默認。
現在在 outliner 中再次選擇 hair_side_stroke01 ,並通過 shift 同時選中所有位於頭部一側的 hair_control_curve (左側或右側),執行 Paint Effects->Curve Utilities->Set Stroke Control Curves ,打開 hair_side_brush 屬性麵板, tubes/Behavior/forces 中,將 CurveFollow 設為 1 ,這樣可使頭發沿 hair_control_curve 生長。進入 hair_side_stroke01 ,將顯示質量設為 10 左右(加速顯示更新速度)。
4. 調整 Paint Effects
我們還是從頭發的一側開始。在調整時因為視圖觀察並不準確,所以你將需要大量的渲染測試,我建議你將渲染分辨率調到 320x240 ,並隱藏除了 hair strokes 之外的所有物體來加快渲染速度。
打開 hair_side_brush 設置麵板,將 Tubes Per Step 設為 25 左右(控製頭發的數量,不用很精確)。 Length Min=7 , Length Max=10 。 Tube Width1=0.3 , Tube Width2=0.1 (控製頭發的粗細,如果你將頭發設細,還要適當的增加 Tubes Per Step 的值,來保持頭發的豐滿)。 Segment=64 (控製頭發的圓滑度,這個值會影響渲染時間)。
5. 材質
選擇 hair_side_brush ,打開 Shading/tube shading ,將 color1 設為你頭發根部的顏色, color2 為發梢的顏色。我將其保持為默認值。將 transparency2 設為灰色。 Tip Fade =0.2 (值越高頭發越柔和)。
在 texture 中,選中 map color , Texcolorscale=0 (使用紋理貼圖的顏色)。 Texture type = File , Map method = tube3D ,將 Tex Color1 和 TexColor2 設為白色。然後選擇一張圖作為紋理(如下圖),圖案月不規則越好(製作方法為 hairRed1.mel 筆刷在 2D 畫布視圖中繪製直線,導入到 Photoshop 中縮放塗抹)。
6. 完成
現在我們將 stroke 效果添加到另一側和前端的曲線。
選擇 hair_split_curve02, PaintEffects->Curve Utilities->Attach Brush to Strokes ,當新的 stroke 選中後, shift 選擇所有這一側的 control_curve , PaintEffects->Curve Utilities-> set Stroke Control Curves 。然後選擇新的 stroke 並 shift 選擇 hair_side_stroke01 , PaintEffects->share One Brush (使兩側的頭發共享同一個筆刷)。
選擇 front_hair_split_curve , PaintEffects->Curve Utilities->Attach Brush to Strokes ,將新建的 stroke 命名為 hair_front_stoke 。選擇 hair_side_stroke01, PaintEffects->Get Setting from selected stroke ,然後選擇 hair_front_stroke ,執行 PaintEffects-> apply setting to selected strokes 。現在, hair_front_stroke 的筆刷和 hair_side_brush 相同。下圖為它們在 hypergraph 視圖中的關係。另外你還可以為頭發簾賦予一個不同的頭發紋理。
7. 優化頭發
現在頭發的效果還不甚理想,我們將優化頭發的兩個筆刷使其不僅能夠加快渲染速度,還能使頭發更有立體感而不用通過提高 tubes per step 的值來增加頭發的厚度。
選擇 hair_front_brush ,打開屬性麵板,將 tubesPerStep=10 調低一些,提高寬度值,降低 segments 到 24 。打開 Behavior|forces 麵板, curveAttract = -0.041 (使頭發與控製曲線的位置有一些偏離,而不是很多頭發緊緊粘在一根控製曲線上)。選擇 hair_side_brush ,將 curveAttract 設為 -0.050 。現在你的頭發看起來更自然了。另外在 stroke 調整 seed 值,在 brush/tubes/creation 調整 tube Rand 值,為頭發增添更多的隨機變化
因為我們會理發,所以頭發的分布並不均勻(比如前麵薄後麵厚)。所以我們需要一個 pressure curve 告訴 Paintfx 我們需要在哪裏增加頭發。選擇 hair_side_stroke01 , PaintEffects->CurveUtilities->makePressureCurves/ 選項盒, control points=10 , offset scale=0.05 。如果 Pressure curve 離的太遠或太近,你需要設置一個不同的 offset Scale 。要刪除它,打開 stroke 的 pressure Mapping 麵板,右鍵點擊 pressureMin3 ,刪除表達式,然後刪除 pressure curve 本身。
[page]
如果你得到了一條位於 hair_side_stroke01 附近的合適的 pressure curve ,那麼打開 pressreMapping 麵板, pressureMapping1=tubes Per Step , pressure min1=0.1 , pressureMax1=1 。關閉其它的 pressureMapping 。現在你需要調整 pressureCurve 的 CVs ,提高中間的點增加 hair_side_stroke01 側頭發的厚度,降級兩端的點減少頭發前後的厚度(如果變化不明顯則需調整 pressureMin1 )。
調整滿意後,對 hair_side_stroke02 作同樣的處理。渲染效果如下圖所示。