지난 포스트에서는 Height Map을 불러오는 방식과 Landscape를 직접 Sculpting하는 방식으로 각각 섬 지형을 제작했다.
이번에는 Landscape 작업을 조금 더 확장해, Landmass Plugin의 Blueprint Brush로 산과 기본 지형을 만들고 Water Body Ocean과 결합해 섬을 구성하는 과정을 정리했다.
Landmass는 Spline의 형태와 Parameter를 바꾸면서 Landscape를 비파괴 방식으로 수정할 수 있다.
여러 Brush를 복제해 산맥을 만들거나 전체 지형에 Noise를 추가할 수 있고, 결과가 마음에 들지 않으면 Brush를 이동하거나 숨겨 다시 조정할 수 있다는 점이 직접 Sculpting과 가장 큰 차이였다.
후반부에는 Water Body의 색상과 Transition Material, Water Zone의 Far Distance Material을 맞추고 Water Waves Asset으로 파도 높이를 조절하는 과정도 함께 다뤘다.
Landmass
Landmass Plugin 활성화와 Landscape 준비
먼저 새 Landscape를 생성했다.

Landmass와 Water Body를 비파괴 방식으로 사용하려면 Landscape를 만들 때 Enable Edit Layers를 활성화하는 것이 중요하다.
Water Body가 Landscape를 자동으로 깎는 기능도 Edit Layers가 활성화된 Landscape에서 동작한다.

이후 Edit - Plugins에서 Landmass를 검색해 활성화하고 Unreal Editor를 재시작했다.

Landscape Mode로 이동한 뒤 Manage - Blueprint를 선택하면 Blueprint Brush 목록에서 CustomBrush_Landmass를 찾을 수 있다.

Brush를 배치하면 Landscape 위에 산 형태의 지형과 흰색 Spline Point가 함께 생성된다.

Landmass는 결과가 Landscape Heightmap에 반영되지만, 원본을 바로 확정하는 방식은 아니다.
Brush Actor의 Spline과 Parameter를 수정하면 Landscape 결과가 다시 계산된다.

처음 Brush를 배치했을 때 잠시 반응이 느려질 수 있는데, Landscape 크기가 클수록 Heightmap을 다시 계산하는 시간이 늘어나기 때문이다.
산의 형태 만들기: Spline Point
Landmass의 흰색 Spline Point를 이동하면 산이 생성되는 범위를 바꿀 수 있다.

Point를 선택한 뒤 Alt를 누른 채 Drag하면 새로운 Point를 복제할 수 있다.
필요한 위치에 Point를 추가하면서 산의 외곽선을 잡고, Brush Actor 자체를 복제해 이동하거나 회전하면 여러 산을 겹쳐 배치할 수 있다.
Spline Point의 Selected Points - Type에서는 Point 사이의 보간 형태를 바꿀 수 있다.
직선에 가까운 경계가 필요한지, 부드러운 Curve가 필요한지에 따라 Type과 Tangent를 조절하면 된다.

Point를 많이 추가한다고 무조건 자연스러워지는 것은 아니다.
먼저 적은 수의 Point로 큰 실루엣을 만든 뒤, 필요한 구간에만 Point를 추가하는 편이 형태를 통제하기 쉬웠다.
산의 경사 조절: Falloff Angle
Spline을 선택하면 Details에서 Landmass의 Falloff를 수정할 수 있다.


Falloff Angle은 Spline 내부의 높이와 기존 Landscape가 이어지는 경사를 결정한다.
- 값이 높으면 짧고 가파른 경사가 만들어짐
- 값이 낮으면 넓고 완만한 경사가 만들어짐
같은 Spline 형태라도 Falloff Angle에 따라 뾰족한 산이나 낮게 퍼진 구릉처럼 전혀 다른 실루엣이 만들어진다.
실제 작업에서는 Angle 값만 보고 판단하기보다 최종 카메라 방향에서 능선이 어떻게 겹치는지 확인하면서 조절하는 편이 정확했다.
Spline의 규칙적인 형태 깨기: Curl Noise
기본 Spline만 사용하면 산의 외곽선이 지나치게 매끈하고 인공적으로 보일 수 있다.
이때 Curl Noise를 사용하면 Spline 경계에 절차적인 왜곡을 추가할 수 있다.


