[튜토리얼]UDK에서 지형만들기

높이값을 가진 이미지를 이용해서 Terrain를 제작하게 되면 기획자가 의도한 컨셉 지역의 면적과 지역간을 연결하는 동선을 빠르고 손 쉬우며 비교적 정확하게 구현할 수 있습니다- 이를 구현하는 방법을 간략하게 설명하면-



1 – 포토샵에서 257*257 Pixel size 크기의 새로운 창을 만듭니다-

이는 맵의 크기를 256UU*256UU의 크기로 하기 위함입니다-

실제로 프로그램 상으로 보이지 않는 1Pixel이라는 것이 있습니다-

그것 때문에 우리는 한 변이 256UU*256UU로 이루어진 맵을 만들기 위해서 이미지 크기를 257*257 Pixel로 만들어야 합니다-





2- 하나의 그리드 크기를 16으로 맞춥니다-






그러면 우리가 만든 맵은 각 변이 16개이고, 전체는 256개의 정사각형 그리드로 보여질 것입니다- 하나의 작은 정사각형은 1310m^2의 전체 맵에서 약 80m^2면적을 차지합니다- 이는 하나의 그리드가 전체 맵의 약 0.4%의 면적을 차지하고 있는 것입니다- 이러한 그리드의 표시는 자신이 계획하는 구획의 면적을 대략적으로 알아보는데 무척 편리합니다-






3 - 기획서의 의도에 맞춰서 그레이값으로 0-255의 높이값을 가지는 16Bit의 BMP 이미지를 만들어 저장합니다-



주의할 점은 자신이 만든 터레인의 이미지를 언리얼 에디터에서 가져오면 지형이 돌아가있는 것을 발견하게 될 것입니다- 이는 언리얼 에디터에서 X,Y축이 설정이 우리가 흔히 쓰는 축과는 다르기 때문에 발생하는 것입니다- 하지만, 실제로 우리가 쓰는 축과 언리얼 에디터의 축을 제대로 맞추려면 Filp Vertical이나 Filp Horizontal을 해준 후 시계방향으로 90도의 회전을 해줘야 하지만 실제로는 그렇지 않습니다- 이는 언리얼 툴에서 외부의 이미지 파일을 가져올 때 어떤 알고리즘을 갖고 있다는 가정을 할 수 있습니다-

현재의 가장 간단한 해결책은 자신이 원하는 지형을 이미지 파일로 제작한 후 시계방향으로 90도 회전을 한 후에 언리얼 에디터에서 가져오는 것입니다-




BMP파일을 저장할 때는 시계방향으로 90도 회전 후 16Bit용으로 저장해야만 합니다-



4 – 언리얼 터레인 에디터를 불러와서 새로운 터레인을 만듭니다-

그리고 새로 만든 터레인을 선택한 뒤 저장한 BMP파일을 가져옵니다-




가져오기에서 2개의 항목을 꼭 체크해줘야 합니다-



5 – 터레인의 높이값은 보통은 64정도가 적당합니다-

z축의 3ddraw값을 64로 한다면, 64*256*0.02 = 327.68m의 최대 높이값을 가진다는 뜻입니다.

맵의 컨셉상 고저차가 커야한다면 좀 더 높은값을 가져도 상관없습니다-

하지만, 이왕이면 32 - 64 - 128 - 256의 단계를 가지는 것이 이후 단위를 계산함에 있어서도 편할 것입니다.






4 – 현재는 피벗이 가장 높은 곳을 기준으로 지형이 설정되어 있을 것입니다-

작업의 편의를 위해서 현재의 피벗을 터레인의 가장 낮은 Z축 값을 기준으로 바꿔줘야 합니다-




터레인의 피벗을 이동 시킨 후 저장 합니다- Z축 값도 0으로 다시 맞춰줘야 합니다-



5 – 이렇게 이미지 파일을 이용해서 간단하고 대략적인 지형을 생성할 수 있습니다-



이를 응용한다면 테라젠(http://www.planetside.co.uk/)을 이용해서 높이값을 가지는 Tga파일을 가지고 포토샵에서 자신이 원하는 지형으로 수정을 한다면 비교적 짧은 시간에 빠르게 대략의 지형을 만들 수 있습니다- 이는 레벨기획자가 자신이 원하는 지형을 레벨아트팀에게 정확하게 얘기할 수 있습니다- 또한, 레벨 기획시 원하는 장소의 면적과 동선의 길이의 수정도 비교적 쉽고 간단하며 용이하게 할 수 있음을 의미합니다-



단점은 8Bit의 높이 값을 가지는 이미지 파일을 사용하므로, 지형의 단계가 크지 않아 지형을 만들고 나서도 Smooth작업을 해주어야 합니다- 해결책은 더 높은 단계 값을 가지는 이미지파일을 ‘HMCS - HeightMap Conversion Software’란 소프트웨어로 변환하여서 다시 UDK에 물리는 방법이 있을꺼라 생각됩니다- 아직 테스트를 해보지는 못했습니다-



퍼가시는 것은 상관없으나 출처를 바꾸거나 자신이 작성한 것 처럼 꾸미지 않으셨으면 합니다-
그럼 좋은 하루 보내세요-

댓글 4개:

  1. 좋은글 감사합니다. Unreal에서 실제 좌표계를 이용해서 구현도 가능한가요?

    답글삭제
  2. 실제 좌표계가 뭘 말씀하시는건지는 모르겠네요.
    일단 언리얼 좌표와 이미지 좌표에 관련된 내용을 찾아보세요.
    우리가 흔히 사용하는 포토샵이나 맥스의 평면좌표계와는 XY축이 다르더군요.
    그리고 에픽에서 터레인은 더 이상 기술 지원이 없고 랜드스케이프로 대체한다고하니까 랜드스케이프를 공부하시는게 좋겠네요.

    답글삭제
  3. 위,경도가 있는 좌표계가 있는 자료를 이용해서
    실제 백두산이나 등산로(고도좌표)와 같이를 그대로 만들수 있는지 궁금해서요.

    답글삭제
  4. 위도와 경도가 있는 좌표계를 이용하는게 아니라 제가 쓰는 방법은 이미지의 Alpha값을 이용하여 높이를 표현하는 방법입니다.
    실제 백두산과 같은 고도좌표를 이용하려면 먼저 백두산의 높이값과 대응하는 Alpha 이미지가 있어야합니다.

    답글삭제