공상과학 폐허: 머티리얼 인스턴싱

SciFi Bunk, 공상과학 폐허 프로젝트에서 마스터 머티리얼과 머티리얼 인스턴싱을 사용하여 배경을 제작한 방법에 대해 알아봅니다.

Windows
MacOS
Linux

서론

이 튜토리얼은 커뮤니티 일원 Liam Tart (PogoP) 님께서 제공해 주신 것으로, 허락을 통해 이 곳에 게시되었습니다.

고맙습니다 Liam 님!

이 튜토리얼에서는 씬의 메시에 적용할 수 있는 타일식 머티리얼 세트를 빠르고 효율적으로 만드는 데 사용할 수 있는 마스터 머티리얼 및 머티리얼 인스턴싱 사용법에 대해 설명합니다. 타일식 머티리얼을 사용해서 메시의 텍스처를 입히면, 하이 폴리 모델에서 구운 것에 의존하지 않아도 되므로 배경의 모양과 느낌을 신속하게 변화시킬 수 있습니다.

이 튜토리얼은 언리얼 엔진 학습 탭에 있는 Sci-fi Bunk Room, 공상과학 폐허 방을 제작하면서 같이 작성된 것으로, 그것도 같이 다운로드하여 실전에서의 이 머티리얼 인스턴싱 사용법을 확인해 보실 것을 추천합니다.

여기서 보여드릴 것은 여러가지 금속이나 플라스틱과 같은 다양한 재질 유형을 인스턴싱을 통해 만들 수 있는 효율적인 마스터 머티리얼 구성법을 보여드릴 것이며, 이를 통해 메시의 다양한 머티리얼 ID 에 적용시킬 수 있습니다. 이 마스터 머티리얼은 다수의 스위치를 사용해서 패럴랙스 및 디테일 노멀 맵처럼 실제 쓰이는 머티리얼에 따라 특정 함수를 켜고 끌 수 있도록도 하고 있습니다.

이 튜토리얼을 시작하기 전, 머티리얼 문서를 먼저 살펴보시고 머티리얼과 머티리얼 인스턴싱의 기본적인 작동 원리에 대해 알아두시는 것이 좋습니다. 이 튜토리얼에서 그러한 개념을 작업중인 배경에 적용하는 법을 확인하실 수 있습니다.

목표

이 마스터 머티리얼 구성의 최종 목표는 인스턴싱을 통해 빠른 머티리얼 트윅 작업이 가능하도록 여러가지 파라미터에 접근할 수 있는 머티리얼을 만드는 것입니다. 마스터 머티리얼에 원하는 옵션이나 기능은 얼마든지 넣어도 됩니다만, 기본적으로 구체적인 알베도, 러프니스, 메탈릭, 노멀맵 입력 옵션은 허용하는 것이 좋고, 알베도 틴트, 러프니스, 메탈릭 값을 추가하여 이 기능에 미세 조정이 가능하게 하는 것도 좋습니다.

아래 스크린샷을 통해 몇 가지 값 조절하는 것으로 씬의 모양을 빠르게 바꿀 수 있어, 배경에 얼마만큼의 유연성이 가능한지를 확인할 수 있습니다.

Material Instance Color: Orange

Material Instance Color: White

마스터 머티리얼 구성

먼저 마스터 머티리얼을 만드는 것으로 시작하겠습니다. 여기서 씬의 모든 머티리얼 인스턴스가 만들어지기에 꽤나 복잡해 질 소지가 있으니, 제대로 효율적으로 구성해 줄 필요가 있습니다. 마스터 머티리얼을 사용할 때의 한 가지 장점은, 나중에 머티리얼에 기능을 추가하고 싶을 때도 마스터 머티리얼에만 적용해 주면 모든 인스턴스에 전파된다는 점입니다.

최종 마스터 머티리얼 구성 예제는 이렇습니다. 이 머티리얼의 모든 입력 텍스처와 상수는 파라미터로 만들어서 인스턴싱된 머티리얼에서도 접근할 수 있습니다. 파라미터로 만드는 방법은, 값이나 맵에 우클릭한 다음 Convert to parameter (파라미터로 전환)을 클릭한 뒤 이름을 지어주면 됩니다. 그러면 머티리얼 인스턴스에서 빠르게 변경할 수 있게됩니다.

