[GpGiki 대문으로]

언리얼 엔진 3 컨텐츠 개발법


언리얼 엔진 3를 이용한 효율적인 컨텐츠 개발법 위키를 만들어갑시다

Introduction

2007년 이후 시간대에 언리얼 엔진 3를 사용하여 PC 혹은 온라인 게임 타이틀을 발매하도록 타이틀의 개발에 대한 계획을 세우고 있다면 차세대 컨텐츠 개발에 있어서 주의해야 하는 약간의 고려점들에 대한 윤곽을 설명합니다. 이 문서는 아직까지 현재의 개발에서 게임 엔진을 사용하는 것이 어려운 관련성을 최소화하고 계획을 세우는 것을 돕도록 할 것입니다.

다른 노말맵핑이 없는 엔진의 컨텐츠 작업과 비교해서 언리얼 엔진 3노말맵핑이 포함된 컨텐트 개발에는 기존보다 더 많은 시간과 노력이 필요하게 됩니다.

이에 따라서 인력/생산 계획이 올바르게 변경될 필요가 있습니다. 언리얼 엔진 3의 목표가 되는 그래픽스 하드웨어는 최소 Shader Model 3 이상입니다. 그리고 DX10, Shader Model 4 이상을 고려해 추가적인 효과를 더할수도 있습니다. 최소 Shader Model 3 이상에 맞춰서 아니면 Shader Model 4 이상까지 활용해서 더 다양한 맵핑 소스들을 활용해 좋은 퀄리티를 추구할지에 대해서는 여러분들이 만들고자하는 게임마다의 기획에 달려있습니다.

예를 들면 노말맵핑과 보통의 텍스쳐맵핑만을 사용해서 결과물을 만들어낸다던가 거기에 더해서 이미시브맵핑, 글로스맵핑, 디스플레이스먼트 맵핑 등등 매우 다양한 기술들을 고려해 사용할 수 있습니다.

이것처럼 컨텐츠를 어느정도 수준의 퀄리티로 개발할지에 대한 다양한 방법에 따라서 상당한 비용/시간이 차이가 나게됩니다. 그래서 작업전에 컨셉과 기획에서 그것을 명확하게 정해야합니다.

Modeling

최상의 비주얼 퀄리티를 얻기위한 하이폴리 모델은 그것에서 노말맵을 추출한 후에 그것을 실제 게임에서 사용될 로우-폴리 메쉬에 입혀지기 위한 의도로 제작됩니다.

하이 폴리 모델링에서 추출된 노말맵이 실제로 높은 퀄리티로 나오기 위해선 매우 시간이 걸리는 작업이 될것입니다. 노련한 아티스트들은 뛰어난 하이-폴리 모델을 만들어내는데에 여러 툴들의 다양한 기법들을 사용하지 않고서도 간단한 모델링툴로서만 만들어냅니다. 개발팀의 아티스트들에게 하이-폴리 모델링의 경험이 있었는지 조사해보고 아티스트들의 능력과 경험을 고려하여 평가한 후 그에 맞춰 개발일정이나 아트 파이프라인 기획을 조정해야합니다. 만일 아티스트들이 하이-폴리 노말맵 작업에 대해서 전혀 경험이 없다면 이전의 노말맵이 없던 컨텐츠 개발기간과 대조하여 대략 5~6배정도의 시간이 더 걸릴지도 모릅니다. 노련한 하이-폴리 모델러들이 있다면 시간은 경험이 없던 모델러들이 작업하는 것보다 2~3배정도 절약될 것입니다.

개발팀의 이러한 변화를 자연스럽게 만들기위해 다음과 같은 방법이 있으며 개발 기간을 5~6배에서 2~3배로 낮추도록 합니다.

manual Bump-Mapping

