Ch2-4. 지형과 식물 : 랜드스케이프 - 하이트맵
카테고리: UE4 Lesson 3
태그: UE4 Game Engine
인프런에 있는 배틀로얄 게임을 만들어보며 배우는 언리얼 게임 개발 강의를 듣고 정리한 필기입니다. 😀 강의 들으러 가기
Chapter 2. 지형과 식물
랜드스케이프 - 하이트맵
🚀 하이트맵이란?
Vertex는 X, Y 이동은 불가능하고 Z 축 위 아래로만 이동이 가능하다. 전체 랜드스케이프의 Vertex 의 Z 축 정보를 Vertex마다 0~255 (알파) 범위의 값으로 저장하여 하나의 그림에 담아 표현한 것을 하이트맵
이라고 한다. 즉 하나의 랜드스케이프의 전체적인 높낮이 정보를 담고 있는 2D 그림이다. 하늘에서 수직으로 바라보는듯한 지형의 지도라고 생각하면 된다.
- 하이트맵의 크기는 적용할 랜드스케이프의 전체 해상도와 일치하게 만들어야 한다.
🚀 하이트맵 생성 프로그램
사람이 일일이 조각하며 지형의 높낮이(Vertex의 Z 값 변화시키기)를 만들지 않아도, 자동으로 어떤 알고리즘에 의해 절차적으로 지형의 높낮이를 생성시켜 주는, 그래서 원하는 지형을 만들 수 있는 그런 프로그램들이 있다.
- World Machine
- Instant Terra
- World Creator
즉, 하이트맵을 만들어주는 프로그램들들이다. 전부 유료다. Instant Terra 써보고 싶었는데.. 유료가 되버려서 못 썼다. 내겐 너무 비쌋다.. World Machine 같은 경우는 유데미에 강의들도 많던데 나중에 수강해서 배워봐야겠다.
이렇게 외부 프로그램으로 생성한 하이트맵은 이렇게 랜드스케이프 생성시 “파일에서 임포트” 하여 하이트맵을 가져와 그 하이트맵의 높낮이를 가진 랜드스케이프를 생성할 수 있다.
🚀 포토샵으로 하이트맵 수동으로 만드는 방법
예를 들어 8161 x 8161 해상도의 랜드스케이프를 만들 것이라면 8161 x 8161 사이즈의 그림 파일을 만들어야 한다. 그림 파일 내의 픽셀들(랜드스케이프의 Vertex에 대응)은 0 ~ 255 값을 가진다. 색깔은 사용하지 않고 밝고 어두움의 정도를 0 ~ 255 값으로 표현하는 정도다.
- 포토샵으로 만든다면
- 이미지 - 모드 - 회색 음영
- 하이트맵은 색깔은 필요 없고 밝고 어두움을 나타내는 0 ~ 255 값만 사용하면 되기 때문에
- 하얀색일 수록 높은 지형, 검은색일 수록 낮은 지형이다.
-
예를 들어 아래와 같은 모양의 하이트맵을 만들었다면 이를 언리얼의 랜드스케이프에 적용하면 가운데에 최대 높이의 원기둥이 우뚝 서있는 형태가 될 것이다.
-
- 저장은
.PNG
파일로 한다.
- 이미지 - 모드 - 회색 음영
-
언리얼의 랜드스케이프 모드에서 “파일에서 임포트”를 통하여 앞서 만든 하이트맵을 적용하고 랜드스케이프를 생성하면 된다. 하이트맵에 의하여 아래와 같은 지형이 만들어졌다. 가운데에 우뚝 솟아 있는 원기둥..
- 하이트맵의 높낮이 값 0 ~ 255
- 언리얼에서의 -256 X 100 ~ 256 X 100 에 대응하게 된다.
- 랜드스케이프의 Scale
Z
값이 100이라면, Z 축으로 Vertex 간의 간격이 100 = 1m 라는 것이다. - 하이트맵의 픽셀 마다 가지는 0 ~ 255 값은 따라서 언리얼로 가지고 오면 -256 X 100 ~ 256 X 100 값을 가지게 된다.
- 최소 높이는 -25600 이 되고 (하이트맵에서의 하얀색)
- 최대 높이는 25600 이 되는 것이다. (하이트맵에서의 검정색)
- 랜드스케이프의 Scale
✈ 내가 사용한 하이트맵 출처
duke54님이 언리얼 포럼에 공유하신 하이트맵. https://forums.unrealengine.com/development-discussion/modding/ark-survival-evolved/92497-duke-s-free-heightmaps
강의에선 Instant Terra 로 하이트맵을 만드셨는데.. 유료가 되버려서 ㅠ ㅜ World Machine 을 배우기엔 시간이 부족하고.. 아무튼 구글링을 통해 하이트맵을 구했다. 내가 사용한 하이트맵은 이 곳에서 가져왔다. 넘 고마운 분..
- 강의와는 다르게
- Scale
Z
값을180
사용하였음 - 8129 x 8129 해상도를 사용하였음
- Scale
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기