제약 프리셋 (Predefined constraint)
유니티는 IK 애니메이션으로 바로 사용할 수 있는 프리셋을 제공한다.
이는 여러 가지 Constraint형태로 제공되는데, 사용방법이 어렵지 않기 때문에 쉽게 이용 가능하다.
Animation Rig를 패키지 매니저에서 받으면 다음과 같은 constraint가 제공된다.
- Blend Constraint
- Chain IK Constraint
- Damped Transform
- Multi-Aim Constraint
- Multi-Parent Constraint
- Multi-Position Constraint
- Multi-Referential Constraint
- Multi-Rotation Constraint
- Override Transform
- Twist Chain Constraint
- Twist Correction
- Two Bone IK Constraint
블렌드 제약 (Blend Constraint)
이 프리셋은 두 오브젝트 간의 포지션과 로테이션을 섞어 준다.
Source A와 B의 포지션과 로테이션을 0~1 사이의 값으로 나타낸다.
이때 Position과 Rotation은Blend A|B 의 변화량만큼 Constrained Object에 적용된다.
예를 들어서 Blend A|B Position (1, 3, 4)만큼 이동했다면 Constrained Object 역시 (1, 3, 4)만큼 상대적으로 움직인다는 뜻이다.
사용 방법
제약을 적용할 오브젝트를 Constrained Object에 넣고 섞을 두 오브젝트를 각각 Source A와 Source B에 넣으면 된다.
체인 제약 (Chain IK Constraint)
체인 IK는 체인처럼 길이 변화량이 적지만 이어져있는 물체에 사용 가능하다.
사용 방법
이 IK 제약을 사용하려면 위 이미지처럼 계층구조가 되어있어야 한다.
Root에는 최상위 오브젝트를 넣고 Tip에는 말단 오브젝트를 넣는다.
이때 말단 오브젝트가 Target 오브젝트를 따라다니게된다.
적용
뱀, 전갈의 꼬리 등에 해당 Constraint를 사용하면 적절하다.
감쇠 트랜스폼 (Damped Transform)
이 제약은 트랜스폼 정보(위치, 회전)를 감쇠시키며 움직인다.
만약 아래와 같이 여러 개의 오브젝트에 모두 Damped Transform Constraint를 넣는다면,
아래와 같은 연출을 나타낼 수 있다.
위 애니메이션은 damp2가 damp1의 위치와 회전값 정보를 감쇠시키며 움직이고, damp3가 damp2의 정보를 감쇠시키는 형태로 진행되게 된다.
사용 방법
따라가는 오브젝트를 Constrained Object에, 따라갈 대상이 되는 오브젝트를 Source에 넣으면 된다.
만약 Maintain Aim을 선택하면 Constrained Object의 Source Object 방향이 유지가 된다.
멀티 조준 제약 (Multi-Aim Constraint)
이 Constraint는 특정 오브젝트나 오브젝트 무리를 향해 바라보게 할 때 사용된다.
별도의 트랜스폼 계층구조를 구성할 필요는 없다.
하지만 Setting을 잘해주어야 한다.
사용 방법
세팅은 다른 프리셋에 비해 조금 까다롭다.
여기서 쳐다보게 할 오브젝트(드래그 중인 물체)를 Source Objects에 넣고
쳐다보는 오브젝트(캐릭터 머리)를 Constrained Object에 넣는다.
만약 대상의 중심을 바라보게 하고 싶다면 Source Objects에 여러 개를 넣으면 된다.
Max/Min Limit은 최대, 최대로 Constrained Object가 회전할 수 있는 각도이다. 위 영상에서는 고개를 얼마나 움직일 수 있는가에 대한 값이다.
적용
특정 오브젝트를 바라보게 할 때 유용하다.
다중 부모 제약 (Mulit-Parent Constraint)
다중 부모 제약은 Constraint Object의 부모를 특정 오브젝트 인 것처럼 해주는 기능이다.
이 프리셋의 강점이 하나 있는데, 바로 스케일과 계층구조를 변경하지 않고 특정 오브젝트의 자식 오브젝트로 넣은 것과 같은 효과를 낸다는 것이다.
사용 방법
Source Objects에 부모 오브젝트로 둘 여러 개의 트랜스폼을 넣어두고 스크립트로 값을 조정하는 형태로 사용할 수 있다.
적용
이 기능을 사용하면 무기를 왼손에서 오른손으로 옮기거나, 움직이는 물체에 무언가를 맞춰서 달라붙게 하는 등의 효과를 나타낼 수 있다.
다중 위치 제약 (Multi-Position Constraint)
이 프리셋은 Source Objects의 가중치만큼 Constrained Object의 포지션을 변경한다.
아래의 상황을 비교해 보면 이해가 쉽다.
제약 미적용 | 제약 적용 |
제약을 적용한 결과 발걸음에 맞춰 골반이 함께 움직이고 있다.
이는 발걸음의 평균값의 위치를 골반에 적용했기 때문이다.
사용방법
Source Objects에 왼발과 오른발이 들어가 있어서 평균 위치정보를 hipsPivot에 넣어준다.
따라서 왼발이 앞설 땐 골반 왼쪽이 앞을 향하게 뒤틀리며 오른발이 앞선땐 반대의 방향으로 뒤틀리게 되는 것이다.
다중 레퍼런스 제약 (Multi-Referential Constraint)
이 프리셋은 여러 개의 오브젝트를 하나의 오브젝트 자식으로 만들 수 있다.
여기서 Reference Objects는 Driving으로 선택된 오브젝트의 자식 오브젝트와 같은 역할을 하며
Driving으로 선택된 오브젝트는 나머지 Reference Objects의 부모와 같은 역할을 한다.
다시 말해, 나머지 Reference Objects들이 Driving으로 선택된 오브젝트의 트랜스폼 정보(위치와 회전)를 오프셋으로 따라간다.
다중 회전 제약 (Multi-Rotation Constraint)
다중 회전 제약은 여러개의 오브젝트에 Source Objects의 회전값의 특정 정도의 회전을 주고자 할 때 사용한다.
예를 들어 다음과 같이 고개가 돌아갈 때 몸의 다른 부위도 회전시키고자 할 때 사용하면 좋다.
사용 방법
적용하고자 하는 모든 오브젝트에 Multi-Rotation Constraint를 적용한다.
그리고 회전값을 따라 할 대상이 되는 오브젝트를 Source Objects에 넣고
그 값만큼 회전값을 줄 오브젝트를 Constrained Object에 넣으면 된다.
적용
위 예제처럼 몸의 회전뿐만 아니라 비틀림과 관련된 상항에 사용하면 된다.
오버라이드 트랜스폼 (Override Transform)
이 제약은 트랜스폼 정보를 말 그대로 오버라이드 해버린다.
아래 영상에서 좌측의 트랜스폼 정보를 우측이 그대로 따라 하게 만든다.
사용 방법
Source Objects는 영향을 주는 오브젝트이다.
Constrained Object는 따라 하게 만드는(영향을 받는) 오브젝트이다.
트위스트 체인 (Twist Correction)
트위스트 체인 프리셋은 IK 체인 프리셋과 비슷하지만 연속된 오브젝트를 커브로 제어할 수 있는 장점이 있다.
사용 방법
Root와 Tip에 각각 최상단 오브젝트와 말단 오브젝트를 넣은 후 Curve로 조정을 한다.
Curve의 값이 클수록 더 많은 트랜스폼 정보가 반영이 된다.
트위스트 보정 (Twist Correction)
이 프리셋은 다중 회전 제약(Multi-Rotation Constraint)과 매우 비슷하다.
차이점은 Twist Correction 스크립트가 한 번에 Constrained Object를 제어한다.
사용 방법
Twist Nodes에 적용하고자 하는 Transform을 넣고 오른쪽 필드에서 비율을 정해준다.
1이면 같은 값만큼 회전하며 -1이면 반대 방향으로 회전한다.
적용
Multi-Rotation Constraint와 마찬가지로 관절끼리의 부드러운 회전에 적합하다.
두 뼈대 제약 (Two Bone IK Constraint)
휴머노이드 형태의 캐릭터 애니메이션 중에서 가장 많이 쓰이는 프리셋 중 하나일 거라 생각된다.
이 프리셋은 두 개의 뼈대 사이 관절을 IK 형태로 사용할 수 있게 해 준다.
사용 방법
IK 애니메이션에서 중요한 것은 관절이 되는 hint이다.
Root에 두 뼈대의 최상위(루트 트랜스폼)를 넣고 Mid에는 중간, Tip에는 말단(최하위 트랜스폼)을 넣는다.
그리고 Target으로 빈 오브젝트를 하나 만들어서 지정해 주는데, 이 트랜스폼의 포지션을 Tip이 따라간다.
다시 말해서 Target의 위치에 Tip이 달라붙는다.
Hint는 관절을 굽힐 수 있도록 잘 조정해서 넣어줘야 한다. 마찬가지로 빈 게임 오브젝트를 하나 생성해서 넣어준다.
적용
관절이 있는 부분이라면 모두 적용할 수 있다.
'유니티 > 애니메이션' 카테고리의 다른 글
[Unity] 런타임 애니메이션 녹화 - GameObjectRecorder (0) | 2023.12.18 |
---|---|
[Unity] 애니메이션 리깅 (1) - Overview (0) | 2023.06.26 |