- Curl 1 Strength, Curl 2 Strength: 경계를 변형하는 강도
- Curl 1 Tiling, Curl 2 Tiling: Noise 패턴의 크기와 반복 정도
서로 다른 크기의 Curl Noise를 겹치면 큰 굴곡과 작은 굴곡을 함께 만들 수 있다.
다만 Strength와 Tiling을 모두 높이면 산의 가장자리가 지나치게 잘게 흔들릴 수 있으므로 약한 값부터 올리는 편이 안전하다.
Spline Point가 산의 큰 방향을 만들고 Curl Noise가 규칙적인 경계를 깨는 역할을 한다고 구분하면 Parameter를 조절하기 쉬웠다.
내부 지형의 디테일 만들기: Displacement
Curl Noise가 Spline 경계를 바꾼다면, Displacement는 Noise Texture를 이용해 Landmass 내부의 높낮이를 만든다.


- Displacement Height: Noise Texture가 지형을 밀어 올리거나 내리는 강도
- Displacement Tiling: Landscape에 표시되는 Noise 패턴의 크기
- Midpoint: Texture 값 중 높이 변화가 0이 되는 기준점
Midpoint는 Noise의 강도를 조절하는 값이 아니다.
개념적으로 Texture 값에서 Midpoint를 뺀 결과에 Displacement Height를 곱한다고 이해하면 쉽다.
예를 들어 Midpoint가 0.5라면 중간 회색 부근이 기준 높이가 되고, 그보다 밝거나 어두운 영역이 서로 반대 방향으로 변형된다.
Midpoint를 바꾸면 같은 Texture를 사용해도 지형 전체가 올라가거나 내려가는 비율이 달라진다.
Displacement Height를 크게 올리기 전에 Tiling과 Midpoint를 먼저 확인하면, 원하는 Noise 크기를 유지하면서 높이만 조절하기 편했다.

여러 Landmass를 복제해 산맥 구성하기
하나의 Landmass로 전체 지형을 만들 필요는 없다.
먼저 만든 Brush를 복제한 뒤 위치와 회전을 바꾸고, Spline Point를 다시 정리하면 서로 다른 방향의 산을 빠르게 추가할 수 있다.


여러 Brush를 겹칠 때는 각 Brush의 Falloff와 Displacement가 모두 합성된다.
산이 만나는 부분이 지나치게 높아지거나 갑자기 평평해진다면 개별 Brush의 높이보다 계산 순서와 겹치는 범위를 먼저 확인해야 한다.
Base Landmass 추가하기
지역적인 산만 여러 개 배치하면 산 바깥의 Landscape가 완전히 평평하게 남을 수 있다.
이를 보완하기 위해 기존 Landmass를 복제하고 이름을 Base로 변경했다.
Base는 별도의 전용 Actor가 아니라, 전체 지형의 기본 높낮이를 담당하도록 설정한 Landmass Brush다.

Base의 모든 Spline Point를 Landscape 작업 범위 바깥으로 이동해 전체 지형을 감싸도록 만들었다.

Base에서는 Falloff Angle을 0으로 설정하고 Displacement만 사용했다.
이 상태에서 Displacement Height, Tiling, Midpoint를 조절하면 Landscape 전체에 넓은 Noise 기반 높낮이가 만들어진다.



Base가 필요한 이유는 다음과 같다.
- 산 바깥의 완전히 평평한 영역을 줄일 수 있음
- 여러 산이 하나의 넓은 지형 위에 연결된 것처럼 보이게 함
- 지역 Landmass를 수정해도 전체 지형의 기본 굴곡을 유지할 수 있음
처음에는 Base가 지역 Landmass보다 나중에 계산되면서 앞서 만든 산이 평탄해졌다.
Base를 Brush 목록의 앞쪽으로 옮겨 먼저 계산되게 하고, 지역 Landmass가 그 위에 합성되도록 순서를 바꾸자 산의 형태가 다시 나타났다.
Edit Layer Blueprint Brushes는 Photoshop의 Layer와 반대로, 목록 아래쪽에 있는 Brush가 나중에 계산되어 결과에 우선적으로 반영된다.
따라서 Base가 목록 최하단에 있으면 Base의 넓은 높이 결과가 앞서 계산된 지역 Landmass를 덮으면서 산 지형이 평탄해진다.
반대로 Base를 최상단으로 옮기면 Base가 먼저 계산되고, 아래쪽에 있는 지역 Landmass가 그 위에 합성되어 기존 산의 형태가 유지된다.




