Search
Duplicate

머테리얼(Material)

액터의 표면을 표시하는 것이 메테리얼 입니다. 머테리얼에 관해 알아봅시다.

메테리얼은 물체의 표면을 다루는 에셋입니다. 게임에서 표면에는 다양한 요소들이 있습니다.
색상, 굴곡, 빛의 반사, 모양 등등 이 모든것들을 관리하고 다룰수 있는것이 메테리얼 에셋입니다.
표면을 메테리얼로 메쉬와 별도로 다룰 수 있게 되면, 똑같은 메쉬로 표면만 다르게 하여 여러가지 액터를 만들 수 있습니다. 또한 자주 사용되는 지형, 하늘 , 물 에셋같은 경우는 같은 메테리얼만들어 두고 파일로 저장해서 서로 공유하면 언제든지 어느 프로젝트에서 가져다 사용 할 수도 있습니다.

메테리얼 만들기

이름은 M_YamYami 이로 하겠습니다. 그리고 이를 더블클릭하여 실행해주세요.
메테리얼 창은 툴바, 뷰포트, 디테일, 그래프 크게 이 4가지로 구성되어 있습니다.

메테리얼 노드와 그래프

언리얼 엔진의 메테리얼 시스템은 노드 기반 비주얼 프로그래밍을 사용합니다. 이는 전통적인 코딩 대신 시각적으로 연결된 노드들을 통해 메테리얼의 특성을 정의하는 방식입니다.
각 노드는 특정한 기능을 수행하며, 이러한 노드들을 서로 연결하여 복잡한 메테리얼 효과를 만들 수 있습니다. 예를 들어:
상수(Constant) 노드: 색상이나 숫자 값을 지정
텍스처 샘플(Texture Sample) 노드: 이미지를 메테리얼에 적용
수학 연산(Math) 노드: 다양한 계산을 수행
파라미터(Parameter) 노드: 메테리얼 인스턴스에서 수정 가능한 값을 정의

메테리얼 블루프린트

메테리얼 블루프린트는 메테리얼의 모든 속성을 시각적으로 정의하는 작업 공간입니다. 여기서 다음과 같은 주요 요소들을 다룰 수 있습니다:
Base Color (기본 색상): 메테리얼의 기본적인 색상을 결정
Metallic (금속성): 표면의 금속 특성을 조절
Roughness (거칠기): 표면의 매끄러움이나 거친 정도를 설정
Normal (노말): 표면의 미세한 굴곡을 표현
Emissive (발광): 자체 발광 효과를 추가
이러한 노드 기반 시스템의 장점은 직관적인 시각적 작업이 가능하고, 복잡한 효과도 쉽게 만들 수 있으며, 재사용과 수정이 용이하다는 것입니다.
또한, 만들어진 메테리얼은 머티리얼 인스턴스를 통해 재활용할 수 있으며, 파라미터 값만 변경하여 다양한 변형을 만들 수 있습니다.
노드를 사용하는 방법은 매우 간단합니다.
그래프 안에 있는 공간에 우클릭을 한후 Vectors 항목에 Constant4Vector를 생성해줍니다.
Constant4는 4개의 값을 하나로 묶은 데이터입니다.
그리고 난 후에 해당 노드를 더블클릭 한후 빨간색으로 바꿔 봅시다.
그리고 난후 M_YamYami 노드에 Base Color 부분에 드래그하여 연결시켜줍니다.

메테리얼 사용하기

Material 폴더에 있는 해당 메테리얼을 드래그하여 Level에 아무 액터한테 드래그앤 드롭 해보세요.
엑터의 메테리얼이 변경되었습니다. 이렇게 드래그 앤드롭으로 손쉽게 메테리얼을 바꿀수 있습니다.
또는 디테일 패널에 Materials 컴포넌트에 Element를 클릭하여 다른 메테리얼로도 손쉽게 바꿀수 있습니다.

Metalic을 설정해 봅시다.

