안녕하세요! 애니메이션 작업 후 내보내기를 하면 특정 본들이 이탈하여 움직이는 상황이 발생했습니다. 특정 본 삭제 후 재작업 시 부모 본을 연결하지 않았을 때는 정상 작동했지만, 부모 본 연결 시 똑같은 현상이 나타났습니다. (본에는 지글본, ik 단일 헤더, 일부는 제한 설정이 걸려있습니다.)
작업한 본을 전체 삭제 후 재작업을 하기엔 제작된 애니메이션이 10종을 넘어가 확인해보진 못했지만, 최적화 내보내기 시 정상 작동되는 것을 확인하였습니다.
최적화 내보내기로 해결되긴 했지만 애니메이션 제작 중 이런 일이 처음이라 혹시 본에 애니메이션 충돌이 일어나 내보내기 시 본이 움직이는 현상이 생긴 것 같아 여쭈어봅니다.
(아래 이미지 왼쪽이 내보내기, 오른쪽이 최적화 내보내기입니다.)
안녕하세요!
오늘 업데이트된 AnyPortrait v1.4.2에서 해당 버그가 수정되어 댓글을 남겼습니다.
이제 이전 댓글에서 알려드린 번거로운 방법을 수행하지 않아도 될 것입니다.
이번 버전의 변경점들을 다음의 페이지에서 자세히 보실 수 있습니다.
https://www.rainyrizzle.com/apupdate-142-kor
감사합니다.
Eng)
This problem has been fixed in the updated AnyPortrait v1.4.2, and you do not have to go through the cumbersome methods introduced previously.
https://www.rainyrizzle.com/apupdate-142-eng
안녕하세요!
답변이 다소 늦은 점 양해 부탁드립니다.
파일을 보내주셔서 데이터를 상세히 분석하고 버그를 찾을 수 있었습니다.
버그에 대해 먼저 말씀 드리면, 이 버그는 다음의 과정을 거칠 때 발생하는 것으로 확인되었습니다.
- 부모 본을 가지지 않는 루트 본을 대상으로 다른 본을 부모(Parent)로 삼은 상태에서 내보내기(Bake)를 실행합니다.
- 그 이후 에디터에서 해당 루트 본의 부모 본을 다시 해제한 상태에서 내보내기(Bake)를 실행합니다. 이때 부모 본으로 설정되었던 본이 삭제되지 않은 상태여야 합니다.
- 에디터에서는 루트 본의 부모 본이 "비어있는 상태"이지만, 게임에서는 여전히 부모 본을 가진 것으로 인식되는 버그가 발생합니다.
즉, 부모 본을 해제한 작업이 제대로 반영되지 않는 버그인 것으로 확인이 되었습니다.
버그로 인해 불편을 드려서 정말 죄송합니다.
이 버그를 유발하는 코드는 바로 찾아서 수정했습니다.
다만 이 변경사항은 업데이트로서 적용될 예정이므로, 여기서는 바로 잘못된 데이터를 직접 수정하는 방법을 알려드리고자 합니다.
(다음과 같이 데이터를 직접 수정하는 방식은 저희가 권장하지 않습니다만, 현재 문제점을 고치기 위한 임시 해결 방법인 점 양해 부탁드립니다.)
저희가 테스트한 화면입니다.
왼쪽은 문제가 발생한 캐릭터이며, 오른쪽은 "수동 백업 및 복원"을 통해서 문제가 발생하지 않는 캐릭터입니다.
("백업을 이용한 해결 방법"에 대해서는 아래에서 추가로 설명을 드리겠습니다.)
데이터를 확인했더니 저희는 "루트 본"인 "Bone Pelvis"의 연산이 잘못된 것을 확인할 수 있었습니다.
(1) 문제가 되는 캐릭터를 선택합니다.
(2) Hierarchy 탭에서 해당 캐릭터의 GameObject를 선택한 상태에서 하위 객체를 확인합니다.
(3) "캐릭터 GameObject > Root Unit 0 > 메시 그룹 (여기서는 "마지막 대장") > __Bone Group > Bone Pelvis"를 선택합니다.
(4) Inspector 탭을 보시면 "Parent Bone" 속성으로서 어떤 다른 본이 지정된 것을 볼 수 있습니다.
원래대로라면 Bone Pelvis는 루트 본이므로 이 속성은 비어있어야 합니다만, 버그로 인해 계속 다른 본이 지정되어 있는 것입니다.
(1) Parent 속성 UI에서 (2) 객체 선택 버튼을 누릅니다.
(3) 리스트의 맨 위의 "None"을 눌러서 선택을 해제합니다.
다시 AnyPortrait 에디터로 캐릭터를 열고 내보내기(Bake)를 실행합니다.
이제 게임을 실행하면 문제가 해결된 것을 볼 수 있습니다.
"백업 기능"을 이용해서도 이 문제를 해결할 수 있습니다.
https://rainyrizzle.github.io/kr/AdvancedManual/AD_Backup.html
에디터 상에서는 데이터가 문제가 없으므로 "수동으로 백업하기"를 통해 문제를 해결해봅시다.
AnyPortrait 에디터로 문제가 되는 캐릭터를 연 상태입니다.
(1) 설정 버튼을 누릅니다.
(2) 수동 백업 저장 (Save Backup Manual) 버튼을 눌러서 파일로 저장합니다.
AnyPortrait 에디터를 다시 열고 캐릭터를 선택하지 않은 상태입니다.
(1) 백업으로부터 열기(Load Backup file) 버튼을 누릅니다.
(2) 방금 저장한 백업 파일을 엽니다.
이제 백업 파일로부터 거의 동일한 캐릭터가 새로 생성된 것을 볼 수 있습니다.
이 캐릭터는 데이터가 다시 생성되었기 때문에 문제가 해결된 상태입니다.
다시 한번 버그로 인하여 불편을 드린 점에 대해 사과의 말씀을 드립니다.
만약 문제가 해결되지 않는다면 댓글을 남겨주세요!
감사합니다.
P.S.
저희가 내부 사정으로 인해 업데이트 일정이 확정되지 않아서 이 이슈가 해결되는 버전이 배포되는 시점을 안내해드리기는 어려운 점 양해 부탁드립니다.
업데이트가 된다면 이 게시글의 댓글로 안내해드리겠습니다.
Eng)
Q. Registering and unregistering a Bone's parent bone caused a bug in the game.
A. There was a bug where the "Parent Bone" property of the root bone did not change.
Directly edit the "Parent Bone" property of the bone in the Inspector tab.
This bug will be fixed in the next update.
위의 답변을 바탕으로 작업해본 결과 새로운 씬에서 내보내기 작업을 진행하였을 때, 오류 메세지가 뜨진 않았습니다. 다른 컴퓨터에 옮겨 확인을 했음에도 오류 메세지는 뜨지 않고 같은 현상이 발생했습니다.
비슷한 사례를 바탕으로 혹시 잘못된 리깅이 되어있나 싶어 리깅 시 가중치 블렌딩 없이 1로 설정하였음에도 해결되지 않았습니다.
현재 URP를 사용하고 있고 더 자세하게 알지는 못해서 메일로 파일을 보냈으니 확인 부탁드립니다!
안녕하세요!
답변에 앞서, 툴에서의 문제로 인하여 불편을 끼쳐드린 점에 대해서 죄송하다는 말씀을 드립니다.
문의 내용을 바탕으로 애니메이션 완성 이후의 본 삭제 전후의 결과 비교 테스트를 진행해보았습니다.
본의 구조, 메시 그룹의 구조 및 사용된 모디파이어 등을 정확히 알지 못하므로, 저희가 다음과 같은 상황을 설정했습니다.
- 자식 메시 그룹없이 1개의 메시 그룹에 본들을 추가했습니다.
- 지글본과 IK 체인을 설정했으며, 이후 해당 본을 삭제하여 테스트를 했습니다.
- Rigging 모디파이어로 본과 메시를 연결하고, Transform (Animation)으로 애니메이션을 제작했습니다.
그리고 저희는 다음의 순서로 테스트를 진행했습니다.
(1) 내보내기(Bake)후 애니메이션이 유니티 씬에서 정상적으로 재생되는 것을 확인했습니다.
(2) IK와 지글본이 설정된 본(A)을 자식본과 함께 삭제한 직후 내보내기를 실행했습니다.
이때도 유니티 씬에서 정상적으로 재생되는 것을 볼 수 있었습니다.
(본(A)이 삭제되었으므로 그 본과 연결된 메시는 움직이지 않은 상태입니다.)
(3) 삭제된 본(A)의 위치에 새로운 본(B)을 추가하고 메시와 연결한 뒤, Transform (Animation) 모디파이어를 이용하여 애니메이션을 가지도록 했습니다.
이때, 추가된 본(B)은 부모 본이 없는 상태입니다.
내보내기 이후에 애니메이션을 재생했으며 문제가 없었습니다.
(4) 추가된 본(B)을 다른 본의 자식 본이 되도록 연결을 하고 바로 내보내기를 실행하고 유니티 씬에서 확인을 해봤습니다.
문의주신 내용대로 (4) 단계에서 새로 추가된 본에 연결된 메시가 이상한 위치에서 애니메이션이 재생되는지를 확인해봤습니다.
하지만 안타깝게도 문제를 발견할 수 없었으며, 저희의 테스트에서는 이 단계에서도 정상적으로 애니메이션이 재생되는 것을 볼 수 있었습니다.
저희가 문의 내용을 잘못 이해했을 수 있으며, 다른 원인에 의해서 문제가 발생했을 수 있습니다.
특히, "내보내기"와 "최적화된 내보내기"는 유니티 씬에서의 동작에 대해서는 거의 동일한 과정을 거칩니다.
그래서 "최적화된 내보내기"만 잘 동작하는 경우라면 아마 에러 혹은 외적인 다른 문제가 있었을 것으로 생각됩니다.
예시로, 이전 버전에서는 비슷한 사례가 다음의 원인에 의해서 발생되었습니다.
- "실행 취소" 기능의 오작동으로 데이터 링크가 깨진 경우
- 자식 메시 그룹과 부모 메시 그룹에 모두 Rigging 모디파이어를 추가하는 바람에 메시와 본의 연결이 중첩된 경우
- Rigging의 가중치 합이 1이 초과하여 잘못 적용된 경우
- 내보내기시 에러가 발생하여 데이터가 제대로 처리되지 않은 상태로 유니티 씬에 전달된 경우
대부분 해결된 문제들이지만, 위와 같이 예상치 못한 다양한 이슈에 의해서 문제가 발생할 수 있습니다.
다음을 한번 체크해보시길 권장합니다.
(1) AnyPortrait 에디터로 캐릭터를 열 때, 잘못된 데이터를 찾아내는 기능이 동작하는데, 이것이 도움이 될 수 있습니다.
에디터를 닫았다가 다시 열고, 해당 캐릭터를 열어서 내보내기(Bake)를 실행해보세요.
(2) 내보내기를 실행할 때 에러가 발생하는지 확인해보시길 바랍니다.
에러가 발생했다면 유니티 에디터의 Console 탭에 에러 로그가 나타날 것입니다.
만약 에러 로그가 발생했다면 저희에게 알려주세요.
문제가 해결되지 않는다면 다시 댓글로 알려주세요.
에러 로그, 사용한 모디파이어, 메시그룹과 본이 어떻게 구성되었는지 및 의심이 될만한 여러 추가적인 정보를 알려주신다면 저희가 문제를 더 빠르게 해결할 수 있을 것입니다.
만약 작업 파일을 저희에게 전달해주신다면 직접 열어서 문제를 분석해보겠습니다.
파일로 보내주실때는 저희의 이메일로 보내주시면 되겠습니다.
- 메일 : contactrainyrizzle@gmail.com
- 파일 내보내기 방법 : https://rainyrizzle.github.io/kr/AdvancedManual/AD_ExportToProject.html