머티리얼 에디터에서 데이터를 표현하고 조작하는 방법은 언리얼 엔진 머티리얼 생성에서 기본적으로 알아 두어야 하는 개념입니다. 머티리얼의 물리적 특성을 정의하는 메인 머티리얼 노드의 입력은 각각 특정 타입의 데이터를 수락하도록 프로그래밍되어 있습니다. 마찬가지로 머티리얼 빌드에 사용되는 대다수의 머티리얼 표현식 노드 또한 입력에 따라 특정 타입의 데이터를 수신하지 않으면 컴파일에 실패하게 됩니다.
이 페이지에서는 머티리얼 에디터에서 이용할 수 있는 4가지 데이터 타입의 개요와 자주 사용되는 예시를 소개합니다.
플로트 데이터 타입
컴퓨터 그래픽에서 플로트 는 하나의 숫자 값을 저장하는 데이터 타입으로, 이 숫자는 음수일 수도 있고, 양수일 수도 있습니다. 플로트(float)는 부동 소수점(floating-point)의 약자입니다. 부동 소수점이 있는 숫자에는 소수점이 존재하며, 정수(인티저)가 아닐 수도 있습니다. 플로트 값의 예시로는 1.0, -0.5, 2.0 등이 있습니다.
근본적으로 머티리얼 에디터의 데이터 타입은 모두 일종의 플로트 변수입니다. 차이점은 저장하는 값의 양에 있습니다. float는 하나의 숫자를 나타내는 반면, float2는 두 개의 개별 부동 소수점 값을 저장합니다. 예를 들어 다음과 같이 할 수 있습니다. (1.0, 0.5).
아래 표는 머티리얼 에디터에서 사용할 수 있는 4가지 데이터 타입을 분류한 것입니다.
데이터 타입 | 머티리얼 표현식 | 데이터 구조 | 일반적인 용도 |
---|---|---|---|
Float | Constant, Scalar Parameter | (r) | 메탈릭, 러프니스, 산술 연산 |
Float2 | Constant2Vector | (r, g) | UV 또는 XY 좌표, 스케일 |
Float3 | Constant3Vector | (r, g, b) | 컬러(r, g, b) 또는 3D 좌표(x, y, z) |
Float4 | Constant4Vector, Vector Parameter, Textures | (r, g, b, a) | 알파 채널 포함 컬러, 텍스처(r, g, b, a) |
플로트
위에서 설명한 것처럼 플로트(float) 는 단일 부동 소수점 값을 저장합니다. 플로트는 양수 또는 음수가 될 수 있으며 소수점을 포함합니다. 플로트 정의에 사용할 수 있는 두 가지 머티리얼 표현식이 있습니다.
상수 머티리얼 표현식
Constant Material Expression 노드는 단일 상수 플로트 값을 저장합니다. 이 값은 상수이므로 머티리얼이 컴파일된 이후에도 변경되지 않습니다. 아래 이미지는 값이 1.0 인 상수 노드를 나타냅니다.

스칼라 파라미터
스칼라 파라미터(Scalar Parameter) 또한 플로트를 저장합니다. 상수와 달리 스칼라 파라미터는 머티리얼이 컴파일된 이후 또는 런타임 시에도 머티리얼 인스턴스에서 수정할 수 있는 명명된 변수가 됩니다. 아래 이미지는 이름이 Roughness이고 기본값이 0.6 인 스칼라 파라미터를 나타냅니다. 이를 사용하여 머티리얼의 러프니스 어트리뷰트를 정의할 수 있으며, 아티스트가 머티리얼 인스턴스의 값을 오버라이드할 수 있습니다.

상수 대신 스칼라 파라미터를 사용하는 경우와 방법에 관한 자세한 내용은 인스턴스화된 머티리얼 문서를 참조하세요.
예시
메인 머티리얼 노드의 특정 입력은 플로트로 정의됩니다. 예를 들어 메탈릭(Metallic), 스페큘러(Specular), 러프니스(Roughness) 입력은 모두 0과 1 사이의 플로트 값을 수락합니다. 따라서 상수 머티리얼 표현식 또는 스칼라 파라미터를 직접 메인 머티리얼 노드로 전달하여 이러한 어트리뷰트를 정의할 수 있습니다.

