새소식

UNITY

[Unity] MeshBaker-Batch Prefab Baker로 베이크하기

  • -

 


[에셋 구매 링크]

https://assetstore.unity.com/packages/tools/modeling/mesh-baker-5017

 

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

지난번 Texture Bake, Mesh Bake 기능을 사용했었는데,

MeshBaker 중 Batch Prefab Baker을 이용하면 메쉬를 한 덩어리로 합치지 않고도 한 드로우콜로 재질을 불러올 수 있다.

 

베이킹하는 순서는

  1. 프리팹들을 배치한 게임씬에 MeshBaker > Batch Prefab Baker 추가
  2. 오브젝트들을 BatchPrefabBaker 오브젝트 안의 텍스쳐 베이커 컴포넌트에 넣기
  3. 베이커 오브젝트의 BatchPrefabBaker 컴포넌트에서 Populate Prefab Rows From Textured Baker 버튼 눌러서 오브젝트 목록 가져오기
  4. SetUp 씬을 새로 만들고, BatchPrefabBaker 오브젝트를 Setup씬에 불러오기
  5. SetUp씬에서 텍스쳐 베이킹 후, Batch Bake Prefabs를 누르고 Batch 베이킹
  6. SetUp씬에서 기존 오브젝트와 베이크한 오브젝트 비교한뒤 비슷해질 때까지 옵션을 바꿔서 베이킹
  7. SetUp씬에서 BatchBakePrefabs(Replace Prefabs)버튼을 눌러 게임 씬 안의 프리팹들을 베이크한 오브젝트로 대치

Batch Prefab Baker 추가 및 오브젝트 넣기 

게임 씬에서 GameObject > Create Other > Mesh Baker > Batch Prefab Baker 선택

배치 프리팹 베이커를 씬에 추가하면 3가지 컴포넌트가 들어있는 것을 알 수 있다. 

이중 Texture Baker 을 펼쳐서 Objects to Be Combined 칸에 베이크할 오브젝트들을 드래그&드롭한다.

이제 Batch Prefab Baker 컴포넌트를 펼쳐서, Populate Prefab Rows From Textured Baker 버튼을 눌러준다.

(이 경우 Prefab Rows에 생성되는 오브젝트들은 씬에 있는 오브젝트가 아니라 Asset으로 추가한 Prefab들이니 참고)

 

Setup 씬 생성하기

기존의 게임 씬을 망가뜨리지 않기 위해서 새로운 Setup씬을 생성하고 여기서 베이킹을 해줄것이다.

일단 게임 씬에 만들어둔 Batch Prefab Baker를 Asset 폴더에 Prefab 형태로 넣어 준다.

그 다음 새로운 씬을 만들어서 프리팹으로 만들어둔 BatchPrefabBaker을 배치한다.

이제 베이커 오브젝트를 선택한 후, Browse for Output Folder 버튼을 눌러 베이크된 프리팹을 위치시킬 폴더를 지정해준다.

원하는 경로 지정 후 폴더선택 버튼 클릭

Create Empty Result Prefabs 버튼을 누르면 자동으로 각 타겟 프리팹 오브젝트에 대한 빈 프리팹을 생성해준다.

이때, Unity Editor 안에서 생성한 폴더를 경로로 지정해두지 않았으면 빈 프리팹이 생성되지 않으니 주의

텍스쳐 베이킹하기

이제 공통 재질에 사용할 텍스쳐를 베이킹하면 된다.

오브젝트 안의 setup씬으로 오브젝트들을 옮겨오는 과정에서 프리팹 목록이 사라져 있는 걸 확인할 수 있다.

하지만, 배치 프리팹 베이커 컴포넌트 옵션(⁝)을 눌러 Create Instances for Prefab Rows버튼을 눌러주면
Prefab Rows 목록 안에 있는 프리팹 오브젝트들을 씬에 불러올 수 있다.

목록 안의 오브젝트들이 Instance의 형태로 씬에 불러와진 모습을 볼 수 있다 

이 인스턴스들을 Texture Baker 안에 넣고 베이킹하면 됨! 

 

Texture Baker 안에 들어있던 기존 오브젝트목록을 지우고, 씬에 불러온 프리팹들을 넣어준다.

Create Empty Assets for Combined Material 버튼을 누르고, 베이크하면 된다.

자세한 설명은 이전 글 참고

