이것 저것 개발하고 만들어보기
article thumbnail

 

 

 

 

 

 

 

 

 

Quaternion(쿼터니언)보통 사원수라고도 불립니다.

 

로원 해밀턴(William Rowan Hamilton)이라는 수학자에 의해 만들어졌습니다.

 

 

Quaternion(이하 쿼터니언)은 3D 그래픽에서 회전을 표현할 때 사용하는 회전체계입니다.

 

Euler(이하 오일러)과 달리 전혀 다른 방식으로 회전 방향을 정의합니다.

 

쿼터니언은 오일러와 달리 4개의 값으로 이루어진 복소수 체계입니다.

 

 

 

 

 

 

 

 

Quaternion(쿼터니언)

 

 

 

사진에서의 t=w, 즉 회전각을 의미합니다.

 

 

 

오일러는 주축에 대해 오일러 각 순서대로 회전을 나타내지만 쿼터니언은 그렇지 않습니다.

 

회전의 축을 결정하는 X, Y, Z 의 벡터와 회전각을 결정하는 W값에 의해 회전이 결정됩니다.

 

 

 

3D 그래픽에서 쿼터니언을 정의하자면 다음과 같습니다.

 

 

  • q = d+ai+bj+ck = (d,(a,b,c)) 혹은 q = s + v (여기서 s 는 q의 w성분에 해당하는 스칼라, v는 xyz3차원 벡터)
  • 사원수는 일반적인 분배법칙을 따르며 허수인 i, j, k 는 2제곱일때 -1
  • Roll을 담당하는 스칼라 D, a,b,c는 3차원 벡터(XYZ)의 값을 가진다
  • 회전축 U, 회전각 θ 일때 q = ( cosθ/2, sinθ/2U)
  • 회전축 벡터인 U 는 1이 된다.

 

 

 

쿼터니언의 회전은 오일러와 달리 완벽하지 않지만, 완전히 의도치 않은 회전 보간이 잘 일어나지 않습니다.

 

 

 

 

 

 

기본적으로 3D 맥스에선 지오메트리나 본을 생성할 때 오일러 회전으로 세팅되어 있습니다.

 

Assign Controller에서 Rotation Euler XYZ 를 TCB Rotation 으로 설정하면, 쿼터니언 회전을 사용할 수 있습니다.

 

적용하고 나면, 파라미터 메뉴의 Key Info가 오일러에서 쿼터니언과 TCB 설정으로 바뀌었다는 것을 알 수 있는데 앞서 설명한 4원수의 X,Y,Z 벡터와 Angle(쿼터니언 공식에서의 W)값이 존재합니다.

 

 

 

 

 

 

좌측이 TCB Rotation, 우측이 Euler XYZ

 

 

 

 

방금 막 생성한 주전자 오브젝트와 TCB Rotation이 적용된 주전자 오브젝트에 회전 애니메이션 키를 삽입하고 비교해보면, 회전을 보간하는 방식에 있어서 차이가 있다는 것을 알 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

다만, 쿼터니언에서는 180도 이상의 회전을 키 하나에 표현할 수 없습니다.

 

사진과 같이 쿼터니언 회전은 누적된 회전 값을 인식하지 못하고 키와 키 사이의 가장 가까운 최단 방향으로 애니메이션이 보간됩니다.

 

쿼터니언은 오일러와 달리 포지션 기반으로 회전을 표현하기 때문에 이와같이 최단거리 보간이 일어납니다.

 

 

 

 

 

 

이와 같은 최단거리 보간을 방지할려면 애니메이션 키를 하나 더 삽입해 키와 키 사이가 180도를 넘지 않게 해 주는 것으로 해결할 수 있습니다.

 

 

 

 

또는 TCB Contorller의 Key info 롤아웃의 Rotation Windup에 체크하면 180도 이상의 키 값을 입력할 수 있게 됩니다.

 

 

 

다만 Rotation Windup 체크를 이용한 애니메이팅은 이미 만들어둔 키와 키 사이 중간에 새로운 애니메이션 키를 삽입할 경우 엉뚱한 방향으로 회전하는 경우가 생김으로, 권장하는 기능은 아닙니다.

 

 

 

 

