Post

메인 머티리얼 노드에 입력 가능한 속성들

해당 게시글은 언리얼 엔진 5.1 공식 문서의 머티리얼 항목을 공부하며 작성했습니다.

머티리얼(Material)이란?

머티리얼은 씬에서 오브젝트의 표면 프로퍼티(속성)을 정의한다.

즉, 물건의 표면을 표현하는 것이 머티리얼이다. 나무로 된 가구의 표면이 많이 거친지, 금속 손잡이의 표면이 많이 거친지, 유리가 얼마나 투명한지 등을 표현하게 된다. 언리얼 공식 문서에서는 메시에 적용되어 시각적인 형태를 제어하고 보여주는 일종의 ‘페인트’로, 메시의 표면이 씬의 라이트와 어떻게 상호작용해야 하는지를 엔진에 알려주는 것이 머티리얼이하고 나와 있다.


셰이딩 파이프라인과 비주얼 스크립팅

셰이딩이라고 하면 보통 HLSL(High Level Shading Language) 코드를 작성하는 일부터 떠올리지만, 언리얼에서는 HLSL 코드 대신 머티리얼 에디터라는 비주얼 스크립팅 인터페이스를 사용한다.

머티리얼 표현식이라는 노드를 조합해 가장 오른쪽에 있는 최종 노드, 메인 머티리얼 노드에 입력하면 자동으로 HLSL로 변환되어 머티리얼을 생성한다. 언리얼에서도 이 HLSL 코드를 볼 수는 있지만 읽기 전용이라 편집은 불가능하다.

본래 렌더링 파이프라인셰이더는 각 버텍스나 픽셀이 렌더링되는 방법을 정의하는 프로그램이다. 작성한 HLSL 코드가 GPU 하드웨어가 실행할 수 있는 어셈블리 언어로 변환되고, 최종 픽셀의 색을 디스플레이에 출력하는 과정을 거쳐야 사용자도 머티리얼을 볼 수 있다.


메인 머티리얼 노드

Difference about Specular and Roughness 메인 머티리얼 노드(Main Material Node)는 여러 머티리얼 노드들의 입력을 받고 모아서, 최종적인 결과를 보여주는 노드이다. 가장 오른쪽에 위치하는 세로로 긴 노드로 다양한 입력값을 받을 수 있다. 메인 머티리얼 노드에 입력 가능한 대표적인 속성들은 아래와 같다.

Difference about Specular and Roughness

새로 머티리얼을 생성했을 때 보이지 않는다면 좌측 디테일 패널의 머티리얼-셰이딩 모델Unlit에서 Default Lit으로 바꿔주면 보인다! Unlit은 UnLight, 즉 빛이 없는 상태이다.

베이스 컬러(Base Color)

머티리얼의 전반적인 색을 표현한다.
스페큘러 리플렉션 및 하이라이트 없이 표면에 반사되어 나오는 빛의 디퓨즈(고유 색상), 즉 빛의 영향을 받지 않았을 때의 색이다.

메탈릭(Metalic)

표면이 금속처럼 보이는 정도를 제어한다. (비금속 0 ~ 금속 1)
메탈릭 입력을 마스크처럼 텍스처에 덧입혀 사용하려면, 텍스처 값이 검은색이나 흰색이어야만 한다. 부식된 금속과 같은 혼합 표면은 회색조여도 괜찮다.

스페큘러(Specular)

표면에서 반사되는 빛의 양을 측정한다. (반사없음 0 ~ 완전반사 1)

러프니스(Roughness)

표면의 거칠기나 부드러운 정도를 제어한다. (부드러움 0 ~ 거침 1)
거친 재질에 반사된 빛은 여러 방향으로 퍼져 분산 또는 무광 표면이 된다.

Difference about Specular and Roughness Specular와 Roughness는 비슷한 것같지만 머티리얼에 반사된 이미지가 다르다.

애니소트로피(Anisotropy)

러프니스의 애니소트로피 정도를 제어한다.
라고 문서에 적혀 있었지만, 단번에 이해가 되지 않아서 애니소트로피의 개념부터 찾아봤다.

애니소트로피는 비등방성 필터링(AF)이라고도 하며, 3D 게임에서 빗면의 텍스처도 선명하게 보여주는 기술이다. 특히 원거리에 비스듬하게 놓인 물체의 텍스처를 선명하게 보여줌으로써 플레이어에게 높은 시야각을 제공할 수 있다.

