(언리얼엔진) 배틀그라운드 따라만들기 - 1.랜드스케이프 작업

Overview

+) 4.20버전으로 진행하였습니다.

언론데브에 유료 강좌 배틀그라운드 만들기 11~14강를 보고 정리한 내용입니다.

시작하기

프로젝트 생성

3인칭 시점으로 프로젝트를 생성해줍니다.

create_project_1

프로젝트 세팅

  • Packaging 설정

create_project_2

Blueprint Nativization MethodInclusive로 변경하면, 블루프린터로 작성한 내용을 C++ 코드로 변환해서 패키징 됩니다.

C++로 만들어진 코드가 성능적인 측면에서 더 퀄리티가 높다고 하네요.

  • Light Render 설정

create_project_3

RenderingAllow Static LightingFalse로 체크해줍니다.

8k 맵을 생성할 예정이라, 해당 옵션을 켜 놓을 경우 렉이 많이 걸릴 수 있습니다. 제껀 컴이 좋지 않아서..

랜드스케이프 작업하기

Map 생성하기

Maps 폴더를 생성하고 Level을 생성하여 Jungle이라는 이름으로 변경해줍니다.

create_project_4

Lighting 세팅

  • 태양 만들기
  1. 우측 상단에 Lighting 폴더를 만들어줍니다.
  2. Directional Light를 가져와 Sun으로 이름을 변경하고, Rotation Y 값-70으로 수정해줍니다.
  3. Mobility 옵션을 Movable로 변경합니다.

create_project_5

-70도는 정오의 태양 각도를 표현하기 위함입니다.

  • 하늘 생성하기
  1. sky를 검색하여 BP_Sky_Sphere를 가져와 Sky로 이름을 변경한 다음 Lighting 폴더에 넣습니다.
  2. Directional Light Actor에 방금 만들어 놓은 Sun으로 변경해줍니다.

create_project_6

Sun의 각도를 변경할 때마다 Directional Light Actor를 재설정 해줘야 합니다.

  • 자연스러운 그림자 만들기
  1. Sky Light를 불러오면 자동으로 Sky에 설정에 따라 빛이 생기며, 자연스러운 그림자를 만들어 냅니다.
  2. Recapture 기능은 Sun의 변화에 따라 다시 세팅하기 위해서 Sun이 수정되고 나면 한번씩 눌러줘야 합니다.

create_project_7

  • 카메라의 HDR(High Dynamic Range)효과 없애기

create_project_8

Heightmap 생성하기

  • Heightmap 이란?

Heightmap은 검정색과 힌색으로 이뤄져있으며, 지형의 높낮이를 나타낸 이미지입니다. 검정색이 제일 낮은 곳을 의미하며, 흰색이 제일 높은 곳을 의미합니다.

  • Instant Terra 설치
  1. 링크에서 Free Trial 버전으로 설치해줍니다.
  2. Free Trial 버전은 한달간 무료로 사용가능한 것으로 보입니다.(아마도..)

create_project_9

  • 마스킹 이미지 만들기
  1. 8161 X 8161 사이즈의 파일을 생성해 간단한 마스킹 이미지를 만들어줍니다.
  2. PNG 파일로 저장합니다.

create_project_10

  • 지형 만들기
  1. Perlin noise노드에서 가로, 세로의 길이를 8161 X 8161로 변경합니다.
  2. Apply color rampColor ramp노드를 사용해서 바다와 지형을 나눌수 있습니다.
  3. Import mask노드를 사용해 가져온 마스킹 이미지를 Sum Using Mask노드를 통해 기존에 지형과 합쳐줍니다.
  4. Cone은 일부 지형을 원불형태로 돌출시키기 위함이며, Scale&offset노드를 사용해 전체적인 지형의 높낮이를 선택할 수 있습니다.
  5. Apply curveSmooth노드를 사용해 지형을 평평하게 만들어줍니다.
  6. 마지막으로 Export terrain노드를 사용해 Heightmap을 추출합니다.

create_project_11

저장은 16비트 PNG로 해야합니다.

Landscape 생성

  • 지형 생성하기
  1. 좌측 상단에 ModesLandscape로 변경해줍니다.
  2. Import form File을 선택하고, 저장해논 Heightmap을 불러옵니다.
  3. 해상도를 맞추기 위해 하단에 Fit to Data를 누르고 Import를 통해 지형을 생성합니다.

create_project_12

주의사항으로 실제 Instant Terra에서 가져온 이미지의 최대 최소와, 언리얼 엔진에서 나타내는 최대 최소 높이가 다르기 때문에, 가져올때 Scale Z 값과 해수면 높이에 맞는 Location Z값을 적용해주어야한다.

+) 계산법

  • Scale Z 계산 = [(실제 지형의 최대 높이 - 최소 높이) / 512] X 100
  • Location Z = [(실제 지형의 최대 높이 - 최소 높이) / 2 - 실제 지형의 최소 높이] X 100

  • 해수면 만들기
  1. 평면 액터 추가하고 Ocean으로 이름을 변경합니다.
  2. Location 값을 (0, 0, 0) 으로 변경하고, Scale은 x, y를 10000으로 변경합니다.

create_project_13

색 칠하기

지형 입히기

  • Textures 가져오기
  1. Textures 폴더와 Materials 폴더를 생성해주세요.
  2. Textures 폴더에서 Import 버튼을 눌러 Texture들을 가져옵니다.

create_project_14

  • Material 생성
  1. Materials 폴더에서 M_Jungle이라는 Material을 생성해주세요.
  2. Texture를 불러와 세팅을 해줍니다.

create_project_15

이쪽은 잘 모르겠네요 ㅠㅠ 그냥 따라했습니다.

  • Material 적용하기
  1. 생성한 Material을 Landscape 속성 중 Landscape Material로 드래그 하여 적용시켜줍니다.
  2. Paint 메뉴에서 Layers에 Material들이 추가된 것을 확인 할 수 있습니다.
  3. Layer 우측에 + 버튼을 눌러서 가중치 정보를 저장하는 Layer Info를 생성합니다. (Nomal로 생성)
  4. Layer Info가 생성되면서 자동으로 폴더가 만들어집니다.

create_project_16

바다 색 입히기

  • Material 생성
  1. Materials 폴더에서 M_Ocean이라는 Material을 생성합니다.
  2. M_OceanBlend ModeTranslucent로, Lighting ModeSurface TranslucencyVolume으로 변경하고, Screen Space Reflections 옵션을 켜줍니다.
  3. Depth Fade를 사용해 Opacity를 사용해 투명도를 조절해줍니다.
  4. 물결 무늬를 UV 애니메이션을 통해 물결치는 애니메이션을 구현합니다.
  5. 1.333의 굴절율을 줘서 바다 속에 굴절을 줍니다.
  6. M_Ocean X, Y Scale을 100000, 100000 으로 변경합니다.

create_project_17

create_project_18

  • Fog 생성
  1. Exponation Hight를 추가하고, Location 값을 수정합니다.
  2. Fog Density 를 0.01, Fog Height Falloff를 0.08, Start Distance를 20000으로 수정합니다.
  3. M_Ocean 속성 중 Apply Fog Per Pixel 옵션을 선택합니다.

create_project_19

중간에 지형이 좀 이상한거 같아서 수정했습니다.

하늘 디테일 수정

  1. Cloud opacity를 1.2로 수정합니다.
  2. Cloud speed를 2로 수정해주세요.

create_project_20

결과물

  • 게임 실행 모습 create_project_21

  • 전체 맵 create_project_22