2017년 2월 9일 목요일

[언리얼4 RPG제작 1-8] 물리기반 렌더링 시스템

이번 에는 언리얼 엔진의 비주얼을 담당하는 물리 기반 렌더링 시스템에 대해서 알아보겠다. 물리 기반 렌더링 시스템(Physical Based Rendering, 줄여서 PBR)은 현실 세계와 유사하게 물리 법칙에 따라 물체의 비주얼을 조절해주는 렌더링 시스템이다. 물리 기반 렌더링 시스템은 물체의 물리적 속성만 지정하면 렌더러가 자동으로 현실감 있는 질감을 표현해주므로 제작자가 아트에 전문 지식이 없어도 몇 가지 수치에 대한 조정만으로도 높은 퀄리티의 그래픽을 만들어준다.

[그림] 물리기반 렌더링으로 현실 세계의 질감을 표현한 예시

이번 글에서는 머티리얼 리소스를 제작한 후, 언리얼에서 제공하는 머티리얼 에디터를 사용해 직접 재질을 생성해보도록 한다. 먼저 Materials라는 폴더를 만들고, 신규 추가 버튼을 눌러 M_PBR이라는 이름의 머티리얼을 생성해본다.

[그림] 생성된 신규 머티리얼

신규로 생성된 머티리얼을 더블 클릭하면 머티리얼을 편집할 수 있는 에디터가 뜨는데, 이 에디터를 사용해 직접 물리 기반의 질감을 설계하게 된다. 에디터에 보이는 네모난 영역을 일반적으로 언리얼 엔진에서는 노드(Node)라고 부르는데, 하나의 역할을 수행하는 단위라는 의미로 이해하면 된다. 참고로 머티리얼 에디터에서 보이는 노드는 결과(output) 노드이며, 이 노드에 위치한 동그란 핀에 데이터를 전송하면 이 값에 따라서 물체의 렌더링 결과가 변화된다. 결과 노드는 다양한 핀이 있는데, 처음에 핵심적으로 알아두어야 할 핀들은 다음과 같다.

1. 베이스 컬러 : 빛과 반응할 물체의 고유한 색상을 지정하는데 사용하는 핀이다.  컬러 노드에는 RGB의 3가지 분리된 데이터를 전달해준다.

2. 메탈릭 : 물체 표면의 물리적 속성이 메탈인지, 메탈이 아닌지를 지정하는데 사용하는 핀이다, 0과 1사이 값을 전달하며, 1이면 물리적 속성이 메탈임을 의미한다.

3. 러프니스 : 물체의 거칠기를 지정하는데 사용하는 핀이다. 메탈릭과 동일하게 0과 1사이 값으로 지정하며 이 값이 1이면 겉보기에는 평평하지만 미세 표면은 완전히 거칠다는 의미가 된다.

먼저 색상을 머티리얼에 지정하자. 색상을 RGB의 삼요소로 구성되기 때문인지 단축키는 '3'이다. 숫자 '3'키를 누른 상태에서 마우스 왼쪽을 클릭하면 아래와 같은 색상 노드가 추가된다. 색상 노드를 더블클릭해 색상을 지정하고, 이 색상 노드의 핀과 베이스컬러 핀을 연결하면 원하는 색상을 질감에 전달할 수 있게된다. 참고로 색상 지정 다이얼로그는 HSV(Hue, Saturation, Value)모델로 제공되는데, 오른쪽 슬라이더의 Value 값을 올려주지 않으면 색상을 선택해도 결과는 항상 검정색으로 표시된다.

[그림] 색상 노드와 베이스 컬러 핀의 연결

재질이 완성되면 툴바에 위치한 저장버튼을 반드시 눌러야 우리가 작업한 내용이 최종 반영된다. ( Ctrl+S키와 무관하다. )

[그림] 재질 테스트를 위한 액터의 배치

가장 왼쪽에 위치한 스태틱 메시 액터를 선택한 후 Materials 폴더에 있는 M_PBR머티리얼을 디테일의 첫 번째 머티리얼에 드래그하여 아래와 같이 반영해보자. 액터가 월드에 생성될 때 초기 생성시에는 스태틱 메시 에디터에 있는 기본 값을 사용하지만, 이후에 각 액터별로 다른 값을 지정할 수 있다.

[그림] 새로운 머티리얼의 반영