또 이 머티리얼에서는 Static Switch 파라미터가 자주 쓰였는데, 디테일 노멀 맵이나 패럴랙스 맵 중에서 특정한 구성을 선택한다든가 하는 것이 가능합니다. 이를 통해 필요치 않은 기능을 끌 수 있어서 최종 머티리얼 인스턴스의 비용을 절감시켜 줍니다. 자세한 내용은 Parameter 표현식 문서를 참고하세요.

image_1.jpg

알베도 구성

image_2.jpg

특정 알베도 맵과 단순한 컬러 값 사이에서 선택을 할 수 있다면 간단한 값을 지정하여 올바른 알베도 값을 구할 수 있으니 빠른 머티리얼 프로토타입 작업이 가능할 것입니다. 그런 다음 그 값을 포토샵으로 가져와 최종 알베도 맵 작업의 바탕으로 삼으면 됩니다. 이런 방식은 이 튜토리얼의 러프니스 구성 부분에도 적용될 것입니다.

앞서 말씀드렸듯이, 이 구성을 통해 베이스 컬러에 알베도 맵 또는 컬러 값을 사용할 것인지 선택할 수 있습니다. 인스턴싱된 머티리얼에서 UseDiffuseMap? 이라는 스태틱 스위치 파라미터를 사용해서 그 둘 중에 선택합니다. 이 옵션이 True 로 설정된 경우, 지정된 알베도 텍스처 입력을 사용해서 DiffTint 상수 값을 곱하는 것으로 지정된 알베도 맵의 컬러에 색조를 입히는 것이 가능합니다. 알베도 맵을 사용하지 않는 경우, DiffuseValue 를 사용해서 알베도 값을 정의하면 됩니다.

DiffMap 텍스처 입력 왼쪽에는, UV 슬롯에 연결된 노드를 확인할 수 있습니다. 이는 마스터 머티리얼의 Parallax (패럴랙스) 부분에 연결됩니다. 여기에도 UV 타일링 구성을 추가하여, 3D 모델링 프로그램이 아닌 UE4 에서 머티리얼 타일링을 조절할 수 있습니다.

다음 예제를 통해 이 시스템의 유연성을 확인할 수 있습니다. 왼쪽에는 머티리얼이 알베도 맵에 단일 컬러를 사용하고 있습니다. 가운데는 그냥 알베도 맵을 사용중입니다. 오른쪽에는 주황색 색조를 입힌 알베도 맵을 사용하고 있습니다. 같은 맵을 사용하여 엔진에서 여러가지 다양성을 내는 방법이 확인됩니다.

image_3_1.png

image_3_2.png

image_3_3.png

Single Color for the Albedo Map

Albedo Map

Albedo Map with Color

image_3.jpg

메탈릭 구성

image_4.jpg

매우 단순하게 머티리얼의 메탈릭 프로퍼티를 정의하는 데 있어 메탈릭 맵을 쓸 것이냐 단일 값을 쓸 것이냐를 선택할 수 있습니다.

이것이 유용한 이유는, 단일 값을 사용하면 예를 들어 금속성 머티리얼의 타일링에 좋을 테지만, 어떤 부분은 금속성이면서 일부는 비금속인 머티리얼을 원할 경우 옵션을 통해 메탈릭 맵을 지정할 수도 있습니다.

다음 예제에서 이것의 실제 활용이 확인됩니다. 왼쪽의 머티리얼은 메탈릭 값 0, 가운데는 1 이며, 오른쪽은 지정된 메탈릭 맵을 사용합니다.

image_5_1.png

image_5_2.png

image_5_3.png

Metallic Value - 0

Metallic Value - 1

Metallic Texture Map

러프니스 구성

image_6.jpg

