먼저 진행을 위해 아래 링크로 가서 리소스를 다운받고 압축을 풀어주었다.
리소스 링크 : http://bit.ly/bp_rpgasset1
나는 대표 프로젝트에 압축 파일을 풀고 ToyCow라는 폴더로 들어갔다. 폴더에 SM_ToyCow.FBX, M_ToyCow_C.TGA, M_ToyCow_N.TGA 파일들이 있는지 확인하고 먼저 3D 모델링 파일인 FBX 파일부터 임포트한다. 콘텐츠 브라우저에서 ToyCow라는 폴더를 생성하고 툴바에 있는 Import 버튼을 누른 후, SM_ToyCow.FBX파일을 선택하면 아래와 같이 다이얼로그가 뜬다. 캐릭터가 뚫고 지나가지 못하도록 자동 충돌 영역 생성 옵션은 그대로 두되, 머티리얼과 텍스쳐 체크는 해제한다. 임포트가 완료되면 스무딩 그룹이 없다는 경고 메시지가 뜨지만, 이는 크게 중요한 부분이 아니니 무시한다. 임포트가 완료된 결과는 다음과 같다.
[그림] 모델링 파일의 임포트된 결과
임포트가 완료되면 리소스에 별표가 표시된 것을 볼 수 있는데, 이는 리소스가 현재 메모리에서 변경되어 있으며, 디스크에는 변경사항이 저장되지 않았다는 것을 의미한다. 따라서 지금 임포트한 리소스는 메모리에만 존재하고 있는 상태라, 예기치 않게 에디터가 갑자기 종료되된다면 애써 임포트한 결과가 모두 날아가게 된다. 따라서 리소스아이콘에 별표가 보이면, 툴바에 있는 '모두 저장' 버튼을 눌러서 변경사항을 디스크에 안전하게 기록하도록 한다.
[그림] 리소스의 변경과 모두 저장
이제 장난감 소(ToyCow)에 사용할 TGA 이미지 두 개를 마저 임포트하고 모두 저장을 누른다. 그리고 장난감 소에 사용할 머티리얼 리소스도 신규 추가를 통해 M_ToyCow라는 이름으로 생성한다. 아래는 모든 리소스가 생성된 결과 화면이다.
[그림] 실습을 위한 기본 리소스 생성
M_ToyCow를 더블클릭하고, 장난감 소에 사용할 배경 색상을 지정한다. 배경은 밝은 색상의 계열로 선택한다. 머티리얼이 제작되면 SM_ToyCow에 이를 기본 머티리얼로 지정한다. 한번씩 이미 다 해본 작업들이라 쉽게 할 수 있을것이다. 결과는 아래와 같이 나오게 될 것이다.
[그림] 머티리얼의 기본 제작과 스태틱 메시의 기본 설정
지금까지 기본적인 리소스 셋업을 진행했고, 이제부터 본격적인 머티리얼 작업에 들어가겠다. 진행할 작업은 장난감소의 부위별로 다른 색상과 다른 머티리얼의 적용인데, 부위별 구분을 위해서 T_ToyCow_C라는 마스크 이미지를 준비하였다. 임포트된 T_ToyCow_C 텍스쳐를 더블 클릭해 텍스쳐 설정을 띄우고 왼쪽 상단의 뷰 버튼을 클릭한다.
[그림] T_ToyCow_C의 텍스쳐 설정과 뷰 옵션
이 텍스쳐는 빨강(R), 초록(G), 파랑(B) 채널 별로 장난감 소의 영역을 구분하기 위해 특수하게 제작한 색상 정보를 담고 있다. 컬러 채널에서 빨강만 선택하고 나머지를 끄면 흑백으로 보이는데, 무채색 색상 정보를 데이터라는 관점에서 본다면 검정색은 0, 흰색은 1, 회색은 0.5를 의미한다. 이렇게 텍스쳐는 비주얼을 나타내는데에만 사용하는 것이 아닌, 0과 1사이의 데이터를 제공하기 위해서도 사용할 수 있다. 그림에서 빨간 채널에 담긴 데이터는 검정색인 0의 값을 기본으로 두되 소의 줄무늬와 코, 눈썹, 눈등을 구분하기 위해 흰색인 1의 값으로 표시됬음을 확인할 수 있다.
[그림] 빨강 채널의 데이터. 검정색은 0, 흰색은 1을 의미한다.
이제 이 데이터를 사용해 장난감 소에 줄 무늬를 그려보자. 머티리얼 에디터를 다시 띄우고 콘텐츠 브라우저에서 T_ToyCow_C 텍스쳐를 작업 영역에 드래그하면 아래와 같이 텍스쳐 노드가 생성된다. 텍스쳐 노드는 'T'키를 사용해서 생성할 수 있는데, 이번에는 콘텐츠 브라우저에서 줄무늬에 사용할 텍스쳐를 선택한 후, 다시 머티리얼 에디터로 돌아와 'T'키를 누른 상태에서 왼쪽 클릭을 사용해 텍스쳐 노드를 생성해보자.
[그림] 줄무늬 표현을 위한 텍스쳐 노드의 생성
이번에는 T_ToyCow_C 텍스쳐의 빨강 채널에 있는 0과 1데이터를 사용해 영역을 구분해보자. 이를 위해서 자주 사용하는 노드는 Lerp(Linear Interpolation) 노드인데, 자주 사용하는 노드이기 때문에 단축키가 있다. 'L'키를 누른 상태에서 클릭하면 Lerp 노드가 생성된다. Lerp 노드는 지정된 시작 값과 끝 값 사이에서 비율을 지정하면 균등한 비율로(선형) 중간 값을 구해주는 노드다. 총 3개의 핀으로 구성되어 있으며, A는 시작 값, B는 끝 값, 세 번째 핀은 비율 값을 의미한다. 비율 값이 0이면 A, 1이면 B를 의미하며 0.5는 A와 B의 중간 값을 계산해준다. 예를 들어 Lerp ( 0, 100, 0 )의 값은 0이 되고 Lerp ( 0, 100, 1 )의 값은 100이 나오는 한편 Lerp ( 0, 100, 0.5 )의 값은 0과 100의 중간 값인 50이 된다. Lerp 노드의 세번째 핀에 빨강 채널의 값을 연결하면 검정영역에 대해서는 A 핀에서 지정된 색상이, 흰색 영역에 대해서는 B 핀에서 지정된 색상이 최종 출력될 거다. Lerp 노드를 중간에 거쳐서 베이스컬러 핀에 연결하면 아래와 같이 줄무늬 영역에 금칠이 입혀진 결과를 볼 수 있게 된다.
[그림] Lerp 노드의 사용과 이를 적용한 결과
녹색 채널도 동일한 방식으로 기존의 결과에 추가로 Lerp 노드를 사용하면 아래와 같이 추가 영역에 대해 다른 색상 혹은 텍스쳐를 적용하는 것이 가능하다. 아래는 Lerp 노드를 추가로 사용해 코와 입 부분을 베이직 색으로 물들인 결과다.
[그림] Lerp 노드의 추가 사용
T_ToyCow_C 텍스쳐의 파랑 채널에는 눈동자 영역이 설정되어 있다. 눈동자에는 이미시브 컬러 핀을 활용해보겠다. 이미시브(Emissive)란 방사(放射), 즉 빛을 방출하는 데 사용하는 결과 핀이다. 머티리얼이 빛을 발산하기 때문에, 이 결과 핀에 값이 설정되면 빛의 영향을 받지 않는 색상을 그대로 표현하게 된다. 머티리얼 시스템에서 고전 2D 게임과 같이 텍스쳐 이미지를 그대로 보여주고 싶은 경우에 이 핀을 사용하면 된다. 동일하게 Lerp 노드를 사용해 푸른색으로 눈 영역에 이미시브 핀을 연결하자.
대부분의 결과 핀은 0과 1사이의 값으로 속성을 지정하는데 비해, 이미시브 핀의 경우에는 1이상의 수를 지정하는 것이 가능하다. 1이상의 수가 지정되면, 이는 빛을 스스로 내뿜는 설정이 되어 머티리얼에서 빛이 발산된다. Lerp 노드의 결과를 증폭시키기 위해 곱셈(Multiply) 노드를 중간에 연결해 결과를 100배 증폭시켜보자. 곱셈 노드의 단축키는 'M'이다. 아래 그림과 같이 노드를 배치하고 곱셈 노드를 선택한 후 디테일 윈도우에서 B의 값에 100을 입력하자. 저장 후에 장난감 소에서 안광이 발산되는 것을 확인할 수 있다.
[그림] Lerp 노드 결과 값을 증폭해 적용한 결과
이제 레벨에 SM_ToyCow를 드래그 배치해 최종 결과를 확인하자. 아래 이미지는 스태틱 메시 액터의 크기를 1.5배로 늘렸다.
참고자료의 출처: http://cafe.naver.com/unrealenginekr/13055
댓글 없음:
댓글 쓰기