SCRIPTSecondary Montion을 쉽게 만들어주는 Character Swing Rigging Script

motionlab
조회수 228

흔들리는 것들은 모두 나에게 오라. Character Motion 작업을 하다 보면, 부수적으로 Character의 Motion에 맞춰서 흔들리는 애니메이션을 할 것들이 상당히 많습니다. 예를 들어, 할아버지가 움직일 때, 긴 수염이 같이 움직이거나 머리가 긴 여성이 움직일 때, 머리카락이 같이 움직이는 것들을 말합니다. 그 외에도 바람에 흔들리는 나뭇잎이나 나뭇가지들이 있습니다. 이러한 것들을 좀 더 편하고, 사실적으로 표현하기 위해서는 많은 키프레임 애니메이션이 필요합니다. 이러한 작업들을 좀 더 손쉽게 만들어 줄 수 있는 Character Swing Rigging Script를 소개해드리겠습니다.


1. Character Swing Rigging


01. Motion에 있어서 Secondary Motion은 중요합니다. 움직임을 좀 더 사실적이게 보여주며, 행위나 상황을 강조할 수 있는 중요한 요소 중 하나입니다. https://www.youtube.com/watch?v=MjBHWw1TbP4에 들어가면, 애니메이션 12원칙에서 이 부분을 설명하는 것을 확인할 수 있습니다. 인터페이스는 생각보다 심플합니다.



02. 간단하게 Shape Layer를 4개 정도 만들어서 그림처럼 배치했습니다. 맨 위의 Layer를 기준으로 삼아서 움직일 때, 아래에 있는 Layer들이 흔들리는 애니메이션을 만들어보려고 합니다.



03. 먼저, 체크해야 할 것이 있습니다. 표시된 부분은 선택한 Layer들을 마치 Chain처럼 연결시켜주는 기능을 합니다. 여기에서 중요한 것은 타임라인 상에 있는 Layer들을 선택할 때의 순서입니다. 맨 먼저 메인이 되는 Layer를 선택한 다음에 연결될 순서대로 선택을 해줘야 합니다.



04. 그 다음에 표시된 버튼을 누릅니다. 이 버튼은 선택된 Layer에 전부 Character Swing을 적용합니다. 좀 더 쉽게 설명하자면, 선택한 Layer들의 Rotation에 Expression을 적용시켜줍니다.



05. 모든 적용이 끝났습니다. 정말 간단합니다. 타임라인 윈도우를 확인해보면, 적용된 후에 Layer들의 이름이 약간 바뀌었습니다. 맨 처음에 선택한 Layer가 Driver이며, 그 밑에 있는 Layer들이 Chain이 되었습니다. Parent 부분을 보면, 어떤 방식으로 연결되었는지를 확인할 수 있습니다.



06. 이제 Driver Layer를 포지션 애니메이션해보겠습니다. 다른 Layer들은 Parent로 연결되어 있어서 당연히 따라옵니다. 왼쪽에서 오른쪽으로 이동하는 1초짜리 애니메이션을 만들어보겠습니다. 그런데, 다른 Layer들의 움직임이 전혀 없을 것입니다.



07. Driver Layer를 선택하고, 이펙트 컨트롤창을 보면, 여러 이펙트들을 확인할 수 있습니다. 여기에서 Chain으로 연결된 다른 Layer들의 움직임들도 모두 조절할 수 있습니다. 이제 맨 위에 있는 Enable Swing 값을 10%로 입력합니다. 이 부분을 조절해줘야만 연결된 다른 Layer들의 움직임을 볼 수 있습니다.



08. 애니메이션을 확인해보면, 연결된 Layer들이 자동으로 흔들리는 것을 볼 수 있습니다. 간단한 몇 가지 조작만으로 자연스러운 Secondary Motion을 만들 수 있습니다.




2. Wind


01. 이 Script의 장점 중의 하나가 바로 Wind입니다. 별다른 기본 속성값의 애니메이션이 없어도 바람의 설정에 따라서 흔들리는 애니메이션을 만들 수 있기 때문입니다. 일단, 상단의 Enable Wind를 체크합니다. 그런 다음, Wind-Global Generator 안에 있는 옵션들을 확인합니다. 옵션을 보면, 우리가 Wiggle Expression에서 자주 보았던 Freq_프리퀀시와 Amp_앰플리튜트가 있습니다. Freq는 진동수, Amp는 진폭, Max 및 Min Power는 바람의 힘을 말하는 것입니다. 이 옵션들을 조절해 보면서 움직임의 차이를 확인하기 바랍니다.



