Impostor Mesh란?

Impostor Mesh를 설명하기전에 쉬운 이해를 위해 Billboard(빌보드)의 개념에 대해 알필요가 있습니다.

 

빌보드는 고속도로 옆에 있는 옥외광고를 뜻합니다, 이와 똑같은 단어로 게임에도 사용됩니다.

 

위와 같이 파티클 등 Plane이 카메라를 계속 바라보게하는 기법을 빌보드라고 합니다.

 

그래서 Impostor Mesh는 3D오브젝트의 모든 면을 캡처하여 Texture로 데이터를 저장한다음 카메라 방향에 맞춰 캡처한 면을 출력하는 3D Billboard입니다.

 

결과적으로 3D오브젝트가 아닌 Plane으로 3D오브젝트 처럼보이게 하여 버텍스 수를 굉장히 절약할 수 있습니다.

 

 

Impostor Mesh가 활용된 사례로는 대표적으로 2018언리얼 서밋에서 포트나이트에서 HLOD와 Impostor Mesh를 이용해서 최적화했다고 소개됬습니다.

https://www.youtube.com/watch?v=npX-HYQwlPk

 

 

Impostor Mesh 설치

https://github.com/KokkuGames/ImpostorBaker

 

KokkuGames/ImpostorBaker

UE4 Plugin for generating Impostors for static meshes - KokkuGames/ImpostorBaker

github.com

Impostor Mesh는 4.19버전에 제작된 이후 4.19 초과된 버전에서는 제대로 작동 안되는 문제가 있습니다, 그것에 대한 해결책이 있으나 어떤 분이 4.22버전으로 호환되게 제작하여 Github에 올려주셨습니다.

위 Github의 자료를 다운받습니다.

 

압축을 풀고 -master 글자를 제거합니다.

 

프로젝트 폴더에 Plugins 폴더안에 ImpostorBaker폴더를 넣고 프로젝트를 실행합니다.

(혹시 Plugins폴더가 없으면 새폴더 만들기로 직접 만들어야합니다.)

 

콘텐츠 브라우저 탭의 뷰옵션에서 플러그인 콘텐츠를 표시를 체크하시면 콘텐츠 브라우저의 폴더에 ImpostorBaker 콘텐츠를 확인할 수 있습니다.

 

ImpostorBaker/Maps에 Generate_Impostor_Map 레벨을 켜서 우측의 레벨이 확인되면 설치 끝입니다.

 

 

Impostor Mesh 만들기

1. Impostor Mesh로 만들 Static Mesh 사전 설정

Static Mesh를 Impostor Mesh로 만들기 위해서는 해당 메쉬에 들어있는 마테리얼을 좀 설정해야합니다, 쉐이더 정보에서 월드노말 등 정보를 뽑아야하기 때문입니다.

위 오브젝트는 2개의 마테리얼이 있으니 두 개를 수정해야합니다.

 

ImposterCaptureSwitch라는 마테리얼 함수를 사용해야합니다, 이를 위해서 해당 마테리얼을 Attribute로 설정하고 우측 사진과 같이 마테리얼을 설정하면 됩니다.

 

Attribute로 설정하는 방법은 마테리얼의 디테일 패널에서 위 사진의 옵션을 체크하면 됩니다.

 

 

2. Impostor Mesh 굽기 : 옵션 설정

먼저 Cube-Scaled 오브젝트를 제거합니다.

 

원하는 Static Mesh를 생성하여 좌표를 0,0,0으로 맞추면 위 사진과 같이 정확히 가운데로 맞춰집니다.

 

다음 BP_Generate_ImposterSprites라는 이름의 시꺼먼 물체를 선택하고 디테일 패널에서 Static Mesh Actor메뉴의 스포이드 버튼을 클릭하여 이전에 생성했던 Static Mesh를 클릭합니다.

 

해당 오브젝트에 맞춰 바닥 스케일과 시꺼먼 물체의 스케일이 조정된것을 확인할 수 있습니다.

 

