XSI 1.5

Character Skeleton Setup

 

 

 

XSI를 이용한 단편 애니메이션 제작

- 단편 애니메이션 'BIRD'를 중심으로 -

 

이종정 / anikoleez@anikoleez.com

www.anikoleez.com

 

 

 

 

캐릭터 Skeleton Setup

 

 

  모델링을 한 캐릭터에 자유로운 움직임과 다양한 포즈를 주기 위해서는 그 캐릭터에 뼈대를 심고, 관절을 만들며, 각 부위를 제어할 수 있는 Control Object와의 관계를 설정하는 등의 캐릭터 Setup 과정이 필요하다.

  이번 호에서는 Animation 'BIRD'의 주인공 캐릭터(지난 호 Subdivision Surface Modeling 과정에서 소개된 캐릭터)의 Skeleton Setup 과정을 소개하고자 한다. 사용된 Software의 Version은 SOFTIMAE XSI 1.5 이다.

 

 

 

Skeleton의 구조

 

  캐릭터 Setup에서 뼈대 역할을 하는 Skeleton은 Root, Chain, Joint, End Effector로 구성되어 있다.[그림4] 체인은 뼈마디와 같고, Joint는 관절과 같다고 보면 된다. 체인의 수가 늘어나면 그만큼 Joint의 수도 늘어난다. End Effector를 움직이면 Root를 제외한 다른 구성요소들이 같이 움직인다. 따라서 Key Frame Animation 작업 시 이 End Effect를 제어함으로써 원하는 결과를 빠르고 직관적으로 얻을 수 있다. 이러한 제어 방법을 IK(Inverse Kinematics-역 운동학)라고 한다. 또한 각 Chain들의 Rotation 값에 Key를 주어 애니메이션 할 수도 있다. 이러한 방식을 FK(Forward Kinematics-전진 운동학)라고 한다.

 

[그림4]

 

  캐릭터 Setup은 어떤 부위에 어떠한 제어방식을 사용하여 애니메이션 할 것인가에 따라 조금씩 달라지게 된다.

 

 

 

다리 Skeleton Setup

 

1. XSI를 실행하고, 모델링 된 캐릭터를 불러들인다. [그림5]와 같이 Right 뷰포트에서, MODEL Create Skeleton 2D Chain 명령을 이용하여 캐릭터의 다리부분의 Skeleton을 만든다. 다리 Skeleton은 2개의 Bone을 가지고 있도록 한다. 마우스 오른쪽 버튼을 눌러 명령을 종료한 다음 이번에는 발 부분과 발끝 부분에 사용될 Skeleton을 각각 1개의 Bone을 가지도록 하여 만든다.

 

[그림5]

 

  그런 다음, 만들어진 Skeleton을 캐릭터 모델의 형태에 맞게끔 Translate Tool이나 Rotate Tool을 이용하여 조정한다. 만약 Bone의 길이를 조정할 필요가 있다면 그 Bone을 선택하고 Enter를 쳐서 [그림6]과 같이 Chain Bone의 프로퍼티 창을 연다. 그리고 나서 Geometry/Length 값을 조정하면 된다.

 

[그림6]

 

  다음으로, root, root1, root2, bone, bone1 등으로 된 각 Skeleton의 이름을 자신이 알아보기 쉬운 이름으로 바꾼다. 여기서는 다리 Skeleton의 root 이름을 L_leg로, 첫 번째 다리 bone을 L_leg1B, 두 번째 다리 bone을 L_leg2B, 발 Skeleton의 root를 L_foot, 발의 bone을 L_footB, 발가락 Skeleton의 root를 L_toe, 그리고 발가락 bone이름을 L_toeB으로 바꾸었다. 그런 다음 우측 메뉴에 있는 Parent 명령을 이용하여 L_foot이 L_leg의 effector의 자손이 되게 한다. (L_foot을 선택하고 단축키 '/'를 누른 뒤 마우스 중간버튼으로 L_leg의 effector를 클릭하면 된다.) 또한 L_toe는 L_foot의 effector의 자손이 되게 한다. 여기가지 진행된 Skeleton의 계층구조를 보면 [그림7]과 같다.

 

