Frame at 0.00s
## Unity와 Unreal Engine에서 Terrain (지형) 작업 기본 ### **Unity Terrain 기초** * **Terrain 시스템의 역할:** * 대규모 야외 환경 생성 시 지면을 만드는 데 사용됩니다. * *Landscape* 모양 조각, 잔디나 흙 같은 *Material* 칠하기, 조약돌, 풀잎, 양치류 같은 작은 디테일 추가. * 나무와 같은 큰 디테일 추가 가능. * Terrain 생성 과정을 빠르고 쉽게 만듭니다. * **작업 시작 전 준비:** * **계획 수립:** * 주요 랜드마크 위치를 표시하는 탑다운 지도 그리기. * 필요한 Terrain 크기 결정 (엔진에서 처음 묻는 질문). * 잘못된 크기 결정 시 추후 수정에 큰 어려움 발생. * **계획 없이 바로 시작하는 것은 큰 실수:** * 크기를 모르면 너무 크거나 작게 만들 가능성 높음. * Terrain 시스템 학습 및 연습 목적이라면 생략 가능. * 월드 제작 시에는 반드시 계획 수립 필요. * **새 씬 생성 및 Terrain 설정:** * `File` > `New Scene` 선택. * `3D Object` > `Terrain` 선택하여 Terrain 생성. * 생성된 Terrain은 카메라 위치 (Origin)에 모서리가 위치하므로, Origin 중심으로 이동 필요. * **Terrain Tools 패키지 설치:** * `Window` > `Package Manager` > `Unity Registry` 선택. * `Terrain Tools` 검색 및 설치. (Terrain 시스템 기능 향상) * **Terrain 설정 상세:** * **Terrain Width/Length:** * 기본값: 1000 x 1000 미터. * **권장:** 작은 타일(예: 100x100 미터)로 만들고 필요에 따라 추가 타일 생성. * 큰 Terrain을 하나만 만들면 작업이 더 어려워지고 일부 기능이 제대로 작동하지 않을 수 있음. * **Terrain Height:** * 최대 높이 및 깊이. 기본값: 600 미터. * 타일 크기에 맞춰 조정 (예: 100x100 타일일 경우 400 미터로 감소). * 높이 맵(Height Map)의 정밀도 향상. * **Height Map Resolution:** * Height Map의 픽셀 수 (예: 513x513). * Terrain 크기 대비 픽셀 수를 통해 디테일 결정 (예: 100x100 Terrain에 513x513 해상도 = 미터당 약 5픽셀). * Texture Memory 사용량에 영향. 더 낮은 해상도(예: 129x129)로도 충분하다면 메모리 절약 가능. * 513x513은 합리적인 설정. * **Control Texture Resolution:** * Material이 적용될 영역을 결정하는 마스크 해상도. * 잔디, 흙, 바위 등의 경계 디테일 결정. 512x512 정도면 충분. * **Base Texture Resolution:** * 멀리 있는 Terrain의 디테일 수준 결정. * **Basemap Distance:** 상세 렌더링과 단순 렌더링 전환 거리 설정 (예: 50 미터). * **Detail Map Memory:** 멀리 있는 Terrain의 디테일 맵에 사용되는 메모리 양 설정 (예: 4096x4096). * **Terrain 위치 조정:** * Terrain의 모서리가 Origin에 위치하는 것을 피하고, Terrain을 Origin 중앙에 배치. * Terrain의 Position을 `(-50, 0, -50)`으로 설정 (100x100 Terrain 기준). * 월드를 Origin 주변으로 중앙 집중화하여 부동 소수점 정밀도 최대화. * **Height Sculpting (높이 조각):** * `Paint Terrain` 탭 > `Raise or Lower Terrain` 선택. * **Brushes:** * 다양한 모양의 브러시 사용 가능 (Gaussian falloff, Hard edge 등). * 브러시 이미지를 직접 활용 가능. * *Brush Strength* (투명도): Terrain에 미치는 영향력 조절 (예: 0.01로 시작하여 미세하게 조절). * *Brush Size*: 브러시 크기 조절 (예: 2 미터). * *Rotation, Spacing, Scattering*: 브러시의 회전, 간격, 산포도 조절 (일반적인 Terrain 작업에 필수적이지는 않음). * **작업 흐름:** * 큰 브러시로 시작하여 주요 지형 (산, 강 등)을 먼저 잡습니다. * 점차 브러시 크기를 줄여나가며 세부적인 디테일을 추가합니다. * **Height 조절:** * `Ctrl` + 클릭: Terrain 높이 낮추기 (기본 높이가 0이므로, 먼저 높이를 올려야 사용 가능). * `Set Height` 모드: 특정 높이로 Terrain을 설정. (예: 15로 설정 후 페인팅 시 해당 높이로 고정) * **Height Map Import:** * 외부 소프트웨어(Photoshop 등)에서 생성한 Height Map을 `Import Raw` 기능을 통해 Terrain에 적용 가능. * Gaia와 같은 Terrain 생성 소프트웨어 활용 가능. * **Terrain Material Painting (재질 칠하기):** * `Paint Terrain` 탭 > `Paint Texture` 선택. * Terrain에 Material Layer 추가 (예: `Dry Soil`, `Ground Grass`). * **Terrain Layers:** * `List is empty` 상태에서 `Add Layer` 클릭. * Unity Asset Store에서 `Asset Samples` 또는 `URP Demo Scene` 다운로드하여 샘플 Layer 활용 가능. * **Layer Properties:** * *Size*: Layer의 디테일 크기 조절. * *Textures*: Layer에 적용될 텍스처. * *Strength*: Normal Map의 강도 조절. * *Tint*: Material 색상 틴트 적용 (Shader에서 구현 필요). * **Terrain Material:** * 기본값: `Terrain Lit` (Unity 내장 Shader). * *Shader Graph*를 사용하여 커스텀 Shader 적용 가능 (Unity 6.3+). * **Height-Based Blending:** * Terrain Material 설정에서 활성화 가능. * 높이 맵을 기반으로 Material을 자연스럽게 블렌딩. * *Transition* 값 조절을 통해 부드러운 블렌딩 또는 하드한 경계 설정. * 높은 부분부터 Material이 먼저 보이도록 블렌딩. * 투명도(Alpha) 블렌딩보다 더 자연스러운 결과. * **Terrain Object 관리:** * 새로 생성된 Terrain은 Assets 폴더에 저장됨 (예: `New Terrain`). * Terrain Object는 `Splat Alpha` (Material Map)와 연결되어 각 Material의 적용 영역을 나타냄. * Splat Map은 Red, Green, Blue 등의 색상으로 각 Layer를 표시. ### **Unreal Engine Landscape 기초** * **Landscape와 Terrain:** * Unity의 Terrain과 동일한 개념 (Unreal에서는 Landscape라고 칭함). * **새 Level 생성:** * `File` > `New Level` > `Basic` 선택. * **Landscape Mode:** * `Modes` 드롭다운 > `Landscape` 선택. * 녹색 그리드는 Landscape 생성될 영역을 미리 보여줌. * `Create` 버튼 클릭 시 Landscape 생성. * **Landscape 구성:** * *Sections*와 *Components*로 구성. * 개별 *Tiles*가 가장 작은 단위. * **설정:** * `Number of Components`: 전체 Component 수 (CPU 비용에 영향). * `Sections per Component`: Component 당 Section 수. * `Quads per Section`: Section 당 Quad 수 (GPU 비용에 영향). * `Landscape Component Size`: Component의 크기. * **최적화:** CPU와 GPU 비용 간의 균형을 맞추는 것이 중요. * Epic Games 공식 문서의 **Table**을 참고하여 Landscape 크기에 따른 최적 설정 확인 권장. * 기본 설정 (505x505 해상도, 64 Components)은 약 0.5km x 0.5km 크기 Landscape 생성. * 초보자는 작은 크기부터 시작하는 것이 좋음. * **Level of Detail (LOD):** * Landscape는 카메라 거리에 따라 자동으로 디테일 수준을 조정 (Zoom In 시 Vertex 밀도 증가, Zoom Out 시 감소). * **Vertex Density:** * 기본값: 1 Vertex per Meter (가까이 볼 때). * `Manage` 탭 > `Resize` > `Resample` 모드. * `Section Size` 조정 (예: 63x63 -> 255x255)으로 Vertex 밀도 증가. * **LOD Settings:** * `LOD0 Screen Size`, `LOD0`, `Other LODs` 설정으로 원거리 디테일 제어. * 밀집된 Vertex를 효과적으로 줄여 성능 최적화. * 적절한 설정 값을 찾기 위한 조절 과정 필요. * **Sculpting (조각):** * `Sculpt` 탭 사용. * **Tools:** * `Sculpt Tool` (기본): 클릭하여 높이기, `Shift` + 클릭하여 낮추기. * `Smooth Tool`: 날카로운 지형을 부드럽게 만듦. * `Flatten Tool`: 특정 높이로 지형 평탄화. * `Erosion`: 언덕이나 계곡 침식 효과. * `Add Noise`: 지형에 무작위 노이즈 추가하여 디테일 향상. * **Brush Size/Strength:** 브러시 크기와 강도 조절. * **작업 흐름:** * 큰 브러시로 주요 지형 (산, 강)을 블록킹. * Smooth Tool로 부드럽게 다듬기. * Noise Tool로 미세한 디테일 추가 후 Smooth Tool로 마무리. * **Material Layer Painting (재질 칠하기):** * `Paint` 탭 사용. * **Terrain Material:** Landscape에 적용될 기본 Material. * **Target Layers:** * `Create Layer` 버튼으로 Layer 추가. * `Create Layers from Assigned Materials`: Material에 할당된 Layer를 기반으로 자동 생성. * **Layer Info:** * 각 Layer에 대한 정보 (Weight Blending 등) 설정. * `Advanced Weight Blending` 설정 권장. * *Blend Group* 설정. * **Weight Blending:** * Layer 간의 혼합 방식. * **버그 주의:** Unreal Engine 5.7 버전에서 Weight Blending 관련 버그가 있을 수 있으며, 수동으로 다른 Layer를 지워야 할 수 있음. * **Material Layer 구성:** * Material의 Layer 이름과 Landscape의 Layer 이름이 일치해야 함. * `Landscape Blend Layer` 노드를 사용하여 Layer와 Height Blending 설정. ### **결론** * Unity와 Unreal Engine 모두 Terrain (Landscape)을 생성하고 sculpting, material painting하는 기본적인 기능을 제공합니다. * **사전 계획**은 복잡한 지형 제작 시 필수적입니다. * **브러시 크기, 강도, LOD 설정** 등을 조절하여 원하는 디테일과 성능을 확보합니다. * 각 엔진의 **고유한 시스템과 워크플로우**를 이해하는 것이 중요합니다. * 다음 단계에서는 **Grass, Ferns, Trees와 같은 디테일 추가** 방법에 대해 다룰 예정입니다.