Gavin Eisenbeisz 의 unreal-engine-5-outdoor-level-design 라는 유데미 강의 입니다.
섹션 1: UE5 설치 및 사용방법에 대해 다룹니다.
섹션 2: 맵을 어떻게 그릴지에 대해 다룹니다.
섹션 3 부터 실습이 시작되며, 이 글은 그 과정을 간략하게 요약한 자료입니다.
- 강의 목적: 지형 툴 기능 파악, 맵 구성
1. Landscape Tools 사용하기
- New > Fill World > Create
- Height map의 해상도를 설정할 수 있고, Scale을 통해 Height map의 픽셀 크기를 조절할 수 있습니다.
- Component 단위를 설정할 수 있으며, Select, Add, Delete 와 같은 연산의 단위가 됩니다.
- Import를 통해 파일로 Height map을 불러올 수 있습니다.
다양한 Sculpt 도구들을 사용할 수 있습니다. 한번씩 사용해보면 어떻게 동작하는지 바로 알 수 있을 겁니다.
- Flatten 에서 유요한것 : Flatten Mode
- Raise : 브러쉬 영역에서 낮은것만 평평하게 올리는 것
- Erosion : 침식도구로, 강사가 가장 좋아하는 도구라고 합니다. 평평하게 만들고 경사를 만들어 형태를 다듬을 수 있습니다.
- Threshold: 각도를 조절합니다.
- Hydro: 침식을 더 날카롭게
- Sediment Cap: 이 값이 높을수록 침식효과가 더 커집니다.
- Visibility : 가시성 제거 + 충돌 제거
- 예시: 동굴
2. 섬 조각하기
- Plane 을 추가하 바다로 설정 (표면 바로 위에 두어서, Water Material 사용하는 것으로, 임시방편입니다. 후에 Water 플러그인을 사용합니다.)
- 이 섹션에서는 강사가 직접 조각 툴을 사용하는 것을 보고 어떤 상황에서 어떤 도구를 사용하면 될지를 자세하게 볼 수 있습니다.
- 특히, 산에 좁고 구불구불한 길을 만드는 부분이 인상 깊습니다.
- 저는 프로젝트 진행중 테스트할 것이 있어서 원형으로 오르막, 내리막이 있는 섬으로 구성했습니다.
3. 텍스쳐 Material 설정하기
- Quixel Bridge 를 사용하여 텍스처를 가져옵니다.
- Surfaces > Grass, Sand/Beach, Rock, Ground
- Material 을 새로 만든 다음, 그 Material 을 클릭해서 Material Graph 를 수정합니다.
- Landscape Layer Blend 노드를 생성합니다.
- 그리고, Layer 를 Quixel에서 가져온 텍스쳐 개수만큼 더 추가합니다.
- 제일 첫번째에 weight를 1.0을 설정합니
- 종류마다 위와같이 텍스쳐 3개를 위와 같이 연결시킵니다.
- 이를 통해 젖은 느낌의 땅과 같은 것을 구현할 수 있습니다. ( 반사값 조절, Roughness 조절, 반사광 조절)
- 두번째 블렌드 노드 역할은 "반사광" 입니다. 이는 constant 노드를 생성해 연결하면 됩니다.
- (젖은 느낌, 반짝임을 주기 위해 사용)
- 위와 같은 과정을 아까 얻은 텍스처들 전부에 대해 수행합니다.
- 각 blend 노드의 weight 값을 조절하여, 자신이 원하는 텍스쳐를 만들 수 있습니다. (제대로 연결됬는지 확인할 수 있습니다.)
- 그런 다음 Landscape Coords 를 추가하여 각 텍스처의 UV에 넣어줍니다.
주의점 - Epic Games에서는 텍스처 수, 레이어 수를 유지하도록 권장함 (이 강의에선 8개 사용했지만, 일반적으로 5개 정도가 권장)
- 더 많은 개수를 설정하고 싶다면, 모든 텍스쳐를 선택하고 detail 패널에서 Material Expression Texture Sample >Sample Source > Shared Wrap 으로 설정
(그렇지 않으면, 지형을 그리기 시작할 때 한 영역에 레이어가 너무 많으면 회색으로 표시됨)
4. 지형 색칠하기
- LandScape를 클릭하고 3에서 설정한 Material을 설정해줍니다.
- LandScape mode 에서 Paint 탭에서 브러쉬로 마테리얼을 색칠할 수 있습니다.
- LayerInfo 파일을 만들어야합니다.
- 더하기 버튼을 클릭하고, Weight-Blended Layer 을 클릭합니다.
- 이 때 레이어 이름에 공백이 없어야 합니다.
- 그런 다음에 브러쉬들로 적절히 지형을 칠할 수 있습니다.
5. 메쉬 붙이기
- Surface Snapping 을 사용하면, 울타리와 같은 작업을 비교적 쉽게 할 수 있습니다.
6. Folige
- folige 또한 Quixel Bridge 에서 얻을 수 있습니다.
- Home/3DPlants/Grass, Weed, Shrub
- Folige 모드에서 이를 설정할 수 있습니다. (Quixel 에서 추가한 에셋들은 자동으로 들어갑니다.)
- Paint 모드에서는 활성화된 Foliage 모두를 사용해서 랜덤으로 칠하니 주의하세요
7. 마무리 작업
- 바다 추가
- Water 라는 플러그인을 사용합니다. (실험적 기능)
- Water Body Custom 을 배치합니다. (Large Plane)
- z 값으로 수면을 조절합니다. 또한 Scale을 적당히 두어 평면을 넓힐 수 있습니다.
- 가장자리를 Land scape mode 에서 Sculp로 오목하게 만듭니다.
Load Error - Collision Profile settings do not include an entry for the Water Body Collision profile, which is required for water collision to function. Add entry to DefaultEngine.ini
오류 해결: DefaultEngine.ini 에 다음을 추가합니다. (출처: https://forums.unrealengine.com/t/help-please-error-packaging-project/693911)
[/Script/Engine.CollisionProfile] +Profiles=(Name="WaterBodyCollision",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="",CustomResponses=((Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="Default Water Collision Profile (Created by Water Plugin)")
- 장면 조명
강사는 아래 설정들을 조작하여 장면을 구성하였습니다.
- Create > Volumes > Post Process Volume 에서 여러가지 후처리 옵션들을 사용할 수 있습니다. (육면체 안에서 적용되는 것)
- min, max Brightness (1.0)
- infinit Extent (unbound) 으로 육면체 밖에도 적용시킬 수 있습니다.
- vignette intensity
- bloom > method, intensity, threshold
- Visual Effects > Sky Astmosphere
- Visual Effects > Exponential Height Fog
- Fog Density, Fog Height Falloff
- volumetric Fog
-
- Directional Light
- Atmosphere Light 를 적용할 수 있습니다.
- Volumetric Cloud
- Sky Light
- 캡쳐 프로젝트 다운,
- intensity scale
- 충돌 및 차단 볼륨
- 메쉬에 충돌체 설정
- 필요보다 더 낳은 충돌 데이터 > (Collision Presets > Custom, Collision Complexity > Use Complex Collision As Simple )
- Collision > Add Box
- Create > Volumes > Blocking Volume 으로 볼륨 박스를 설정할 수 있습니다.
- 바다, 절벽에 플레이어가 들어가지 못하도록 충돌 설정
- 충돌 예외 설정
- Details > Collision Presets > Custom 으로 설정하고 ignore 설