앨리스의 애니메이션 #3

1.9

검기가 필요하다! 프레임이 너무 빨라 트레일은 부적합하고 예쁘지도 않다. 메쉬로 만들자. 그리고 이를 위한 셰이더도 만들자.

uv를 풀러서 v에 사인을 적당히 비벼서 만들었다. flow수치를 따로 빼내어 애니메이션 할 것이다.

입컨트롤러 아래에 검기전용 컨트롤러를 만들었다.. 검기는 평면이므로 본을 만든 후, Z스케일에 드라이브시키면 될 것이다. 스케일은 0이 되면 안되니까, 드라이브 수치는 var + 0.01로 해야 한다.

완성됐다. 이제 모션에 붙여보자.

계획대로 잘 움직이는 것 같다. 이제 유니티로 넘기자.

??? 내가 뭘 잘못한 걸까…

조사해 보니 드라이버를 사용하는 트레일 메쉬의 모델스케일이 0.01로 되어 있었다. 팩터를 스케일에 매핑하고 있으므로 이것은 곧 밝기가 된다. 즉 100배 조도로 작동하고 있었다.

이제 잘 작동한다. 그런데 스샷이 무슨 개그만화처럼 찍혔어!?

1.10

며칠전에 발생했던 목덜렁현상이 재발했다. 이번엔 위치의 오프셋대신 회전값의 로테이션이 문제다. 이번에는 전처럼 본이 32개를 기준으로 오류현상이 발생하지 않고 30개쯤에서 발생한다. 메모리 문제가 맞는가…

컨트롤러를 버려보기로 한다. ARP는 머리를 컨트롤러로 제어하고 있다. 이걸 직접제어로 바꾼다.

  • 아마추어 32번레이어에 있는 head.x의 회전락을 푼다. 함께 설정되어 있던 Copy Rotation도 삭제한다.
  • 제어가 쉽도록 1번레이어로 옮기자.

디폼과 컨트롤러가 분리되어 있지 않은 케이스는 이미 존재한다. 손가락이다. 익스포트만 문제가 없다면, 이대로 사용해도 될 것이다.

잘 넘어오는 것 같다.

하지만 기존의 head.x는 컨트롤러에 의해 제어되고 있었기 때문에, 애니메이션이 모두 초기화되었다. 이는 fcurve를 복사해 붙여주거나, 다시 잡아주어야 한다. fcurve를 수동으로 복사해주자.

스탠딩 어택은 가까울 때와 멀리 떨어져 있을 때 모션이 다르게 나타난다. 오늘까지 이걸 처리했다. 내일은 제발 기술적 이슈가 없기를. 흑흑

1.11

오늘의 깨달음.

쿼터니온값의 부호를 바꾸면 360도 돌아간 값으로 새겨진다. 이는 캐릭터가 한바퀴를 도는 애니메이션을 제작할 때, 처음과 끝을 같은 모양으로 맞춘 애니메이션을 제작할 때 용이하다.

이제 앉아서 공격들을 만든다.

익스포트 후.. 내가 뭘 또 잘못한거지..

조사 결과, 스케일이 모두 음수값으로 익스포트되고 있었다. 이것이 블렌더의 문제인지, 아니면 유니티의 문제인지, 혹은 ARP의 문제인지 불분명하다. 이것에 대해선 내일 조사해보기로 하자.

1.12

스케일이 모두 음수값으로 익스포트 되는 것은 ARP의 문제로 밝혀졌다. 심화단계로 가니 FBX 익스포트에 소소한 버그들이 발견된다. 제작자에게 메일을 보낼까 하다가 스샷찍고 파일정리할 게 귀찮아 그냥 고쳐쓰기로 했다. 검기의 x축을 뒤집어 쓰고 싶은 것뿐이니 그냥 180도 돌리면 된다.

하지만 검기가 항시 표현되고 있는 것이 생각보다 작업을 많이 방해하는 느낌이다. 클립해서 보이지는 않으나 GPU란 놈은 계산을 모두 끝낸 후에 버리는 비효율적인 짓꺼리 또한 할 것 같으니 그냥 계산면적을 줄여주는 편이 좋겠다. 애드온 기능이 또 필요하다.

  • 액션 초기화 시 본에 trail이 붙은 본의 트랜스폼을 초기화해주고 스케일을 0.01로 줄여준다. (0은 안된다.)
  • 모든 액션에 같은 행동을 해야 한다.

이를 위해 모든 액션에 필수키를 추가하는 버튼을 만들었다. 이 버튼은 주요관절에 로테이트 모드를 고정하고 트레일이 붙은 본은 초기화해서 0프레임에 트랜스폼 키를 넣는다. 이 과정을 통해 키가 없는 액션의 데이터가 엉망이 되는 경우를 방지할 수 있다. 테스트 해보자.

본의 이름을 변경할 일이 있었다. 블렌더에서는 이름으로 데이터를 찾기 때문에 이름이 바뀌면 액션의 데이터 호환이 안된다. 즉, 데이터는 있는데 모션이 깨진다. 이를 위해 스크립트를 제작해야 했다.

이제 문제 없다. 그런데 사소한 문제가 하나 더 있다. 모션이 안예뻐…

자세를 좀 더 낮게 수정. 이 쪽이 더 마음에 든다. 내일은 기술이슈가 없기를(…)

1.13

이 게임을 만들면서 격투게임의 제자리 점프 공격과 앞으로(혹은 뒤로)점프 공격의 모션이 다르다는 걸 처음 알았다. 생각보다 굉장히 많은 공이 들어간다.

검기의 회전값이 작동하지 않는 현상이 있었다. 원인은 모르겠지만, 회전모드를 오일러로 바꿔서 한 번 돌린 후에, 다시 쿼터니온으로 바꾸면 잘 작동한다. 일단 블렌더를 업데이트 했지만 여전히 발생하는 버그. 검색해도 같은 문제의 사례가 발견되지 않는 걸로 봐서 아마도 표시는 쿼터니온으로 되어 있으나 계산은 오일러로 되고 있는 상황같아 보인다. 왜 이런 현상이 발생하는 거지…

졸지에 블렌더만 업데이트한 셈이 됐다.

아하. 4.0에선 레이어 방식이 변했다. 이제 레이어는 얼마든지 추가할 수 있고 이름도 지정할 수 있다. 좋은 개선이다.

업데이트 후 페이셜 키 중 찡그린 눈썹의 키가 작동되지 않는 현상이 있었다.

어쩐지 저게 자물쇠가 걸려 있다. 이걸 해제해주면 된다. 이것이 4.0으로 오면서 데이터가 포팅된 것인지, 아니면 그냥 단순히 원래 있던 내 실수였는지는 모르겠다. 후자라면 좋겠다.

공격 모션은 대략 완성했다. 이제 데미지 모션을 처리해야 한다.

데미지 모션을 제작하다 알아낸 사실. 모든 모션에 페이셜 키를 0프레임에 추가해주어야 한다. 기존에 짜놓았던 코드가 있어서 어렵지 않게 해결. 내일은 데미지 모션을 만들어보자.

앨리스의 애니메이션 #3”의 1개의 생각

  1. Thank you for sharing this.
    I am a little bit confused by what you mentioned about the rotations. You mentioned you animated in EULER to solve the issue, and later you set it back to QUATERNION. I did not know that one can animate rotation methods in Blender.
    I also did not understand what the lock meant in the transformation channels in regards of refreshing your circular animation.
    I now see you’re using Blender 4.0 for these steps. So you update Blender while in development?

댓글 남기기