본문 바로가기

Unreal Engine

240404 언리얼 엔진 - 메터리얼 1

 

PBR 메터리얼

- 아티스트의 직관에 의존하던 방식 -> 현실의 물리를 기반하는 방식이 새롭게 등자아고 현실과 더 비슷한 이미지를 얻을 수 있게됨.

- 각 재질에 필요한 실제로 측정한 수치들이 존재. 실제와 똑같이 하고싶다면 따르는 것이 좋다. 단 아트적으로 다가가려면 해당 수치들은 권장만 함.

 

언리얼 메터리얼의 두가지 유형

  • 개체 묘사를 위한 메터리얼
  • 이펙트를 위한 메터리얼
  • 실제의 재현

언리얼 메터리얼을 구성하는 6가지 요소

  1. 메터리얼 에디터
  2. 메터리얼 레이어
  3. 메터리얼 인스턴스 (instance)
  4. 메터리얼 펑션 (function)
  5. 메터리얼 파라미터 콜렉션
  6. HLSL (High level shader)\

01. Lerp 노드 활용한 (채널별) 메터리얼 제작

- SM_chair 모델링>M_chair 메터리얼로 들어감

[3-4-클릭] 하면 constantVector4노드가 바로열림 (바로 파라미터로 변환)

Lerp : A와 B값을 alpha기준으로 합침

- 텍스쳐 샘플 임포트 (드래그)

- 텍스쳐 샘플에서 이미지를 더블 클릭하면 들어가서 각 채널을 확인할 수 있음

- 텍스쳐 상세정보

디자인툴에서 1과 0은 각각 흰색과 검정색을 의미함. Lerp는 알파값을 기반으로 함.

Lerp의 A값은 Param_1의값으로, Lerp의 B값은 Param의 값을 받아들임.

- 메쉬 선택 후 2번 클릭하면 모델링 이미지로 메터리얼 샘플 확인 가능


<기존 chair 텍스쳐>

R 값 - AO의 역할

G - 블루와 마찬가지로 마스크의 역할

- Lerp를 두 번 사용하면서

메터리얼 인스턴스를 만들고, 파라미터를 활성화 시키면 바로 컬러를 변경할 수 있음

- 위 방식을 활용 해서 부분적으로 메터리얼을 변화시킬 수 있음

- AO역할을 하고 있는 r채널을 multiply 시켜서 베이스컬러에 연결해주면 음영이 생김

- add 사용시 1값을 넘어버려서 하얀색으로 표현 -> 즉 AO는 곱하기(multiply)사용해야함

 

- lerp 노드와 텍스쳐 rgb값을 활용한 메터리얼


02. Expression(표현식)

- constatnt : 숫자 하나로 이루어진 노드

- vector2 : x,y 좌표 기준

- vector3 : 상수 3개

- vector4 : alpha값까지

math 노드

divide는 잘안씀. multily로 소수점을 곱하면 나눠지기 때문

그럼에도 나누는 이유는 사용할 때가 오긴 함 (정수만 수식으로 써야할 때)

  • 1-x : 결과를 반대(reverse) 시킴
  • Lerp : 합친다는 개념
  • clamp : 값을 제한. 값이 들어오면 최소값과 최댓값을 제한할 수 있다.
  • Power : 제곱해서 뻥튀기를 시켜줌

  • texture sample : 텍스쳐를 담는 샘플
  • texture object : 텍스쳐 샘플과 달리 인풋노드도 없고 아웃풋 노드만 있음.
    샘플을 오브젝트로 만들 수 도있고, 오브젝트를 샘플로도 만들 수 있음. 언리얼에서 두 노드를 다른 유형으로 인식함.
  • vertex Color : 빨간색 노드. 어떠한 데이터를 인식함. 이 메터리얼이 적용되고 있는 버텍스 컬러를 가지고옴. effect할 때 많이 쓰임.
  • TexCoord : 텍스쳐의 UV값을 계산하고 타일링함.

  • Panner : 텍스쳐를 움직일 수 있는 노드. 스피드에 값을 입력하면 됨
  • Rotator : 텍스쳐를 돌아가게 함.

  • Mask : 특정 채널의 값을 추출함. (인풋으로 텍스쳐를 받고 아웃풋으로 특정값을 내보냄)
  • append : 콘스탄트값을 합쳐서 vector로 만들어주는 기능. 두 개의 값을 각각 살리면서 합쳐낸다. (add랑은 다름)

  • Floor : 내림
  • Ceil : 올림
  • Frac : 정수 날리고 소수만 씀
  •  


