UDN
Search public documentation:

MobileLandscapeKR
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 홈 > 랜드스케이프 > 모바일 랜드스케이프
UE3 홈 > 모바일 홈 > 모바일 랜드스케이프

모바일 랜드스케이프


문서 변경내역: 잭 포터 작성. 홍성진 번역.

개요


2012년 11월 버전에서부터 모바일 플랫폼에 랜드스케이프가 처음 지원됩니다. Emulate Mobile Features (모바일 기능 에뮬레이션) 세팅은 물론 Mobile Previewer (모바일 프리뷰어)나 모바일 디바이스에서의 실행도 모두 지원됩니다. 다른 플랫폼에서 사용할 수 있는 모핑 LOD 역시, PhysX 콜리전과 마찬가지로 모바일에서도 작동합니다.

모바일 플랫폼에서 랜드스케이프를 사용할 때의 주요 차이점은 모바일 머티리얼 셋업입니다. 물론 퍼포먼스와 메모리도 고려해야 겠구요.

모바일 랜드스케이프 머티리얼


모바일 랜드스케이프는 언리얼 엔진 3 모바일 머티리얼 시스템 을 활용합니다. PC 나 다른 플랫폼에서의 랜드스케이프는 다수의 레이어가 지원되며, 그 블렌딩도 Landscape Material 노드 안에서 정확히 계산되어 결정되어 나옵니다. 모바일에서의 랜드스케이프는 최대 넷 까지의 레이어 블렌딩을 지원합니다.

보통 머티리얼은 PC 에서 렌더링되도록 구성하는 것이 좋습니다. 편집할 때나 Lightmass 로 라이트맵을 생성할 때도 사용하다가, LandscapeLayerBlend 노드를 사용하여 간단히 모바일과 유사한 블렌딩이 나오도록 머티리얼을 구성할 수 있습니다. 아래는 레이어 넷으로 된 랜드스케이프 예제와 머티리얼 노드 스크린 샷입니다.

MobileLandscapeLayers.jpg MobileLandscapeNodes.png

보통 레이어 블렌딩

이와 같은 모바일용 머티리얼 구성을 위해서는 먼저 머티리얼의 Usage 플랙을 올바르게 설정해 줘야 합니다. Use With LandscapeUse With Mobile Landscape 양쪽 다 체크되었는지 확인해 주세요.

MobileLandscapeUsage.png

다음으로, 각 레이어에 사용할 텍스처를 지정해 줘야 합니다. 레이어 텍스처를 지정해 줘야 랜드스케이프 편집 모드 창에 나타납니다. 다른 방법으로는 사용할 레이어를 Mobile Landscape Layer Names 프로퍼티에 넣어주는 방법이 있습니다. 이 예제에서는 Snow, Grass, Sand, Rock 순서입니다.

MobileLandscapeLayerNames.png

첫째 레이어는 Mobile Base Texture 프로퍼티에 지정되어 있습니다. 그 다음 레이어들은 Mobile Detail Texture, Mobile Detail Texture 2, Mobile Detail Texture 3 슬롯의 Texture Blending 섹션 아래 지정되어 있습니다.

마지막으로 필요한 경우 Texture Transform 섹션 아래에서 텍스처의 UV 스케일을 지정할 수 있습니다.

MobileLandscapeMaterialSettings.png

머티리얼 구성을 마치고 Emulate Mobile Features (모바일 기능 에뮬레이션) 버튼을 누르면 모바일 디바이스에서 보이는 대로 레이어 블렌딩을 확인할 수 있습니다. 또한 Mobile Previewer (모바일 프리뷰어) 버튼을 누르면 모바일 디바이스에서 사용되는 것과 동일한 OpenGL ES 2.0 셰이더를 사용합니다.

MobilePreviewerWindow.jpg

단색 레이어 블렌딩

레이어 텍스처 네가지를 하나의 텍스처에 합치는 것도, 각 텍스처 단색 버전을 R,G,B,A 채널에 각각 저장하는 식으로 가능합니다. 그런 다음 각 레이어 블렌딩 전 색을 입히는 데 사용할 RGB 값을 지정하면 됩니다. 예를 들어 눈에는 하양, 풀에는 초록, 바위에는 갈색을 지정해 주면 되겠지요.

이렇게 하면 각 레이어에 여러가지 색깔을 사용할 수 없게 되지만, 웨이트 텍스처와 하나의 레이어 텍스처만 사용되므로 블렌딩이 단순해집니다. 퍼포먼스가, 특히 저사양 디바이스에서 크게 향상되겠지요.

이 기능을 켜려면 Use Mobile Landscape Monochrome Layer Blending 체크박스를 켜면 됩니다. 그런 다음 Mobile Landscape Monochrome Layer Colors 프로피터에 각 레이어의 컬러 값을 지정합니다:

MobileLandscapeLayerColors.png

마지막으로 합친 레이어 텍스처를 임포트한 다음 그에 대한 레퍼런스를 Mobile Base Texture 프로퍼티에 넣어줘야 합니다. Mobile Detail Texture 프로퍼티는 비어 있어야 합니다.

퍼포먼스와 메모리


