UDN
Search public documentation:

LandscapeCreatingKR
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 홈 > 랜드스케이프 > 랜드스케이프 새로 만들기

랜드스케이프 새로 만들기


개요


랜드스케이프는 여러가지 방법으로 만들 수 있습니다. 편집 툴에는 랜드스케이프를 완전히 새로 만드는 기능, 예전 언리얼 에디터 혹은 외부 툴로 만든 하이트(높이)맵 임포트, 언리얼 엔진 3의 구형 터레인 시스템으로 만든 기존 터레인 변환하기 등의 방법이 제공됩니다. 외부 툴을 사용하여 작업 기반을 다지는 것도 랜드스케이프 제작 프로세스 일정을 당기는 데 좋은 방법이 될 수 있습니다. 그렇게 작업한 기반을 가져와서 정리하거나 언리얼 에디터 내의 편집 툴을 사용하여 변경하면, 랜드스케이프를 월드와 게임플레이에 어울리게끔 맞출 수 있습니다. 확실한 것은 레거시 터레인을 랜드스케이프로 변환하면 터레인이 포함된 기존 맵을 끌어다 그대로 새 시스템과 툴로 작업할 수 있다는 것입니다. 이 변환 작업에는 말썽이 거의 없으며, 거의 자동으로 이루어 집니다.

랜드스케이프 크기


랜드스케이프 하이트맵에 쓸 차원 크기는 처음 시작할 땐 감이 잘 오지 않습니다. 어느 정도가 적당한가, 그 수준을 너머 어느 정도가 최적인가를 결정하려면 랜드스케이프에 내재된 아키텍처를 철저히 이해해야 합니다. 거대한 터레인이 메모리와 퍼포먼스 측면에서 효율적으로 유지되는 시스템을 만들려면, 아키텍처에 함축된 제한사항을 하이트맵 차원에 적용해야 합니다. 무슨 뜻이냐면, 쓸 수 있는 차원이 있고 그렇지 않은 것도 있다는 뜻입니다. 언리얼 엔진 구형 터레인 시스템에서는 그러한 측면의 제한이 없었으며(, 즉 어떤 차원 크기든 돌아갔으며), 제한이 있어도 (2의 제곱 크기의 하이트맵만 허용되는 등) 꽤나 간단했습니다. 랜드스케이프의 하이트맵 제한은 훨씬 복잡하고 까다롭습니다.

랜드스케이프 컴포넌트

랜드스케이프는 언리얼 기본 렌더링 유닛, 표시여부 계산, 콜리전 등의 컴포넌트로 나뉘어 있습니다. 랜드스케이프의 컴포넌트는 모두 같은 크기이며, 항상 정사각형입니다. 랜드스케이프 컴포넌트의 크기는 생성 시간에 결정되며, 선택은 만들려는 랜드스케이프의 크기와 디테일에 따라 달라집니다.

각 컴포넌트의 하이트 데이터는 단일 텍스처에 저장됩니다. 이때문에 그 크기는 2승수 버텍스가 되어야 합니다. 인접한 두 컴포넌트의 에지(선분, 가장자리)를 따라 공유된 버텍스 열은 복제되어 각 컴포넌트에 저장됩니다. 이때문에 각 컴포넌트의 쿼드 수에 대해 고려해 보는 것이 좋습니다.

아래는 컴포넌트 넷으로 된 초간단 랜드스케이프(녹색 외곽선 부분)입니다. 각 컴포넌트는 하나의 쿼드로 되어 있습니다. 컴포넌트 하나가 떨어져 있는데, 컴포넌트가 만나는 버텍스가 어떻게 복제되는지를 보여주기 위함입니다.

Landscape_Components.jpg

컴포넌트 섹션

컴포넌트는 1 또는 4 (2x2) 개의 서브섹션으로 선택 분할 가능합니다. 이 섹션은 랜드스케이프 LOD 계산에 있어서의 기본 단위입니다.

각 섹션의 크기는 버텍스 측면에서 볼 때 마찬가지로 (최대 256 한도의) 2승수 크기가 되어야 합니다. 이는 다양한 LOD 레벨을 텍스처의 밉맵에 저장할 수 있게 하기 위함입니다. 이는 컴포넌트의 쿼드 수가 (컴포넌트별 1섹션이면) 2승수 - 1 또는 (컴포넌트별 4섹션이면) 2승수 - 2 중 하나가 되게 만듭니다.

4 섹션을 포함하는 개별 컴포넌트는 아래 그림에서 (녹색 외곽선으로) 나타나 있습니다. 각 섹션은 9 (3x3) 쿼드로 이루어져 있습니다. 여기서도 섹션이 만나는 버텍스가 겹치는 것을 볼 수 있습니다.

Landscape_Component_Sections.jpg

하이트맵 차원 계산하기

보시듯이 랜드스케이프의 차원은 각 섹션의 쿼드 수, 각 컴포넌트의 섹션 수, 랜드스케이프에 존재하는 컴포넌트의 수에 따라 결정됩니다. 컴포넌트 수와 그 컴포넌트 각각의 해상도를 결정하고 나면, 전체 랜드스케이프 차원 계산은 간단해 집니다.