첨부한 비교 이미지에서도 Base가 최하단에 있을 때는 지형이 평탄해졌지만, Base를 최상단으로 이동하자 기존 산 지형이 다시 나타나는 것을 확인할 수 있었다.

Sculpting으로 지형 다듬기: Edit Layer
Landmass로 큰 형태를 만든 뒤 직접 Sculpting이 필요한 부분은 별도의 Edit Layer에서 수정했다.

Landmass Brush와 직접 Sculpting을 같은 Layer에 섞기보다 역할을 분리하면, 수작업 결과를 유지한 채 Landmass의 위치와 Parameter를 다시 조절하기 쉽다.
큰 Brush와 낮은 Strength로 전체 실루엣을 먼저 다듬고, 해안선이나 산이 만나는 부분은 작은 Brush로 정리했다.
Landmass가 만든 절차적인 형태를 모두 지우기보다 카메라에서 어색하게 보이는 부분만 보정하는 방식이 효율적이었다.
Landscape Component 선택·삭제·추가
Landscape의 외곽에 문제가 있거나 불필요한 부분이 있다면 Manage - Select에서 Component를 선택할 수 있다.


선택한 뒤 Manage - Delete를 사용하면 해당 Component가 제거되고, Manage - Add를 사용하면 기존 Grid에 Component를 다시 추가할 수 있다.





여기서 Delete는 Sculpt Brush로 칠한 모양만 지우는 기능이 아니다.
선택한 Landscape Component 전체를 제거하므로, 작은 영역의 높이만 수정하려면 Sculpt 도구를 사용해야 한다.
Component를 정리한 뒤 Material과 Landmass의 전체 결과를 다시 확인했다.


Landmass와 Water Body Ocean으로 섬 만들기
다음 작업에서는 새 Landscape를 생성하고 Water Body Ocean을 배치한 뒤 Landmass로 섬을 만들었다.

Water Body Ocean의 닫힌 Spline은 섬의 해안선을 만들고, Spline 바깥쪽에 바다를 렌더링한다.
Water Body가 Landscape를 자동으로 변형하려면 Landscape에 Edit Layers가 활성화되어 있어야 한다.

Water Body를 배치하면 Water System과 관련된 Actor가 함께 사용된다.
- Water Body Ocean: 바다의 Spline, 수면 Material, 파도 정보를 관리
- Landscape_WaterBrushManager: Water Body의 지형 변형 정보를 Landscape Brush에 반영
- Water Zone: Ocean·Lake·River의 Water Mesh Tile과 원거리 수면을 관리


섬의 Base Layer와 지역 Landmass 분리하기
먼저 섬 전체의 기본 높낮이를 담당할 Base용 Edit Layer를 만들었다.
Base Landmass의 Spline은 섬이 들어갈 영역을 덮되, 필요 이상으로 바다까지 확장하지 않도록 위치를 조절했다.


섬의 범위를 크게 벗어난 Base Displacement는 Water Body가 깎아 놓은 해안과 바닷속 지형까지 변형할 수 있기 때문이다.

Base는 Falloff Angle을 0, Displacement Height를 약 1000부터 시작해 Viewport를 보며 조절했다.
이 수치는 고정된 정답이 아니라 Landscape의 Z Scale과 Brush 크기에 따라 달라지는 시작값이다.


이후 실제 산과 계곡을 만들 Landmass용 Edit Layer를 추가하고 Manage - Blueprint에서 CustomBrush_Landmass를 다시 배치했다.
여러 Landmass를 겹쳐도 되므로, 하나의 Brush로 모든 형태를 해결하기보다 산의 방향에 따라 나눠 구성했다.



Water Body Ocean 가장자리 문제 확인하기
Water Body Ocean을 배치한 뒤 Spline 부근에서 수면의 옆면처럼 보이는 경계가 나타날 수 있다.

Water Body Ocean의 Max Wave Height Offset을 약 -500으로 설정했을 때 해당 경계가 가려졌다.