[그림7]

 

 

 

2. MODEL Get Primitive Implicit Cube 명령으로 Cube를 하나 만든다. 이 Cube는 다리를 제어할 수 있는 Control Object로 활용할 것이다. 적당한 사이즈로 크기를 수정한 후, Cube가 선택된 상태에서 우측 메뉴의 Constrain Position 명령을 주고 L_leg의 Effector를 클릭 한다. 그러면 Cube가 L_leg의 Effector가 있는 위치로 옮겨질 것이다. 또한 Cube를 선택하여 Constrain Orientation 명령을 주고 L_foot을 클릭 한다. 이것은 단지 Cube가 위치할 자리와 방향 값을 얻기 위한 것이므로 곧바로 Explorer 뷰에서 Cube의 Constrain Position값과 Constrain Orientation값을 지운다.[그림8]

 

[그림8]

 

  이번에는 L_leg의 effector를 선택하고 Constrain Position 명령을 사용하여 Cube에게 Position값을 구속시킨다. 또한 L_foot을 선택하고 Constrain Orientation 명령을 사용하여 Cube에게 Rotation 값을 구속시킨다. 그리고 나서 Cube의 이름을 L_leg_control 이라고 바꾼다.

 

  또다시 MODEL Get Primitive Implicit Cube 명령으로 Cube를 하나 더 만든다. 조금 전 Cube보다 크기를 좀 더 작게 만든다. 그런 다음 Constrain Position 명령을 주고 L_toe를 클릭 한다. 또한 Constrain Orientation 명령을 주고 다시 L_toe를 클릭 한다. Cube의 위치와 방향이 바뀌었을 것이다. 이번에는 Cube의 Constrain Orientation값만 지운다. 그리고 나서 L_toe를 선택한 다음 Constrain Orientation 명령을 주고 Cube를 선택한다. Cube의 이름을 L_toe_control 이라고 바꾼 다음 Parent 명령을 이용하여 L_leg_control의 자손으로 만든다.[그림9]

 

[그림9]

 

  여기까지 한 다음 L_leg_control을 마우스 중간 버튼으로 선택하여 움직이거나 회전시켜 보면 다리와 발의 Skeleton을 제어할 수 있는 것을 보게 될 것이다.

 

 

 

3. 이번에는 다리의 방향을 결정하는 Up-Vector를 설정하여 보자. MODEL Get Primitive Implicit Cube 명령으로 Cube를 또 하나 만든다. 크기를 좀 작게 한 다음 [그림10]과 같이 무릎 앞부분에 위치하게 한다. 만약 우측 메뉴 하단에 있는 'Immed' 버튼이 켜져 있다면 잠시 끈다. 그리고 나서 L_leg1B를 선택한 다음 MODEL Create Skeleton Chain Up-Vector 명령을 주고 Cube를 클릭 한다.

 

[그림10]

 

  만약 Up-Vector Chain의 방향이 거꾸로 되었다면, L_leg1B를 선택한 후 Enter를 친다. 그러면 Chain Bone 프로퍼티 창이 열리는데 여기서 [그림11]과 같이 Resolution Plane의 Roll 부분의 값을 180으로 설정해주면 된다.

 

[그림11]

 

  그리고 상단 View 메뉴의 Visibility Options 명령을 실행시키면 프로퍼티 창이 열리는데, 여기에서 Attributes 탭의 Chain Critical Zone 옵션을 On 하게 되면 Skeleton과 Cube 사이에 연결된 Up-Vector 설정을 뷰포트에서 직접 볼 수 있다.[그림12]

 