컴포넌트 크기

모바일 디바이스에서는 드로 콜 수는 물론 트라이앵글 수를 줄이는 것도 중요합니다. 드로 콜 수는 랜드스케이프 컴포넌트 수에 의해 결정되며, 컴포넌트 크기와 서브섹션 수는 트라이앵글 수와 LOD 전환이 얼마나 빠르게 일어나는지를 결정합니다. 저희가 테스트한 바에 의하면 랜드스케이프 크기 1009x1009, 컴포넌트 126x126 쿼드 (63x63 쿼드로 된 서브섹션 2x2) 정도가 트라이앵글 수와 LOD 전환에 있어서 균형이 잘 맞는 지점이었습니다.

컴포넌트 크기에 대해 더욱 자세한 정보는 랜드스케이프 새로 만들기 페이지를 참고해 주시기 바랍니다.

Mobile LOD Bias

모바일에서 랜드스케이프가 그리는 트라이앵글 수를 줄이는 데 사용할 수 있는 세팅은 두 가지 있습니다. 첫째는 Landscape 액터의 MobileLodBias 프로퍼티입니다. 이 수치를 늘릴 때마다 모든 모바일 플랫폼에서 각 컴포넌트의 크기를 1 밉 레벨씩 낮춥니다. 예를 들어 2x2 서브섹션, 63x63 쿼드 랜드스케이프에 대해 MobileLodBias=1 설정을 한다면, 쿠킹시간에 하이트맵 최상위 밉 데이터는 버리고, 그 해상도를 2x2, 31x31 쿼드 랜드스케이프로 줄입니다. 모바일 기능 에뮬레이션(Emulate Mobile Features) 버튼을 누르면 감소된 해상도의 랜드스케이프가 표시됩니다.

둘째는 BaseSystemSettings.iniMobileLandscapeLodBias 세팅입니다. 이 값은 MobileLodBias 프로퍼티와 똑같이 작동하나, 특정 디바이스에 따라 실행시간에 수행되는 여분의 bias 라는 점이 다릅니다. 예를 들어 4세대 iPod Touch 의 기본 bias 값이 1 이라면, iPhone 4S 에 비해 반해상도의 하이트맵과 렌더링되는 트라이앵글 수가 1/4 로 준다는 소리입니다. 이 세팅은 게임에 알맞게 조정할 수 있습니다.

  • 참고로 MobileLandscapeLodBias 는 렌더링 데이터 초기화 전까지 최대 해상도 데이터를 유지하기 때문에 최고(peak) 메모리 사용량까지 줄이지는 못하나, 레벨이 로드되고 나면 메모리 사용량이 감소되기는 합니다.

양쪽 세팅 다 동시에 작동합니다. SystemSettings.ini 에 MobileLandscapeLodBias 가 설정되어 있으면 액터에 설정된 (쿠킹 시간에 발생하는) MobileLodBias 상위에 적용됩니다.

메모리 사용량

PC 에서는 높이와 노멀 데이터를 효율적으로 보관하고 LOD 전환 계산을 쉽게 하기 위해 버텍스 텍스처를 사용합니다. 모바일에서는 고정된 버텍스와 인덱스 버퍼를 사용합니다. 이때문에 모바일에서는 메모리 사용량이 늘어납니다.

  PC 모바일
위치 데이터 LOD 별 버텍스 당 2 바이트 LOD 별 버텍스 당 8 바이트
노멀 데이터 LOD 별 버텍스 당 2 바이트 LOD 별 버텍스 당 4 바이트
콜리전 데이터 버텍스 당 4 바이트 버텍스 당 4 바이트
레이어 데이터 (4 레이어) 버텍스 당 4 바이트 버텍스 당 4 바이트

통계

STAT LANDSCAPE 콘솔 명령으로 뷰에 있는 랜드스케이프에 대한 트라이앵글과 드로 콜 수를 볼 수 있습니다.

한계


  • 랜드스케이프 홀 렌더링은 아직 지원되지 않습니다.
  • LOD 는 엄격히 거리 기반으로, 고정된 LOD 컴포넌트나 LOD 인수 변경은 지원되지 않습니다. 버텍스 셰이더에는 딱 두 개의 LOD 레벨만 사용할 수 있기 때문입니다.
  • 랜드스케이프 편집은 Emulate Mobile Features (모바일 기능 에뮬레이션) 버튼이 눌린 상태에서는 가능하지 않습니다. 랜드스케이프 편집 모드에 들어가면 모바일 기능 에뮬레이션 버튼이 눌린 경우 자동으로 토글시킵니다.
  • 128x128 버텍스, 즉 2x2 서브섹션에 127x127 쿼드 이상은 지원되지 않습니다. 컴포넌트 크기가 그보다 커지면 하나의 버텍스 버퍼에 65536 개 이상의 버텍스가 필요하게 되어, 16비트 인덱스 값이 넘치게 됩니다. 더 큰 값을 사용하려고 하면 깨져서 렌더링됩니다. 이런 상황에서는 MobileLodBias=1 설정을 해 주면 컴포넌트의 버텍스 수를 줄여주므로 문제가 해결됩니다.