03. 기본적인 조합

- multiply 노드를 활용하여 1 이하의 숫자를 곱하면 어두워짐.

- add 노드를 활용해서 1값을 집어넣으면 하얘진다. 그 밑의 숫자도 0이상이면 명도가 올라간다.

- add와 multiply의 차이점

- clamp : 텍스쳐에서 0.25가 넘어가는게 있다면 전부 0.25로 만듦

 

fresnel : 반사되는 이미지의 각도

- 프레넬 수치에 따른 메터리얼 변화.

이 메터리얼의 경우 현실에서는 존재하지 않는 재질이며 주로 게임에서 하이라이트 효과를 줄 때 사용한다.

- 수식 math 노드를 활용하면 더 효과를 강하게 줄 수 있다.

 

power/mult 노드를 사용하면 진해지는건 더 진해지고 밝은건 더 밝힐 수 있는 효과를 낼 수 있음.

- 마찬가지로 Lerp 노드를 활용하여 채널별로 타일 메터리얼에 부분마다 다른 텍스쳐를 삽입하는 것이 가능하다


04. UV 수정 조합과 애니메이션

- 벽돌 텍스쳐 이미지에 0.5를 곱하면 2분의 1이돼서 기존 텍스쳐보다 작아짐

- add를 이용하면 텍스쳐의 offset 을 움직인다.

- 펄린 노이즈 텍스쳐를 활용하여 노이즈의 모양대로 변형 가능.

- sin함수노드에 따라 주기적으로 깜빡거리는 애니메이션이 첨가된 메터리얼을 제작할 수 있다.

그러나 이 경우에는 검은색일 때의 시간이 더 길다.

- 이렇게 math 노드 붙혀주면 주기적으로 깜빡거림.

- 3vector 이용해서 multiply를 alpha값에 입력하면 빨간색과 초록색이 깜빡이는 효과를 만들 수 있음.

- 텍스쳐를 위아래로 움직이게 하려면 Panner을 이용한다.

- 불꽃 텍스쳐를 flip book 노드에 연결하여 불꽃이 터지는 듯한 메터리얼을 표현할 수 있다.


05. 텍스쳐 생성

- 텍스쳐 코디네이트>mask로 레드 컬러만 남겨준다. power 노드를 붙히면 그라데이션 강도가 거세짐

- 만약 멀티플라이 노드를 연결한다면 0.5 이후의 부분 전체가 1로 인식되며 가운데에 경계선이 생김

- floor 노드를 붙혀주면 0.5 이전은 모두 0값으로 내려짐

- mask에서 g항목만 남겨두면 가로로 돌리기 가능

- clamp를 넣은 이유 : 어둡다고 0값이 아니기 때문에 제한을 함

- 원마이너스 노드를 붙혀주면 양쪽에 그라데이션 효과가 생김

- sphere mask로 원모양


과제물 제작 : 수업 내용 응용하여 테이블에 메터리얼 넣기

체크무늬 메터리얼 / 애니메이션 메터리얼 / 깜빡이는 애니메이션 메터리얼

 

- 기존 테이블 메쉬

- 텍스쳐 샘플 메터리얼 베이스컬러에 삽입

- r 채널

- G 채널

- base color lerp 노드 사용하여 컬러 변경 + r컬러 노드 이용하여 ao 추가

- 메탈릭, 러프니스 질감 개별로 추가 

- 체크 텍스쳐 추가

- 체크패턴 삽입하고 깜빡거리는 애니메이션 넣음

- 텍스쳐가 움직이는 애니메이션

- 전체 노드

- 최종아웃풋