메탈릭은 액터를 금속으로 표현하기 위한 수치입니다. 금속이 아닌 경우에는 0 , 금속에 가까운 경우 1입니다.
Constant 노드를 추가한후 값을 1로 바꿔 봅시다.

러프니스를 추가해 봅시다.

러프니스(Roughness)는 표면의 거칠기를 나타내는 값입니다. 0에 가까울수록 매끄럽고 반짝이는 표면이 되고, 1에 가까울수록 거칠고 빛을 덜 반사하는 표면이 됩니다.
거울이 깨끗하게 반사되는 이유는 표면에 닿은 빛이 흩어지지 않고 정확하게 반사되기 때문입니다. 만약 빛에 반사를 못하고 주변에 흩어져 버리면 주변 배경이 잘 보이지 않을 것 입니다. 이것이 러프니스입니다.
0.0 - 거울처럼 매끄러운 표면 (예: 광택 있는 자동차)
0.5 - 중간 정도의 거칠기 (예: 플라스틱 표면)
1.0 - 매우 거친 표면 (예: 콘크리트, 사포)
메탈릭과 러프니스를 함께 사용하면 다양한 재질을 표현할 수 있습니다:
광택 있는 금속: Metallic = 1.0, Roughness = 0.0
광택 없는 금속: Metallic = 1.0, Roughness = 0.8
플라스틱: Metallic = 0.0, Roughness = 0.5
이제 Constant 노드를 하나 더 추가하고 Roughness에 연결하여 원하는 거칠기를 설정해 봅시다.

이미시브 컬러(Emissive Color)란?

이미시브 컬러는 메테리얼이 자체적으로 빛을 발산하는 효과를 만드는 속성입니다. 주변 광원과 상관없이 물체가 스스로 빛나는 것처럼 보이게 합니다.
주요 특징:
실제 광원처럼 주변을 밝히지는 않지만, 발광하는 시각적 효과를 줍니다
네온 사인, LED 조명, 홀로그램 등의 효과를 만들 때 사용됩니다
색상과 강도를 조절하여 다양한 발광 효과를 만들 수 있습니다
일반적으로 어두운 환경이나 야간 씬에서 더욱 효과적으로 사용할 수 있으며, 게임의 시각적 효과를 향상시키는 데 매우 유용한 속성입니다.
근데 생각보다 밝지는 않습니다. 좀 더 밝게 만들어 보겠습니다.
중간에 멀티플라이 노드를 추가한후 기존 Color노드를 A에 연결 Constant노드를 만든후 해당값을 30 입력후 B에 연결 하면 A에서 온값이 B값에 곱해져서 최종 결과로 나가게 됩니다. 이제 많이 밝아 졌습니다.

물체를 투명하게

Material 디테일 패널에서 BlendMode를 Translucent 로 바꾸고 메테리얼 그래프에서 Opacity 값을 조절하여 물체를 투명하게 만들수도 있습니다.

텍스처 Coordinate (U,V 활용하기)

[TextureCoordinate]를 그래프에 배치합니다.
아래 화살표를 클릭하면 노드가 펼쳐집니다.
기존 노드들을 다 지우고 BaseColor에 연결해봅니다.
프리뷰에 있는 구를 회전시켜보면 어느순간 초록색으로 보이는것을 볼 수 있습니다.
TextureCoordinate 노드는 3D 모델의 UV 좌표값을 출력합니다. UV 좌표는 0에서 1 사이의 값을 가지며, U는 X축(빨간색), V는 Y축(초록색)을 나타냅니다.
이렇게 보이는 이유는:
U 좌표(빨간 채널)는 모델의 왼쪽(0)에서 오른쪽(1)으로 변화합니다
V 좌표(초록 채널)는 모델의 아래쪽(0)에서 위쪽(1)으로 변화합니다
이 좌표값들이 직접 색상으로 표현되어 구의 위치에 따라 빨간색과 초록색이 나타나는 것입니다
이러한 UV 좌표는 주로 텍스처를 3D 모델에 매핑할 때 사용되며, 텍스처가 모델의 어느 부분에 어떻게 적용될지를 결정하는 중요한 역할을 합니다.