TCB 

 

TCB는 Tension(장력), Continuity(연속성), Bias(바이어스) 의 약자로

 

커브로 표현된 쿼터니언 애니메이션 컨트롤러를 제어하기 위한 값 입니다.

 

 

 

 

 

왼쪽은 Euler 컨트롤러의 커브 ,오른쪽은 Quaternion 컨트롤러의 커브

 

 

 

오일러는 애니메이션 커브(Curve)로 제어할 수 있듯 쿼터니언도 TCB에 의해 제어되고, 수정할 수 있습니다.

 

오브젝트의 커브 편집기를 열어보면, 애니메이팅 된 오브젝트의 회전 컨트롤러는 오일러와 달리 쿼터니언 커브의 탄젠트 핸들(곡률 편집을 위한 편집기)이 없습니다.

 

대신 TCB 옵션을 이용해 이 커브의 곡률을 변화시켜 애니메이팅을 제어할 수 있습니다.

 

 

 

 

 

바이패드를 꺼내 아무렇게나 애니메이팅 하고 커브 편집기를 열어 커브를 확인해 봅니다.

 

바이패드는 초기 회전 타입이 쿼터니언이므로 커브 편집기의 탄젠트 핸들이 나타나지 않으며, 모션탭 Key Info 탭의 TCB 롤아웃에 가면 오브젝트의 컨트롤러를 바꿧던 것과 마찬가지로 TCB 편집기가 있습니다.

 

 

 

사진처럼 삽입된 키의 Tension ,Continuity, Bias 의 값을 각각 조절해 줄 수 있으며 이 값이 변함에 따라 십자가 모양의 곡선이 바뀌는 것을 알 수 있습니다.

 

 

 

Tension ,Continuity, Bias 값이 곡률에 미치는 영향은 다음과 같습니다.

 

 

 

 

 

 

 

 

 

 

Tension(장력)은 곡률을 제어합니다.

 

장력이 크면 선형(linear) 곡선이 생성되고 장력이 작으면 넓고 둥근 곡선이 생성됩니다.

 

 

 

 

 

Continuity(연속성) 은 애니메이션 곡선에 불연속을 만들어 애니메이션의 변화를 제어합니다.

 

연속성 값이 크면 키 양쪽 곡선에 가파른 곡선이 생성됩니다.

 

연송성 값이 작으면 선형 애니메이션 곡선이 만들어집니다.

 

중간 수치인 25에서 가장 부드러운 연속 곡선을 만들어 냅니다.

 

 

 

 

Bias(바이어스) 는 애니메이션 곡선이 발생되는 위치를 제어합니다.

 

바이어스 크기에 따라서 변형되거나 과장된 곡선을 만들어 낼 위치를 결정 할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

TCB에서 수정된 값은 커브 에디터에서도 반영됩니다.

 

이렇듯 쿼터니언에서도 커브값을 수정할 수 있습니다.

 

 

 

 

 

또한 커브 에디터에서 삽입된 키에 우클릭을 하면 다음과 같은 TCB 편집기를 열 수 있습니다.

 

타임라인에 삽입된 키에 슬라이딩 바를 일일히 올려가며 TCB 편집을 하는 것 보다 더 편하고 직관적입니다.

 

 

 

 

 

 

 

 

 

 

쿼터니언과 TCB는 오일러 회전과 비교적 정확한 애니메이션과 커브 편집을 위해 알아두어야 합니다.

 

커브 제어를 통해 애니메이팅을 효과적으로 만들어 낼 수 있습니다.

 

 

 

 

 

 

참고자료

 

캐릭터 셋업 테크닉 (저자 이상원)

 

위키백과 https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9B%90%EC%88%98

 

 

'Theory > Animation Theory' 카테고리의 다른 글

[3D Animation 원리] Euler(오일러) 회전  (0) 2021.05.14
profile

이것 저것 개발하고 만들어보기

@Tintana'k