그냥 게임개발자

개발일지_012(언리얼엔진)머티리얼 인스턴스 본문

엔진스터디

개발일지_012(언리얼엔진)머티리얼 인스턴스

sudoju 2021. 11. 23. 22:58

- 부모 / 마스터 머티리얼과 그 자손

- 머티리얼 인스턴스를 생성 및 사용

- 부모 머티리얼 함수 기능의 재정의(오버라이드)

 

머티리얼 부모가 R, G, B를 다 사용할 수 있다면 자식들도 R, G, B를 사용할 수 있다.

즉, 이 말은 부모가 할 수 있으면 자손도 할 수 있고 부모가 할 수 없으면 자손도 할 수 없다.

 

■ 머티리얼 인스턴스 제작

머티리얼 인스턴스를 생성하는 것은 굉장히 쉽다.

콘텐츠 브라우저에서 머티리얼 인스턴스를 생성할 머티리얼을 오른쪽 클릭 후 맨 위에 머티리얼 인스턴스 생성을 누르면 된다.

또는 그냥 아무 빈칸에 오른쪽 버튼을 누른 후 머티리얼 & 텍스처 > 머티리얼 인스턴스로 생성할 수 있다.

 

나는 MAT_ENV_Master를 머티리얼 인스턴스를 생성했다.

보면 디테일 패널에 여러가지 설정할 수 있으며 이 설정 값을 바로 실시간으로 뷰포트에 보여준다.

하지만 여기서 우리가 전에 마스터 머티리얼을 제작하면서 BaseColor는 Base_Color 그룹으로 Normal텍스처는 Normal 그룹으로 나누었다는 것이 기억날 것이다.

그 이유가 여기서 나온다.

그룹을 정해주지 않으면 베이스컬러, 노멀 맵, 러프니스 등 미세하게 조절할 수 있는 값들이 Global Scalar Parameter Values에 그룹으로 묶여서 하나하나 미세하게 조정하지 못할 것이다.

즉 베이스 컬러를 바꾸려먼 Global Scalar Parameter Values를 조정해야 하는데 조정하게 되면 러프니스 값도 바뀌고 노멀 값도 같이 바뀌어버리기 때문에 우리는 파라미터 그룹을 지어준 것이다.

또 양면으로 렌더링 해주는 것도 있다.

왼쪽 구의 내부, 오른쪽 구 밖

여러 가지 기능들을 활용해보자.

 

■ 버텍스 애니메이션

버텍스 애니메이션은 굉장히 복잡한 항목에 아주 미묘한 움직임을 저렴한 비용으로 전달하는 데 사용된다.

이게 무슨 말이냐면 물, 풀, 천 같은 것을 버텍스 애니메이션으로 움직이게 할 수 있다는 것이다.

버텍스 애니메이션은 CPU가 아니라 온전히 GPU에서 진행이 되기에 매 프레임의 렌더링 비용이 저렴하고 주어진 메시에서의 기존 버텍스 위치를 오프셋 하기만 하면 되기 때문이다.

다만 플레이어가 상호작용하는 물건에 사용해서는 안되며 그 이유는 그 정보를 실시간으로, 또는 게임이 이해할 수 있는 방식으로 저렴하게 파악할 수 있을 거라고 보장할 수 없기 때문이다.

또한 이렇게 움직이는 애니메이션은 버텍스만 움직이고 실제로는 움직이지 않기 때문에 정말 굉장한 결과물을 만들어낸다는 점이다.

 

이제 버텍스 애니메이션을 어느정도 알았으니 움직이는 나무 버텍스 애니메이션을 만들어보자.

 

먼저 새로운 머티리얼을 생성한다.

그다음 Blend Mode를 Masked로 바꾼 뒤 꼭 Two Sided를 체크해야 한다 내부도 렌더링이 되어야 되기 때문이다.

그 이유는 마스크도 텍스처를 사용해서 나뭇잎에 나뭇잎 같은 외형을 주기 위해서다.

이제 예제에 있는 SM_Cherry_Tree를 스태틱 메시 에디터로 실행해보자.

머티리얼 종류가 두개인 것은 나뭇잎만 움직이게 하고 싶어서다.

나뭇잎이 움직이는데 가지까지 같이 움직이면 이상하지 않은가?

그래서 두 종류를 사용하는 거다.

이제 머티리얼 에디터로 들어가 이 텍스처를 만들 거다.

T_Cherry_Tree_Flowers_D 텍스처 노드를 드래그 드롭한 뒤 RGB는 베이스 컬러 Alpha는 오파시티 마스크에 연결해주면 왼쪽과 같이 멋진 나뭇잎 텍스처가 만들어졌다.

이제 노멀 맵도 추가하고 Simple Grass Wind노드도 추가해주고 스칼라 노드를 통해 러프니스 값은 0.5 너무 빛나지 않게 설정해주고 Wind Intensity와 WindWeight의 값은 0.5 AdditionalWPO는 0으로 놔두고 적용하면 텍스처가 움직일 것이다.

전에 Two Sided를 체크하고 체크 안 한 것의 차이점을 보자.

 

왼쪽 Two Sided 체크 - 오른쪽 Two Sided 체크 해제

 

내부 렌더링 한 것과 안 한 것의 차이가 엄연히 드러난다.

다음에는 성능의 최적화에 대해서 배워보자.