08
06

유니티 에셋스토어 링크

assetstore.unity.com/packages/tools/modeling/mesh-baker-5017?aid=1101l7zGS

 

Mesh Baker | 모델링 | Unity Asset Store

Get the Mesh Baker package from Ian Deane and speed up your game development process. Find this & other 모델링 options on the Unity Asset Store.

assetstore.unity.com

가격

79달러. 비싸지만 확실히 값어치는 함.

 

어떤 에셋인가요?

3D 게임에서 3D 메쉬를 병합하여 배칭을 최적화 할 수 있다.

 

개인 평가

기능은 크게

1. MeshRenderer / Skinnned MeshRenderer의 병합

2. SkinnedMeshRenderer의 경우 본의 스킨까지 포함해서 병합가능!

3. TextureBaker로 텍스쳐 또한 병합 가능 (바둑판 형태로 배열됨)

 

즉, 캐릭터가 머리따로 만들고, 옷 따로만들고 해서 배칭이 몇십 된다고해도

Mesh Baker를 이용하면 배칭 1로 만들 수 있다.

(당연히 Material을 통합하기 때문에 쉐이더 구분을 하려면 따로써야 되겠지만.)

 

별도의 3D모델러가 팀에 있으면 작업자가 처음부터 최적화해서 제작하면 되지만,

모델링 에셋을 구매해서 사용하는경우 직접 수정하긴 번거롭다.

하물며 스킨드 메쉬는 3D 툴을 다룰 수 없다면 손 대는게 불가능. 

 

하다 못해 3D 모델러가 있더라도 

최초 제작시점과 최종 런칭시점에서 3D 모델의 구성이 변경되는 경우가 많기때문에,

이에 맞춰 다시 최적화 작업을 다시 한다는건 힘든일. 작업량을 줄여줄 수 있다.

 

 

주의할 점?

배칭과 드로우콜, material에 대한 이해가 없다면 사용해야 하는 이유조차 알기 힘들다.

3D 그래픽스 최적화에 대한 기본 공부부터 하고 사용할 것.

 

2016/04/12 - [Unity/최적화] - 유니티 최적화 : 배칭과 드로우콜

 

 

 

스킨드 메쉬 렌더러 베이크 방법 ( 메쉬만 병합하기 )

- 같은 텍스쳐를 사용하지만 스킨드 메쉬 렌더러가 두개로 분리된, 몬스터랑 몬스터가 들고있는 무기의 메쉬병합.

- 텍스쳐까지 병합하는 방법은 별도로 설명.

 

[ 주의 ] 베이크전 메쉬를 원점으로 놓고 해야함.

[ 주의 ] UV가 지정범위를 넘는 경우 제대로 베이크가 되지않음.

[ 주의 ] 생성된 메쉬는 구조가 약간 바뀜. 최상위 그룹에 애니메이터가 있는 상태에서 베이크 해보면 최상위그룹이 하위로 들어가면서 애니메이터가 하위 오브젝트에 붙어있게 됨. 

 

 

#1. 메쉬 베이커 생성

GameObject - Create Other - MeshBaker - TextureBaker를 눌러 MeshBaker 오브젝트를 생성한다.

#2. 메쉬 베이커 그룹 아래에 오브젝트 넣기

베이크 할 오브젝트들은 그룹 아래에 넣어야한다.

반드시 MeshBaker오브젝트와 오브젝트 둘다 position과 rotation값을 0으로 만들어두자.

#2. MeshBakerWindow 열기

 Window - MeshBaker - MeshBaker 를 눌러서 윈도우를 열자.

 

#3. MeshBaker오브젝트 할당

Search For Meshes To Add 탭을 눌러서 'Target to add objects to'에 생성했던 MeshBaker 오브젝트를 넣어주자.

 

#4. 리스트에 베이크할 메쉬들 추가

하이어라키 창에서 메쉬를 선택하거나 MeshBaker오브젝트를 선택한 상태에서

'Add Selected Mesh To Target'을 눌러 메쉬들을 리스트에 추가하자.

 

아래의 Custom List Of Objects To Be Combined에 리스트업 되야한다.

 

#5. Renderer 에서 Skinned Mesh Renderer를 체크.

당연히 Static Object는 MeshRenderer로 놔두면 된다.

 

#6. Output 설정

여러가지가 있는데, 나는 주로 Prefab으로 설정한다. Bake Into Prefab으로 설정한다.

빈 오브젝트 하나 생성하고 Prefab을 만들어서 컨텐츠뷰에 추가한 뒤, 그걸 다시 MeshBakerWindow에 끌어다놓는다.

(특이하게 경로를 지정해서 새로운 프리팹을 생성하는 방식이 아닌, 빈 프리팹의 레퍼런스를 잡고, 해당 프리팹의 내용을 교체하는 방식이다.)

#7. 베이크

 - Bake 버튼을 눌러준다. 병합 후 애니메이션 테스트. 정상 작동 확인

 

 

스킨드 메쉬 렌더러 + Material 베이크 방법 ( 메쉬 + 텍스쳐 병합하기 )

- 스킨드 메쉬 렌더러가 두 개로 분리되고, 텍스쳐 또한 두개인, 몬스터랑 몬스터가 들고있는 무기의 메쉬병합.

- 텍스쳐까지 병합하는 방법은 MeshBaker가 아니라 TextureBaker and MeshBaker를 선택하고, 각각 설정하면됨. 

 

#1. 메쉬 베이커 생성

GameObject - Create Other - MeshBaker - TextureBaker and MeshBaker를 눌러 MeshBaker 오브젝트를 생성한다.

 

#2. 메쉬 베이커 그룹 아래에 오브젝트 넣기

베이크 할 오브젝트들은 그룹 아래에 넣는다.

반드시 MeshBaker오브젝트와 오브젝트 둘다 position과 rotation값을 0으로 만들어두자.

#3. 텍스쳐 베이크

최상위 오브젝트인 TextureBaker (0)를 선택한 상태에서 인스펙터를 보면 MB3_TextureBaker 설정이 있다.

Create Empty Assets For Combined Material을 체크해서 Material을 저장할 경로를 지정.

지정 후에는 자동으로 Output란이 채워진다.

#3. 리스트에 베이크할 메쉬들 추가

하이어라키 창에서 메쉬를 선택하거나 MeshBaker오브젝트를 선택한 상태에서

'Add Selected Mesh To Target'을 눌러 메쉬들을 리스트에 추가하자.

아래의 Custom List Of Objects To Be Combined에 리스트업 되야한다.

#4. 텍스쳐 베이크

다시 MEshBaker(0) 오브젝트를 선택해서 MB3_TextureBaker인스펙터로 돌아온 뒤,

Bake Materials info Combined Mateiral을 눌러 베이크한다.

텍스쳐가 베이크 되었지만, 빈 공간이 너무 많음.

Resize Power of Two Textures를 체크.

다시 베이킹 해보면 정사각형은 아니더라도 POT에 맞게 1024x512로 리사이징 되어있다. 

#5부터는 위와 동일하니 그대로 따라하면 됨.

 

 

COMMENT