언리얼의 머티리얼에서는 이 애니소트로피 정도를 제어할 수 있다. 애니소트로피 값이 0이면 적용되지 않는데, 이 상태를 아이소트로피(등방성 필터링)이라 한다. 탄젠트 입력값을 토해 애니소트로피 적용 시의 빛의 방향을 제어할 수도 있다.

이미시브 컬러(Emissive Color)

머티리얼이 빛나는 위치와 밝기를 제어한다.
주로 마스크트 텍스처에 사용되어, 빛나는 영역을 제외하면 대부분의 영역인 검은색인 네온 효과를 표현할 때 사용한다. HDR 라이팅 지원으로 1보다 큰 값을 적용할 수 있다. 내가 예시에서 사용한 값은 무려 40이다.

HDR 라이팅이란 High-Dynamic-Range Lighting이라는 이름에서 알 수 있듯이, 더 폭 넓은 범위의 명암을 표현할 수 있는 렌더링 기술이다.

오퍼시티(Opacity)

반투명한 머티리얼을 만들 수 있다. (투명 0 ~ 불투명 1) 반투명 블렌디드 모드 (Translucent)가 선택되어야 활성화되는 입력이다.

오퍼시티 마스크(Opacity Mask)

철망이나 쇠사슬과 같이 사이사이에 구멍이 뚫린 텍스처를 표현할 때 사용한다. 이런 텍스처는 완전히 보이거나 아예 보이지 않거나 둘 중 하나기 때문에 반투명한 값은 사용할 수 없다. 마스크드 블렌드 모드(Masked)일 때만 활성화되는 입력이다. 오퍼시티 마스크 클립 값을 응용해 특정 값을 기준으로 해당 픽셀이 보일지 안 보일지 설정하는 것도 가능하다!

노멀(Normal)

노멀맵 텍스처와 연결해서 그래픽의 폴리곤 수를 늘리지 않고 표면의 시각적 디테일을 향상시킬 수 있다. 왜 노멀이라 부를까 궁금해서 찾아보니, 이 기술에 응용되는 법선 벡터가 영어로 Normal Vector라고 한다.

노멀 매핑은 각 굴곡에서의 법선 벡터를 노멀맵 텍스처로 저장한 후, 해당 벡터 값에 따라 광원에 따른 음영을 처리하는 기술이다.

월드 포지션 오프셋(World Position Offset)

월드맵에서의 상대적인 위치를 이용해 오브젝트를 움직이고 모양을 변경시킬 수 있다. 메시의 버텍스를 머티리얼을 통해 조작해서, 공이 커졌다 작아졌다 하는 효과 등을 표현할 수 있다.

서브서피스 컬러(Subsurface Color)

Apply Subsurface Color

머티리얼의 안쪽에 색을 추가해, 빛이 표면을 투과할 때의 색 변화를 표현할 수 있다. 손가락 끝이나 귓볼이 빛을 받으면 붉게 빛나는 효과를 표현할 수 있으며, 주로 역광을 받는 환경에서 두드러진다. 셰이딩 모델이 Subsurface로 설정되어 있어야 활성화되는 입력이다.

셰이딩 모델(Shaing Model)은 언리얼에서 특정 유형의 머티리얼을 미리 제공해주는 것으로, 헤어/눈/옷/클리어 코트/서브서피스 등이 있다. 각 셰이딩 모델이 추가적으로 제공하는 커스텀 데이터를 이용해 제어할 수 있다.

앰비언트 오클루전(Ambient Occlusion)

틈새에서 발생하는 그림자를 자체적으로 생성한다. Static 혹은 Stationary 모빌리티를 사용하는 고정된 광원에서만 사용 가능하다.

리프렉션(Refraction)

투과되는 빛을 굴절시키는 유리나 물 등을 구현할 때 사용하는 굴절값이다. 보통 공기가 1.0, 물이 1.3, 유리가 1.5 정도의 값을 가진다.

공식 문서의 리프렉션 예제에서는 Frensel 노드를 사용해 투명한 유리의 외곽선을 만들어주었다.

픽셀 뎁스 오프셋(Pixel Depth Offset)

픽셀 뎁스 오프셋을 통해 오브젝트를 블렌딩하거나 페이드하면, 오브젝트와 오브젝트 간의 경계가 부드러워진다. 주로 풀숲에 놓인 돌과 지면 사이의 경계를 자연스럽게 만드는 데 사용된다.

This post is licensed under CC BY 4.0 by the author.