이 튜토리얼은 Maya에서 PaintEffects의 Hair제작방법을 순서적으로 설명해주고 있다.
Part1 setup
그래픽작업에 들어가기전에 캐릭터에 어떤형태의 머리모양을 만들건지 결정하는것은 매우 중요하다.
머리스타일에 대한 아무런 계획없이 작업을 하게되면 자칫 불완전한 형태가 만들어질 위험이 있다.
아래그림과 같이 캐릭터의 머리부분에 curves을 그리기위해 머리를 선택한후 Modify->Make Live을 사용한다.
머리뒤 중간부분부터 앞부분까지 curve를 그린다.
이curve는 나중에 머리카락이 갈라져나오는 부분이 된다.

생성된 curve를 선택하여 EditCurves->Rebuild curve을 실행시킨다.
이때 rebuild type은 uniform, 9 span, degree 3으로 한다.
그리고 작업의 편의를 위해 curve의 CV를 항상 display시켜놓는다.
curve의 이름을 hair_split_curve01으로 하고 Duplicate하여 두개의 curve을 아래그림처럼 사이를 약간벌려 놓는다.

Duplicate된 curve의 이름을 hair_split_curve02으로 하고 이두개의 curve 사이를 연결해주는 curve를 만들어준다.
이때 생성된 cueve의 이름을 front hair_split_curve으로 한다.
이렇게 만들어진 3개의 curves을 약간 머리 안쪽으로 이동시켜 놓는다.

Part2 hair control curves
계획했던 머리스타일에 따라 대략적인 일련의 curves을 만들것이다.
우선 머리부분을 Make Live시킨후 CV curve tool을 이용하여 hair_split_curve01의 첫번째 point에서부터
그려나간다.
이때 snap to points을 사용하며 4-5개의 CV을 위치시킨다.

이러한 방법으로 hair_split_curve01위에 main hair_control_curve들을 생성시킨다.
보통 hair_split_curve01이 9 spans을 가지고 있으면 9-11개의 hair_control_curves을 만든다.
hair_control_curves의 CVs의 위치를 바꾸어주어 전체적으로 머리 윗 부분에 위치하도록한다.

아래그림처럼 hair_control_curves의 형태를 잡아준후 반대쪽 머리카락을 위해 Duplicate해준다.

front hair_split_curve에도 같은 방법으로 curves을 만들어준다.


Part3 Power of Pfx
Visor을 열어 Brushes/hair/ folder에서 hairRed1.mel을 선택해준다.

hair_split_curve01을 선택후 PaintEffects->Curve Utilities->Attach Brush to
Curves을 실행시킨다.
이때생긴 stroke을 hair_side_stroke01이라 하고 stroke의 새로운 brush을 hair_side_brush이라 한다.
hair_side_stroke01의 attribute editor을 열은후 brush tab에서 Global Scale을 조절해준다.
character의 크기가 8cm정도이면 Global Scale은 0.150정도로 해준다.
Brush Profiles의 Brush Width는 머리카락이 hair_split _curves에서 어느정도의 간격으로 생성되는지를 조절하는
것이다.
Brush Width은 0.8로 한다.

hair_side_stroke01을 선택후 shift을 사용하여 한쪽면의 모든 main_control_curves을 선택해준다.
그런후에 Paint Effects->Curve Utilities->Set Stroke Control Curves을 실행시키면
머리카락이 main_control_curves의 방향과 어느정도 일치하게된다.
hair_side_brush의 attributes에서 tab tubes|Behavior|forces을 연다.
CurveFollow=1로 하여 머리카락들이 정확하게 main_control_curves의 방향과 일치하게 만들어준다
Length Flex=1로 하여 머리카락들의 길이가 main_control_curves의 길이와 같게 만들어준다.
hair_side_stroke01.shapeNode을 열어 display quality를 10으로해서 test render을 해본다.

Part4 Tweaking PFX
hair_side_brush's tab에서 tubes|creation의 tubes per Step을 25 로 한다.
그리고 Length Min=7, Length Max=10로 하여 main_control_curves사이의 머리카락수를 조절한다.
Tube Width1=0.3, Tube Width2=0.1로 하여 머리카락 끝부분의 폭을 조절해준다.
만약 날카롭고 사실적인 머리카락을 원하면 이부분의 수치를 낮추어주면 되며 그대신에 tubes per Step의 값을 높여 가늘어진 머리카락의
수를 많게 해준다.
Segment=64, simplify Method=Tubes per Step으로 하면 view port에서의 작업속도를 줄일수 있다.

Part5 shading and texturing
hair_side_brush을 선택후 Shading|tube shading을 연다.
color1은 머리카락의 시작부분의 색을 color2은 끝부분의 색을 나타낸다.
부드러운 머리결을 원하면 transparency1=black, transparency2=gray, tip Fade=0.2로 해준다.
만약 좀더 사실적인 머리카락을 원한다면 shading|tubes shading|texturing을 사용한다.
좋은 머리카락 이미지를 가지고 있고 그 이미지의 color을 그대로 사용하기 위해서는 map Color을 선택한후 Texcolorscale=0,
Texture type=File, Map method=tube3D, Tex Color1=white, TexColor2=white로 해준다.

Part6 completing the whole hair
반대방향 머리카락을 만들기위해 hair_split_curve02을 선택한후 PaintEffects->Curve Utilities->Attach
Brush to Strokes을 실행한다,
새로생긴 stroke을 선택한후 shift을 사용하여 반대방향의 control_curves을 전부 선택해준다.
선택후 PaintEffects->Curve Utilities-> set Stroke Control Curves을 실행해준다.
새로생긴 stroke을 선택한후 shift을 사용하여 hair_side_stroke01을 선택한후 PaintEffects->share
One Brush을 실행시킨다.
이렇게 하면 hair_side_stroke01의 hair_side_brush는 새로생긴 stroke를 control하게 된다.
앞쪽의 머리카락을 위해 front_hair_split_curve을 선택한후 방금 전에 했던 방법으로 Attach Brush to Strokes와
Set Stroke Control Curves을 실행한다.
새로생긴 stroke의 이름을 hair_front_stroke이라 한다.
hair_side_stroke01을 선택후 PaintEffects->Get Setting from selected stroke을 실행한다.
그리고 hair_front_stroke을 선택후 PaintEffects-> apply setting to selected strokes을
실행하면 hair_front_stroke의 brush의 setting이 hair_side_brush와 같게 된다.

Part7 Optimizing your hair
앞부분의 머리카락에 부피감을 주기위해서 hair_front_brush을 선택후 attribute editor을 연다.
tubesPerStep=10으로 한후 tubewidth을 높게 해준다.
Behavior|forces을 연후 curveAttract = -0.041로 해주면 머리카락이 어느정도 control curves와 멀어지게
되는 효과를 얻는다.
일반적으로 사람의 머리카락은 앞뒤 좌우로 밀집정도가 다르다.
따라서 이러한 표현을 위해 Pressure curves을 사용한다.
hair_side_stroke01을 선택후 PaintEffects->CurveUtilities->makePressureCurves/option을
연다.
control points=10, offset scale=0.05로 한후 실행시키면 한 curve가 stroke옆에 생긴다.
hair_side_stroke01의 attribute editor에서 pressreMapping tab을 연다.
pressureMapping1=tubes Per Step, pressure min1=0.1, pressureMax1=1으로 한다.
pressureCurve의 CVs을 위로 올리면 머리카락의 밀집정도가 커지고 아래로 내리면 밀집정도가 작아질것이다.
