베개발

[엔진심화] 01. 프리팹(Prefab)과 FBX 본문

대학교 공부

[엔진심화] 01. 프리팹(Prefab)과 FBX

rusal0204 2021. 3. 29. 16:57

목차

  • 프리팹(Prefab)과 FBX

    - 프리팹(Prefab)
       1. Prefab이란
       2. Prefab 수정하기
       3. Prefab Unpack하기
       4. Prefab 씬에서 수정하고 Apply&Revert 하기

    - FBX
       1. Prefab과 FBX
       2. Export Selected

 


■ 프리팹(Prefab)

1. Prefab 이란

Prefab(프리팹)은 매우 중요한 개념이다. 오브젝트를 더 효율적으로 다룰 수 있도록 해 주기 때문이다.

대표적으로는 오브젝트를 특정 조합과 설정으로 여러 번 사용하게 될 때, 일괄 수정을 용이하게 해주는 등의 기능이 있다.

때문에 협업시에도 프리팹을 이용하는 것이 좋다.

 

유니티의 개념은 프로젝트>씬(하이러키)>프리팹>게임오브젝트>컴포넌트>리소스 순으로 되어있는데,

여기서 프리팹은 게임오브젝트의 상위 개념이라는 걸 알 수 있다.

 

알기 쉽게 설명하자면 다음과 같다.

만약 몸체/미사일/연기 이펙트 이렇게 3개로 구성되어 있는 전투기가 있다고 치면,

각각의 요소들을 모아서 하나로 만든 것이 프리팹이 될 수 있다는 것이다.

여기에서 프리팹은 수정이 용이하기 때문에, 프리팹들을 수정해서 또 다른 바리에이션들을 만들 수도 있다.

(미사일이 다르게 생긴 전투기 등)

 

만약 프리팹을 사용하지 않고, 각각의 요소가 합쳐진 전투기 100대를 만든다고 했을때,

전체적으로 미사일의 모양을 약간 바꿔야 한다고 하면 전투기 100대 하나하나의 미사일을 전부 수정해줘야 했을 것이다.

프리팹을 사용한다면 이런 수정사항을 한번에 적용해줄 수 있다.

물론, 적용해줄 지 아닐지 또한 직접 고를 수 있다.

 

유니티에서 프리팹을 만드는 방법은 단순하다.

하이러키 창에서 프로젝트 창으로, 프리팹으로 만들고자 하는 오브젝트를 드래그해서 가져다 놓으면 앞의 아이콘이 바뀌면서 프리팹화 된다.

 

예를들어 이렇게 머리와 몸으로 이루어져 있는 눈사람(텍스쳐가 이상한건 무시해주자)을 prefab으로 만든다고 하면, 머리와 몸을 하나의 Gameobject를 Parent로 해서 아래에 넣은 다음에, 드래그하면 된다.

Snowman이라는 이름 앞 아이콘이 바뀐 것을 볼 수 있다.

 

2. Prefab 수정하기

 

이렇게 프리팹을 만들어 놓고 나면, 예를들어 위 눈사람이라고 치면 머리 크기를 좀 더 크게 하고 싶어질 때 씬에 있는 모든 눈사람의 머리크기를 한번에 조절할 수 있게 된다.

이렇게 3개의 눈사람이 씬에 있다고 치고,

프로젝트 창에 있는 Snowman 프리팹을 더블클릭하면 씬에서 프리팹 창으로 들어오게 된다.

여기에서 우리는 눈사람의 머리크기를 크게 해 줄 테니, SnowmanHead의 컴포넌트들 중 Transform의 Scale을 조절해준다.

x,y,z 각각 1 정도면 충분할 것 같다.

 

..

이렇게 머리가 커진 것을 확인한 뒤,

여기를 눌러서 씬 창으로 돌아가보면

 

세상에

이렇게 눈사람들의 머리 크기가 한번에 다같이 커진 것을 확인할 수 있다.

이런 식으로 수정을 한번에 할 수 있기 때문에, 씬에서 반복적으로 쓰이는 오브젝트라면 프리팹화를 해서 써 주는 것이 효율적이다.

 

3. Prefab Unpack하기

Prefab을 씬 상에서 풀어버릴 수도 있다.

하이러키 창에서 해당 프리팹을 우클릭하고, Unpack을 선택해주면 기존 프리팹과 연결이 끊기고 별개의 게임오브젝트가 된다.

다만 Unpack은 최상단의 프리팹 관계만 끊어주는 반면, Unpack 밑의 Unpack Complete는 선택한 프리팹 안에 들어있는 모든 하위의 프리팹 관계를 전부 끊어준다.

 

4. Prefab 씬에서 수정하고 Apply&Revert 하기

머리가 너무 큰 것 같아 씬에서 3번 눈사람의 머리를 선택하고 크기를 많이 줄였다.

이때 이렇게 변화를 줬을 때,

이렇게 3번 눈사람의 SnowmanHead 의 Transform 중 포지션과 스케일 앞에 저렇게 파란 줄이 생기게 된다.

눈사람 머리의 위치와 크기를 수정했기 때문이다.

 

이 변경점을 씬에 있는 모든 프리팹에 똑같이 적용하고 싶으면,

3번 눈사람 프리팹을 하이러키에서 선택한 뒤,

 

해당 메뉴를 열고 Apply All을 눌러주면 된다.

반대로 Revert All을 누르면 3번 눈사람의 변경점이 사라지고 기존 프리팹들과 같아지게 된다.

 

 

■ FBX

1. Prefab과 FBX

 

FBX는 Prefab과 같다고 보면 된다.

맥스에서 뭔가를 만든 다음, 게임엔진에 FBX를 가지고 오면 처음에는 이렇게

머테리얼과 메쉬로 이루어져 있는 프리팹 같은 것이 임포트된다.

그 이후로 FBX파일을 수정해서 리임포트하면, 씬에도 프리팹과 동일하게 일괄적으로 수정되게 된다.

 

프리팹과 똑같이 FBX를 언팩해줄 수도 있는데, 그렇게 하면 원본 FBX 파일과의 연결이 끊기게 되어서 FBX를 리임포트해도 수정이 되지 않게 된다.

 

2. Export Selected

 

맥스에서 이런 오브젝트를 만들고,

 

Export Selected를 선택해서 FBX로 내보내고, 유니티로 불러온 뒤 내부가 어떻게 구성되어 있는지를 보면

이렇게 각각의 메쉬 리소스/메쉬별 컴포넌트/적용된 머테리얼로 구성되어있다.

여기서 보이는 머테리얼은 맥스에서 넘어온 머테리얼인데, 머테리얼 관리는 유니티상에서 해주도록 하자.

 

 

 

청강문화산업대학교 3학년 1학기 게임그래픽엔진심화 수업 정리입니다.