[KineFX/Blendshape] 특정 지오메트리에 Blendshape를 추가할 때 깨지는 현상 및 해결법
며칠을 고생했던 건데 일단 특정 조건 하에 나타나는 현상이 있다.바로 메쉬에 Blendshape를 추가해도 깨지거나 반영되지 않는 것.
Houdini가 이런 쪽으로는 잘 안 쓰이다 보니 관련 현상에 대해 말하는 사람도 없는 것 같다. 일단 내 검색 능력 안에서는 그렇게 보인다.
그럼 왜 이런 현상이 나타났던 걸까?
내가 겪은 바로는 바로 스킨 지오메트리에 name이 분리되어 있어서 그랬다. 보통 그랬다. 이 문제가 골치 아픈 이유는 언제나 나타나는 현상으로 보이진 않는다는 거다.
그런데 골때리는 건 Houdini에 내장되어 있는 Capybara에서는 이 워크 플로우가 작동을 안 한다.
여러가지 테스트를 해 본 결과 Skin 이름, 즉 프리미티브의 name을 하나로 만들면 이러한 경우는 모두 해결 된다.
단점은 vex로 복원을 시도하면 안 된다는 것....
추가로 발견한 방법이 있다. 일단 먼저 Capybara를 FBX로 한 번 내보낸 다음 다시 FBX Character Import로 불러와서 편집하면 Capybara는 제대로 작동한다. 안 되는 것도 있고... 뭐야 도대체
또한 packed primitive index 값이 베이스 메쉬 보다 상위에 있을 경우 깨지는 현상이 있는 것 같다. 이를 sort로 해결을 시도해 보았지만 깨지진 않지만 변경도 일어나지 않는다. 그래서 간단하게 packed prim의 point에 attribute 플래그를 설정하고 sort로 재정렬한 다음 name을 하나로 통일했더니 잘 작동한다.
일단 Character Blendshapes Add는 패킹하면서 기존 포인트를 i@id에 넣는데 이 과정에서 지오메트리에 포함된 packed 메쉬(블렌드셰이프)가 빠지면서 정렬상 문제가 발생해 이렇게 꼬이는 것 같다.
그럼에도 Capybara 모델의 경우 블렌드셰이프나 hidden packed primitives가 존재하지 않아 그 외의 문제도 있는 것 같지만...
한 일주일 정도 고민 끝에 겨우 문제를 알아냈다.
통합된 지오메트리에 분리된 name 메시가 존재하고, 다른 name에 동일한 blendshape name이 존재하면 꼬이게 되는 것 같다.
해결법은 name별로 지오메트리를 분리한 후, 분리된 지오메트리에 blendshape add를 사용 후 최종적으로 merge를 이용해 한 번에 묶어주면 아무런 문제 없이 blendshape가 잘 들어간다.