2023.05.15 - [Unity] - [Unity] MeshBaker로 베이크하기

 

[Unity] MeshBaker로 베이크하기

MeshBaker 공식 Documentation 참고 텍스쳐를 가진 메쉬를 베이크해볼 것 [에셋 구매 링크] 2023.05.14일 기준 50%할인중. (Spring Sale은 ~6/2까지) https://assetstore.unity.com/packages/tools/modeling/mesh-baker-5017 Mesh Baker |

ssunbori.tistory.com

 

프리팹 Batch Baking하기

이제 공통 재질을 만들었으니, 오브젝트들에 공통 재질을 넣어주면 된다.

Batch Baker 오브젝트의 Batch Baker 컴포넌트에서 Batch Bake Prefabs 버튼을 누른다.

처음으로 Batch Baking을 하는 경우라면 : Batch Bake Prefabs(Replace Prefab)

이미 Batch Baking을 한 뒤 옵션을변경하거나 새로 베이킹하는 경우 : Batch Bake Prefabs(Only Replace Meshes & Materials) 

필요한 옵션으로 Baking하면 된다.

 

결과물 프리팹을 수정해서 Source Prefab으로 사용한 프리팹과 결과물 프리팹에 차이가 생겼을 경우 Only Replace Meshes & Materials 버튼을 누르면 된다. 이외의 경우에는 Replace Prefab 버튼 클릭. 이 경우 결과물 프리팹에 생긴 변경사항이 Source Prefab에 덮어씌워지는 걸 막을 수 있다.

처음에 시도했을 때에는 Hierarchy에 ResultPrefabInstance안에 결과 프리팹이 생성되지 않아서,

  1. 씬에 있는 Source PRefab Instances, Result Prefab Instances를 모두 지웠다.
  2. Batch Baker 오브젝트에서 Prefab Row에 있는 Result Prefab들을 하나하나 지웠다.
  3. 모든 Row를 선택한 뒤 Create Empty Prefab 버튼을 눌러 Result Prefab을 생성
  4. Batch Baker 컴포넌트 옵션 > Create Instances for Prefab Rows 다시 클릭
  5. 씬에 생성된 Source Prefab Instances 속 오브젝트들을 Texture Baker에 드래그앤 드롭
  6. 다시 Texture Bake
  7. Batch Baker에서 Batch Bake Prefabs를 눌렀더니 잘 생성되었다.

베이킹한 오브젝트로 기존 오브젝트 대체하기

Source Prefab Instance 옆에 Result Prefab Instance가 생성되니까, 두 프리팹을 비교해 보고 원하는대로 Texture Bake 설정을 바꿔 베이크한 뒤 최적의 결과물을 기존 게임 씬에 배치하면 된다.

오브젝트를 하나하나 눌러보면 각각의 오브젝트가 분리되어 있는 것을 볼 수 있다. 

 

다시 원래 게임 씬으로 돌아가서 Batch Prefab Baker 클릭

Batch Baker 컴포넌트의 Open Replace PRefabs In Scene Window를 클릭해준다.

그러면 이런 식으로 어떤 오브젝트를 베이크한 오브젝트로 바꿀 것인지 확인할 수 있다.

Replace Prefabs In Scene 버튼을 누르면 베이크한 프리팹으로 기존 프리팹을 대체할 수 있다.

베이크 하기 전에 게임 씬을 백업해두고 Replace 버튼을 누르는 편이 좋다.

Source : Bake하기 전 원본 Prefab들이 들어가야 함
Target : Bake한 후의 Prefab. 아까 Batch Bake로 생성한 Prefab들을 넣어준다.

처음 Replace Prefabs in Scene을 클릭하면 Target이 비어있고, Source에 프리팹이 들어있는데,

이 Source 오브젝트에 원본 Prefab을 넣고, Target에 Bake한 Prefab을 넣어줬더니 잘 Replace되었다.

 

오류 창에 Source object와 Target object의 구조가 같지 않다는 경고 메세지가 뜨면,

두번째 체크박스(Enforce Source Adn Target Have Same Structure)을 꺼주고 다시 Replace 버튼을 눌러주면 된다.

'UNITY' 카테고리의 다른 글

[Unity] Unity Muse 소개  (0) 2023.08.16
[Unity] MeshBaker로 베이크하기  (1) 2023.05.15
[Unity] Unity NavMesh : NavMesh 베이크하는 방법  (0) 2023.04.24
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.