다만 이 항목의 의미는 정확히 구분해야 한다.
Max Wave Height Offset은 자동 계산된 최대 파도 높이 Bounds를 보정하는 값이고, 실제 파도의 진폭을 낮추는 Parameter가 아니다.
따라서 이 방법은 실제 수면 변위와 자동 계산된 Bounds가 맞지 않아 Clipping이나 경계가 발생할 때 사용하는 보정에 가깝다.
수면 끝이 보이는 문제가 발생했다면 다음 순서로 확인하는 편이 안전하다.
- Water Body와 Landscape의 높이 관계
- Ocean Spline과 지형이 만나는 해안선
- Water Zone의 범위와 Far Distance Mesh Extent
- Ocean과 Far Distance Material의 색상 차이
- Material의 World Position Offset과 Max Wave Height Bounds
수치 하나로 경계를 가릴 수 있더라도, 원인이 Extent나 Material 불일치라면 최종 카메라를 바꿨을 때 문제가 다시 드러날 수 있다.
Water Material에서 물 색상 수정하기
Water Body에는 여러 Material Slot이 있지만, 수면의 기본 외형을 결정하는 항목은 Rendering에 지정된 Water Material이다.

이번 실습에서는 Material Instance의 Absorption Parameter를 조절해 밝은 청록색 수면을 어두운 파란색으로 바꿨다.


사용한 Material에서는 Color Picker의 Value와 Alpha를 낮췄을 때 더 어두운 결과가 나타났다.


Absorption은 Single Layer Water에서 물속을 통과하는 빛이 색상 채널별로 얼마나 빠르게 사라지는지를 결정한다.
다만 Alpha와 Value의 반응은 Material Graph 구성에 따라 달라질 수 있으므로, 특정 방향으로 값을 바꾸면 항상 같은 결과가 나온다고 단정하면 안 된다.
원래 값을 기록한 뒤 RGB, Value, Alpha를 하나씩 바꾸면서 얕은 부분과 깊은 부분의 색을 함께 비교하는 편이 안전하다.
Ocean·Lake·River와 Transition Material 색상 맞추기
Water Body Ocean, Lake, River는 각각 Water Material을 가지고 있다.
한 종류의 색만 수정하면 서로 만나는 부분에서 경계가 보일 수 있다.
특히 Water Body River는 Lake와 Ocean을 연결할 수 있기 때문에 다음 두 Transition Material도 함께 수정해야 한다.
- River to Lake Transition Material
- River to Ocean Transition Material

River는 Ocean과 Lake처럼 Gerstner Wave를 직접 생성하지 않고 Spline Point의 Velocity를 Flow Map에 기록해 흐름을 표현한다.
서로 다른 Water Body가 만나는 구간에서는 Transition Material이 표면 차이를 자연스럽게 이어 준다.

가까운 수면의 색을 모두 맞췄는데 연결부만 다르게 보인다면 River의 Transition Material부터 확인하는 것이 좋다.
Water Zone의 Far Distance Material 수정하기
Water Body Ocean 주위에서 지평선까지 이어지는 넓은 수면은 Water Zone의 Far Distance Mesh가 담당한다.



Water Zone을 선택한 뒤 Far Distance Material에 지정된 Material Instance를 열어 Ocean과 같은 계열의 색으로 맞췄다.
사용한 Material에 Absorption Parameter가 노출되어 있다면 같은 방식으로 조절할 수 있다.

Far Distance Mesh는 가까운 Water Mesh보다 단순한 구조와 Material을 사용한다.
따라서 모든 Parameter를 완전히 같게 만드는 것보다 최종 카메라에서 두 수면의 색과 밝기가 끊기지 않게 맞추는 것이 중요하다.
높은 카메라 각도에서는 가까운 Water Mesh와 Far Distance Mesh의 경계가 더 쉽게 보이므로, Far Distance Mesh Extent가 촬영 범위를 충분히 덮는지도 함께 확인해야 한다.
실제 파도 높이 조절하기: Water Waves Asset
Water Body Ocean의 Wave - Waves Source에는 Water Waves Asset을 지정할 수 있다.

Water Waves Asset에서 Gerstner Wave Generator의 Amplitude를 수정하면 실제 수면의 큰 파도 높이를 조절할 수 있다.
- Min Amplitude: 생성되는 파도 진폭 범위의 최솟값
- Max Amplitude: 생성되는 파도 진폭 범위의 최댓값
- Amplitude Falloff: 두 값 사이에서 파도 높이가 분포되는 방식




파도를 낮추려면 Min과 Max Amplitude를 함께 낮추고, 파도의 크기 차이를 줄이려면 두 값의 간격도 확인해야 한다.
가까운 수면의 큰 움직임은 Water Waves Asset이 담당하고, 잔물결 같은 미세한 디테일은 Water Material의 Normal과 Material Parameter가 담당한다고 구분하면 이해하기 쉽다.
Landscape에 Nanite 적용하기
새로 생성한 Landscape에는 Nanite가 자동으로 활성화되지 않는다.