상수 및 스칼라 파라미터는 일부 이펙트의 규모를 제어하는 데 사용되는 경우가 많습니다. 아래에서는 이름이 Emissive Power인 스칼라 파라미터에 단색을 곱하고 Emissive Color 입력으로 전달합니다. Emissive Power 파라미터의 값을 변경하면 이미시브 출력이 더 밝아지거나 어두워집니다.

Float2
Float2 는 2개의 숫자 값을 저장합니다. 예를 들어 다음과 같이 할 수 있습니다. (2.0, 3.0).
머티리얼 에디터에서 Constant2Vector 머티리얼 표현식은 float2를 정의하는 데 사용됩니다. 아래의 Constant2Vector에는 2개 채널 각각에 2.0 및 3.0 의 값이 표시됩니다.

Constant2Vector
Constant2Vector 는 2채널 데이터를 필요로 하는 어트리뷰트를 정의 또는 수정해야 할 때 유용합니다. 디테일 패널에서는 2개의 값에 R 및 G 라벨이 지정되어 RGB 컬러 중 레드 및 그린 채널임을 나타내지만, 용도는 이 한 가지뿐입니다. 좌표(UV, XY) 및 스케일(너비, 높이) 역시 Constant2Vector로 정의할 수 있는 어트리뷰트입니다.
아래 예시에서 Constant2Vector는 Texture Coordinates 노드에 추가되어 평면에 있는 텍스처의 위치를 수정합니다. 첫 번째 슬라이드에서 Constant2Vector의 값은 (0, 0)이므로 텍스처 위치는 변경되지 않습니다.



Constant2Vector의 값이 텍스처 위치를 제어합니다.
R 값이 0.5로 변경되면 텍스처의 U 좌표에 추가되므로 텍스처는 수평 축을 따라 이동합니다. 이로 인해 텍스처가 평면의 왼쪽 및 오른쪽 끝에 걸리게 됩니다. G 값이 0.5로 변경되면 텍스처는 수직으로 이동합니다. 텍스처의 중앙은 이제 평면의 4개 모서리에 있습니다.
Float3
float3 는 3개의 숫자 값을 저장합니다. 머티리얼 에디터에서 Constant3Vector 노드는 float3를 정의합니다.

Constant3Vector
언리얼 엔진에서 픽셀의 컬러는 레드, 그린 및 블루 컬러 채널을 나타내는 3개의 값으로 정의됩니다. 따라서 float3의 일반적인 용도 중 하나는 단색을 정의하는 것입니다.
Constant3Vector 노드를 더블클릭하면 색 선택 툴 다이얼로그가 표시되어 휠 또는 스포이드 툴로 컬러를 선택할 수 있습니다. 특정 컬러를 생성해야 하는 경우 색 선택 툴은 또한 RGB, HSV 또는 Hex 값을 입력할 수 있는 필드를 제공합니다. 디테일 패널의 색상환을 클릭하여 색 선택 툴을 실행할 수도 있습니다.

float3의 두 번째 사용 사례는 (x, y, z) 좌표의 정의입니다. 예를 들어 월드 포지션 오프셋(World Position Offset) 입력에서 3개의 값을 수락하는데, 이는 월드 스페이스의 x, y, z 축에서 머티리얼이 오프셋인 유닛 수를 정의합니다.
아래 4개의 슬라이더에서 Constant3Vector의 값은 각각 800으로 변경됩니다. 구체의 위치가 첫 번째 슬라이드에서는 x 축, 두 번째에서는 y 축, 세 번째에서는 z 축으로 어떻게 변경되는지 확인할 수 있습니다.




월드 포지션 오프셋은 3개의 값을 사용하여 x, y 및 z 축을 따라 머티리얼을 오프셋합니다.
Constant3Vector 파라미터화
Constant3Vector를 파라미터화하려면 마우스 우클릭 후 컨텍스트 메뉴에서 파라미터로 변환(Convert to Parameter) 을 선택합니다. 이를 통해 노드를 벡터 파라미터로 변환합니다. Vector Parameter 노드는 실제로 4개 값(r, g, b, a)을 저장하므로 float4가 됩니다.
하지만 float3을 필요로 하는 모든 입력에서는 처음 3개 값을 사용하여 네 번째 값을 폐기합니다. 예를 들어 Base Color 입력은 float3을 수락합니다. 벡터 파라미터를 베이스 컬러에 연결하는 경우 R, G, B 채널을 사용하고 네 번째 값(알파 채널)을 폐기합니다. 언리얼 엔진은 어떤 채널을 폐기할지 알기 때문에 노드가 기술상 float4인 경우에도 float3을 파라미터화해야 할 때 벡터 파라미터를 안전하게 사용할 수 있습니다.
Float4
float4 는 4개의 부동 소수점 값을 저장합니다. 예를 들어 다음과 같이 할 수 있습니다. (50.0, 0.0, 100.0, 0.5). float4 정의에 일반적으로 사용할 수 있는 두 가지 머티리얼 표현식이 있습니다.
Constant4Vector
Constant4Vector는 4개의 상수 값을 저장합니다. Constant4Vector는 알파 채널이 포함된 컬러인 RGBA 컬러를 표현하는 데 주로 사용됩니다. Constant3Vector와 마찬가지로 노드를 더블클릭하거나 디테일 패널에서 색상환을 클릭하여 색 선택 툴에 액세스할 수 있습니다.