숙제 (꼭 직접 만들어보기)

DimondGradient 사용하기

새로운 Material을 추가해줍니다.
그리고 DiamondGradient 노드를 추가해줍니다.
DiamondGradient 노드는 다이아몬드 형태의 그라디언트 패턴을 생성하는 데 사용됩니다. 이 노드는 다음과 같은 특징을 가지고 있습니다.

다이아몬드 그라디언트 특징

중앙에서 바깥쪽으로 다이아몬드 형태의 그라디언트를 만듭니다
텍스처 없이도 흥미로운 시각적 패턴을 생성할 수 있습니다
주로 스타일화된 효과나 특수 시각 효과에 활용됩니다
BaseColor에 연결하면 다음과 같은 결과를 얻을 수 있습니다:
다이아몬드 그라디언트를 활용하면 중앙에서 바깥쪽으로 퍼지는 패턴이 생성됩니다. 이 패턴은 속성을 조정하여 다양한 시각적 효과를 만들 수 있습니다.

다이아몬드 그라디언트 응용

다이아몬드 그라디언트는 다음과 같은 상황에서 유용하게 사용할 수 있습니다:
에너지 필드나 보호막 효과 생성
레이더나 신호 표시 인터페이스
스타일화된 물 효과나 파동
추상적인 장식이나 패턴
다른 노드와 결합하여 더 복잡한 효과를 만들 수도 있습니다. 예를 들어, Time 노드와 함께 사용하면 시간에 따라 변화하는 다이아몬드 패턴을 만들 수 있습니다.
다음과 같이 Constant4개 float4 1개 를 diamongradient에 연결해주고 basecolor 에 연결해줍니다.

RadialGradientExponential 을 만들어보자

RadialGradientExponential 노드란?

RadialGradientExponential 노드는 중심에서 바깥쪽으로 퍼지는 원형 그라디언트를 생성하는 노드입니다. 일반 RadialGradient와 달리 지수함수적으로 감쇠되는 그라디언트를 만들어냅니다.

RadialGradientExponential 주요 특징

중심에서 바깥쪽으로 원형으로 퍼지는 그라디언트를 생성합니다
지수 감쇠를 통해 가장자리로 갈수록 더 빠르게 색상이 변화합니다
Density 파라미터로 그라디언트의 밀도와 감쇠 정도를 조절할 수 있습니다
UVs 입력을 통해 그라디언트의 위치와 크기를 조절할 수 있습니다

RadialGradientExponential 구현하기

1.
새로운 머티리얼을 생성하고 RadialGradientExponential 노드를 추가합니다.
2.
노드의 기본 설정으로 BaseColor에 연결해봅시다.
3.
다음과 같이 파라미터를 설정해 볼 수 있습니다:
Density: 8 (값이 클수록 그라디언트가 중앙에 더 집중됩니다)
UVs: TextureCoordinate 노드 연결 (기본 UV 좌표 사용)
Color: 원하는 색상 설정 (Float3 또는 VectorParameter 사용)
RadialGradientExponential은 다음과 같은 효과를 만들 때 유용합니다:
광원 효과 (전구, 조명, 글로우 효과)
마법 효과나 에너지 파동
렌즈 플레어나 광학 효과
파티클 시스템의 기본 텍스처

응용 예제: 펄스 효과 만들기

RadialGradientExponential과 시간 노드를 결합하여 펄스 효과를 만들 수 있습니다:
1.
Time 노드를 추가하고 Sine 노드에 연결합니다.
2.
Sine 출력을 Lerp 노드의 Alpha로 사용합니다.
3.
Lerp 노드의 A와 B에 다른 Density 값을 가진 두 RadialGradientExponential 노드를 연결합니다.
4.
결과를 BaseColor에 연결하면 시간에 따라 확장/축소되는 펄스 효과가 만들어집니다.
이 노드를 마스터하면 다양한 발광 효과나 환경 효과를 쉽게 만들 수 있습니다. 직접 파라미터를 조정해보며 원하는 효과를 찾아보세요!