[대표적인 언리얼 머티리얼의 유형]
1. 실제 구현을 위한 머티리얼
2. 이펙트를 위한 머티리얼
[머티리얼 제작 기초]
Constant3Vector - 단축키 3 + 좌클릭
Lerp(LinearInterpolate) - 단축키 L + 좌클릭
TextureSample - 단축키 T + 좌클릭
<마스크 맵을 활용한 색상 분리 적용>
Lerp는 Alpha가 0일 때 A값을 Alpha가 1일 때 B값을 뱉어낸다. 0과 1 중간값일 경우에는 A와 B값을 블랜딩해주는 결과값이 나온다
그래서 Alpha값에 Mask 맵을 넣어주면 메시 부위별 다른 컬러 세팅이 가능해진다
Lerp 설정 시 순서가 중요, 포토샵과 같이 A값 위에 B값이 섞이는 것이기 때문에 베이스가 되는 컬러부터 위에 쌓이는 컬러 순서를 생각하며 작업하여야한다
* 머티리얼 에디터 뷰포트에서 특정 매시 형태로 미리보기 하고 싶으면 콘텐츠 드로워에서 매시를 선택한 상태에서 우측하단 벽돌모양 아이콘을 클릭해주면 된다
베이스컬러 이외의 다른 맵이나 수치가 같은 방식으로 제작 가능하고, 앰비언트 오클루전 맵같은 경우에는 Multiply(단축키 M + 클릭) 노드를 이용하여 BaseColor의 마지막에 곱해주어 디테일을 더해줄 수 있다
<Lerp 노드와 Mask 텍스처를 이용한 메터리얼 제작>
위와 같은 방식으로 Emissive Color만 추가하여 Material Instance를 만들어 작업해본 전등
Emissive Color는 HSV에서 Value 값의 변화에 따라 발광 정도가 달라진다
<메터리얼에서 자주쓰는 표현식: expression>
Material Expressions Reference | Epic Developer Community (epicgames.com)
* Ctrl + Alt 누른 상태에서 노드 위에 마우스를 올리면 노드 설명을 볼 수 있음, 자세한 설명은 Documentation에서 확
Constant
1,2,3,4 + 클릭
Constant2Vector부터는 벡터값을 가지게됨. 방향성을 가지고 있다는 의미
Add - 더하기
Subtract - 빼기
Multiply - 곱하기
Divide - 나누기
1-x - 값을 반전 시켜준다
Lerp(LinearInterpolate) - 마스크로 사용해 두 입력값을 블렌딩
Clamp - 값의 범위를 강제로 제한 할 수 있다
Power - 제곱
Texture Sample - 텍스처 파일
Texture Object - Texture Sample과 Texture Object는 서로 Convert할 수 있고, 두 가지 방식은 언리얼에서 인식하는 형식이 달라서 필요에 맞게 두 노드 중 하나를 사용하면 된다
Vertex Color - 버텍스에 저장된 컬러 정보를 활용하는 노드. 빨간색으로 된 노드인데 빨간색으로 나타나는 노드는 언리얼 씬에 존재하는 데이터를 사용하는 것이라고 이해하면 됨
TextureCoordinate - 텍스처의 UV값을 활용
Panner - 일정한 속도로 움직이도록 설정하는 노드(흘러가는 전광판이나 페이크로 물을 표현할 때 사용할 수 있을 것 같다)
Rotator - 일정한 속도로 돌아가도록 설정하는 노드, Panner와 Rotator는 Coordinate와 함께 사용
ComponentMask(Mask) - 텍스처에서 일정 채널만 추출하는 노드
AppendVector - 채널을 합쳐 원래보다 채널 수가 많은 벡터를 만들 수 있는 노드. 하나의 텍스처에서 채널의 순서를 재배치하거나 여러 개의 회색조 텍스처를 하나의 RGB 컬러 텍스처로 합칠 때 유용
Floor - 내림, 소수점을 내려서 정수로 만들어줌
Ceil - 올림, 소수점을 올려서 정수로 만들어줌
Frac - 정수를 없애고 소수만 사용
Round - 반올림
Fresnel - 표면 노멀과 카메라를 향하는 방향에 대한 내적에 따라 감쇠를 계산
<흐르는 느낌의 텍스처 만들기 조합>
<깜빡이는 느낌의 텍스처 만들기 조합>
무엇인가 진행시키면서 텍스처를 변경하려면 Time 노드를 사용하게 된다
Sine은 -1부터 1까지 반복되는 그래프인데, 출력값이 0~1 까지 표현되기때문에 -1~0까지가 0값으로 나온다. 그래서 상대적으로 화이트보다 블랙 컬러에 가까운 시간이 더 길게 보인다
이 균형을 맞추기 위해서는 Add 노드로 1값을 더해주고 0.5를 곱해줌으로써 범위를 0~1로 만들어주면된다
추가로 앞서만든 깜빡이는 텍스처를 Lerp 알파로 이용하여 두가지 컬러를 블랜딩 시켜주면 두가지 컬러가 깜빡이는 결과물을 얻을 수 있다
! 추가로 Round 노드를 이용하면 값을 반올림하여 두가지 컬러가 애매하게 블랜딩되는 것을 방지할 수 있다
<반복되는 움직임의 텍스처 조합>
<연속된 이미지 애니메이션 만들기 조합>
! 주의 Texture Sample이 아닌 Texture Object를 이용하여 연결하여야한다
<노드조합으로 텍스처 만들기>
TextureCoordinate에 Mask로 하나의 채널만 추출해주면 그라디언트와 같은 효과를 얻을 수 있다
Power나 Multiply를 이용하면 그라디언트의 범위를 조절해줄 수 있다
또한 Multiply로 텍스처의 반절을 1이상의 값으로 바꾼다면 Floor 노드를 활용해 정수 영역만 살려 반절 짜리 텍스처를 만들어줄 수 있다. Mask의 채널 변경으로 가로와 세로를 바뀔 수 있다
앞서 만든 반절 텍스처를 이용하여서 바둑판 텍스처를 만들 수 있는데
여기서 주의할 점은 Clamp를 사용하여 합치기 전 텍스처를 0에서 1값으로 다시 깨끗하게 정리해줘야한다
그림상에서 블랙으로 표시되는 부분은 0이하의 값이지 무조건 0값이 아니기 때문.
subtract과정에서 -값이 생기기 때문에 이를 주의해야한다
상하좌우 그라디언트를 조합하여 원형과 비슷한 그라디언트를 만들 수 있다.
또한 이 외에도 간단히 원 마스크를 만들기 위해 Sphere mask 노드를 사용할 수 있다. A에 TextureCoordinate를 연결해주고 B에는 원의 중심점이 될 위치를 Constant2Vector로, Radius는 원의 크기, Hardness는 테두리 경계의 또렷함을 조절해줄 수 있다
'Unreal Engine' 카테고리의 다른 글
Unreal Material - 02 (0) | 2024.04.11 |
---|---|
Unreal Level Design과 Light - 01 (1) | 2024.04.09 |
Unreal Lighting - 01 (0) | 2024.04.08 |
Unreal Engine 기초 - 02 (0) | 2024.04.03 |
Unreal Engine 기초 - 01 (0) | 2024.04.02 |