언리얼 엔진(UE)은 랜드스케이프의 텍스처 개선에 도움이 될 수 있는 몇 가지 랜드스케이프 전용 머티리얼(Material) 노드 제공합니다. 이러한 노드는 UE의 다른 머티리얼과 함께 사용할 수 있습니다.
머티리얼 에디터(Material Editor)에서 다른 머티리얼과 같은 방식으로 랜드스케이프 머티리얼을 생성하고 수정할 수 있습니다.
레이어 웨이트 및 순서 지정
랜드스케이프 머티리얼은 여러 레이어 간의 블렌드로 작동하며, 페인팅된 블렌드 웨이트가 각 레이어의 영향을 제어합니다.
머티리얼 그래프는 블렌딩된 결과를 달성하기 위해 웨이트를 해석하는 방법을 결정합니다. 블렌딩 메서드는 최종 결과물에서 랜드스케이프가 해당 웨이트를 사용하는 방법을 정의합니다.
사용할 수 있는 블렌딩 모드에는 웨이트 블렌딩과 알파 블렌딩, 두 가지가 있습니다. 이러한 메서드를 함께 사용하여 풀 및 흙 레이어 위에 눈이 쌓이는 이펙트 같은 다양한 이펙트를 생성할 수 있습니다.
| 블렌딩 모드 | Description |
|---|---|
웨이트 블렌딩(Weight Blending) | 머티리얼의 각 레이어에 해당 백분율 값을 나타내는 하나의 레이어가 100%로 페인팅되면 다른 모든 레이어의 웨이트 값은 0%가 됩니다. 즉, 페인트(Paint) 툴을 사용하여 100%인 레이어를 제거하면 다른 모든 레이어의 값이 0%이므로 이를 대체할 수 있는 레이어가 없게 됩니다. 따라서 레이어가 변경되지 않은 것처럼 보입니다. |
알파 블렌딩(Alpha Blending) | 각 레이어에 0에서 100% 사이의 알파 백분율 값을 할당합니다. 머티리얼 그래프가 순서대로 블렌딩되도록 구성된 경우, 이 메서드는 레이어가 적용되는 순서를 따릅니다. 알파 레이어는 다른 웨이트 적용 레이어와 별도로 존재하므로 알파 레이어 웨이트가 증가하면 다른 기존 레이어 웨이트는 감소합니다. |
랜드스케이프 전용 머티리얼 노드
머티리얼 에디터(Material Editor) 안에는 랜드스케이프 시스템과 함께 사용할 수 있는 여러 개의 전용 노드가 있습니다. 이러한 노드는 마우스 오른쪽 버튼을 클릭하고 컨텍스트 메뉴를 검색하거나 팔레트(Palette) 메뉴에서 검색하여 찾을 수 있습니다.
Landscape Layer Blend 노드
Landscape Layer Blend 노드는 텍스처 샘플이나 머티리얼과 같은 여러 레이어별 값을 블렌딩합니다. 블렌드 웨이트가 높은 레이어는 블렌드 결과에 더 많은 영향력을 미칩니다.
새 레이어를 추가하려면 더하기(+) 아이콘을 클릭합니다.
노드에 레이어를 추가하면 LandscapeLayerBlend 노드에 레이어 이름이 표시됩니다. 이 노드에는 다음과 같은 입력이 있습니다.
| 번호 | Property | Description |
|---|---|---|
1 | 레이어(Layers) | 배열에 포함된 레이어를 나열합니다. 더하기 아이콘(+)을 클릭하여 새 레이어를 추가합니다. |
2 | 추가 레이어(Additional Layers) | 추가로 접힌 레이어가 있으면 표시합니다. |
3 | 레이어 이름(Layer Name) | 레이어의 고유 이름을 표시합니다. 레이어 이름은 랜드스케이프 툴 창의 페인트 모드에서 사용되는 레이어 이름에 해당합니다. |
4 | 블렌드 타입(Blend Type) | 이 레이어에서 사용하는 블렌드 모드를 정의합니다. 여기에는 LB Alpha Blend, LB Height Blend, LB Weight Blend 옵션이 포함됩니다. 자세한 내용은 랜드스케이프 레이어 블렌드 타입을 참조하세요. |
5 | 프리뷰 웨이트(Preview Weight) | 머티리얼 에디터에서 블렌딩을 프리뷰할 때 사용할 웨이트 값을 표시합니다. |
6 | 상수 레이어 입력(Const Layer Input) | 텍스처를 사용하지 않을 때 사용할 RGB 값을 정의합니다. 레이어 디버깅에만 사용됩니다. |
7 | 상수 높이 입력(Const Height Input) | 텍스처를 사용하지 않을 때 사용할 높이 값을 정의합니다. |
Landscape Layer Blend 노드에는 다음과 같은 입력과 출력이 있습니다.
| 번호 | 아이템 | Description |
|---|---|---|
1 | 레이어 레이어 이름(Layer Layer Name) | 레이어의 고유 이름을 표시합니다. 디테일(Details) 패널에서 레이어를 추가하고 이름을 지정한 후에만 이 입력을 사용할 수 있습니다. |
2 | 높이 레이어 이름(Height Layer Name) | 명명된 레이어와 블렌딩할 하이트 맵을 정의합니다. 이 입력은 블렌드 타입 프로퍼티가 LB Height Blend로 설정된 레이어에서만 볼 수 있습니다. |
3 | 출력(Output) | 블렌딩된 결과를 출력합니다. |
모든 레이어 이름은 고유해야 합니다. 레이어의 콘텐츠를 나타내는 서술형 이름을 레이어에 지정하는 것이 좋습니다.
Landscape Layer Coords 노드
Landscape Layer Coords 노드는 랜드스케이프 머티리얼을 랜드스케이프에 매핑하는 데 사용되는 UV 좌표를 생성합니다.
이 노드에는 다음과 같은 옵션이 있습니다.
| 번호 | Property | Description |
|---|---|---|
1 | 매핑 타입(Mapping Type) | 머티리얼 또는 네트워크를 랜드스케이프에 매핑할 때 사용할 오리엔테이션을 지정합니다. 다음과 같은 옵션이 있습니다.
|
2 | 커스텀 UV 타입(Custom UVType) | 타입을 기반으로 랜드스케이프에 머티리얼을 매핑할 UV 좌표를 출력합니다. 다음과 같은 옵션이 있습니다.
|
3 | 매핑 스케일(Mapping Scale) | UV 좌표에 균등하게 스케일 조정을 적용합니다. |
4 | 매핑 회전(Mapping Rotation) | UV 좌표에 회전(도)을 적용합니다. |
5 | 매핑 패닝[U](Mapping Pan [U]) | UV 좌표에 [U] 방향의 오프셋을 적용합니다. |
6 | 매핑 패닝 [V](Mapping Pan [V]) | UV 좌표에 [V] 방향의 오프셋을 적용합니다. |
7 | 라벨 없는 출력(Unlabeled Output) | 주어진 프로퍼티 값을 기반으로 랜드스케이프에 머티리얼을 매핑하기 위한 UV 좌표를 출력합니다. |
Landscape Layer Switch 노드
Landscape Layer Switch 노드를 사용하여 특정 레이어가 랜드스케이프 영역에 기여하지 않을 때 일부 머티리얼 연산을 제외할 수 있습니다. 이렇게 하면 특정 레이어의 웨이트가 0일 때 필요 없는 계산을 제거함으로써 머티리얼을 최적화할 수 있습니다.
이 노드에는 다음과 같은 옵션이 있습니다.
| 번호 | Property | Description |
|---|---|---|
1 | 파라미터 이름(Parameter Name) | 파라미터의 고유 이름을 표시합니다. |
2 | 사용된 프리뷰(Preview Used) | 체크하면 프리뷰를 사용합니다. |
3 | 사용된 레이어(Layer Used) | 랜드스케이프의 현재 영역에서 특정 레이어를 사용 중인 경우 사용할 머티리얼 네트워크를 나타냅니다. |
4 | 사용되지 않은 레이어(Layer Not Used) | 랜드스케이프의 현재 영역에서 특정 레이어를 사용 중이지 않을 경우 사용할 머티리얼 네트워크를 나타냅니다. |
5 | 출력(Output) | 레이어가 랜드스케이프의 특정 영역에 기여하는지 여부에 따라 사용된 레이어 또는 사용되지 않은 레이어 입력 중 하나를 사용합니다. |
Landscape Layer Weight 노드
Landscape Layer Weight 노드를 사용하여 레이어 웨이트에 액세스하고 머티리얼 그래프에서 고유한 커스텀 블렌딩 솔루션을 구현할 수 있습니다. 출력은 (Base + Layer * LayerWeight)를 반환합니다. 여러 Landscape Layer Weight 노드를 연결하여 지정된 레이어 간에 블렌딩되는 웨이트 합계를 생성할 수 있습니다.
Base 값을 0으로 설정하고 Layer 값을 1.0으로 설정하면 수정 없이 LayerWeight 값에 직접 액세스할 수 있습니다.
이 노드에는 다음과 같은 옵션이 있습니다.
| 번호 | Property | Description |
|---|---|---|
1 | 파라미터 이름(Parameter Name) | 웨이트를 읽으려는 레이어의 이름을 표시합니다. |
2 | 프리뷰 웨이트(Preview Weight) | 머티리얼 에디터에서 프리뷰 목적으로 사용할 웨이트입니다. |
3 | 상수 베이스(Const Base) | 베이스가 연결되지 않았을 때 사용할 특정 RGB 상수 값을 정의합니다. |
4 | 베이스(Base) | 이 레이어와 블렌딩할 노드 네트워크입니다. 여기에는 이전 레이어의 값과 기타 기본 데이터가 포함됩니다. 이렇게 하면 레이어 값에 페인팅된 레이어 웨이트를 곱합니다. |
5 | 레이어(Layer) | 지정된 레이어의 값입니다. 이 입력 값에 레이어 웨이트를 곱하고 베이스에 누적하여 출력 값을 생성합니다. |
6 | 출력(Output) | 입력의 레이어 웨이트를 기반으로 베이스 및 레이어 입력 간 블렌딩 결과를 출력합니다. |
Landscape Visibility Mask 노드
Landscape Visibility Mask 노드는 랜드스케이프의 비저빌리티 값을 출력합니다.
이 노드에는 다음과 같은 옵션이 있습니다.
| 번호 | Property | Description |
|---|---|---|
1 | 출력(Output) | 비저빌리티 마스크 값을 출력합니다. 이 값은 랜드스케이프가 투명한 곳에서는 |
별도의 랜드스케이프 홀(Landscape Hole) 머티리얼을 생성할 수 있습니다. 랜드스케이프 머티리얼과 랜드스케이프 홀 머티리얼에 같은 머티리얼을 사용할 수 있지만, 오파시티 마스크를 사용하는 머티리얼은 퍼포먼스 면에서 비용이 더 많이 듭니다.
랜드스케이프 레이어 블렌드 타입
랜드스케이프 레이어 블렌드(Landscape Layer Blend) 노드에는 세 가지 블렌드 모드가 있습니다. 각각의 레이어 블렌드(Layer Blend) 타입을 사용하여 다른 결과를 달성할 수 있습니다.
| 블렌드 타입 | Function |
|---|---|
LB Weight Blend | 모든 LB Weight Blend 레이어 간에 웨이트 적용 블렌드를 구현합니다. 이 타입은 순서에 의존하지 않습니다. |
LB Alpha Blend | LB Weight Blend 및 LB Height Blend 레이어 위에 알파 블렌드 오버레이를 구현합니다. 각 LB Alpha Blend 레이어는 목록에 표시되는 순서대로 적용됩니다. 예를 들면, 바위와 풀 위에 눈을 페인팅하면 바위와 풀이 모두 가려지고, 눈을 지우면 그 아래 바위와 그래스가 드러납니다. |
LB Height Blend | LB_Weight Blend와 같지만 하이트 맵을 기반으로 레이어 간 트랜지션에도 디테일을 추가합니다. 예를 들어, 바위와 흙을 그냥 매끄럽게 블렌딩하는 대신 레이어 트랜지션 포인트에서 바위 사이의 틈에 흙이 나타나게 할 수 있습니다. |
아래는 LB Height Blend의 예시입니다.
레이어 트랜지션 포인트에서 바위 사이의 틈에 흙이 나타나 레이어가 만나는 지점에서 매끄러운 트랜지션을 생성합니다.
랜드스케이프 레이어 블렌드 기술 정보
랜드스케이프 레이어 노드는 Static Switch Parameter 노드와 비슷하게 작동합니다. 이는 머티리얼의 한 브랜치와 다른 브랜치 사이를 전환합니다. 랜드스케이프의 각 컴포넌트에는 메인 랜드스케이프 머티리얼로부터 생성된 자체 머티리얼 인스턴스 상수(Material Instance Constant)가 있으며, 이 상수는 해당 컴포넌트에만 적용됩니다.
랜드스케이프 컴포넌트가 특정 레이어를 사용하지 않는 경우, 해당 레이어에 연결된 노드의 서브트리는 무시됩니다. 이렇게 하면 복잡도가 줄어들어, Shader Model에서 설정한 한도 내에 있는 한 랜드스케이프에 적용된 머티리얼에 텍스처 샘플을 얼마든지 포함할 수 있습니다.
이 메서드를 사용하면 하드웨어에서 허용하는 파라미터 내에서 최종 결과를 유지하면서 필요한 모든 텍스처나 머티리얼이 포함된 마스터 랜드스케이프 머티리얼을 생성할 수 있습니다.
단순한 Texture Sample 대신 원하는 머티리얼 표현식 네트워크를 레이어 입력에 연결할 수 있습니다. 이를 통해 레이어가 보이는 거리에 따라 디테일 텍스처에서 더 큰 원거리용 텍스처로 전환하는 등 보다 복잡한 효과를 낼 수 있습니다.
레이어 블렌드 문제
여러 랜드스케이프 레이어에 LB Height Blend 모드를 사용하면 랜드스케이프에서 서로 다른 레이어가 만나는 곳에 검은색 점이 생길 수 있습니다. LB Height Blend는 지정된 높이 값을 사용하여 레이어에 대한 블렌드 인수나 웨이트를 관리하는 방식으로 작동합니다. 한 영역에 여러 레이어가 페인팅되어 있고 해당 레이어가 모두 LB Height Blend로 설정된 경우, 특정 영역에 페인팅된 모든 레이어 높이 값이 동시에 0이 될 수 있으므로, 각 레이어에 원하는 블렌드 인수가 0이 됩니다.
특정 순서가 없기 때문에, 해당 영역에 어떤 레이어도 기여하지 않아 검은색 점이 나타날 수 있습니다. 노멀 맵을 블렌딩하면 더 많은 검은색 점이 나타날 수 있는데, 왜냐하면 이 블렌딩 결과 노멀 값이 유효하지 않은 (0,0,0)이 되어 라이팅 문제를 일으키기 때문입니다. 이 경우, 웨이트가 0이 아닌 머티리얼로 해당 영역을 페인팅합니다.
왼쪽 이미지에서는 모든 레이어가 LB Height Blend라서 일부 영역이 검게 표시됩니다. 오른쪽에서는 빨간색 '1' 레이어가 LB Alpha Blend를 사용하도록 변경되었습니다.
아래는 함께 블렌딩되는 모든 레이어에 대한 Landscape Layer Blend 노드의 프로퍼티 예시입니다. Soil 레이어의 블렌드 모드는 LB Alpha Blend로 설정된 반면, 다른 레이어는 LB Height Blend로 설정되었습니다. 이는 위에서 언급한 문제가 발생하지 않도록 하기 위한 것입니다.
레이어를 삭제하려면, 레이어의 엘리먼트 번호 오른쪽에 있는 드롭다운 화살표를 클릭하여 메뉴를 열고 삭제(Delete)를 선택합니다.
모바일 랜드스케이프 머티리얼
Texture Sampler 노드만 충분하다면 랜드스케이프 레이어는 얼마든지 사용할 수 있습니다. 랜드스케이프 레이어 할당은 Feature Level Switch 머티리얼 노드를 사용하여 하나의 PC 또는 콘솔 랜드스케이프 머티리얼이 모바일 버전도 가질 수 있게 해 줍니다. 다음 이미지는 포트나이트 배틀로얄의 랜드스케이프가 모바일 디바이스에서 어떤 모습인지 보여줍니다.
노드는 몇 개든 사용할 수 있지만, 3개만 사용하는 것이 좋습니다.
레이어 블렌딩 사용하기
여러 텍스처와 머티리얼 네트워크를 페인팅할 수 있는 랜드스케이프 레이어로 블렌딩하는 것은 랜드스케이프 터레인 텍스처링의 기초입니다. 다음 두 가지 메서드를 사용할 수 있습니다.
여러 Landscape Layer Weight 노드를 사용합니다.
최대 두 개의 Landscape Layer Blend 노드를 사용합니다.
Landscape Layer Weight 노드
LandscapeLayerWeight 노드 구성 방법은 다음과 같습니다.
머티리얼 에디터에서 LandscapeLayerWeight 노드를 추가합니다.
디테일(Details) 패널에서 파라미터 이름(Parameter Name)을 'Rock'처럼 레이어에 대한 서술형 이름으로 변경합니다.
모든 레이어 이름은 고유해야 합니다. 레이어의 콘텐츠를 나타내는 서술형 이름을 레이어에 지정하는 것이 좋습니다.
머티리얼에 포함하려는 레이어당 Landscape Layer Weight 노드를 하나씩 갖도록 노드를 계속 추가합니다. 이 예시에서는 2개의 LandscapeLayerWeight 노드를 사용합니다.
Texture Samples 또는 머티리얼 네트워크 표현식을 Landscape Layer Weight 노드에 추가하여 연결합니다.
LandscapeLayerCoords 노드를 추가하고 UV 타이틀을 설정합니다. 이 노드를 Texture Sample 노드에 연결합니다.
각 레이어 노드의 출력 핀을 다음 레이어 노드의 Base 핀에 연결합니다. 첫 번째 레이어 노드의 Base 핀은 연결하지 않은 상태로 둡니다.
최종 레이어 노드의 출력 핀을 머티리얼 Base 노드의 Base Color 입력에 연결합니다.
아래 예시와 비슷한 모습이 될 것입니다.
LandscapeLayerWeight 노드의 프리뷰 웨이트(Preview Weight) 프로퍼티를 변경하여 머티리얼에 대한 다양한 웨이트 이펙트를 프리뷰할 수 있습니다.
Landscape Layer Blend 노드
LandscapeLayerWeight 노드를 사용하여 레이어를 수동으로 블렌딩하는 대신, LandscapeLayerBlend 노드는 알파 블렌딩이나 높이 기반 오프셋이 있는 알파 블렌딩을 사용하여 여러 레이어를 자동으로 블렌딩합니다. 높이 기반 오프셋을 사용하면 하이트맵 입력을 기반으로 레이어를 다른 레이어와 블렌딩할 수 있습니다.
머티리얼 에디터에서 LandscapeLayerBlend 노드를 추가합니다.
디테일(Details) 패널의 레이어(Layers) 옆에 있는 더하기 아이콘()을 클릭하여 레이어를 추가합니다.
레이어를 펼쳐 프로퍼티를 확인합니다.
레이어 이름을 'Snow'처럼 레이어에 대한 서술형 이름으로 변경합니다.
레이어를 알파 블렌딩할지 높이 블렌딩할지 결정하고 그에 따라 블렌드 타입(Blend Type)을 설정합니다.
랜드스케이프 머티리얼에 원하는 만큼 레이어를 추가합니다. 레이어 이름을 변경하고 블렌드 타입을 적절하게 설정합니다.
LandscapeLayerBlend 노드의 출력을 머티리얼 베이스 노드의 Base Color 입력에 연결합니다.
Texture Sample 노드를 추가하고 메인 출력을 LandscapeLayerBlend 노드의 Layer 입력에 연결합니다. 또는, 더 복잡한 머티리얼 네트워크를 생성하고 Landscape Layer Blend의 Layer 입력에 연결할 수도 있습니다. 높이 블렌딩 레이어의 경우 Texture Sample의 알파 출력을 LandscapeLayerBlend의 Height 입력에 연결합니다.
완료하고 나면, 랜드스케이프 머티리얼 네트워크가 다음과 같은 모습이 될 것입니다.
LandscapeLayerBlend 노드의 프리뷰 웨이트(Preview Weight) 프로퍼티를 변경하여 머티리얼에 대한 다양한 웨이트 이펙트를 프리뷰할 수 있습니다.
랜드스케이프 홀 머티리얼 생성하기
랜드스케이프 홀 머티리얼을 사용하여 특정 위치의 비저빌리티와 콜리전을 마스크 적용함으로써 랜드스케이프에 터널과 동굴에 사용할 구멍을 생성할 수 있습니다.
머티리얼 에디터를 열고 디테일(Details) 패널에서 블렌드 모드(Blend Mode)를 Masked로 설정합니다.
머티리얼 그래프에 LandscapeVisibilityMask 노드를 추가하고 출력을 Opacity Mask 입력에 연결합니다.
머티리얼 컴파일이 완료되면 랜드스케이프에 할당합니다. 디테일(Details) 패널의 랜드스케이프 홀 머티리얼(Landscape Hole Material) 섹션에서 할당할 수 있습니다.
나머지 랜드스케이프 머티리얼을 구성합니다. 완료하고 나면, 다음과 같은 모습이 됩니다.
이제 아래 비디오에 나오는 것처럼 터레인의 비저빌리티를 마스킹하거나 마스킹 해제할 수 있습니다.
페인팅 툴을 사용하여 랜드스케이프에 홀을 생성하는 방법에 대한 자세한 내용은 오파시티 마스크를 사용하여 홀 생성하기를 참조하세요.
랜드스케이프에 머티리얼 할당하기
랜드스케이프 머티리얼을 생성한 후, 레벨의 랜드스케이프 액터에 머티리얼을 할당합니다.
콘텐츠 브라우저(Content Browser)에서 사용하려는 랜드스케이프 머티리얼을 찾습니다.
뷰포트나 월드 아웃라이너(World Outliner)를 사용하여 랜드스케이프를 선택합니다.
랜드스케이프의 디테일(Details) 패널에서 랜드스케이프 머티리얼(Landscape Material) 옵션을 찾은 다음 할당 화살표()를 클릭하여 선택한 머티리얼을 할당합니다.
랜드스케이프에 랜드스케이프 홀 머티리얼 할당하기
특정 오파시티 세팅이 있는 머티리얼인 랜드스케이프 홀 머티리얼(Landscape Hole Material) 역할을 하도록 다른 머티리얼을 할당할 수 있습니다.
홀 머티리얼에 대한 일반적인 정보는 랜드스케이프 홀 머티리얼 섹션을 참조하세요. 오파시티 마스크에 대한 자세한 내용은 오파시티 마스크를 사용하여 홀 생성하기를 참조하세요.
콘텐츠 브라우저(Content Browser)에서 원하는 랜드스케이프 홀 머티리얼을 찾아 선택합니다.
뷰포트나 월드 아웃라이너에서 랜드스케이프를 선택합니다.
디테일(Details) > 랜드스케이프(Landscape) > 랜드스케이프 홀 머티리얼(Landscape Hole Material)로 이동합니다. 선택한 머티리얼을 할당하려면 화살표()를 선택합니다.