스펌을 만들때 초기부터 기획했던 내용중에 애니메이션을 좀 더 직관적으로 제작하는 기능이 있었다.
무려.. 2021년 부터 제작하다가 포기했던 기능이니.. 어쩌다 보니 2년만에 기능을 추가하는중..
이번에 필요해서 다시 제작하다보니, 다시 전에 겪었던 문제에 봉착하고 말았는데..
유니티에서 기본으로 제공하는 애니메이션 및 2D 용 플러그인이 아니고 추가로 직접 만드는 케이스가 많지 않다보니.. 함수 사용법이나, 활용방법을 찾아보기가 어려웠다는 것이었다.
많은 정보가 있지 않은 분야다보니.. 믿었던 ChatGPT 는 아무말이나 지껄이기 매한가지..
여하튼 간만에 피나는 구글링 끝에.. 몇가지 힌트를 찾고 제작 시작.
대충 이런식으로 유니티의 Gizmo 시스템을 활용해서, 씬에서 직관적으로 파트를 움직 일 수록 했다.
물론 어느정도는 유니티에서도 직접 가능한 기능이긴 하지만, 그래도 실제로 사용해보니 좀 더 편함.
실제로 스펌을 베이스로 애니메이션을 작업하다보면.. 주로 하는 작업은 각 피벗의 포지션을 변경하는 작업과, 로테이션 회전 값을 변경하는 작업이 대부분인데, 그래서 최초에는 IK 를 만들어 볼까도 생각을 했었는데.. 쉽지 않을 것 같아서. SPUM 의 내부 구조 시스템에 집중해서, 좀 더 간결하면서도 약간의 IK 느낌이 날 수 있도롱 트리 구조를 만들어 주었다.
여기까지는 과거와는 다르게 생각보다 빠르게.. 접근할 수 있어서.
오오오.. 생각보다 금방 만들겠거니.. 했는데..
실제로 유니티의 애니메이션 클립에 keyframe 을 입히는 작업은 생각보다 쉽지 않았음..
크게 2가지 방법이 있는데, 아직도 왜 이렇게 나뉘어져 있는지는 잘 모르겠다. 그러다보니 구글링해서 나오는 정보들도 파편화가 심하고, 드문 드문 있는 정보들이라.. 데이터가 유효하지 않은 정보들도 많아서 어려웠음.
AnimationUtility.SetEditorCurve
https://docs.unity3d.com/ScriptReference/AnimationUtility.SetEditorCurve.html
AnimationClip.SetCurve
https://docs.unity3d.com/ScriptReference/AnimationClip.SetCurve.html
위 내용들이 주축이 되서 애니메이션 키 프레임을 기록할 수 있는데.. 아직도 이걸 왜 이렇게 나눠놓은지는 잘 이해못함.
어쨌든, 몇일간의 삽질 끝에, 애니메이션을 기록 할 수 있는 기능까지는 만듬. 피벗의 위치랑 각도를 기즈모를 클릭해서 조정하고 Record 를 클릭하면 키가 기록되는 구조.
그럼 아래 처럼 애니메이션이 기록 된 것을 확인 할 수 있다.
물론 아직 수정해야할 점이 많은데.. 가장 큰 문제는 유니티의 애니메이션 창에서 현재 위치하고 있는 타임 바의 정보를 가져오는 법을 도통 모르겠다는 점이다..
검색을 하다보면.. 유니티에서 지원하는 TimeLine 기능과 겹쳐셔 ㅠㅠ 정보를 찾기가 너무 힘듬..
그러다보니, 애니메이션을 계속 추가하는 것은 가능한데.. 기존에 만든걸 수정하는건 원래 에디터의 기능을 활용해야함..
일단은 이 정도에서 스펌 사용자들에게 공유해보려 하는데.. 좀 다른분들이 좀 도와주지 않을까 기대해본다.