알베도 구성과 비슷하게, 전체적인 러프니스를 정의하는 데 러프니스 맵을 사용하느냐 단일 값을 사용하느냐 선택할 수 있습니다. 머티리얼에 러프니스 값을 빠르게 할당한 다음 나중에 이 값을 포토샵으로 가지고 가서 머티리얼 고유의 러프니스 맵을 만드는 데 사용하면 됩니다.

다음 예제에서 이것의 작동 상태가 확인됩니다. 왼쪽의 머티리얼은 러프니스 값 1, 가운데는 0, 오른쪽은 지정된 러프니스 맵을 사용합니다.

image_7_1.png

image_7_2.png

image_7_3.png

Roughness Value - 1

Roughness Value - 0

Roughness Texture Map

UseDetailRoughness? 스태틱 스위치를 통해 DetailTiling 상수에 연결되어 TexCoord 를 곱하는 디테일 러프니스 맵을 사용하여 디테일 러프니스 맵 타일링이 가능합니다. 이 값은 디테일 노멀 맵으로도 연결됩니다. 가까이서 볼 소지가 있어 타일링 비율이 매우 높을 수 있는 텍스처가 필요한 머티리얼에 유용합니다.

다음 예제에서 이것의 실제 활용이 확인됩니다. 왼쪽의 머티리얼은 디테일 러프니스/노멀 맵을 사용하지 않으며, 가운데는 타일링 비율이 1 인 디테일 맵을 사용하고, 오른쪽은 타일링 비율이 4 인 것을 사용합니다.

image_75_1.png

image_75_2.png

image_75_3.png

Does not use a Normal Map

With Normal Map and Tiling set to 1

With Normal Map and Tiling set to 4

오클루전 구성

image_8.jpg

이 구성은 스태틱 스위치 파라미터를 통해 오클루전 맵 또는 단일 값 중에서 선택 사용할 수 있습니다. 대부분의 머티리얼은 단순한 흰색인 오클루전 값 1 을 사용합니다만, 머티리얼에 필요한 경우 앰비언트 오클루전 맵을 지정할 수 있는 옵션이 있습니다. 빛이 닿지 않아 어두운 부분이 있는 고유하게 펼친 모델에 쓰이는 머티리얼을 예로 들 수 있습니다.

이미시브 구성

image_9.jpg

이 구성으로 머티리얼에 이미시브를 사용할 것인지 말 것인지 선택할 수 있습니다 (기본적으로 퍼포먼스 향상을 위해 False 로 설정되어 있습니다). 또다른 스태틱 스위치를 통해 이미시브 맵을 지정할 수도 있습니다. 지정한 이미시브 맵을 사용하지 않기로 한 경우, EmissiveScale 파라미터를 사용하여 이미시브 값을 설정하면 됩니다. 하지만 이 EmissiveScale 파라미터는 EmissiveMap 을 지정한 경우에도 사용되어, 머티리얼의 밝기에 대한 보다 세밀한 제어가 가능합니다.

다음 예제는 이미시브 구성 작동방식을 보여줍니다. 왼쪽의 머티리얼에는 이미시브 스케일이 0, 가운데는 1, 오른쪽은 2 로 설정되어 있습니다.

image_10_1.png

image_10_2.png

image_10_3.png

Emissive Value - 0

Emissive Value - 1

Emissive Value - 2

노멀 구성

image_11.jpg

노멀 맵 구성은 조금 복잡해 이기는 해도 실은 꽤나 단순합니다. 기본적으로 이 머티리얼은 평평한 노멀 맵 텍스처를 사용하도록 되어 있으나, 스위치를 추가하여 노멀 맵을 끄고 상수값을 사용하도록 하여 텍스처 메모리를 절약할 수도 있습니다.

이 구성은 노멀 맵과 디테일 노멀 맵을 합칠 수도 있습니다. DetailTiling 상수에 TexCoord 를 곱하여 타일링 비율을 조절할 수 있습니다. DetailNormalStrength 로 디테일 노멀 맵의 세기를 조절할 수 있습니다.

패럴랙스 구성

image_12.jpg