시나리오별로 예를 들어 보겠습니다:

예제 1

버텍스가 64x64 인 섹션 하나로 구성된 컴포넌트로 시작한다면, 컴포넌트 크기는 63x63 쿼드입니다. 이러한 컴포넌트 10x10 으로 된 랜드스케이프가 있다 친다면, 랜드스케이프의 총 쿼드는 630x630 입니다. 즉 그런 랜드스케이프에 대한 하이트를 가져오려면, 631x631 버텍스 크기의 하이트맵이 있어야 합니다. 왜냐면 쿼드의 수보다 항상 하나 더 많은 버텍스 열이 있기 때문입니다 (예로 1x1 쿼드라면 버텍스는 4 필요). 고로 적정 랜드스케이프 크기는 631x631 입니다.

예제 2

서브섹션 넷으로 나뉜 컴포넌트가 있고, 각각은 64x64 버텍스로 구성됩니다. 이는 섹션 별로 63x63 쿼드이며, 컴포넌트 별로 126x126 쿼드입니다. 이 컴포넌트가 32x32 개라면, 각 방향에 총 126 * 32 = 4032 쿼드가 나오게 됩니다. 즉 총 랜드스케이프는 4033x4033 버텍스가 될 것입니다.

위 예제들은 정사각 랜드스케이프만 살펴봤습니다. 그러나 정사각형이 아닌 랜드스케이프도 만들 수 있습니다. 예를 들어 첫 예제에서, 10x10 는 딱 정해진 것이 아닙니다. 컴포넌트별로 63 쿼드라 가정하면, AxB 컴포넌트의 총 크기가 버텍스로 (A*63+1 , B*63+1) 이기만 하면 어느 랜드스케이프든 가능한 것입니다.

퍼포먼스 고려사항

컴포넌트 크기 vs 컴포넌트 총 수 사이의 선택은 퍼포먼스 측면에서 상충 관계에 있습니다. 컴포넌트 크기가 작을 수록 LOD 전환이 빠르게 일어나 터레인 오클루전도 많이 발생하지만, 크기가 작으니 컴포넌트를 더 많이 필요로 할 것입니다.

각 컴포넌트에는 렌더-스레드 CPU 프로세싱 비용이, 각 섹션에는 드로 콜 비용이 있으니, 최소로 유지하는 것이 좋습니다. 에픽에서 권장하는 최대 랜드스케이프 크기는 1024 컴포넌트 입니다.

추천 랜드스케이프 크기

편의를 위해, 랜드스케이프 컴포넌트 수를 최소화시키면서 영역을 최대화시키는 크기 수치는 이와 같습니다.

총 크기 (버텍스) 섹션별 쿼드 컴포넌트별 섹션 컴포넌트 크기 (쿼드) 총 컴포넌트
4033x4033 63 4 (2x2) 126x126 1024 (32x32 컴포넌트)
2017x2017 63 4 (2x2) 126x126 256 (16x16 컴포넌트)
1009x1009 63 4 (2x2) 126x126 64 (8x8 컴포넌트)
1009x1009 63 1 63x63 256 (16x16 컴포넌트)
509x509 127 4 (2x2) 254x254 4 (2x2 컴포넌트)
505x505 63 4 (2x2) 126x126 16 (4x4 컴포넌트)
255x255 127 4 (2x2) 254x254 1
253x253 63 4 (2x2) 126x126 4 (2x2 컴포넌트)
127x127 63 4 (2x2) 126x126 1
127x127 63 1 63x63 4 (2x2 컴포넌트)

새 랜드스케이프 만들기


완전히 새로 랜드스케이프를 만드는 것은 랜드스케이프 편집 창의 Create New 로 시작합니다. 이 곳을 펼치면 다음과 같은 옵션이 나타납니다:

Landscape_Create_Section.png

Heightmap Size (하이트맵 크기) 부분은 새 랜드스케이프를 만들 때 사용됩니다.

Landscape_Heightmap_Size.png

Size (vertices) (크기 (버텍스)) 값을 바라는 랜드스케이프 차원 값으로 설정합니다. Component Size (컴포넌트 크기) 속성이 입력한 차원 크기에 따라 자동으로 선택될 것입니다.

주: 새 랜드스케이프를 만들려면 윗부분에 논의한 조건에 맞게끔 컴포넌트와 섹션 생성이 용이하도록 차원을 결정해야 합니다. 총 컴포넌트가 0 이외의 적당한 값이라면 Create Landscape (랜드스케이프 생성) 버튼이 활성화될 것입니다.

Landscape_New_Heightmap_Size.png

quads per section (섹션별 쿼드)와 sections per component (컴포넌트별 섹션) 에서 선택할 수 있는 옵션도 있을테지만, 컴포넌트 수가 너무 많으면 빌드 시간이나 퍼포먼스에도 영향을 끼칠 수 있으니 주의하시기 바랍니다.

