Material
Material
머티리얼이란 특정한 게임 오브젝트의 ‘표면적 시각 특성’을 정의하는 개념으로 그 구성요소는
- 기본 색상(Base Color)
- 질감/거칠기 (Roughness)
- 반사/굴절 (Metalic, Specular, Refraction)
- 입체감 표현(Normal Map)
- 자체광 (Emissive)
- 반투명 (Opacity)
등이 있어 표면을 어떻게 보일것인지를 나타내는 시스템이다
Material은 완전하게 ‘비주얼’적인 요소이므로
별도의 기능으로 나누어 하나의 시스템으로 만듦
(머티리얼은 Shader 언어로 컴파일되며, GPU에서 처리된다)
어떠한 의미로는 ‘머티리얼 시스템’은 ‘셰이더 생성 툴’ 이라고도 볼 수 있음
또한 언리얼 엔진의 머티리얼 시스템은 PBR(Physically Based Rendering)에 기반한다
PBR(Physically Based Rendering)
‘물리 기반 렌더링’ 이라는 뜻으로
빛과 재질 표면에 대한 상호작용을 수학적으로 계산하여
사실적이고 일관된 시각 효과를 나타내는 렌더링 방식이다
(셰이딩, 머티리얼 구성 방식, 조명 시스템을 포함하는 개념)
PBR 시스템의 구성요소
요소 | 설명 | UE5 지원 | 사용 예시 |
---|---|---|---|
Base Color | 표면 고유 색 | O | 나무, 페인트 |
Metallic | 금속 여부 | O | 철, 구리 |
Roughness | 거칠기 | O | 유리(0), 돌(1) |
Normal | 미세 표면 굴곡 | O | 바위, 나무결 |
Ambient Occlusion | 틈 그림자 강조 | O | 모서리 어둠 |
Emissive Color | 자체 발광 | O | 네온, 마법진 |
Opacity | 투명도 | O (Translucent) | 유리, 물 |
Specular | 비금속의 반사 강도 | O (기본값 0.5) | 피부, 고무 |
Anisotropy | 방향성 반사 | ❌(기본), ✅(Hair/Groom/Substrate) | 머리카락, 금속결 |
-
- BaseColor
- 색상 정보이며, Albedo라고도 표현한다
조명과 그림자의 영향을 받지 않은 상태의 정보
- BaseColor
-
- NormalMap
- ‘굴곡’을 표현하는 텍스쳐
(이전 TIL에서도 적었듯
3차원 물체를 직접 표현하는 것은 매우 많은 리소스 소모가 들기에 텍스쳐를 발라서 표현)
(이러한 굴곡은 ‘조명’에 따라 밝고 어두운 부분이 달라지기에 ‘라이팅 정보’를 표현하기도 함)
- NormalMap
-
- 패킹 텍스쳐?
- 각각의 RGB 요소에 머테리얼 노드 데이터를 압축시켜 놓은 텍스쳐
R : AO(Ambient Occlusion)
G : Roughness
B : Metalic
-> 이러면 ARM 텍스쳐라 한다
R : Occlusion(Ambient)
G : Roughness
B : Specular
-> 이러면 ORS 텍스쳐
(결국 네이밍 규칙이기에 유연하게 생각해야 한다)
(간혹 dp 나 d 같은 요소가 있는데 World Displacement라는 요소가 있기도 함)
- 패킹 텍스쳐?
-
- Substrate 머티리얼?
- UE5.3 부터 등장한 모델
Anisotropy 나 Clear Coat와 같은 고정된 셰이딩 모델이나 블렌드 모드를
더 다양하게 표현할 수 있는 머테리얼 프레임워크
(다만 아직 Beta이므로 버전에 따라 기능이 다를 수 있음에 주의)
- Substrate 머티리얼?
-
- LandScape Visiblity Mask?
- LandScape 상황에서 ‘일부’를 보이지 않거나, 보이게 페인팅하고
이후 스태틱 메시 등을 이용하여 ‘동굴’이나 ‘지하 영역’을 표현하기 쉽게 만든 기능
(LandScape Material에서 Opacity Mask를 해당 노드로 넣어주면 된다)
(좌클릭으로 투명하게, Shift + 좌클릭으로 다시 보이게 만듦)
- LandScape Visiblity Mask?
LandScape Material 과 PostProcess Volume, Exponential Height Fog 를
추가한 LandScape 레벨
Material Animation
머티리얼 기능만을 활용하여 애니메이션 연출이 가능
이 경우, ‘반복되는 연출’을 구현할 때 많이 사용하는 것이
삼각함수이다
사인 그래프는 위와 같이
-1 ~ 1 사이의 값을 반복하는 그래프로
특정한 값이나 행동이 loop 되는 경우에 자주 사용되는 그래프 중 하나이다
사인 그래프 변형
- y = sin(x) : 기본 그래프
- y = sin(x + a) : a 값 만큼 좌우로 그래프가 ‘수평이동’하기에, ‘타이밍’을 바꿀 수 있는 연산
- y = sin(x + b) : b 값 만큼 위아래로 ‘수직이동’ 하기에 -1+b ~ 1 + b 만큼의 값 사이가 나오게 된다
(값의 세기나 최소값, 최댓값 보정등에 응용 가능) - y = sin(x) * A : 곱셈을 통한 ‘스케일링’으로 -1 * A ~ 1 * A 의 값 사이가 나오게 된다
(‘출렁’이거나, 극적인 변화를 주거나 반대로 작은 값을 곱해, 미미한 연출이 가능) - y = sin(x * B) : x 값에 직접적인 영향을 미치기에 ‘파동’의 주기를 변환시킨다
(B값이 클수록 더욱 -1~1이 자주 바뀌지만, 반대로 B값이 작을수록 느리게 변형)
머테리얼 노드에서 본다면?
Material 노드에 적용한 Sine(최소한의 사인 그래프)
(Time 을 넣어 시간에 흐름에 따라 Emissive Color에 적용함으로서 반짝일 수 있게 함)
위의 Sin 변형과 함께 몇가지 추가 효과를 넣은 것
- Ceil : 반올림을 통하여 소수점 자릿수에 따른 세세한 변화 대신 극적인 변화 연출
- Brightness : 최종 결과값에 곱하여 광원 효과를 극대화
(Emissive Color 같은 요소는 HDR 렌더링 등에서 1.0 이상의 값 표현을 허용하기에
수치가 높아질수록 더 밝게 표현됨)
(퐁 셰이딩 등에서 Specular 값을 높게 주면 더 ‘밝게’ 보이는 것과 비슷하다)
Fresnel, OneMinus, Power,FallOff 등을 이용하여 전구와 비슷한 느낌을 주도록 변형
(붉은 색이 카메라와 카메라 방향 벡터, 초록색이 표면의 법선 벡터)
-
Fresnel : 화면상에서 ‘법선 벡터’(normal)와 카메라 방향(뷰 방향)간의 각도 차를
바탕으로 Edge 부분이 두드러지도록 값을 계산
(위의 예시를 통해 확인하자면 붉은색의 벡터와 초록색의 벡터의 ‘내적’을 통하여
‘테두리’에 얼마나 가까운지를 확인 가능하다)
(두 벡터간의 내적값이 0에 가까울수록 90도에 가깝기에)
(테두리에 가까워질수록 1, 아니면 0 을 Return) -
OneMinus : (1-x)이기에 값의 반전 등에 유용하게 사용하는 함수
(Fresnel 값을 반전시키기에 가장자리를 0에 가깝게 만들어준다) -
Power : 하이라이트를 ‘강조’하는 역할
특정 수치만큼 제곱하기에
‘작은 값’이라면 더 작아지게 만들 수 있음
(Falloff 파라미터를 통해 가장자리에서 멀어도 영향을 줄 수 있도록 설정)
Material Instance
기존의 머티리얼을 기반으로 ‘파라미터’만 바꿀 수 있는 복사본
(새로이 셰이더 코드를 컴파일하지 않고 일부 값을 바꾸어 다시 사용하는 용도)
사용 이유?
이유 | 설명 |
---|---|
✅ 성능 향상 | 머티리얼은 GPU 셰이더 코드로 컴파일됨 → 인스턴스는 기존 셰이더를 공유해서 매우 빠름 |
✅ 실시간 편집 | 파라미터를 바꾸면 즉시 반영됨 (색상, Roughness 등) |
✅ 다양한 변형 재질 생성 | 하나의 머티리얼로 수십~수백 개의 변형을 생성 가능 (예: 색상만 다른 오브젝트들) |
✅ 블루프린트/코드에서 제어 가능 | 런타임에 색, 텍스처, 스칼라 값 변경 가능 |
✅ 아티스트 친화적 | 디자이너가 머티리얼 코드를 건드리지 않고 다양한 스타일 시도 가능 |
실시간으로 머테리얼을 생성하거나 제어하는 경우(코드나 BP)는
Material Instance Dynamic (MID) 로 사용
ETC
- BP 등에서 Comment Box를 생성하는 단축키는 ‘선택’후 ‘C’를 누르기
- 머테리얼 창에서 1 을 누르고 좌클릭을 할 시 ‘상수 노드’가 만들어진다
댓글남기기