다음 설명 드릴것은 디테일패널에 기본옵션들의 설정입니다, Frame XY로 퀄리티 조절하는 것 외에는 다른 옵션을 별로 사용한적이 없습니다.

 

위 옵션 설정이 완료되면 본격 Baking 단계로 넘어갑니다.

 

 

3. Impostor Mesh 굽기 : Baking

디테일 패널의 Default속성들을 이용해서 쉽게 Baking작업을 합니다.

1) Clear RTs 이전에 베이킹했었다면 초기화하는 버튼입니다.
2) Render Frames 메쉬를 굽는 버튼입니다. 굽는데 몇초 시간이 소요될 수 있습니다.
3) Create Static Assets 구운 메쉬 정보를 실제 파일로 생성하는 작업입니다, 이전 옵션에 설정했던 경로에 생성됩니다.
4) Overwrite ExistingAssets 3번 작업과 똑같으나 새로 생성하는게 아닌 새로 덮어씌웁니다.
Clear Debug Lines Debug Line을 지우는것 같으나 Debug Line이 없어서 용도를 모르겠습니다.
Convert To Manual Cutout 생성된 Impostor Mesh의 Cutout을 직접 조정할 수 있습니다.(OverDraw방지)

위 6가지 옵션이 있지만 보통 1,2,3으로 Impostor Mesh를 생성하고 6번옵션으로 Cutout조정만 합니다.

 

좌측이 실제 Static Mesh이고 우측이 Impostor Mesh입니다.

멀리서 보면 거의 차이가 나지 않습니다.

 

와이어 프레임으로 보면 Impostor Mesh는 Plane한장으로 되어있는것을 확인 할 수 있습니다.

 

 

3. Impostor Mesh 사용하기 : Static Mesh 만들기

BP_Generate_ImposterSprites(시꺼먼 물체였던것)에서 ProceduralMesh 컴포넌트의 디테일을 보시면 Create Static Mesh 혹은 스태틱 메시 생성 버튼이 있습니다, 이 버튼을 누르고 경로를 설정하면 해당 경로에 Static Mesh가 생성됩니다.

 

하지만 저장하면 위와 같이 경고 메세지가 발생합니다.

 

정확한 원인으 모르겠지만 저장하지 않은채로 에셋 익스포트를 하여 FBX를 뽑아낸후 임포트하면 해결됩니다.

 

임포트한 Static Mesh를 열고 머티리얼에 아까 생성한 MI 머티리얼을 넣습니다.

 

위와 같이 계속 반짝이는 문제가 발생합니다, 이 문제는 메쉬의 바운드가 제대로 설정이 안되서 컬링되는 문제입니다.

 

디테일 패널에서 Positive Bounds Extension 값을 대충 맞춰주면 문제가 해결됩니다.

 

좌 : Impostor Mesh, 우 : Static Mesh

그림자가 이상한것 빼고 문제 없어보입니다.

 

 

4. Impostor Mesh 사용하기 : LOD 세팅

Static Mesh 설정을 킵니다.

 

디테일 패널의 LOD세팅에서 LOD의 갯수를 설정하고 마지막 LOD에 아까 익스포트한 모델을 임포트 합니다.

 

원래 마테리얼 슬롯이 2개였는데 위 과정에서 Impostor Mesh를 새로 임포트하면 슬롯이 1개 더 생깁니다, 저 슬롯에 아까 생성한 MI 마테리얼을 넣고 슬롯 이름을 지정해줍니다.

 

Impostor Mesh를 임포트한 LOD를 선택한 후 세부 설정에서 마테리얼 슬롯을 아까 새로 추가 된 마테리얼 슬롯을 설정합니다.

 

Impostor Mesh LOD 세팅이 완료됬습니다.

 


WRITTEN BY
CatDarkGame
Technical Artist dhwlgn12@gmail.com

,