UDN
Search public documentation:

TerrainHeightmapsKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 터레인 시스템 > 터레인 하이트맵: 터레인에 외부에서 만든 하이트맵 사용하기

터레인 하이트맵: 터레인에 외부에서 만든 하이트맵 사용하기


개요


Unreal Engine 3는 언덕과 골짜기를 만들기 위해 터레인 메쉬에 직접 손으로 페인팅하기, 외부에서 제작한 하이트맵 파일을 UnrealEd의 G16 비트맵 또는 T3D 메쉬 형식으로 가져오는하는 방법의 2 가지 터레인 디자인 기술을 지원합니다.

UE3의 터레인 객체는 Display.DrawScale 및 Display.DrawScale3D.X/.Y 속성에 의해 지정되는 일정한 XY 간격을 가진 표준 3D 평면 메쉬 그리드입니다. 터레인는 일정한 XY 간격을 사용하기 때문에 동일 평면의 표면 결합을 통한 메쉬의 삼각형 수의 최적화는 지원하지 않습니다. 따라서 128x128 터레인에는 항상 그것을 구성하는 129x129 하이트맵 배열이 있습니다. 또한 일정한 X.Y 간격은 터레인 객체에 의해 직접 제작될 수 없고 반드시 추가 메쉬 객체로 장면에 배치되야 하는 동굴과 오버행과 같은 지형적 시스템을 의미합니다. 일정한 X.Y 간격은 또한 2개의 정점 간의 주어진 상대적 고도에 대해 만들어질 수 있는 최대 경사 각도를 결정합니다. 그리드 간격(DrawScale) 값이 적을 수록 사용 가능한 경사의 기울기가 증가합니다. 절벽같은 경사에는 초고밀도의 터레인를 사용하려 시도하는 대신에 정적 메쉬가 사용되야 합니다.

각 터레인 그리드 정점의 Z 좌표 값은 상대적 고도를 지정하기 위해 16비트 범위(0 ~ 65535)내에서 설정될 수 있습니다. 이러한 값은 일반적으로 Unreal 편집기에서 터레인 메쉬를 페인팅하거나 또는 터레인 메쉬의 정점에 해당하는 고도값을 포함하는 하이트맵 파일 가져오기를 실행하여 변경됩니다.

터레인 시스템에는 원거리에서 렌더되는 삼각형의 수를 줄이기 위해 동적 LOD 테셀레이션을 사용하는 선택적 렌더링 최적화가 포함됩니다. 카메라에서부터의 지정된 거리에서 터레인 사분면은 렌더되는 삼각형의 수를 줄이기 위해 결합됩니다.

UE3TerrainGrid.gif

하이트맵 개요


터레인 하이트맵은 터레인 메쉬에 있는 각 지점에 대한 고도값의 x*y 배열입니다. 비디오 게임 디자인 용도로 가장 일반적인 하이트맵 레이아웃은 사각형 그리드이고, 그 크기는 129x129 또는 257x257와 같이 2의 거듭제곱 +1입니다. 하이트맵 배열의 각 값은 마지막 터레인 메쉬 객체에 있는 정점의 Z 값(고도)에 직접 상응합니다.

하이트맵을 시각화하기 위해서는 짙은 회색의 픽셀이 낮은 고도, 연한 회색이 높은 고도를 나타내는 회색조 비트맵을 사용하는 것이 좋습니다. 터레인 하이트맵에 대한 가장 일반적으로 사용되는 값의 범위는 0에서 65535의 고도 범위를 지원하는 16비트입니다. 표준 페인트 소프트웨어와 표준 비디오 어댑터 및 CRT/LCD 컴퓨터는 16비트가 아닌 8비트 회색조 밖에 표시할 수 없기때문에 하이트맵 작성 및 편집에 특수화된 소프트웨어가 구체적으로 디자인되었습니다.

Heightmap.gif

하이트맵 제작


하이트맵은 조달되거나 여러 방법을 사용해서 제작될 수 있습니다. 가장 일반적으로 사용되는 방법은 비행기, 인공 위성이나 우주 탐사선에 의해 수집되는 실제 행성의 지형 데이터 파일인 디지털 고도 모델(Digital Elevevation Models: DEMs)? 입니다. 또한, HMES, Leveller, Terragen, World Machine 등을 포함한 여러 사용 가능한 소프트웨어 응용 프로그램에 의해 제작되는 컴퓨터 생성에 의한 "알고리즘" 하이트맵이 있습니다. DEMS로부터의 하이트맵 제작에 대한 좀 더 자세한 내용은 이 문서? 를 참조해 주십시오.

