트위스트 디포메이션(Twist Deformation)에 대한 이해
세상에 존재하는 모든 생명체는 기본적으로 비틀림(Twist) 움직임을 가지고 있습니다. 허리를 좌우로 돌릴 때도 그렇고, 목을 좌우로 돌릴 때도 그렇습니다. 손목을 비틀어보면 팔꿈치 아래로부터 손목까지 비틀어지면서 회전하는 것을 알 수 있죠.
이러한 비틀림을 표현하기 위하여, 오토데스크 마야(Autodesk Maya)는 스플라인 IK(Spline IK) 기능에 어드밴스드 트위스트(Advanced Twist)라는 솔루션을 제공하고 있죠. 이것은 스플라인 IK를 적용한 조인트 체인(Joint Chain) 전체를 비틀어지게 할 수 있습니다.
하지만 어드밴스드 트위스트에는 몇 가지 약점이 존재하는데요. 첫 번째로는 조인트의 회전이 일정 각도 이상을 넘어갈 경우 축을 잃어버리는 문제가 발생한다는 것입니다. 이것은 마야 IK 시스템의 특성상 나타나는 문제 중 하나입니다.
또 한 가지는, 시작점과 끝점만을 기준으로 사용할 수 있기 때문에, 전체적인 비틀어짐만 가능할 뿐 조인트체인의 중간 부분을 별도로 비틀어지게 할 수는 없다는 문제점이 있습니다. 크리처(Creature) 캐릭터 등등의 꼬리, 촉수 같은 특정한 유기체의 경우, 중간 부분이 별도로 비틀어질 수 있도록 세팅되어야 합니다. 스플라인 IK는 이것이 불가능하지요.
그래서 오래된 마야 유저들은 이 부분을 해결하기 위해 오랜 시간을 고심하였고, 그 결과로 지금은 대중적으로 쓰이고 있는 리본(Ribbon)이라는 기술이 개발되기에 이릅니다. 마야의 확장성을 이용한 멋진 해결책이라고 할 수 있지요. 이 방법을 처음 고안한 분이 누군지는 모르나, 상 줘야 한다고 생각합니다.
리본(Ribbon)이란 무엇인가?
넙스 서피스(Nurbs Surface), 혹은 폴리곤 서피스(Polygon Surface) 표면에 붙어있는 객체를 생성하고, 이 객체에 컨트롤러와 조인트를 컨스트레인(Constraint)으로 붙여 사용하는 방법을 말합니다. 이때 사용하는 서피스를 통상적으로 리본(Ribbon)이라고 부릅니다. 서피스는 별도의 조인트로 컨트롤합니다. 이 방법을 사용하면 아래와 같은 컨트롤이 가능해집니다.
아래에서 순차적으로 설명하겠습니다.
1. 비틀림을 표현할 객체의 크기만큼의 폴리곤 서피스를 생성합니다.
저는 개인적으로 넙스보다는 폴리곤 서피스를 선호합니다. 서피스의 길이는 객체와 비슷하게, 폭은 크게 상관없습니다만 객체와 비슷하게 만들어 줍니다.
에지(Edge)는 비틀림을 표현할 컨트롤러가 설치될 개수만큼 만들어 줍니다. 여기서는 중간 부분에 3개를 만들겠습니다. 중간 부분에 에지 3개면 서브디비전(Subdivision)은 4입니다. Subdivision Width에 4를 입력하여 아래와 같이 만들겠습니다.
리본은 항상 Create 메뉴에서 Plane 명령으로 만들어 주시기 바랍니다. 이유는 나중에 설명합니다.
주의할 점 : 서피스 생성 시에는 width와 height 값은 기본값 1로 그대로 두고, 위치와 크기는 서피스를 직접 움직여서 맞추어야 합니다. 또한, 서피스가 생성이 완료되면 Delete by Type > History 명령을 사용하여 히스토리를 반드시 삭제합니다.
2. 서피스의 에지(Edge)에 붙어있는 객체를 만들어 줍니다.
서피스의 에지를 항상 따라다니는 객체를 만들겠습니다. 이것은 몇 가지 방법이 있는데, 여기서는 가장 대중적으로 사용되는 폴리클(Follicle, 모낭)이라는 것을 사용하겠습니다.
폴리클이란, 마야에서 머리카락이나 털을 만들 때 사용하는 N헤어(N Hair) 기능이 헤어의 시작 위치점을 설정할 때 사용하는 객체로, 여기서는 헤어는 사용하지 않고 폴리클만을 남길 것입니다.
리본을 선택한 상태에서 FX > nHair > Create Hair의 옵션박스로 들어갑니다.
U Count에 현재 가로방향으로 생성되어 있는 총 에지의 수를 입력합니다. suvdivision width가 4였으므로 에지의 수는 총 5개입니다. 에지의 수와 다르게 입력할 경우 에지 위에 헤어가 생성되지 않으니 주의하시기 바랍니다.
V Count 에는 1을 입력합니다. 나머지 옵션은 그대로 두고, Edge bounded 옵션을 체크해 주시기 바랍니다. 이것이 켜져 있어야 에지 위치에 헤어가 생성됩니다.
이와 같이 에지 위에 헤어가 생성됩니다. 이제 필요 없는 것들은 삭제하고 에지에 붙어있는 폴리클만 남겨두도록 하겠습니다.
Outliner에서 위 그림과 같이 헤어와 관련된 노드들을 hairSystem1Follcles 만 남기고 모두 선택, Delete 키를 눌러 삭제합니다.
서피스 위의 붉은색 객체가 위에서 설명한 폴리클(Follicle)입니다. 이것은 서피스에 어떤 변형이 가해지든 서피스 표면에 그대로 붙어있게 됩니다. 중간 부분 3개만 사용하기로 하였으므로, 첫 번째와 마지막 폴리클은 삭제합니다. 어차피 삭제할 것인데 굳이 5개를 만든 이유는 처음에 총 에지 수만큼 헤어를 만들지 않으면 헤어가 에지 위에 생성되지 않기 때문입니다.
3. 시작점과 끝점을 컨트롤할 컨트롤러를 설치합니다.
리본을 전체적으로 컨트롤할 시작점과 끝점 컨트롤러를 설치합니다. 우선 <그룹-컨트롤러-그룹-조인트>로 구성된 컨트롤 그룹을 생성하고 왼쪽 끝 에지에 배치합니다. 그리고 이 그룹을 복사하여 오른쪽 끝 에지에 배치합니다. 컨트롤러와 컨트롤 그룹의 이름은 아래 그림과 같이 설정합니다.
이제 all_jnt1과 all_jnt2에 리본을 스킨 바인딩합니다. 그리고 컨트롤러를 비틀어 움직여 보겠습니다.
리본이 비틀어지면서 폴리클이 함께 움직이는 것을 볼 수 있습니다.
이제 컨트롤러를 원위치시키고, 폴리클 위에 컨트롤러를 배치합니다. 컨트롤러의 구성은 그룹-컨트롤러-조인트입니다. 컨트롤 그룹의 이름은 아래 그림처럼 설정합니다. 그리고 각 그룹을 해당 위치의 폴리클에 페어런트 컨스트레인을 걸어줍니다.
끝단 컨트롤러를 움직여서 중간의 컨트롤러들이 잘 따라오는지 확인합니다.
컨트롤러를 원위치시키고, 스킨이 적용될 오브젝트를 씬 안에 존재하는 5개의 조인트 모두에 바인딩합니다.
시작과 끝 부분의 컨트롤러를 비틀어 회전해 봅니다.
중간 부분의 컨트롤러 역시 비틀어 회전하여 봅니다.
이와 같이 리본 컨트롤이 완성되었습니다. 미비한 부분은 리본의 스킨 웨이트 값을 조정하면 더욱 정교한 애니메이션을 구현할 수 있으며, 허리, 팔, 다리나 꼬리, 촉수 등등의 애니메이션 등에서 다양하게 응용할 수 있는 방법이며 응용에 따라 적용 범위 역시 굉장히 넓어지는 장점이 많은 방법입니다.
여기서는 기본적인 세팅 방법을 알아보았습니다. 다음번에 더욱 디테일한 응용 방법을 알아볼게요!
'오토데스크 마야 꿀팁' 카테고리의 다른 글
리깅 show reel (0) | 2023.01.30 |
---|---|
3D 애니메이션 프로그램의 종류와 특징 (0) | 2023.01.19 |
댓글