AnyPortrait > 메뉴얼 > 마무리 회전 보정
스켈레탈 애니메이션은 몇단계의 처리 과정을 거쳐서 실행됩니다.
이 처리 단계들은 물리 효과같은 특수한 연산을 제외하면 크게 "FK"와 "IK"의 연산 단계로 구분됩니다.
FK에 의한 애니메이션 데이터가 먼저 연산된 후, IK 옵션에 의해서 모션이 보정되는데, 이때 의도하지 않은 결과가 나타날 수 있습니다.
특히, IK에 의해서 움직인 본의 방향이 FK에 비해서 너무 많이 바뀔 수 있습니다.
이 문제를 해결하기 위해 AnyPortrait v1.7.0에서는 "마무리 회전 보정(Final Rotation Correction)"이라는 단계를 추가했습니다.
마무리 회전 보정은 IK 처리 단계의 마지막에 동작하며, IK 처리 단계에서의 본의 회전 각도를 보정하는 역할을 수행합니다.
이 페이지에서는 마무리 회전 보정을 적용하는 과정과 옵션들에 대해서 알아봅니다.
또한 본 제약(Bone Constraint)을 같이 이용하는 예제를 소개합니다.
참고
이 페이지를 읽기에 앞서 IK에 대한 다음의 메뉴얼을 먼저 읽어보실 것을 권장합니다.
- IK 설정
- IK 컨트롤러
- 본 제약
로봇이 검을 휘두르는 예제를 준비해보았습니다.
마무리 회전 보정의 효과를 보기 위해서는 IK 기능을 이용해야합니다.
위와 같이 IK 체인을 설정한 후 "Position" 타입의 IK 컨트롤러를 설정합니다.
로봇이 검을 잡고있는 자세의 애니메이션을 만듭니다.
(1) 편집 모드를 끄면 (2) IK 컨트롤러가 동작하여 로봇의 팔이 목표를 향하게 됩니다.
이렇게 하면 IK 컨트롤러의 Effector Bone을 이용하여 애니메이션을 쉽게 만들 수 있습니다.
(1) 그런데 Effector Bone의 위치에 따라서는 검이 로봇의 얼굴을 향해버리는 어색한 자세가 나올 수도 있습니다.
이 문제를 해결하기 위해서 마무리 회전 보정을 적용해봅시다.
(1) 메시 그룹 편집 화면에서 Bone 탭을 선택합니다.
(2) IK 컨트롤러가 적용된 본을 선택합니다.
(3) IK and Constraints 탭을 선택합니다.
(4) "Final Rotation Correction" 항목과 옵션들을 볼 수 있습니다.
이 옵션들은 다음과 같습니다.
1. Keep World Angle : FK에서 편집되었던 월드 좌표계에서의 본의 회전 각도를 저장했다가 IK 연산의 마지막에 다시 적용합니다.
2. Look At : IK 연산의 마지막에 다른 본을 쳐다보도록 회전합니다.
Keep World Angle 옵션과 Look At 옵션은 동시에 설정될 수 있습니다.
두 옵션이 모두 활성화된 경우, Keep World Angle이 먼저 적용된 후, Look At이 이어서 적용됩니다.
먼저 Keep World Angle을 적용해봅시다.
(1) Keep World Angle을 활성화합니다.
(2) Default Weight는 보정이 적용되는 정도입니다. 여기서는 조금만 적용해보기 위해 "0.6"을 입력해보았습니다.
다시 애니메이션을 재생해보면 위와 같이 검을 쥔 손이 덜 회전하여 얼굴을 향하지 않게 되었습니다.
Keep World Angle 옵션은 FK에서의 각도로 복구하기 때문에, 키프레임에서 설정된 자세가 IK의 결과에 반영이 되는 것입니다.
다음으로 Keep World Angle 대신 Look At 옵션을 이용해봅시다.
(1) Look At의 대상이 되는 본을 추가합니다.
(1) IK 컨트롤러가 적용된 본을 선택합니다.
(2) Look At을 활성화 하고 Set 버튼을 누릅니다.
(3) 앞서 추가한 본을 선택합니다.
(4) Select 버튼을 누릅니다.
애니메이션을 재생해봅시다.
이번에는 손이 IK 컨트롤러와 무관하게 계속 추가되었던 본을 바라보는 것을 볼 수 있습니다.
Look At 옵션은 보정되는 각도를 지정하기 위해 외부의 본을 이용하는데, 본의 방향을 고정하는 경우에 효과적으로 사용됩니다.
Look At 옵션은 "Look At IK 컨트롤러"와 유사하게 동작합니다.
특히 IK 체인이 없이 본 단독으로 회전하는 경우 그 결과는 거의 동일합니다.
결과는 유사하지만 지원되는 세부 옵션들과 , 처리 과정의 순서에서의 차이점을 고려하여 적절한 기능을 선택해 사용해보세요.
다른 옵션들을 살펴봅시다.
Limit Rotation 옵션은 Keep World Angle이나 Look At 중 하나라도 활성화되면 나타납니다.
이 옵션은 본의 회전 각도의 범위를 제한합니다.
Smooth Clipping 옵션을 활성화하면, Smooth Area Size 값 만큼 제한 범위가 완화되어 본의 회전이 부드럽게 제한됩니다.
작업 공간에서 제한되는 각도 범위를 볼 수 있습니다.
Keep World Angle이나 Look At에 대해서 각각 가중치를 지정할 수 있습니다.
특히 Float 타입의 컨트롤 파라미터를 연결하면 실시간으로 마무리 회전 보정의 적용 정도를 변경하는 것이 가능합니다.
이번에는 IK 컨트롤러 대신 본 제약(Bone Constraint)를 함께 이용해봅시다.
위와 같이 2D 게임에 나올법한 귀여운 캐릭터를 준비했습니다.
캐릭터의 발 밑에는 "땅"을 의미하는 녹색의 박스를 추가했습니다.
본들을 추가하여 캐릭터의 "달리기" 애니메이션을 위와 같이 만들었습니다.
그런데 캐릭터의 발이 땅보다 아래로 내려가버리는 순간이 있음을 볼 수 있습니다.
키프레임 애니메이션을 이용하여 이 문제를 해결하려면 캐릭터의 발의 위치를 매 프레임마다 지정해야할 것입니다.
하지만 제약과 IK를 이용하면 이 문제를 쉽게 해결할 수 있습니다.
(1) 땅의 Y 위치에 해당하는 "Bone Ground"라는 이름의 본을 생성합니다.
(2) 캐릭터의 다리의 본들에 IK 체인을 설정합니다.
(1) 캐릭터의 발에 해당하는 본을 선택합니다.
(2) 제약을 추가합니다.
(3) 위 이미지와 같이 제약을 설정하여 캐릭터의 발이 "Bone Ground"보다 위쪽에 위치하도록 만듭니다.
- Constraint Method : Position
- Coordinate : World
- Axis : Y
- Range Type : Min
- Refer to Bones : "Bone Ground"을 대상으로 활성화
- Move by IK : 활성화
이제 애니메이션을 재생하면 캐릭터의 발이 "Bone Ground"보다 아래쪽으로 내려가지 못하는 것을 볼 수 있습니다.
이렇게 하면 일단 캐릭터의 발이 땅 밑으로 내려가는 것을 막을 수 있습니다.
(1) 그런데 발의 방향은 아래쪽을 향하고 있으므로 아직도 조금 어색한 것을 볼 수 있습니다.
제약에 의해서 IK가 동작하였는데, IK의 결과는 캐릭터 발의 각도를 제어하지 않았기에 이런 결과가 나타난 것입니다.
다시 메시 그룹 편집 화면으로 돌아와서 마무리 회전 보정을 적용합니다.
(1) 제약을 적용했던 본을 선택합니다.
(2) 마무리 회전 보정의 Keep World Angle 옵션을 활성화합니다.
이제 캐릭터의 발의 각도가 자연스러워졌습니다.
더 자연스럽게 땅을 딛으며 달리는 애니메이션을 완성했습니다.
이 페이지에서는 IK 컨트롤러나 제약이 설정된 본을 대상으로 마무리 회전 보정 옵션을 적용해보았습니다.
하지만 마무리 회전 보정은 IK 기능의 사용 여부와 무관하게 사용이 가능합니다.