02. Driver Layer의 포지션 키프레임을 없앤 다음에 Layer를 그대로 놔두고, 애니메이션을 시켜 보기 바랍니다. 가만히 있는 Layer가 마치 바람에 흔들리는 것 같은 애니메이션을 볼 수 있습니다.



03. 앞서 작업한 것들은 각 Layer들의 중심축을 제대로 설정하지 않고 작업한 것입니다. Layer의 중앙에 위치시키고 작업한 것이라서 자세히 보면, 각 Layer들이 회전할 때, 어색해 보입니다.



04. 오브제가 회전할 때, 중요한 것은 바로 중심축입니다. 그래서 중심축을 다시 잡겠습니다. Layer들을 모두 선택한 다음, Character Swing Rigging Script의 오른쪽에 있는 중심축 이동 버튼을 눌러주면 됩니다. 이런 방식의 중심축 이동은 Motion2, Motion Tool2 Script에도 있습니다. 이제 제대로 된 형태가 나왔습니다. 항상 어떤 식으로 회전을 할 것인지를 생각해서 중심축의 위치를 설정해줘야 합니다.



05. Character Swing Rigging Script는 중심축을 잡는 방법이 약간 다릅니다. 그냥 버튼을 누르면, Layer가 아닌 Composition Window 전체를 하나의 오브제로 인식하고, 중심축을 잡아줍니다.



06. 선택한 Layer에 중심축을 설정하려면, 그림처럼 오른쪽 상단의 별 모양의 아이콘을 클릭해서 켜주면 됩니다.



07. 별 모양 아이콘의 옆에 있는 버튼은 Layer에 Mask가 추가되었을 때, 사용하는 버튼입니다. 하나의 박스를 그린 다음, Mask를 3개 만들었습니다. 이런 경우에 사용하는 버튼입니다. 중심을 선택하는 기준은 노란색으로 표시한 것처럼 각 Mask의 크기들을 종합하여 결정합니다.



3. Target 애니메이션


01. 이번에는 움직임을 더 재미있게 만들 수 있는 Target 애니메이션을 알아보겠습니다. 앞서 만든 회색 Layer들은 그대로 놔둔 채로 빨간색 공을 움직여서 애니메이션을 만들어보겠습니다. Driver Layer의 이펙트 컨트롤 창을 보겠습니다. 3번째 옵션을 보면, Target Position이라는 것이 있습니다. 팝업 메뉴에서 새로 만든 빨간색 공의 Layer를 선택합니다.



02. 이제 빨간색 공의 Layer를 애니메이션시킵니다. 1초 동안 왼쪽에서 오른쪽으로 이동시켜보겠습니다. 빨간 공이 애니메이션되는 것에 따라서 회색 Chain들이 흔들리는 애니메이션을 볼 수 있습니다. 이처럼 자신이 스스로 움직이지 않아도 다른 Layer의 움직임에 따라서 흔들리는 애니메이션도 만들 수 있습니다.



03. 이번에 2가지 모두 애니메이션을 시켜보겠습니다. 대신에 빨간 공의 Layer 움직임의 키프레임 폭을 그림처럼 줄여보겠습니다. 이렇게 설정하면, 회색 Chain들이 애니메이션되는 중간 부분에 빨간 공의 Layer가 빠르게 움직이기 때문에, 회색 Chain이 움직이는 속도도 따라서 빨라지게 됩니다. 물론, 현재 Target Position Layer는 빨간 공입니다.



04. 애니메이션을 시켜보면, Chain들이 움직이는 도중에 흔들림이 더 커지는 것을 볼 수 있습니다.



05. Swing-Global Settings에 있는 Amp는 움직이는 폭을 조절합니다. 수치 값을 조절해서 움직임의 차이를 느껴 보기 바랍니다.



06. Overshoot은 말 그대로 정해진 움직임에서 벗어나는 것을 뜻합니다.



07. Movement Clamp는 움직임의 제한을 두는 것을 말합니다. 기본 값은 왼쪽 -90, 오른쪽 90도입니다. 이 값을 조절해보면서 확인해보기 바랍니다. 값을 360으로 설정하면, 움직이다가 완전히 360도로 Driver Layer가 회전하는 것도 볼 수 있습니다.



4. Child 셋팅


01. Enable Wind를 체크한 다음, Wind에 관한 옵션들을 조절해 움직임을 확인해보기 바랍니다. Swing-Global Settings에 있는 Wind Settings / Weight는 움직임을 둔하게 만들어줍니다. 이 값을 올려주면, 움직임이 상당히 둔해지게 됩니다.