지형 작업을 마친 뒤 Landscape를 선택하고 Details의 Nanite 항목에서 Enable Nanite를 활성화했다.
이후 Build Data를 실행하면 현재 Landscape의 Height Data를 기준으로 Nanite Mesh가 생성된다.

Nanite Data를 생성한 뒤 Sculpting이나 Landmass Brush 등으로 지형의 높이와 형태를 수정하면 기존 Nanite Mesh가 최신 Landscape와 달라지게 된다.
이때 Viewport에 Rebuild 경고가 표시되면 Rebuild Data를 실행해 Nanite Data를 다시 생성해야 한다.
Material Parameter만 수정한 경우까지 항상 Rebuild가 필요한 것은 아니며, Landscape의 Height Data나 지형 형태가 변경됐을 때 다시 빌드한다고 이해하면 된다.
Landmass와 Sculpting 작업 도중마다 반복해서 Build하기보다, 지형의 형태를 확정한 뒤 마지막에 Nanite Data를 생성하는 편이 불필요한 재빌드 시간을 줄일 수 있다.
최종 카메라에서 지평선과 작업 범위 확인하기
Landscape와 Water를 모두 만든 뒤에는 Editor Perspective가 아니라 최종 Cine Camera에서 경계를 확인해야 한다.
납품용 영상에서 텅 빈 지평선이나 Landscape의 사각형 끝이 보이면 장면의 완성도가 크게 떨어질 수 있다.
제한된 작업 범위에서는 카메라 높이를 낮추고 바닥과 지형을 중심으로 촬영하면 경계를 숨기기 쉽다.

다만 높은 각도의 Shot 자체가 잘못된 것은 아니다.
높은 구도가 필요하다면 Landscape Component, 배경 지형, Water Zone, Far Distance Mesh의 범위를 카메라가 보는 영역보다 넓게 구성해야 한다.
고정된 Shot을 기준으로 필요한 범위를 계산하면, 보이지 않는 곳까지 무조건 넓게 제작하는 비용도 줄일 수 있다.
Landmass와 Water Body를 이용한 섬 마무리
Base로 섬 전체의 기본 높낮이를 만들고, 여러 Landmass를 겹쳐 산과 계곡을 추가한 뒤 Sculpt Layer에서 해안선을 정리했다.

이번 작업에서 가장 중요했던 부분은 지형을 한 번에 완성하려 하지 않고 역할을 분리하는 것이었다.
- Base Landmass: 전체 지형의 넓은 높낮이
- 지역 Landmass: 산과 계곡의 실루엣
- Curl Noise·Displacement: 절차적인 디테일
- Sculpt Layer: 카메라에서 어색한 부분의 수작업 보정
- Water Body: 해안·호수·강의 지형 변형
- Water Material·Transition·Far Distance Material: 수면 색상과 연결
- Water Waves Asset: 실제 파도 높이
이 구조를 이해하면 결과가 이상할 때 무작정 Parameter를 바꾸지 않고, 어떤 단계에서 문제가 생겼는지 구분해서 수정할 수 있다.
Landmass는 Height Map처럼 복잡한 자연 지형을 한 번에 생성하는 도구는 아니지만, Unreal Engine 안에서 카메라 구도에 맞춰 지형을 빠르게 바꾸고 반복 작업하기에는 유용했다.
특히 Base와 지역 Brush의 계산 순서를 정리한 뒤부터 여러 산을 겹쳐도 전체 실루엣을 통제하기 쉬워졌다.
'3D Video Production > Unreal Engine (5.6.1)' 카테고리의 다른 글
| UE 5.6 PCG & Modeling Mode (0) | 2026.09.04 |
|---|---|
| UE 5.6 Foliage & Motion Design (0) | 2026.09.03 |
| UE 5.6 Landscape: Height Map 불러오기부터 Water Body까지 (0) | 2026.09.01 |
| UE 5.6 Material 심화: 물 Material 만들기 & 텍스처·Nanite 최적화 (0) | 2026.08.31 |
| UE 5.6 Material 심화: 이미지 시퀀스 Fog부터 Material Attributes, 눈 쌓임 표현까지 (0) | 2026.08.28 |