만드는사람/공부하는 공간

Unity - 3D Max : 하나의 오브젝트에 서브메쉬 나누기(ex.색상 값 다르게 하고 싶을 때)

sunghye 2020. 3. 1. 06:00
반응형

 

기본적으로 유니티에서 제공하는 오브젝트 하나당 메테리얼 하나다. Size를 조절해서 메터리얼 개수를 늘려줄 수는 있지만 정육면체 각 면마다 다른 색을 입히고 있을때(서브메쉬를 써야 할 때) 쓸 수 있는 방법은 아니다. 

억지로 메테리얼 갯수를 늘리면 오류창에도 서브메쉬가 없다고 뜬다.

아무튼 안된단다. 그렇다면 여러개의 메테리얼을 넣고 싶을 땐 어떻게 해야할까?

 

3d max에서 id를 나누어서 오는 방법이 제일 깔끔하다.

그 방법에 대해 말해보기로 하자. 

 

이 고민이 생겼던 것은 이전에 건비트 게임 개발을 할 때, 프로빌더로 계단은 만들었는데(당시는 맥스를 사용할 줄 몰랐다) 각 면이 박자에 맞춰 색상 변화를 주고 싶었던 것.

리듬에 맞춰 계단 면의 색상들이 변한다.

하지만 유니티 안에서 할 수 있는 방법은 없었고, 어쩔 수 없이 프로빌더의 모델링 파일을 -> 익스포트 한 후에 -> 3d max에서 임포트 하고 -> Material ID를 나누어주고 -> 다시 임포트 한 뒤 사용해야 했다. 그런 슬픈 개발자(=나)를 위해 맥스를 통해 메테리얼 아이디를 나누는 법을 설명해보고자 한다. 유니티와 맥스에 인터페이스에 관해 기초적인 지식이 필요하다. 


현재 작업중인 어떤 공간의 모델링파일이다. 원래는 Polygon 세팅이 하나로 되어 있어서 하나의 메터리얼(색상)만 사용하게 되어 있었지만 바꾸어 줄 것이다. 완성된 이미지를 첨부한 것은 나중에 이렇게 보이게끔 만들어준다는 것을 표현하기 위해서다. 

 

먼저 색상을 나누기 위해서 같은 메터리얼을 사용할 면을 잡고, Polygon 그룹에서 아이디를 나누어 준다. 이 모델링 파일의 경우 8개 까지 나누어 주었다. 

각 색상마다 서브 메쉬로 만들어 주기 위해서 스무딩 그룹에서 번호를 나누어 준다. 

 

다 되었다면 M버튼을 눌러 메터리얼 에디터를 불러와 이렇게 만들어준다. 

왼쪽엔 Standard을 넣었고, 오른쪽엔 Multi/Sub-Object를 넣어주었다.

Multi/Sub Object를 클릭해서 들어가보면 오른쪽에 Set Number를 설정하는 창이 뜬다. 필요한 서브메쉬 갯수만큼을 넣어주자. 이 경우 8개다.

 

각각의 Material 창을 클릭해서 들어가면 색상을 바꿀 수 있게 되어 있다. 여기서 Ambient 를 눌러 아무색상으로 바꾸어 준다. 우리는 나중에 Unity에서 다시 바꿀 것이기 때문에 지금 색상은 상관없다. 연속된 면이 같지만 않게, 그래서 내가 알아볼 수 있게만 바꿔준다. 

여기서 중요하다. 한꺼번에 하기보다 하나씩 차근차근 하는게 헷갈리지 않고 좋다. 바뀔 면이 선택되어 있는 상태에서 색상을 변화시킨 값을 왼쪽 위에 Assign 버튼을 통해 할당 완료 해주어야기 때문이다. 

하나씩 하나씩 8개를 다 해주면 맥스에서는 이런 모양이 된다.

유니티로 가져갈 차례다. 메쉬 랜더러에 자동으로 8개의 메테리얼이 등록되어 있고, 원하는 메테리얼로 변경해주면 서브메쉬가 있는 오브젝트로 사용 가능하다. 이제 여기에 자유롭게 코딩을 하여 인터렉션을 주면 된다!  

 


 

참고로 실패의 흔적들 

 

메테리얼 아이디를 나누지 않고 가져왔을때 = 오브젝트 하나에 하나의 메테리얼만 가능하다.

 

맥스에서 polygon 스무딩 그룹으로 메테리얼 아이디는 나누어 주었지만, Multi/Sub Object에서 각각 메테리얼 지정을 안하고 그냥 내보냈을때 

 

기억할 것 두 가지.

1. 메테리얼 아이디 나누기

2. Multi/Sub Object에서 각 서브메쉬에 메테리얼 색상 값 할당해주기

 

 

반응형