02. Driver Layer에 연결된 하위 Layer들은 모두 셋팅 관련 이펙트들이 있습니다. 이것들을 한 번에 조절하는 것이 바로 Swing-Global Child Settings입니다. 만약, 각각의 Layer들을 독립적으로 움직이게 하고 싶으면, 각각의 Layer를 선택한 다음에 이펙트 컨트롤에서 조절하면 됩니다.



03. 작업한 것들을 원상태로 만들려면, Layer들을 선택한 다음에 휴지통 모양의 아이콘을 클릭하면 됩니다. 적용된 Expression들이 깔끔하게 사라지는 것을 확인할 수 있습니다.




5. Null Controller


01. 이번에는 그림처럼 2개 파트를 만들었습니다. 이것들을 하나의 컨트롤로 조절해보겠습니다. Wind Control Layer를 만드는 버튼이 바로 빨간색 박스에 있는 버튼입니다. 클릭하여 이 부분이 빨간색으로 바뀌면 체크가 된 것입니다. 정사각형이 움직이는 모양의 아이콘인데, 이 부분을 클릭하면, 빨간색으로 아이콘이 바뀝니다. 이렇게 해 놓은 상태에서 한 그룹의 Layer들을 선택한 다음, 노란색 버튼을 눌러서 Character Swing Rigging을 만들어줍니다. 그러면, Null Layer가 하나 생겨난 것을 볼 수 있습니다.


02. 이번에는 같은 방법으로 오른쪽에 있는 Layer들을 선택해 똑같은 방법으로 Character Swing Rigging을 시켜줍니다.



03. 이렇게 하면, Null Layer는 하나이며, 왼쪽과 오른쪽에 있는 Layer들을 모두 하나의 Null Layer Wind 셋팅 값에 영향을 받게 됩니다.



04. Character Swing Rigging의 UI는 잘 봐야 합니다. 클릭해서 빨간색으로 아이콘이 바뀌었다면, 현재 이 기능들이 마치 체크가 된 것과 같다고 보면 됩니다. 버튼 형태가 아니라, 체크박스 형태로 만들었다면, 더 좋았을 것 같다는 생각이 듭니다.



6. Puppet 애니메이션


01. 이번에는 Puppet으로 애니메이션을 하는 방법을 알아보겠습니다. 펜 툴을 이용해서 풀잎 같은 모양으로 Shape Layer를 하나 만들었습니다.



02. Puppet 툴을 이용하여 4개의 Puppet을 만들었습니다. 각 Puppet들이 연결되어야 하므로, Chain 기능을 켜 놓은 상태에서 마치 Puppet의 압정처럼 생긴 버튼을 클릭합니다. 그러면, 곧바로 경고창이 나옵니다. 경고창의 내용은 Footage Layer에만 적용이 된다는 것입니다. Footage Layer가 무엇인지 모르는 분도 있을 겁니다. 이는 After Effects로 Layer를 불러들일 때, Footage로 설정하고 불러들이는 것과 같은 개념이라고 생각하면 됩니다.



03. 이 문제를 해결하려면, Pre Comp로 만들어주면 됩니다. Pre Comp로 만들어 주고 Puppet을 찍어줍니다. 그런 다음에 Character Swing Rigging Script에 있는 Puppet 버튼을 클릭합니다.



04. Puppet을 찍은 위치에 Null 오브젝트가 생겨났습니다. Puppet에 Expression이 적용되어 Null과 연결된 것입니다.



05. 맨 처음에 찍었던 Puppet, 즉 기준이 되는 Puppet과 연결된 Null Layer를 선택하여 이펙트 컨트롤 창을 확인해보기 바랍니다. 앞서 설명드렸던 것과 같은 원리로 이펙트 창에서 설정하면 됩니다. Wind만 체크하고, Wind와 관련된 옵션들을 조절하면, 바람에 흔들리는 것 같은 애니메이션을 만들 수 있습니다.



기본적인 기능 설명을 드렸습니다. Face Rigging이나 Fake 3D 작업 시에도 많이 사용되며, Secondary Motion 작업에 상당히 유용한 Script입니다. 재미난 응용들을 고민해보기 바랍니다.


ⓒ Since 2004


SERVICE

02-517-0985
Mon - Fri AM 10:00 - 21:00
Red-Day Off

BANK

Shinhan BANK 110-362-296920
Motionlab.

ARTWORKS

Seoul, Korea  ㅣ  사업자등록번호 : 211-90-90651   상호명 : 모션랩학원    대표자 : 이병현   개인정보관리 : 김진희   ㅣ  10-11, Sapyeong-daero 55-gil, Seocho-gu, Seoul, Republic of Korea  통신판매신고번호 : 제 2020-서울서초-4008호