텍스처 | 쉐이딩

[Maya] Arnold 쉐이딩(8) - Xgen 털 재질 만들기 -

by MoGL3D 2019. 4. 13.

-Xgen 털 재질 만들기-


Xgen은 털이나 풀같은 짧은 길이의 물질(?)을 쉽게 만들 수 있는 플러그인이다.

(Maya2015~ 기본설치)Xgen을 사용하면, 털이 있는 담요나 섬유를 손쉽게 표현할 수 있다. nHair와 Xgen을 헷갈려하는 경우가 있는데, 넙스 커브를 페인트효과로 변경하는 nHair방식과 이펙트를 활용하는 Xgen은 구현방식과 매커니즘이 완벽하게 다르다. nHair는 이후 포스팅에서 자세하게 다룰 예정이다.  

1폴리곤 면 만들기 』

Xgen은 폴리곤 면의 개수에 따라 털이 나타난다. 물론 density값을 조절해서 면 하나당 털을 30개를 심을 수도 있지만, 이럴 경우 털 1개가 움직이면 30개가 똑같이 움직인다. (멈춰져 있는 물체나 배경이라면 상관없음)


아래사진처럼 면수를 1000개 정도 만들자.


2 xgen 실행하기』

xgen 실행버튼은 shelf에디터의 xgen항목에 있다. xgen을 적용하려는 폴리곤을 선택하고, 좌측 상단의 x표시를 클릭한다. (아래사진 참고)


-> xgen에서 Create New Description을 선택해서 새로운 xgen을 생성한다.


-> New Description Name: 항목에 적절한 이름을 지정한다.

-> Create new Collection named 항목에도 이름을 지정한다.


3 xgen 에디터 설정 

아래 사진의 빨간사각형을 선택하면, xgen 털들이 display에서 사라진다. (메모리 사용을 줄이기 위해서 디스플레이만 감춤) 이후, 빨간 사각형 좌측 '눈알 모양'을 클릭하고, update기능을 off으로 설정한다면, 좀더 메모리를 효율적으로 사용할 수 있다. 


4 전체모양 설정 

length의 우측 역삼각형을 선택하고, ' create map '을 클릭한다. 맵이 적용되면, create map에서 이름을 설정하고, Max resolution은 40~60정도로 정한다.


-> 붓 모양 아이콘을 클릭하여, 페인트 기능을 활성화시킨다. (붓 아이콘을 선택하지 않으면 'X'자가 뜸)


-> 아래처럼 대략 털이 생겨야 하는 부분을 그려준다. (준비한 문양을 하이퍼쉐이드에서 선택해서 넣기 때문에 대충 그려준다.)


-> 페인트칠을 끝낸 이후에는 반드시 '저장(디스켓모양)'을 선택한다.


-> 하이퍼쉐이드를 켜자. 위에서 그린 페인트가 file텍스처 노드로 생성돼 있다.


-> 파일텍스처 노드를 선택하고, image를 미리 준비한 문양파일로 변경한다.


-> 파일텍스처 노드에서 이미지를 변경한 이후에는, 반드시 아래처럼 저장을 선택한다. 


-> xgen에디터의 output 설정탭에서 아래 3가지 부분을 설정한다.

* Percent : 뷰포트 창에서 보여질 털의 수를 20~30%만 보도록 설정한다(메모리 효율을 위해서)

* Renderer : Arnold로 선택

* Mode : Thick (가는 털)


5 랜더링 

-> 조명 색을 '녹색'으로 맞춰서 랜더링을 하면, 아래처럼 녹색빛깔의 털이 생성된다. (length에 넣은 이미지 문양이 생성)


6 칼라값 설정 

-> Preview/Output 설정탭에서 custom shader parameter 탭을 선택한다.


-> 칼라맵 이름을 지정하고, + 버튼을 클릭하면 아래처럼 칼라 속성이 추가된다. 


-> create Map을 선택해서 length와 같은 작업을 반복한다 (페인트 그리기 -> 하이퍼쉐이드에서 파일텍스처 변경)


-> 하이퍼쉐이드에서 칼라맵을 아래처럼 변경한다. 


7 『arnold헤어쉐이더 응용

-> 하이퍼 쉐이드의 Materila에 hairPhysical 쉐이더가 생성돼 있다. 


-> arnold hair 쉐이더를 생성하고, physical hair쉐이더의 SG(쉐이딩 그룹)의 surface material에 연결한다. (아래사진 빨간색 박스부분 참조)


-> aiUserDataColor 노드를 생성한다. 


-> Default Color를 검은색으로 하고, Attribute 이름을 설정한 뒤에 ai Standard hair의 color 노드, Tint -> specular tint에 연결한다. 


-> 이제 aiUserDataColor 색을 변경하면, 털의 색이 바뀐다.


-> aiUserDataColor 색을 빨간색으로 설정하고, 랜더링을 해보자.


추가로 xgen은, 털의 모양을 임의로 설정할 수 있는 기능을 제공한다. Modifiers 탭에서 추가버튼을 선택하면, 아래 사진처럼 여러가지 모양들이 나타난다.


-> Magnitude에서 Create Map을 선택하고, 페인트로 지정을 하거나 혹은 모양맵을 하이퍼쉐이드(color,length방식)에서 변경한다.


-> noise의 frequency값을 1.0으로 해서는 크게 변화를 느낄 수 없다. noise값의 변화를 크게 하려면 frequency값이나 기타 설정을 조절해보자.


해당 포스팅에서는 필수적인, 'Modifier -> noise'만 적용하였지만 나머지 기능들은 상황에 맞춰서 테스트해보자.