이번에는 M_PBR 리소스를 선택한 후 Ctrl+W 키를 눌러서 리소스를 동일하게 복제한다. 단축키가 안 먹는 경우, 리소스를 우클릭하고 '복제' 메뉴를 사용한다. 참고로 언리얼 엔진에서는 이렇게 모든 액터, 리소스 및 노드의 복제는 Ctrl+W 키를 사용하면 편리
하다.
[그림] 복제된 리소스


[메탈릭 속성의 이해]

M_PBR2 머티리얼을 더블 클릭해 에디터를 열고 이번에는 메탈릭 속성을 지정해보도록 하자. 지구상에 존재하는 물질 중에서 메탈은 빛의 에너지를 흡수해 메탈에 부여된 고유한 스펙트럼 파장을 방출하는 고유한 특징이 있다. 그래서 금색, 은색, 구리색과 같이 메탈별로 고유한 색상이 정해져있다. 그리고 메탈이 아닌 물체는 명도만 높여서 주위 환경을 반사하는데 비해, 메탈은 주위 환경의 색상을 그대로 반사하는 특징도 존재한다. 아래는 언리얼 엔진에서 메탈과 메탈이 아닌 물체의 차이를 비교한 이미지다.

[그림] 메탈 값에 따른 비교. 왼쪽이 0, 오른쪽이 1

메탈릭 핀에는 0과 1사이의 값만 입력하면 되어서 인지 단축키는 숫자 '1' 키가 되겠다. 숫자 '1'키를 누른 상태에서 작업 영역을 왼쪽 클릭하고 디테일 윈도우에서 값을 1로 변경하고 이를 메탈릭 핀에 연결한다. 참고로 연결된 핀을 제거할 때에는 'Alt'키를 누른 상태에서 핀이나 선을 클릭하면 된다.

[그림] 메탈릭 핀 값의 지정

저장 버튼을 누르고 아래와 같이 두 번째 스태틱 메시에 반영하면 아래와 같이 보이게 된다.
[그림] 메탈릭 재질의 적용


[러프니스 속성의 이해]

이제 세 번째 출력핀인 러프니스에 대해 알아보자. 러프니스는 겉보기에는 평평하지만 자세히 봤을 때 측정되는 미세표면(Microfacet)의 거칠기에 대한 값이다. 이 미세표면의 거칠기에 따라 표면을 통해 주위 환경을 반사하는 상(像)의 또렷함이 결정되는데, 아래 그림에서 위의 예시는 미세표면이 고르기 때문에 상의 대부분이 관찰자에게 잘 전달이 되는 반면, 아래 예시는 미세표면이 거칠어서 상의 일부만 관찰자에게 전달되어 표면에 상이 흐리게 맺
힌다.

[그림] 미세표면에 따른 상의 변화

러프니스 값이 1인 경우를 특별히 풀 러프니스(Full Roughness)라고 부르는데, 분필과 같이 주위의 상을 전혀 반사하지 못하는 물체를 표현하는데 사용된다. 이는 렌더링에서 표면에 맺히는 상을 위해 주위 환경을 계산할 필요가 없기 때문에, 데이터와 계산량이 크게 줄어든다. 특히 모바일 게임 제작에 있어서 가급적이면 풀 러프니스를 사용하는 것이 퍼포먼스 측면에서 큰 도움을 준다. Ctrl+W로 머티리얼을 하나 더 복제한 후, 이번에는 세 머티리얼의 러프니스 핀에 각각 0.1 , 0.2, 1을 대입하고, 세 번째 머티리얼 M_PBR3에는 메탈릭 값을 0으로 설정한 후 최종결과를 비교해보자.
[그림] 세 개의 동일한 스태틱 메시 액터에 다른 물리 속성을 지정한 결과

마지막으로 표면이 매끈한(러프니스 수치가 작은) 물체에 반사되는 상은 리플렉션 캡쳐 액터를 사용하면 우리가 원하는 영역을 자동으로 캡쳐해 제공하는 것이 가능하다. 리플렉션 캡쳐 액터를 배치한 후, 위치를 변경해보면서 상 이미지가 변경되는 것을 확인해보도록 하자.

[그림] 리플렉션 캡쳐 액터의 배치



참고자료의 출처: http://cafe.naver.com/unrealenginekr/13053

댓글 없음:

댓글 쓰기