혼란스러울 것은 없습니다! 하이-폴리 모델링을 대신하는 방법이 존재합니다. 아티스트들은 그들이 작업하듯이 모델들을 만들고나서 수작업으로 범프맵핑을 위해 사용되어지는 최상의 정보들을 그립니다. 이 기법은 노말맵들을 생성하는 방법으로 하이-폴리와 관련되는 (UDN 참고: ImportingStaticMeshTutorial#A_Few_Words_About_UVs overlap limitations)가 있기 때문에 타일링 텍스쳐를 가지는 월드 구조물들에 특히 적용되기 좋습니다.

Epic의 경험에서, 이러한 종류의 각 텍스쳐들은 일반적인 텍스쳐를 생성하는 시간보다 약 25%~50% 가량 시간이 추가되고, 전체적인 높은-디테일 메쉬 과정을 우회하게 됩니다. 이러한 과정의 기법에 대한 자세한 정보는 (작성 중입니다) 문서를 보도록 하십시요.

텍스처의 노말맵으로 구성되는 환경에서의 텍스쳐링은 본질적으로 per-pixel 라이팅을 고려하지 않은 텍스쳐와 다릅니다. 아티스트들이 기존에 작업해 왔던 것들을 대체하여 언리얼 엔진 3상에서 다양한 쉐이딩 기법들에 의해 생성되어지는 라이팅 이펙트들이 어떻게 적용되는지 배우는지에 따라서 조정기간이 필요할 것입니다. (곧 UDN의 이에 관한 문서들을 번역토록 하겠습니다)

어떠한 메터리얼들은 diffuse와 bump 텍스쳐보다 더 많은 텍스쳐들을 요구합니다. detail 텍스쳐, detail 범프맵, emissive 맵, 등등을 위해 어느정도 시간을 예상해야 합니다. 표현하고자 할 질감에 따라서 50여가지 이상의 다양한 맵핑들과 그를 통한 다양한 조합이 필요할 수 있습니다.

Which to Choose and When

노말맵핑의 다양한 종류의 자세하고 좋은 사용법들은 곧 문서화 될 것입니다.

Texturing

텍스쳐 해상도들은 이전의 게임들에 비해서 앞으로의 PC와 콘솔들을 위해 상당히 높아 질것이어서, 아티스트들이 텍스쳐에 대한 시간 소비가 좀더 늘어나도록 요구될 것으로 예상합니다. Epic은 Gears of War의 Xbox 360 버젼에서 1024×1024 DXT1으로 압축된 텍스쳐들을 사용하지만 Gears of War의 PC 버젼에서는 2048×2048의 무압축 텍스쳐들을 사용합니다.

언리얼 엔진 3의 최신 버젼에서 적용된 기술인 스트리밍 기술로 Epic의 개발중인 최신 게임인 Unreal Tournament 3는 콘솔 (Xbox 360, PlayStation 3)에서도 2048x2048 혹은 4096x4096의 텍스쳐를 사용 가능하며 PC에선 64비트 DX10, 그리고 더 많은 메모리 용량 덕택으로 8192x8192 혹은 16384x16384까지의 텍스쳐 해상도까지 커버할 수 있게 되었습니다.

언리얼 엔진 3 현재 최신 버젼에서는 16384x16384의 텍스쳐 해상도까지 무리없는 성능으로 커버를 할수 있지만 이러한 텍스쳐 해상도를 작업하기 위해서는 많은 시간과 노력이 필요하며 이러한 정도의 해상도를 사용하는 게임들은 아직 없습니다. Epic의 다음 언리얼 엔진 3를 사용하는 PC 게임에서는 이러한 해상도가 사용될지도 모르겠습니다. Epic은 좋은 방법을 발견하면 이 방법들을 공개하도록 하겠습니다.

Streaming Texture Loading System

2007년 9월 1일자 빌드로 좀 더 완성도 있는 스트리밍 텍스춰 기술이 포함 됐습니다. 이 기술은 시스템 메모리의 제한에 구속받지않고 높은 해상도의 텍스처를 사용 가능하게 해줍니다. 만일 예를 들어서 2048*2048 크기의 텍스춰를 쓴다면 기존엔 엔진이 시스템 사양이나 시스템 메모리를 체크해서 자동으로 1024*1024나 512*512로 줄여버리는 퀄리티 저하를 적용했지만 수동으로 조절하거나 특정 퀄리티로 고정하거나도 가능했지만 낮은 메모리 시스템에서 하이퀄리티로 고정해놓으면 느려지는 당연한 문제가 있었죠.

기존에 시범적으로 추가됐던 몇가지 텍스처 스트리밍 로딩 기술은 미세한 끊김현상같음 몇가지의 문제점을 안고 있었는데 이번에는 한층 더 완성도 높게 구성됐습니다.

방법은 모든 서페이스에 적용된 텍스춰들을 단 하나의 큰 단일 함수화 후에 관찰자(카메라)에서 안보이는 부분은 메모리에서 모두 제거되어 함수화되고 관찰자의 이동거리와 위치를 엔진이 자동 추적해 관찰자에서 가까워지는 부분은 이미지형으로 전환되어 나타나게 되는데 이 모든것이 디스크에서 스트리밍 로딩되는게 아닌 메모리상에서 작동되는 원리라서 끊김이 전혀 없고 전체가 단일 함수화되서 빠른 장면 이동이나 스피디한 관찰자 이동에도 작동 속도가 빠르고 두 개 이상의 관찰자 시점 카메라가 존재할 때도 무리없이 적용이 됩니다.

기존에 비슷한 기술의 경우엔 갑작스런 장면전환이 있으면 장면전환 후 약간의 시간이 경과후에 적용이 되는데 이번에 개선된 기술은 장면이 전환될 좌표를 미리 체크 후에 작동합니다. 예측할 수 없는 임의적인 순간이동이 있어도 스트리밍 텍스춰 로딩 시스템에 미리 체크됩니다.

단일 함수상에서 멀리 떨어지는 거리에 따라서도 텍스춰의 질적 상향 하향을 자동 조정해주기 때문에 기존의 텍스춰 LOD는 필요없게 됐고 그것보다 속도도 훨씬 빨라졌습니다. 이 기술은 별도의 작업이 필요 없이 엔진에서 모두 자동으로 해결해주는데 수동으로 툴에서 조정해주는 것도 가능은 합니다.

앞으로 이 기술을 더 향상하기 위해 새로운 방법이 또 연구중이라고 합니다.

이 기술 덕분에 콘솔(XBOX 360, PS3)에서도 PC와 동일한 하이퀄리티 텍스춰를 그대로 사용할 수 있습니다. 이 기술 덕분에 헉슬리도 PC와 XBOX 360 사이에 그래픽의 질적 차이가 거의 없게 됐습니다.

Dynamic Streaming Mip-mapping System

UnrealEd 툴상에서 여러 타일들을 찍어낸 후 하나의 텍스처셋팩으로 된 파일로 저장된다.

이 기술은 구글 어스의 줌인, 줌아웃 기능과 비슷한 기술로, 줌인하면 자세한 텍스처가, 줌아웃하면 밉맵핑 처리된 텍스처가 적용되는 새로운 텍스처 포커싱 효과 기술로, 매우 빠르게 실시간으로 처리된다.

UnrealEd에서 MipStreaming이라는 이름으로 정의되어 있으며 간단한 마우스 Drag and Drop 만으로 다양한 작업이 가능하다.

Anti-Tiling Techniques

일반적으로 텍스쳐링은 일정 크기의 타일을 가지고서 일정한 면에다 무한 반복을 적용하게 됩니다. 이는 이제까지 그렇게 사용되어 왔고 큰 문제가 없으나 만일 비행 시뮬레이션 게임의 시점이나 특정 상황에서 높은 곳에서 아래를 내려다보거나 넓고 평편한 지역을 바라보게되면 타일링 현상이 나타나게되어 어색할 수 있습니다. 지형, 혹은 브러시의 면뿐만 아니라 캐릭터, 오브젝트를 비롯한 모든 부분에 이러한 현상이 나타날 수 있고 현재 언리얼 엔진 3는 이러한 문제점을 해결하기 위한 대안으로 여러가지 기술들을 연구하고 그중 훌륭하게 완성된 기술들을 엔진상에 업데이트 해나가고 있습니다. 현재까지 업데이트 된 대안으로는 다음과 같은 방법이 있습니다.

클립텍스쳐링은 MipMap의 알고리즘에서 힌트를 얻어 개발된 기술로 오래전부터 비행 시뮬레이션 게임에서 주로 사용되는 기술입니다만 컨텐츠 제작의 효율적인 문제로 그외의 게임들에선 사용되지 않고 있습니다. 언리얼 엔진 3에서는 이 기술을 나름대로 변형하고 개선해서 (advanced modified) 이를 효율적으로 사용할 툴과 함께 엔진에 적용하였습니다. ClipMap이라는 거대한 통 텍스쳐를 지형 또는 실내 브러쉬 포함 또는 오브젝트 포함까지 전체가 하나의 ClipMap 텍스쳐만을 적용하고 나머지는 디테일맵으로 세부묘사를 더한다던가 중간 중간 부분을 나눠서 ClipMap 텍스쳐를 여러개 사용하는 것도 가능하지만 이렇게 하기엔 아티스트들의 비효율적 잔업들이 많이 필요합니다. 현재 이 기술에 대한 툴은 UnrealEd 내에 아주 간단하게만 마련되어 있습니다. 이 기술의 또 다른 문제점은 ClipMap을 사용한 후에 다른 부가적인 맵핑소스들 (노말맵, 디스플레이스먼트 맵, 이메시브맵 등등)을 적용할 때 특히 노말맵을 멀티패스처리시 성능의 관계나 컨텐츠 제작 효율이나 매우 좋지 않다는 점입니다. 이 기술을 대안할 좋은 방법을 현재 Epic은 연구중에 있습니다.

지형의 크기에 따라서 매우 방대한 지형이라면 16384x16384 3장 이상, 보통 크기라면 8192x8192 2~3장, 매우 작다면 512x512 한장 혹은 128x128 3장 정도와 같은 식으로 다양하게 조합하여 구성 가능하고 통맵 텍스쳐는 압축해서 시스템 메모리에 적재해두고 사용합니다. 통맵 텍스쳐라 타일링 현상이 전혀 없지만 세부묘사에서는 디테일이 떨어지게 됩니다. 그래서 detail layers와 detail textures를 사용해 거리에 따라서 detail range가 자동 조절되고 필요할때마다 현재에 보여지는 범위가 나오게 자동 갱신된다. 이것들은 원패스로 렌더링이 가능하기 때문에 성능에서 큰 걱정을 하지 않아도 됩니다. UnrealEd에서 실시간으로 어떻게 적용되는지를 보면서도 작업이 가능하며 텍스쳐의 갱신이나 거리에 따른 조절은 엔진에서 자동처리되므로 아티스트는 어떻게 해야 잘 보여질지에 대한 작업만 해주면 됩니다.

토론


제일 위로
최종 수정 일시: 09월 26일(2007년) 09:30 PM 편집 | 정보 | 차이 | 비슷한 페이지 DebugInfo
유용한 페이지들: 분류 분류 | 자유로운 연습장 SandBox | 무작위 페이지들 RandomPages | 인기있는 페이지들 MostPopular