벡터 파라미터
벡터 파라미터 는 파라미터화된 float4입니다. 팔레트 또는 캔에서 직접 벡터 파라미터를 생성할 수 있습니다. 벡터 파라미터 의 가장 일반적인 용도는 아티스트가 머티리얼 인스턴스에서 쉽게 오버라이드할 수 있도록 머티리얼에서 컬러 파라미터를 생성하는 것입니다. 예를 들어 텍스처 상단에서 벡터 파라미터를 곱하는 것은 머티리얼의 일부 측면(베이스 컬러, 이미시브 등)에 틴트 컨트롤을 추가하는 한 가지 방법입니다.

파라미터화된 머티리얼 워크플로우에서 활용할 수 있다는 점 외에도 벡터 파라미터에는 추가적인 이점이 있습니다. 이 페이지의 이전 예시와 달리 벡터 파라미터 내의 개별 데이터 채널은 노드 오른쪽에 있는 5개의 출력 핀을 통해 액세스할 수 있습니다. 위에 라벨이 지정된 것처럼 출력 핀은 다음과 같습니다.
- RGBA - float4의 모든 값을 출력합니다. 위의 예시와 같습니다. (0.0, 1.0, 0.5, 0.0).
- R — R 채널의 값만 출력합니다.
- G — G 채널의 값만 출력합니다.
- B — B 채널의 값만 출력합니다.
- A — A 채널의 값만 출력합니다.
이는 머티리얼 생성의 중요한 측면을 강조합니다. 결국 머티리얼 그래프를 통해 이동하는 정보는 각기 다른 방식으로 패키징 및 표현되는 부동 소수점 값일 뿐입니다. 벡터 파라미터의 채널은 디테일 패널에서 RGBA로 라벨이 지정되지만 머티리얼에서 반드시 이 방식으로 사용되어야 하는 것은 아닙니다.
컬러를 표현하는 것 외에도 벡터 파라미터를 사용하여 4개의 개별적이지만 관련 있는 값을 파라미터화할 수 있습니다. 이러한 노드는 메가스캔 부모 머티리얼에서 사용할 수 있으며, 벡터 파라미터가 머티리얼의 UV 타일링 및 오프셋을 파라미터화하는 데 사용됩니다.

RGBA 채널은 이 예시에서 각각 타일링 X(Tiling X), 타일링 Y(Tiling Y), 오프셋 X(Offset X), 오프셋 Y(Offset Y)로 변경됩니다. 파라미터 커스터마이제이션(Parameter Customization) > 채널 이름(Channel Names) 의 디테일 패널에서 벡터 파라미터 채널의 이름을 변경할 수 있습니다. 이러한 이름은 아티스트가 파라미터 값을 오버라이드할 때 머티리얼 인스턴스 에디터에서 볼 수 있습니다.
벡터 파라미터 노드와 머티리얼 파라미터화에 관해 자세히 알아보세요.
추가 자료
이 페이지에서 소개하는 네 가지 데이터 타입은 머티리얼 그래프를 따라 이동하는 모든 정보의 기본이 됩니다. 이러한 데이터 타입이 반드시 변경 불가능한 것은 아님을 이해해야 합니다. 예를 들어 2개의 플로트를 결합하여 float2를 형성할 수 있습니다. 마찬가지로 더 큰 데이터 타입에서 단일 플로트를 추출 또는 분리할 수 있습니다.
계속해서 데이터 타입 조작 및 머티리얼 그래프에서 산술 수행 시의 규칙에 관해 알아보세요. 머티리얼 데이터 조작 및 산술.