알고리즘적 하이트맵을 UnrealEd로 변환하는 데 가장 일반적으로 사용되는 파일 형식은 이전에 언급한 소프트웨어 응용 프로그램을 포함한 대부분의 하이트맵 소프트웨어 응용 프로그램에서 지원된는 Raw 16비트입니다. Raw-16은 x*y 스트림으로 저장된 16 비트 raw 데이터를 포함한 헤더 없는 간단한 이진 파일 형식입니다. Unreal 편집기의 native 하이트맵 형식은 G16이라고 하며, 하이트맵 소프트웨어가 G16을 기본적으로 지원하지 않으면 Raw-16에서 중간 변환이 필요합니다. G16으로의 변환 도구는 G16Ed와 HMCS 등 다수 존재합니다.

알고리즘적 하이트맵 소프트웨어 응용 프로그램은 언덕과 골짜기의 기본 하이트맵 레이아웃을 생성하는 데 Perlin과 같은 하나 이상의 다양한 노이즈 알고리즘을 사용하는 것이 일반적입니다. 이 하이트맵은 풍화 침식, 빙하 작용 등의 지표 알고리즘을 사용하여 옵션으로 수정되고, 다양한 도구 기능을 사용하여 편집하거나 가공될 수 있습니다. 하이트맵 만들기에 대한 기능과 방법은 각 소프트웨어 응용 프로그램마다 다르기 때문에 여기서는 자세한 설명은 하지 않겠습니다.

하이트맵 해상도


하이트맵은 원하는 터레인 패치 해상도 +1의 크기로 만들어져야 합니다. 예를 들면, 128x128의 터레인는 129x129의 하이트맵을 필요하고, 256x256의 터레인는 257x257의 하이트맵이 필요합니다. 터레인에서의 패치 수는 Terrain.NumPatchesX 및 Terrain.NumPatchesY 아래의 터레인 액터 속성에서 설정됩니다.

UE3TerrainProperties.gif

하이트맵이 Terrain.NumPatches가 incoming 하이트맵 해상도와 일치하지 않는 기존의 터레인 액터로 가져오기 된다면, 다음과 같은 결과가 발생합니다.

  • 하이트맵의 해상도가 Terrain.NumPatches보다 큰 경우 (예를 들어, 257x257의 하이트맵을 기존 128x128 터레인에 가져오기 하는 경우), 전체 터레인이 가져오기된 하이트맵 해상도로 크기가 변경됩니다.
  • 하이트맵의 해상도가 Terrain.NumPatches보다 작은 경우 (예: 128x128의 하이트맵이 기존의 128x128의 터레인으로 가져오기 되는 경우), 터레인의 2개의 가장자리가 0 고도값에 유지되어 아래 그림에 보이는 것과 같이 위쪽과 오른쪽 측면을 따라 ridge 선이 형성됩니다.

UE3Terrain.gif

일부 하이트맵 소프트웨어는 128,256과 같은 2의 거듭제곱 크기의 하이트맵 제작밖에 지원하지 않고 필수 터레인 하이트맵 해상도인 129,257과 같은 2의 거듭제곱 +1은 지원하지 않습니다. 이러한 하이트맵은 위에서 언급한 것과 같이 가져오기될 시 측면에 2개의 ridge 선이 나타납니다. 이 문제를 해결하기 위해 사용 가능한 2 가지 방법이 있습니다. UnrealEd의 Flatten 도구를 2개의 가장자리를 따라 사용하여 직접 수동으로 편집하거나(시간이 좀 걸릴 수 있음), 또는 페인트 소프트웨어와 호환 가능한 TIF-16과 같은 형식으로 하이트맵 파일을 변환하여 복사/붙여넣기 등 호환 형식으로 변환하여 기능을 2의 거듭제곱에서 2의 거듭제곱 +1로 확대하기 위해 가장자리 픽셀 선에 복사/붙여넣기를 사용하여 가장자리를 편집하는 방법이 있습니다.

하이트맵 변환시키기


하이트맵 파일은 가져오기 실행하기 전에 UnrealEd의 G16 또는 T3D 형식으로 반드시 저장되거나 또는 변환되야 합니다. 하이트맵 소프트웨어가 G16을 기본적으로 지원하지 않지만 RAW-16 또는 Terragen의 .ter 파일과 같은 일반적으로 유사한 형식으로 내보내기할 수 있는 경우, G16Ed 또는 HMCS와 같은 도구를 사용하여 파일이 변환될 수 있습니다.

