본 온도 웨이팅: 하나 이상의 본에 대한 솔루션을 찾지 못했습니다
Bone Heat Weighting: failed to find solution for one or more bones
아바타 또는 캐릭터 오브젝트 모델링을 움직이게 하기 위해서는 아바타에 골격을 추가해야 하며 이 과정을 릭 또는 리깅이라고 부릅니다.
이 글은 아래와 같은 문제를 해결하기 위해 오브젝트와 본의 모든 제약 조건을 초기화하고 그룹을 제거한 뒤 메쉬를 최적화하는 과정에 대해 설명합니다.
Metarig를 활용해 아마튜어를 자동 웨이팅할 때 오브젝트 또는 메쉬를 제대로 인식하지 못하고 위와 같은 메세지가 출력될 수 있습니다.
제약 조건 비활성화 및 해제
자동 아마튜어 변형에 사용했던 본과 메쉬의 연결을 풀어줍니다.
자신이 가진 오브젝트의 모든 메쉬를 선택하고 컨텍스트 메뉴에서 부모
->부모를 지우기
를 선택해주세요.
컨텍스트 메뉴는 영역(Unity에서의 '장면')의 빈 공간에서 우클릭해서 열 수 있고 단축키는 Alt
+P
입니다.
모든 메쉬가 루트 컬렉션 아래로 들어왔습니다. 이미 이 상태에서 시작했다고 하더라도 위 내용을 수행해도 됩니다.
다음 단계로 모든 버텍스 그룹을 삭제하도록 합시다.
여러 메쉬 중 하나를 선택한 뒤 에디터 도구에서 오브젝트 데이터 프로퍼티스로 들어가 줍니다
이때, 활성 모드는 오브젝트 모드입니다.
위 과정을 모든 메쉬에서 반복해줍니다(위 사진을 기준으로 3번).
버텍스 그룹
을 모두 제거했다면 포즈 모드
에서 아마튜어를 이동해도 오브젝트의 메쉬가 움직이지 않아야 합니다.
메쉬 최적화
그다음은 메쉬를 최적화해야 합니다. 눈에 보이지 않을 정도로 매우 작은 표면 또는 연결되지 않은 부분을 병합해 최적화된 메쉬를 생성하는 작업입니다.
오브젝트 모드
에서 모든 메쉬를 선택하고 그 선택을 유지한 채로 메쉬 편집을 위해 모드를 이동합니다.
메쉬 편집을 위해 에디트 모드
로 이동해주세요
위처럼 오브젝트의 모든 메쉬를 선택해주세요. 단축키는 A
입니다.
그다음은 거리로 병합
메뉴를 사용해 메쉬를 병합해주세요. 단축키는 M
입니다.
병합 정밀도의 기본값은 0.001m입니다. 최대한 메쉬의 변화를 줄이고 원형을 지키고 싶다면 0.00001 m 정도로 줄여도 문제없습니다.
오브젝트의 크기를 줄이고 인게임에서의 최적화를 원한다면 그것보다 올려도 되지만, 저는 기본값 그대로 두도록 하겠습니다.
빈 공간을 아무 데나 클릭해 설정을 적용한 후 에디트 모드
에서 오브젝트 모드
로 다시 돌아와 주세요.
제약조건 설정 및 자동 웨이트
자신이 가진 메쉬를 모두 선택한 다음 마지막에 metarig
를 선택해주세요.(순서가 중요합니다)
동시에 여러 항목을 선택하는 단축키는 Ctrl
+마우스 클릭
입니다.
리깅을 위해 부모를 설정할 항목을 모두 선택했다면 컨텍스트 메뉴에서 부모->아마튜어 변형->자동 웨이트와 함께를 선택해주세요.
컨텍스트 메뉴는 영역(Unity에서의 '장면')의 빈 공간에서 우클릭해서 열 수 있고 단축키는 Ctrl
+P
입니다.
그 후 오류 메세지가 사라졌다면 빈 공간을 선택해 변경 사항을 적용한 후 자신의 아바타 또는 모델링에 아마튜어 본이 제대로 병합되었는지 포즈 모드
또는 원하는 방법을 통해 확인해보면 됩니다.
이제, 팔과 손을 자유자재로 움직일 수 있습니다.
이 글이 도움이 될 수 있으면 좋겠습니다.