리깅, 마스킹
❗️ 주의사항 이 과정은 비교적 난이도가 높습니다. 가이드를 차근차근 따라해보시고 이해가 잘 되지 않는다면, 최하단의 영상을 참고하세요.
리깅은 캐릭터의 움직임을 준비하는 과정을 뜻하는 용어입니다. 앞서 만든 오브젝트를 골조에 바인딩하고 동작을 위한 컨트롤러를 만드는 작업이 포함됩니다. 제페토용 아이템을 만드는 경우에는 리깅의 바인딩 단계만 진행합니다.
제페토 아바타를 움직이기 위해서는 오브젝트 메쉬와 골조가 필요합니다. 메쉬의 각 부분은 특정 뼈에 따라 움직이고 각 뼈는 아바타의 움직임을 만들어냅니다.
메쉬가 골조의 움직임을 따르게 하기 위해서는 각 점(vertex)이 해당 뼈에 얼마나 따를지에 대한 영향값을 설정하면 됩니다. 이 영향값을 웨이트(Weight)라고 합니다.
제페토 아바타의 골격 구조는 스케일 뼈(scale bones)과 베이스 뼈(base bones)로 구성되어 있습니다. 스케일 뼈는 체형 변형과 관련이 있고 베이스 뼈는 포즈와 동작을 변형시킵니다.
우리는 아바타의 체형을 유지한 상태에서 동작 변화에 따라 아이템을 이동시키기 위해 스케일 뼈에 오브젝트 메쉬를 연결할 것입니다.
웨이트를 편집하는 작업은 웨이트 페인트 모드(Weight Paint Mode)에서 하게 됩니다. 마스크를 선택하고 웨이트 페인트 모드로 전환하게 되면 마스크 메쉬의 색상이 변하게 됩니다.
프로퍼티 창에서 버텍스 그룹 아이콘을 누르면 목록이 뜨는데 이 목록에서 마스크의 어떤 부분이 어떤 골조에 영향을 받는지를 확인할 수 있습니다.
블렌더에서는 웨이트 값이 색으로 표시됩니다.
- 파란색: 0, 빨간색: 1, 초록색: 0.5
웨이트 페인트 모드의 도구를 사용하여 웨이트 값을 조절할 수 있습니다.
- 그리기 브러시 툴: 브러시를 사용해서 웨이트 값을 직접 설정할 수 있으며 버텍스 그룹에 웨이트를 추가하거나 제거할 수 있습니다.
- 블러 브러시 툴: 버텍스 그룹 및 버텍스 그룹 간의 웨이트를 흐릿하거나 부드럽게 만드는데 사용합니다.
- 스미어 브러시 툴: 스미어 브러시 툴로 웨이트를 매끄럽게 만들 수 있습니다. 메쉬에서 웨이트의 영향을 밀어내거나 이동할 수도 있습니다.
- 본격적인 웨이트 작업에 들어가기 전에 오브젝트와 골조에 대한 설정이 필요합니다. 우선 오브젝트 모드로 변환합니다.
2. 아이템에 거울 모드(active mirror modifier, deformer modifiers)가 없는지 확인합니다.
❗️ 주의사항 리깅 작업은 시간이 많이 소요되는 작업이며 오브젝트의 메쉬에도 큰 변화를 줍니다. 같은 작업을 두 번 반복하지 않도록 꼼꼼히 확인하는 것이 좋습니다.
3. 블렌더의 리깅 시스템은 아바타의 기본 자세에 바인딩하게 되어 있습니다. 오브젝트가 A 포즈로 모델링 되었다면 우리가 리깅할 골조 또한 같은 포즈여야 합니다. 만약 T 포즈로 오브젝트를 모델링 했다면 이 과정은 생략해도 좋습니다.
❗️ 주의사항 만약 오브젝트가 T 포즈가 아닌 다른 포즈에서 모델링 된 경우에는 오브젝트 모델링을 T 포즈에 맞게 변형해야 합니다.
4. 작업 전 리그 원본을 유지하기 위해서 creatorBaseSet 리그를 복제하는 것이 좋습니다. 오브젝트 모드에서 creatorBaseSet의 골조과 마스크 오브젝트를 선택하고 단축키 Shift+D를 누르거나 뷰포트 내 Object > Duplicate Objects를 선택하여 복제합니다.
5. 복사된 오브젝트와 골조는 콜렉션을 새로 만들어 포함시킵니다.
6. 5번에서 만든 콜렉션을 관리하기 쉽도록 Apose가 포함된 네이밍으로 바꿔줍니다.
7. 지금 우리가 다루는 포즈는 A 포즈입니다. A 포즈에서 어깨뼈는 z축에서 -7.5도 회전되어 있고 위쪽 팔 뼈는 z축에서 -40도 회전되어 있습니다.
8. 기존의 오브젝트 및 골조는 숨김 처리하고 새로 만든 콜렉션을 선택한 다음, 포즈 모드로 넘어갑니다.
마스크의 웨이트가 새로운 포즈의 골조를 따라가게 하려면, 마스크 오브젝트에 수정된 골조를 새롭게 적용해야 합니다.
- 오브젝트 모드로 전환한 다음, 마스크 오브젝트를 선택합니다. 그 다음 프로퍼티 패널의 모디파이어(modifier)를 눌러줍니다.
2. 드롭다운 메뉴에서 적용(Apply)를 선택합니다. 이제 메쉬가 포즈에 맞게 적용되었습니다.
3. 휴식 포즈(Rest Pose)를 A 포즈에 적용하기 위해 A 포즈 골조를 선택하고 포즈 모드로 들어갑니다.
4. 모든 골격을 선택하고 Pose > Apply > Apply Pose as Rest Pose를 클릭합니다.
5.이제 골조의 휴식 포즈(Rest Pose)가 오브젝트의 포즈 위치에 설정됩니다. 오브젝트를 더욱 효과적으로 골조에 바인딩 시킬 수 있습니다.
적절한 기본 자세를 세팅 완료했다면 아이템을 골조에 바인딩 시킬 수 있습니다.
- 아이템을 선택한 다음, 골조를 선택합니다. 다음 Object > Parent > With Empty Groups를 누릅니다.
- 이렇게 하면 오브젝트 메쉬가 CreatorBaseSet 골조의 부모(parent)가 되고, 골조 모디파이어(modifier)가 오브젝트 메쉬의 하위에 놓이게 되어, 웨이트를 오브젝트 메쉬에 바인딩 할 수 있는 버텍스 그룹(Vertex Group)이 만들어집니다.
- 버텍스 그룹(Vertex Group)이란 버텍스에 데이터를 저장하는 메시 데이터 블록을 말합니다.
- 오브젝트를 선택하고 오브젝트 데이터 속성에 들어가면 해당 오브젝트의 버텍스 그룹을 확인할 수 있습니다. 특정 모디파이어(modifier)에 대한 선택적 적용 등 다양한 상황에서 버텍스 그룹을 활용할 수 있습니다. 버텍스 그룹은 각 뼈에 웨이트를 할당하는데에 사용되기도 합니다.
- 버텍스 그룹을 살펴보면 버텍스 그룹이 각 뼈의 이름과 일치한다는 것을 알 수 있습니다.
앞선 단계에서 부모, 자식의 관계를 설정하면서 우리는 Empty Weight 옵션을 사용했습니다. 이 과정에서 웨이트가 할당되지 않은 모든 항목에 대한 버텍스 그룹이 만들어졌습니다.
아직까지는 골조를 움직여도 아이템이 그 움직임을 따라가지 못합니다. 이것을 해결하기 위해 우리는 각 뼈의 부분 부분에 직접 웨이트를 할당해야 합니다. 원래 해당 작업을 할 때는 처음부터 웨이트 설정을 해야하지만 우리가 사용하는 마스크 오브젝트에는 이미 웨이트가 적용된 템플릿이 포함되어 있습니다. 이 템플릿은 제페토 기본 아바타에 적용된 웨이트와 동일합니다.
그래서 우리는 해당 웨이트 템플릿을 아이템에 복사하고 붙여넣는 과정을 거치면 됩니다.
- 오브젝트 모드에서 마스크를 선택하고 Shift를 누른 다음 아이템 오브젝트를 선택합니다. 이렇게 하면 아이템 오브젝트가 활성 상태로 바뀌며 좀 더 밝은 색으로 강조 표시됩니다.
2. 이 상태에서 웨이트 페인트(Weight Paint) 모드로 전환합니다. 그리고 Weights > Transfer Weights를 선택합니다.
3. 뷰포트 하단에 생긴 옵션 메뉴에서 Source Layer Selection을 By Name으로 변경합니다. 바로 아래의 Destination Layers Matching에서는 All Layers로 변경합니다.
- 해당 옵션들을 선택하고 나면 오브젝트의 색상이 바뀌는데 이것은 웨이트 전송 작업이 정상적으로 진행된 것을 의미합니다.
- 옵션 메뉴 중 Vertex Mapping에서 버텍스 매핑을 좀 더 부드럽게 적용할 수 있습니다. 해당 옵션 중 어떤 것이 아이템 오브젝트에 적절할지 다양하게 테스트해보세요.
4. 이제 마스크의 웨이트가 아이템 오브젝트로 복사되었습니다. 다음 단계에서는 아이템에 적용된 웨이트를 확인하고 수정해야 합니다.
- 웨이트를 확인하기 위해서 포즈 모드로 전환합니다. 가운데에 있는 chest 뼈를 회전시켜서 아이템 오브젝트가 제대로 따라오는지 확인합니다.
2. 만약 오브젝트가 따라가는 방식을 변경하고 싶다면 웨이트 페인팅 도구로 웨이트 값을 편집합니다. 웨이트 페인팅 모드로 다시 전환합니다. 그리고 버텍스 그룹에서 회전된 골격의 이름을 가진 버텍스 그룹을 찾습니다.
👍 만약 해당 그룹에 웨이트가 설정되어 있지 않은 경우(색으로 표시되지 않는 경우)에는 동일한 이름의 스케일 에 웨이트가 설정되어 있는 것입니다. ex) spine에 웨이트가 설정되어 있지 않은 경우 spine_scale 그룹을 찾아 선택해보세요.
3. 웨이트가 해당 뼈에 얼만큼의 영향을 끼치는 지를 확인했다면 웨이트 도구로 웨이트를 편집할 수 있습니다. 도구를 사용하기 전에 우측 상단의 옵션 메뉴에서 Auto Normalize를 체크해주세요. 이 설정을 사용하면 페인트 작업을 수행할 때 버텍스 그룹의 영향을 자동으로 추가하거나 제외할 수 있습니다.
그리기 브러시 도구를 선택하면 이 브러시로 선택한 버텍스 그룹의 웨이트가 아이템 오브젝트에 영향을 줍니다. 브러시 도구의 상단에서 브러시 조건을 변경할 수 있습니다. Strength는 0.2로 설정하고 작업하면 적당합니다.
- 각 뼈에 미치는 영향을 제거하기 위해서는 브러시 섹션에서 Subtract를 선택하여 브러시 모드를 변경합니다.
- 인접한 뼈의 버텍스 그룹을 선택하여 웨이트를 편집할 수 있습니다. 버텍스 그룹 리스트에서 그룹명을 눌러 아이템 오브젝트가 어떤 버텍스 그룹에 영향을 받는지 확인할 수 있습니다.
- 블러 브러시 도구는 버텍스 웨이트와 근처의 버텍스 웨이트를 혼합하는 역할을 합니다. 브러시의 강도를 조절해서 원하는 방식으로 사용해보세요. 블러 브러시는 특히 아이템이 구부러지는 부분에서 활용하기 좋습니다.
- 스미어 브러시는 브러시 시작점의 웨이트와 끝점의 웨이트를 혼합합니다. 스미어 브러시는 손가락으로 미는 듯한 효과를 주기 때문에 실수로 칠한 부분을 원복하는데 사용하기 좋습니다.
- 해당 골격에 아이템 오브젝트의 웨이트가 적절하게 설정되었다면 골격을 선택하고 Pose > Clear Transform > Rotation을 선택해서 골격을 원위치 시킵니다. 그 다음 다른 부분의 뼈를 회전시켜보며 각 부분에 아이템 오브젝트의 웨이트가 어떻게 설정되었는지 확인합니다.
👍 골격을 좀 더 극단적인 형태로 회전시키면 오브젝트가 골격의 이동에 맞춰 제대로 변화하는지를 더 확실하게 확인할 수 있습니다.
❗️ 주의사항 이 작업은 매우 반복적이고 오래 걸리는 작업입니다. 인내심을 갖고 작업할 필요가 있습니다. 해당 가이드에 예시로 작업한 스커트의 리깅 작업은 대략 2시간 정도가 소요되었습니다.
- 마스크가 구부러지면서 오브젝트를 통과하는 부분을 주의해야 합니다. 이것은 웨이트가 너무 부드럽게 분포되어 있는 것을 의미합니다.
- 이것은 웨이트 브러시를 사용해서 해당 뼈에 웨이트를 추가함으로서 해결할 수 있습니다.
- 여러 개의 뼈를 회전시켜보며 테스트해보세요. 이 과정이 너무 어렵다면 오브젝트의 메쉬를 변경하는 것을 고려해봐야 합니다.
2.오브젝트가 구부러지는 부분이 너무 거칠다면 엣지 루프를 더 추가해야 할 수도 있습니다.
📘 다음 가이드를 참조하세요. 모델링 기초
- 오브젝트의 폴리 카운트를 변경하는 것은 UV를 달라지게 하기 때문에 텍스쳐 작업을 다시 해야할 수도 있습니다.
웨이트가 모두 정리되고 나면 이제 T 포즈로 전환해야 합니다.
- 어깨뼈는 z축에서 7.5도 회전합니다. (이미지 내 동그라미 참고)
2. 위쪽 팔 뼈는 z축에서 40도 회전합니다. (이미지 내 동그라미 참고)
3. 오브젝트 모드에서 아이템 오브젝트를 선택하고 속성에서 모디파이어(modifier) 탭으로 이동합니다. 드롭다운 메뉴를 눌러 Apply를 선택합니다.
4. Add Modifier > Amatuar를 선택해 다시 골조 모디파이어를 추가합니다.
5. Object에서 zepeto_creatorBaseSet을 선택하여 아이템이 다시 A 포즈가 되도록 합니다.
6. Apose 골조를 숨기고 zepeto_creatorBaseSet 골조를 선택해 아바타의 움직임에 맞춰 아이템 오브젝트도 함께 움직이는지 확인해보세요.
7. 리깅하는 과정에서 예기치 못하게 오브젝트 형태가 바뀌었을 경우, 편집 모드로 이동해서 점을 이동하며 편집합니다.
마스킹은 아바타 마스크에 흰색과 검은색으로 색상을 지정해줌으로서 아이템 오브젝트를 아바타가 입게 될 때 어떤 부분을 활성 혹은 비활성화 시킬지 지정하는 작업을 의미합니다.
- 검은색은 비활성화 되는 영역입니다. 흰색은 활성화 되는 영역입니다. Unity에서 아바타 얼굴은 기본적으로 비활성화 됩니다.
- 마스크를 선택하고 버텍스 페인트 모드로 전환합니다. 그러면 마스크가 흰색으로 보여집니다.
- 브러시 색상은 흰색과 검은색으로 설정되어 있습니다.
- 브러시 Falloff 옵션을 Constant로 바꿔줍니다. 이 설정은 브러시를 흰색과 검은색으로 명확하게 표시되게 하여 회색의 영역이 생기지 않도록 도와줍니다.
- X-mirror를 켜면 왼쪽과 오른쪽을 동시에 칠할 수 있습니다.
2. 아이템 오브젝트를 숨김처리해서 정확하게 색이 칠해지고 있는지 확인합니다.
이제 아이템 만들기의 단계가 모두 끝이 났습니다!