[그림12]

 

  Cube의 이름을 L_leg_UP 이라고 바꾸고 Parent 명령을 이용하여 L_leg_control의 자손으로 만든다.

 

  이런 방법으로 Setup한 것을 반대편 다리에 복사해 보자. L_leg와 L_leg_control을 마우스 중간버튼으로 둘 다 선택한 다음 [그림13]과 같이 MODEL Create Skeleton Duplicate Symmetry 명령을 이용하여 반대편으로 복사를 한다.

 

[그림13]

 

  그리고 나서 복사된 object들의 이름에 L_로 시작되는 부분을 조금 귀찮더라도 모두 R_로 시작되게 바꾼다.[그림14]

 

[그림14]

 

 

 

상체 Skeleton Setup

 

4. 이번에는 상체 Skeleton을 만들어 보자. MODEL Create Skeleton 2D Chain 명령을 이용하여 Right 뷰포트에서 [그림15]와 같이 아랫배 부위에서 위로 향하는 Skeleton을 만든다. 또한 아랫배에서 꼬리로 향하는 Skeleton을 또 만든다. 그리고 나서 Skeleton의 이름을 각각 body와 tail로 바꾼다.

 

[그림15]

 

  그리고 목과 머리부분의 Skeleton을 각각 하나씩 만든 다음 neck과 head로 이름을 바꾼다. 그런 다음 head를 Parent 명령을 이용하여 neck의 bone의 자손으로 만들고, 같은 방법으로 neck을 body의 마지막 bone의 자손으로 만든다. 그리고 tail과 L_leg, R_leg는 body의 root의 자손으로 만든다.[그림16]

 

[그림16]

 

  이번에는 얼굴에 필요한 Skeleton을 만들어 보자. Right 뷰포트에서, 아래턱을 움직여 입을 벌릴 수 있는 Skeleton과 눈썹부위를 치켜 뜰 때 필요한 Skeleton을 [그림17]과 같이 만든다. 눈썹 Skeleton은 하나 만들어서 Rotation 한 후 MODEL Create Skeleton Duplicate Symmetry 명령을 이용해 반대편으로 복사하면 된다. 그리고 나서 턱 Skeleton의 이름을 chin, 눈썹 Skeleton의 이름을 각각 L_eyebrow, R_eyebrow 라고 바꾼다.

 

[그림17]

 

  그런 다음 Parent 명령을 이용하여, 모두 다 head의 하나뿐인 bone의 자손으로 만든다.[그림18] 이렇게 하고 나서 head의 effector를 움직이면 chin과 L_eyebrow, R_eyebrow도 따라 움직일 것이다.

 

[그림18]

 

 

 

5. 이번에는 어깨와 팔, 손가락 Skeleton을 만들어 보자. [그림19]와 같이 Front 뷰포트에서 어깨 Skeleton을 만들고, 이름을 L_shoulder로 바꾼다.

 

[그림19]

 

  그리고 Top 뷰포트에서 팔 Skeleton을 만들고, [그림20]과 같이 모델의 형태에 맞게끔 위치와 길이, 방향 등을 조정한 후에 이름을 L_arm으로 바꾼다. 그런 다음 L_arm을 parent 명령을 이용하여 L_shoulder의 bone의 자손으로 만든다.

 

[그림20]

 

  이번에는 팔의 Up-Vector를 만들어 보자. 방법은 조금 전 다리의 Up-Vector를 만드는 방법과 거의 같다.

  MODEL Get Primitive Implicit Cube 명령으로 Cube를 하나 만든다. 크기를 적당히 조정한 후에 왼쪽 팔꿈치 뒷부분에 위치하게 한다. 다리의 Up-Vector를 설정할 때와 마찬가지로, 우측 메뉴 하단에 있는 'Immed' 버튼이 켜져 있다면 잠시 끈다. 그리고 나서 [그림21]과 같이 L_arm의 첫 번째 bone을 선택한 다음 MODEL Create Skeleton Chain Up-Vector 명령을 주고 Cube를 클릭 한다.

 