다음 예제 터레인은 RAW-16으로 저장되었고, 고도는 Z를 중심으로 16 비트 고도 범위의 중앙에 터레인을 배치하고 있습니다. 이 하이트맵은 실제로 필요한 크기 257x257이 아닌 256x256이기 때문에, TIF-16으로 내보내기되고, 16 비트 회색조 이미지를 지원하는 페인트 소프트웨어에서 편집되야 합니다. 적절한 257x257 크기가 되도록 오른쪽과 아래쪽을 1픽셀 확대하여 TIF-16으로 다시 저장한 다음, G16으로 다시 변환됩니다.

HMCSHeightmap.gif

UE3로 가져오기된 하이트맵은 메쉬를 하이트맵 상단에 걸쳐 양의 x 방향으로 확대시키고 하이트맵을 아래를 향해 양의 y 방향으로 확대시켜 터레인 액터가 하이트맵의 왼쪽 상단에 위치하도록 합니다.

HeightmapOrientation.gif

하이트맵 가져오기


터레인를 만들고 하이트맵을 가져오기하는 단계

참고: 가져오기 과정 중 맵에 새로운 터레인 액터를 자동으로 만들려면, 1, 2 단계를 건너뛰고 4 단계에서 "Into Current" 체크상자를 선택하지 않습니다.

1. 맵에 터레인 액터를 삽입합니다.

2. 터레인 액터의 Terrain.NumPatchesX와 Terrain.NumPatchesY를 하이트맵 G16 파일 -1 크기로 설정합니다. 예를 들면, 하이트맵이 129x129이면 NumPatches 값을 128로 설정합니다.

3. 햇빛을 시뮬레이션하기 위해 맵 원점에 DirectionalLight를 삽입합니다. Movement.Rotation.Pitch를 -45도로 변경하고 Movement.Rotation.Yaw를 45도로 변경합니다.

4. 터레인 편집 대화 상자가 표시되게 하려면 Terrain Edit 모드로 이동하십시오.

  • 맵에 여러 개의 터레인 있는 경우, View Settings 그룹의 Terrain 드롭 다운 콤보 상자에서 적절한 터레인를 선택하도록 하십시오. 첫 번째 기본 터레인 액터는 "Terrain_0"입니다.
  • Import/Export 그룹에서 “Height Map Only” 및 “Into Current” 체크상자를 선택하고, 가져오기하는 파일이 G16 .bmp이므로 Class드롭 다운 콤보 상자에서 “ G16BMPT3D”를 선택한 다음, Import 버튼을 선택합니다. 파일 대화 상자에서 외부 G16 하이트맵 파일의 위치로 이동하여 엽니다. 하이트맵 파일에 잘못된 파일 형식과 같은 문제가 없으면 하이트맵은 터레인으로 로드됩니다. 뷰포트가 자동으로 업데이트되어 새 터레인 하이트맵 표면 형상이 나타납니다.

5. 필요할 시, 터레인 속성에서 Display.DrawScale3D.X, .Y, .Z 값을 조절하여 터레인를 올바른 스케일이 되게 합니다.

기존 터레인 하이트맵의 가져오기 및 덮어쓰기는 “Visibility”에 대한 모든 터레인 편집 항목과 삼각형 모서리 회전인 “Orientation Flip”을 각 사분면 및 가장자리에 대한 기본 설정으로 재설정시킵니다. 즉, 하이트맵 파일이 가져오기되고 기존 터레인 액터에서 덮어쓰기되면 숨김으로 설정되었던 사분면 또는 회전했던 모든 가장자리는 다시 표준 상태로 돌아갑니다.

UE3TerrainEdit.gif

터레인 가장자리 방향 수정하기


가져오기된 하이트맵은 가파른 능선이나 계곡으로 향해 직각 방향으로 흐르는 사분면에서의 삼각형 사이의 가장자리인 렌더된 표면에서 부드러운 질감을 잃고 시각적으로 이상한 모양을 종종 보입니다. 이러한 것은 터레인 메쉬에 45도 각도로 능선과 골짜기의 방향을 따라 늘어선 "이"와 비슷한 모양으로 나타납니다.

UE3EdgeBad.gif

능선과 골짜기에 나오는 "이"를 다듬기하려면 터레인 레이어 텍스처링을 적용하기 전에 기본 회색 "null" 바둑판 텍스처가 렌더링되는 시점에서 삼각형의 모서리 방향을 바꾼다 것이 보통 가장 간단한 방법입니다. Terrain.MaxTesselationLevel과 Terrain.MinTesselationLevel를 모두 1로 설정합니다. "이" 형상의 능선과 골짜기의 위치를 확인합니다. 이들은 기본 회색 텍스처에 투영된 다이아몬드 모양의 음영 때문에 쉽게 확인할 수 있습니다. Terrain Edit 대화 상자의 “Orientation Flip” 도구를 사용하여 이러한 음영 지역이 선형이 될 때까지 브러시를 적용합니다.

UE3EdgeFixed.gif