Landscape_Create_Button.png 버튼을 눌러 새 랜드스케이프를 만듭니다. 완료되면 디폴트 머티리얼이 적용된 랜드스케이프 평면이 뷰포트에 나타날 것입니다.

Landscape_NewTerrain.jpg

하이트맵과 레이어 임포트


하이트맵과 필요하면 레이어도 언리얼 에디터로 가져와(import) 거기에서 랜드스케이프를 만들 수 있습니다. 이 프로세스 역시도 랜드스케이프 편집 창의 Create New 부분에서 시작됩니다.

Heightmap Format (하이트맵 포맷)

하이트맵의 경우 .raw/.r16 은 샘플당 16비트, 리틀-엔디안, 부호없는 값, 버텍스별로 하나씩이며, 헤더나 다른 데이터는 없습니다. 즉 PC 바이트 순서로는 버텍스별로 2 바이트 입니다. 즉 127x127 의 경우 32258 바이트가 필요합니다. 포토샵에서 하이트맵을 저장하려면, 이미지 모드를 16비트 그레이스케일로 바꾸십시오. 그런 다음 RAW 파일 포맷을 선택하고 1 채널, 픽셀당 16비트, PC 바이트 순서를 선택하십시오.

Layer Format (레이어 포맷)

레이어 알파 맵의 경우, 픽셀당 8비트, 한 채널의 RAW 파일이 필요합니다.

Heightmap Import (하이트맵 임포트)

Heightmap Import (하이트맵 임포트) 부분은 하이트맵으로 가져올 파일을 지정하는 데 사용합니다.

Landscape_Heightmap_Import.png

이 파일은 16비트 .raw 또는 .r16 파일 중 하나여야 하며, 데이터의 포맷을 지정하는 옵션이 있을 것입니다.

  • Unsigned/Singed - 가져온 하이트맵 데이터가 부호 있는지 없는지를 설정합니다.
  • PC/Mac - 가져온 하이트맵 데이터의 바이트 순서를 설정합니다.

Landscape_Import_Heightmap.png

하이트맵이 지정되면 Heightmap Size (하이트맵 크기) 부분이 하이트맵에 맞는 값으로 채워질 것이며, Create Landscape (랜드스케이프 생성) 버튼도 활성화될 것입니다.

Landscape_New_Heightmap_Size.png

하이트맵만 가져오려는 경우, 여기서 Landscape_Create_Button.png 버튼을 눌러 임포트를 시작하십시오. 아니면 가져올 레이어가 있는 경우, 아래 부분으로 계속 이어나가면 됩니다.

Layer Import (레이어 임포트)

Layers (레이어) 부분은 가져올 레이어에 대한 파일을 지정하는 데 사용합니다.

Landscape_Layers_Import.png

파일은 8비트 .raw 또는 .r8 파일이어야 합니다. 가져올 레이어 파일은 여럿 지정할 수 있습니다.

Landscape_Import_Layers.png

레이어 파일을 선택하고서 Landscape_Create_Button.png 버튼을 눌러 임포트를 시작합니다.

Imported Results (임포트 결과)

임포트가 완료되면, 뷰포트에 랜드스케이프가 보일 것입니다.

Landscape_Import_Terrain.jpg

하이트맵과 함께 레이어를 가져온 경우, 가져온 레이어에 적절히 일치하는 셋업이 포함된 랜드스케이프 머티리얼을 할당해 주면 텍스처를 말끔히 차려입은 랜드스케이프를 볼 수 있습니다.

Landscape_Import_Terrain_Material.jpg

레거시 터레인을 랜드스케이프로 변환하기


기존 터레인 시스템을 사용하여 만든 터레인이 포함된 맵에 대해, 랜드스케이프 편집 창의 More 부분에 변환 방법이 제공되어 있습니다. 변환 프로세스는 매우 간단합니다. Landscape_Convert_Button.png 버튼을 누르기만 하면 맵의 모든 터레인이 변환될 것입니다.

기존 터레인을 랜드스케이프 터레인으로 변환할 때는 약간의 제한이 있습니다:

  • Max Component Size (최대 컴포넌트 크기)는 2제곱 - 1 수의 1배, 2배, 3배수여야 합니다. (예: 1,2,3, 3,6,9, 7,14,21, 15,30,45, ...)
  • Num Patches [X/Y] ([X/Y] 패치 수)는 Max Component Size 의 곱수여야 합니다.
  • Max Tessellation Level (최대 테셀레이션 레벨)은 1 이어야 합니다.

제한은 위에 지정된 순서대로 적용됩니다. 이 조건 중 충족되지 않은 것이 있으면, 그 내용이 표시되는 박스가 나타날 것입니다.

Landscape_Convert_Dialog_1.jpg

Landscape_Convert_Dialog_2.jpg

Landscape_Convert_Dialog_3.jpg

모든 조건이 충족되었다면, 터레인 변환 프로세스가 시작되고 진행상황 창이 나타날 것입니다.

Landscape_Convert_Progress.jpg