[그림21]

 

  팔의 Up-Vector가 설정되었을 것이다. Cube의 이름을 L_arm_UP 이라고 바꾼다.

 

  이렇게 만들어진 왼쪽 어깨와 팔을 Duplicate Symmetry 명령으로 오른쪽에도 복사를 해보자. L_shoulder와 L_arm_UP을 마우스 중간버튼으로 둘 다 선택한 다음 [그림22]와 같이 MODEL Create Skeleton Duplicate Symmetry 명령을 이용하여 반대편으로 복사를 한다. 그리고 나서 복사된 object들의 이름에 L_로 시작되는 부분을 조금 전과 마찬가지로 R_로 시작되게 모두 바꾼다.

 

[그림22]

 

  그런 다음 L_shoulder와 R_shoulder를 Parent 명령을 이용하여 body의 마지막 bone의 자손으로 만든다.

 

 

 

6. 이번에는 상체와 몸 전체를 제어할 수 있는 Control Object를 만들어 보자.

 

  MODEL Get Primitive Implicit Cube 명령으로 Cube를 또 하나 만든다. 크기를 적당하게 조정한 후 Cube를 body의 root에 Constrain Position 시킨다. 이것은 Cube에게 캐릭터의 중심이 되는 위치를 잡기 위한 것이므로 곧바로 [그림23]과 같이 Explorer 뷰포트에서 Constrain Position 값을 지운다.

 

[그림23]

 

  이번에는 반대로 body를 Cube에게 Constrain Position 시킨다. (body를 선택하고 우측 하단의 Constrain Position 명령을 준 다음 Cube를 클릭하면 된다.) 뿐만 아니라 body를 Cube에게 Constrain Orientation도 시킨다. 그리고 나서 Cube의 이름을 body_control 로 바꾼다. 또한 L_arm_UP과 R_arm_UP을 Parent 명령을 이용하여 body_control의 자손으로 만든다.

 

  이제 body_control을 중간 마우스로 선택하여 회전과 이동을 시켜보면 [그림24]와 같이 상체만 따로 제어할 수 있을 것이다.

 

[그림24]

 

  그리고 MODEL Get Primitive Null을 하나 만들어 control이라고 이름을 바꾼 뒤, Explorer에서 보이는 body_control과 L_leg_control, R_leg_control을 이 control(Null)의 자손으로 만든다.

  또한 MODEL Get Primitive Implicit Sphere 명령으로 Sphere를 하나 만든 다음, [그림25]와 같이 위치와 크기를 적당히 조정한 다음 Character라고 이름을 바꾼다. 그런 뒤 control(Null)과 body(Skeleton)를 Character의 자손으로 만든다. 이렇게 함으로써 Character를 마우스 중간 버튼으로 선택하면 전체 몸통을 제어할 수 있다.

  

[그림25]

 

  이상으로 Animation 'BIRD'의 주인공 캐릭터의 Skeleton Setup 1 과정에 대해서 알아보았다.

 

  캐릭터 Skeleton Setup 과정은 작업하는 사람마다 조금씩 다르다. 그리고 또 캐릭터가 Scene에서 어떤 동작을 주로 사용하느냐에 따라 Setup 방법은 달라질 수 있다. 그것은 여러 가지 방법이 존재한다는 것이고 이 작업에 있어 정확한 답은 있을 수 없다는 것이다. 그러므로 각자 자신의 환경에 맞고 주어진 여건에 맞는 캐릭터 Setup에 관한 연구가 필요하다고 할 수 있다.

 

  다음 호에서는 캐릭터 Skeleton Setup 2 과정으로서, 이번 호에서 다루지 못한 손과 손가락 Setup, 그리고 Custom Parameter를 이용하여 손가락을 제어하는 방법에 대해서 알아보도록 하겠다.

 

 

 

 


copyright 2002, anikoleez. All rights reserved.