이 패럴랙스 구성은 머티리얼에 하이트맵이 적용된 것처럼 깊이감을 부여하는 BumpOffset 노드를 사용할 수 있도록 해 줍니다. 자세한 내용은 Utility 표현식 문서를 참고하세요.

이 구성은 앞서 말한 모든 부분의 UV 슬롯에 연결되어 있으므로, 패럴랙스가 켜지면 모든 맵에 그 효과가 적용된다는 뜻입니다.

다음 예제는 패럴랙스 (시차) 효과의 적용 예입니다. 왼쪽에는 패럴랙스가 꺼진 상태, 오른쪽에는 패럴랙스가 0.007 로 설정된 상태입니다. 아주 미묘한 효과지만 사용되는 머티리얼에 따라 잘 통할 수도 있습니다.

Parallax Disabled

Parallax Enabled

머티리얼 인스턴싱

마스터 머티리얼 구성이 완료되었으니, 이제 마스터 머티리얼에 우클릭한 다음 머티리얼 인스턴스를 생성할 수 있습니다.

image_14.jpg

그런 다음 머티리얼 이름을 지어주고 원하는 폴더에 정리해서 넣습니다. 폴더 구성은 머티리얼 유형마다, 즉 모든 금속성 폴더, 플라스틱 폴더 식으로 해 줄 것을 추천합니다.

이제 새로 만든 머티리얼 인스턴스에 더블클릭하면 다음과 같은 화면이 보일 것입니다:

image_15.jpg

보시듯이, 마스터 머티리얼 구성에서 파라미터로 만든 값과 스태틱 스위치가 전부 머티리얼 인스턴스에서도 보입니다. UseDiffuseMap? 같은 스위치를 켜면 별도의 디퓨즈/알베도 맵 입력이 켜지고, 디퓨즈 멀티플라이 옵션처럼 그에 엮인 파라미터도 활성화됩니다.

공상과학 폐허 씬에 사용한 머티리얼 구성입니다. 여기 보시는 것은 제가 여러가지 컬러와 머티리얼 프로퍼티로 된 타일링 머티리얼 라이브러리를 만들어 둔 것으로, 씬의 메시에 쉽게 적용할 수 있습니다.

image_16.jpg

메시에 적용

머티리얼 라이브러리 구성이 완료되었으니, 그 타일링 머티리얼을 메시에 쉽게 적용할 수 있습니다. 다음 그림에서 보실 수 있듯이, 이 메시는 고유하게 구은 노멀 맵을 사용하기 보다는 타일링 머티리얼에 의존하여 그럴싸한 표면을 만들어 내고 있습니다. 전체 메시 라이브러리를 이런 식으로 만들어 두면 머티리얼 인스턴스를 사용한 장점을 확인할 수 있는데, 값 하나만 조정해도 전체 씬에 전파되기 때문입니다. 예를 들어 이 씬에 사용된 나무 텍스처를 변경하고자 하는 경우, 나무 머티리얼 인스턴스에서 한 번만 바꿔주면 전체 씬이 업데이트됩니다. 여러 개의 고유 디퓨즈 맵에 텍스처 작업을 다시 해야 하는 것보다 훨씬 빠릅니다.

image_17.jpg

부가 기능

바탕이 되는 마스터 머티리얼과 머티리얼 라이브러리 구성이 완료되었으니, 쉽게 마스터 머티리얼을 확장하여 기능을 추가할 수 있습니다. 예를 들어 이 머티리얼 구성에는 버텍스 페인팅 옵션이 없습니다. 버텍스 페인트에 기본적인 보간 함수가 혼합된 기능을 추가하면, 머티리얼 표면에 먼지를 칠하는 등의 작업이 가능합니다. 상세 정보는 2 방향 블렌드 머티리얼 문서를 참고하세요.

씬의 기본 마스터 머티리얼 구성에 필요한 것은 이게 다입니다. 이와 같은 부분이 정확히 어떻게 적용되었는지, 공상과학 폐허 방 씬에서 확인해 보실 수 있다는 점 잊지 마시구요. 그러면 행운을 빕니다!

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