그냥 게임개발자

개발일지_010(언리얼엔진) 마스터머티리얼제작 본문

엔진스터디

개발일지_010(언리얼엔진) 마스터머티리얼제작

sudoju 2021. 11. 23. 22:19

- 오브젝트 환경에 대한 마스터 머티리얼 설정

- 유리에 대한 마스터 머티리얼 설정

- 머티리얼 함수 생성 및 사용

 

 

새 머티리얼 생성

콘텐츠 브라우저 > 오른쪽 클릭 > 머티리얼 선택

 

아무것도 없는 머티리얼

이제 머티리얼에 색을 추가해보자

머티리얼 에디터 > 우클릭 > Vector 검색 > Vector Parameter선택

벡터 파라미터의 이름을 Base_Color라 짓고 그룹에 BaseColor그룹을 만들었다.

이제 Base_Color 출력을 베이스 컬러에 연결한 후 R, G, B의 값을 0.5로 맞추어 살짝 하얀색으로 만들어준다.

다음 콘텐츠 브라우저에서 내가 사용할 텍스처를 누른 뒤 머티리얼 에디터에 T키를 눌러 에디터를 클릭하면 내가 선택한 텍스처로 Texture Sample 노드를 만들어낸다.

이대로 사용할 수도 있지만 이대로 사용하게 되면 텍스처 샘플을 조정할 수 없기 때문에 파라미터로

변환 시켜야 한다.

 

그 다음 switch Paramter를 검색해 StaticSwitchParameter 노드를 추가하고 Default Value를 체크해준다.

switch를 넣은 이유는 이 스위치를 False로 활성화가 되었을 때 텍스처를 사용하려고 만든거다.

이렇게 연결해두면 기본적으로 이 머티리얼은 하얀색깔을 가지고 있으며 Default Value를 비활성화하면 즉, Switch를 False하면 텍스처를 보게 된다.

 

그다음 1키를 눌러 에디터에서 좌클릭을 하면 노드가 생기고 그것을 파라미터로 변환시킨 후 Metallic이라는 이름을 지어준 후 Metallic에 연결하자.

그다음 아티스트들이 메탈릭을 조정하는데 실수하지 않게 Slider Max(최대 슬라이더 값)와 Slider Min(최소 슬라이더값)을 정해주자.

다음으로 할 일은 러프니스 구성인데

T_Brick_Clay_New_M을 드래그 해서 머티리얼 에디터에 넣은 후 텍스처 타입을 마스크로 설정한 뒤 마스크 파라미터를 구한 후 텍스처를 파라미터로 변환한다.

 

그다음 L키를 눌러 에디터를 누르면 Lerp노드가 만들어진다.

그다음 마스크를 Lerp Alpha에 연결한 뒤 그 다음 1키를 눌러 스칼라 파라미터를 두 개 만든 뒤 둘 다 파라미터로 변환 시킨다.

Low는 Min을 0.0001로 설정 High는 0.001로 설정 위 이미지와 같이 설정하자.

이제 이 Roughness_Low는 Lerp A에다가 연결하고 Roughness_High는 B에다가 연결한 후 Lerp를 러프니스에 연결하여 러프니스를 만들자.

이제 노멀맵을 만들어보자.

굳이 연결선을 드래그 하지 않고 연결하는 부분에 오른쪽 키를 눌러 자동적으로 Normal에 연결 시킬 수 있다.

아무튼 노멀 텍스처를 샘플 타입을 Normal로 설정한 후 파라미터로 변환하자.

 

우리는 마스터 머티리얼을 만들었다 왼쪽 위에 적용 버튼을 누르고 저장해주자.

 

우리는 마스터 머티리얼을 만들었다.

이제는 우리가 만들어진 머티리얼을 복사한 후 유리 머티리얼을 제작해보자.

MAT_ENV_Master를 복사한 뒤 이름을 MAT_Glass_Master라고 지어주는데 내 예제파일에는 이미 만들어져 있어 MAT_Glass_Master_00라고 지었다.

우리는 이 머티리얼을 유리로 만드려면 일단 투명하거나 빛을 반사하거나 어느정도 비춰야 한다.

이것을 설정하기 위해서는 오파시티랑 오파시티 마스크를 사용해야 하는데

현재 이 파라미터는 사용할 수 없다.

사용 가능하게 만드려면 디테일 패널의 블렌드 모드를 Masked나 Translucent로 바꿔야 한다.

기본적으로 Masked나 Translucent의 차이점을 보자면 Masked는 렌더러에게 이 픽셀을 통과해서 볼 수 있는지 없는지를 알려준다.

그러니 아예 되거나 안되거나 이다.

Translucent는 통과해 볼 수 있는 정도를 어느 정도 조정한다.

그러니 0.1의 Translucency라면 거의 다 통과시키되 표면이 살짝 더럽거나 하는 경우를 만들 수 있다.

Translucency가 0.99라면 1.0이라면 완전한 불투명이거나 아니면 거의 들여다보이지 않는 경우가 될 것이다.

두 가지는 이렇게 다르다.

또한 오파시티는 혹은 Translucency는 오파시티 마스크보다 비용이 훨씬 더 든다.

속도를 원한다면 오파시티 마스크를 선택하고 퀄리티를 원한다면 오파시티를 선택하면 된다.

1키를 눌러 노드를만들고 파라미터로 변환후 default 값은 0.5로 min은 0.001 max는 1.0으로 설정해주자.

계속 말하지만 Min과 Max를 설정해주는 이유는 아티스트가 실수를 방지하기 위해서 도를 넘는 것을 방지하기 위해 조정해주는 것이다.

 

이제 오파시티를 연결해주면 머티리얼이 투명해지는 것을 볼 수 있다.

왼쪽이 오파시티를 사용하지 않은 머티리얼이며 오른쪽이 오파시티를 연결한 머티리얼이다.

좀더 현명한 결과를 위해 텍스처 자체를 지워버리고 Base_Color로만 출력해보자.

 

확연한 차이가 느껴질 것이다.

 

Translucency섹션에 Lighthing Mode를 Surface Forward Shading으로 변경해 씬의 라이팅과 더 나은 반투명 상호작용을 하도록 해보자.

 

왼쪽 라이팅모드 - Volumetric NonDirectional, 오른쪽 라이팅모드 - Surface ForwardShading

확실히 아까보다 더 나은 퀄리티이다.

하지만 이것은 전보다 비용이 더 많이 들기도 하다.

보시다시피 내가 설정한 노멀 맵에도 반응하고 있죠.

Opacity값을 0.1로 설정하면 더더욱 투명해진다.

 

왼쪽 Opacity = 0.5, 오른쪽 Opacity = 0.1

이제 노멀맵을 바꿔서 진짜 유리처럼 보이게 해보자.

전보다는 더 유리같다 ㅋㅋㅋㅋㅋㅋ 굉장히 흠이 간 유리 ㅋㅋㅋㅋㅋ

 

결과는 아주 대단했다.

 

머티리얼을 만들고 유리로도 만들고 러프니스 맵도 작성하고 머티리얼 인스턴스에 대해서도 알았다.

굉장히 재밌는 경험이기도 했고 하루 빨리 게임을 만들고싶다.

그러고 싶지만 기본이 다져져야 성과를 빨리 이룰 수 있다고 생각한다.

조금만 더 힘내보자.