Q. 팔꿈치에 왜 Bone을 만드는가?
A. 당연히 결과물이 이쁘게 나오게 하기 위해서이다.
사람의 팔꿈치는 뼈모양이 뾰족하게 나온다.
그러나 팔꿈치 Bone이 없으면 팔꿈치 부분이 둥글게 나온다.
그렇기 때문에 팔꿈치가 직각으로 이쁘게 접히도록 Bone을 별도로 만들어 주는 것이다.
Q. 그렇다면 왜 Base Skeleton에서 안 하고, 별도로 만드는 것인가?
A. 필수가 아니기 때문이다.
이 글을 포함하여 추가 Bone을 몇개 만들 것인데, 그것들은 모두 Additional Skeleton에 속한다.
Q. Additional Skeleton이란 무엇인가?
A. Additional Skeleton은 Base Skeleton 외에 추가 Bone들을 얘기한다.
Additional Skeleton은 필수가 아니다.
그렇기 때문에 굳이 만들어야 되는 것이 아니다.
Additional Skeleton이 없다고 리깅을 못 하는 것도 아니다.
Q. 그러면 Additional Skeleton의 역할이 대체 무엇인가?
A. 결과물이 이쁘게 나오도록 해주는 역할이다.
정확하게는 Base Skeleton의 움직임으로 인한 Mesh의 큰 변화를 방지해주는, 보조적인 장치 역할이다.
Q. 팔꿈치 Bone은 어떻게 만드는가?
A. 먼저 기존에 Biped와 Base Skeleton을 만들었던 파일과 별도의 파일로 만들것이다.
새로운 작업 파일을 만든 다음, Biped를 적당한 크기로 생성을 한다.
이는 기존의 Biped를 작업했던 것처럼 만들기 위해서이다.
Base Skeleton에 추가로 붙여지는 것이 Additional Skeleton이기 때문에 Biped는 필요하다.
새로운 작업 파일에서 적당한 크기의 Biped를 준비했다면, 사전 준비는 끝난 것이다.
본격적으로 Additional Skeleton의 팔꿈치 부분을 만들기 위해서 Point를 3개 생성한다.
Q. 왜 별도의 파일로 만드는가?
A. 필수적으로 별도의 파일로 만들어야 하는 것은 아니다.
다만, Additional Skeleton은 필수가 아니며 프로젝트 별로 쓸 수 있는 Bone이 제한적일 수도 있다.
그렇기 때문에 Additional Skeleton도 제한적으로 사용할 수 밖에 없다.
또한 매번 같은 작업을 반복하기 보다는 하나의 파일을 만들어두고 필요할 때마다 파일을 불러다가 붙여넣는 것이 편하다.
Additional Skeleton은 어떤 크기의 Biped라도 그냥 붙여넣어도 크게 수정할 것이 없어서 별도의 파일로 하나 만들면 좋다.
Additional Skeleton에 해당하는 것은 5개가 있기 때문에 총 5개의 별도의 파일을 만든 다고 생각하면 된다.
Q. Point가 무엇인가?
A. 여기서 말하는 Point는 Helper의 한 종류를 의미한다.
Q. Helper는 무엇인가?
A. Helper는 오브젝트를 도와주는 오브젝트이다.
오브젝트의 어떠한 작업을 할 때, 여러 이유로 특정 작업이 불가능 할 때가 있다.
그러면 Helper를 사용하여 해당 특정 작업을 가능하게 할 수도 있다.
Q. Helper를 정확하게 언제 사용하는가?
A. Bone에 원하는 Constraint을 적용할 수 없을 때, 원하는 Constraint을 사용하기 위해 Helper를 사용한다.
또는 계층 구조상의 한계 때문에 자기 참조 현상이 일어나거나 Local Transform을 정확하게 계산할 수 없을 때, 그 Bone의 부모 오브젝트가 되어서 계산을 도와주기 때문에 사용한다.
Q. Additional Skeleton을 만들 때, Helper를 사용하는 이유는 무엇인가?
A. Additional Skeleton 작업에서 Helper를 사용하는 주된 이유는 Merge 기능을 사용하여 Additional Skeleton을 다른 파일에 적용했을 때, Contraint가 제대로 적용되게 하기 위해서이다.
Q. Merge 기능이 무엇인가?
A. Merge 기능을 기존에 만들어 두었던 파일의 오브젝트를 새로운 파일로 불러오는 과정이다.
Q. Merge 기능은 어떻게 사용하는가?
A. 상단 Menu Tab에서 File > Import > Merge...를 하면 된다.
Q. Merge를 했을 때, Helper를 사용하지 않은 Constraint가 제대로 작동하지 않는 이유가 무엇인가?
A. Constraint의 타겟으로 Biped를 하면 Merge를 했을 때, 프로그램이 타겟이 되는 Biped를 인식하지 못하는 문제가 발생하기 때문이다.
3ds Max는 오브젝트가 생성될 때 고유한 ID도 같이 생성이 되어 ID로 구분을 하는 특성이 있다.
그렇기 때문에 오브젝트의 이름이 같아도 ID로 구분을 하여 정확한 오브젝트를 고른다.
그러나 Merge를하면 이름이 같은 오브젝트는 가져오지 않는다.
그렇게 되면 Teaget으로 설정되어 있는 오브젝트를 불러오지 않는 것이다.
아무리 이름이 같은 오브젝트가 있다하더라도 ID가 다르기 때문에 Target 오브젝트로 보지 않는다.
결론적으로 Merge를 했을 때, Constraint의 타겟이 되는 오브젝트를 찾지 못하여 World를 타겟으로 잡게되어 Constraint의 작동이 이상하게 되어 버리는 것이다.
Q. 그러면 Merge를 했을 때, 기존 타겟이 되는 오브젝트도 가져오면 되는 것이 아닌가?
A. Merge를 하면 같은 이름의 오브젝트가 있으면, 해당 오브젝트가 존재하는데 가져올 것인지를 묻는 창이 뜨게 된다.
이름이 같은 오브젝트를 가져오게 되면 Constraint도 제대로 작동하지만, 그렇게 되면 Merge를 하는 이유가 없다.
Merge를 하는 이유는 기존에 만들어 둔 Constraint가 적용된 새로운 오브젝트를 새로운 Biped에 적용하려고 하는 것인데 기존 Biped를 가져오면 결국 다를게 없기 때문이다.
Q. 오브젝트의 이름을 바꿔주면 되지 않은가?
A. 오브젝트의 종류가 같으면 의미가 없다.
Additinal Skeleton은 기본적으로 Biped를 기준으로 만들어진다.
Merge 하는 파일의 Biped 이름을 바꾸고 Merge를 하면 Biped가 2개가 생겨버리게 된다.
어차피 새로운 파일의 Biped에 Additional Skeleton을 붙여야 하기 때문에 Merge로 불려온 오브젝트의 Constraint 타겟 작업을 다시 해줘야 한다.
Q. 매번 새로운 작업에서 Additional Skeleton을 새로 만들어주면 되는 것이 아닌가?
A. 그래도 된다.
그러면 매번 귀찮게 Additonal Skeleton을 만들어 줘야겠지만, Helper를 굳이 쓰지 않고 크게 신경쓰는거 없이 만들면 된다.
하지만 한번 만들어두면 계속 쓸 수 있는데 굳이 매번 Additional Skeleton을 만드는 것만큼 시간 낭비는 없다고 생각한다.
물론, 프로젝트마다 매번 만들어줘야 할 수도 있지만 최소한 개인 작업에서 리깅 시간은 최대한으로 줄이는게 좋다.
리깅은 애니메이션을 위한 사전 작업일 뿐, 결국 결과물을 만드는 것은 애니메이션 작업이다.
그러므로 주 작업인 애니메이션 작업에 시간을 더 들이는게 맞다고 생각한다.
Q. Helper는 어디에 있는가?
A. Helper는 Create Panle > Helpers에 있다.
여러 종류가 있는데, 주로 쓰이는 것은 Dummy, Point, ExposeTm, Grid 이다.
Q. 주로 쓰이는 Helper들에 대해 간략히 설명 부탁한다.
A. Point는 특정 위치 값을 참조할 수 있도록 도와주는 오브젝트 도구이다.
그리고 Point와 Dummy는 같은 기능이라고 보면 된다.
다만, Point 사용을 지향하고 Dummy의 사용은 지양한다.
ExposeTm은 Expose Transform의 줄임말로, (Expose) 오브젝트와 (Local Reference) 오브젝트의 [위치, 회전] 값의 차이를 계산해주는 도구이다.
Grid는 말 그대로 그리드 오브젝트로서, 그리드가 없는 부분에 그리드가 필요할 때 쓰인다.
Q. 왜 Point의 사용은 지향하고, Dummy의 사용을 지양하는가?
A. Dummy가 나쁜 것은 아니지만, Point가 더 많은 기능을 보유하고 있다.
Dummy와 Point의 실질적 기능이 같다면, 더 좋은 것을 쓰는 것이 당연하다.
무엇보다 Dummy는 Link를 하고 크기 조절을 위해 Scale 조절시 Link 된 오브젝트가 변형되지만, Point는 Modify Panel에 있는 Parameter Rollout의 크기를 조절하는 옵션이 있어서 해당 옵션으로 크기를 조절하면 Link 된 오브젝트가 변형되지 않는다.
또한 Dummy는 Box형태 뿐이지만, Point는 Box 형태 뿐만 아니라 다른 형태로 표시도 가능하기 때문에 여러개의 Point를 사용해도 모양으로 구분을 할 수도 있다.
이러한 이점이 있기 때문에 Dummy보다는 Point를 사용하기를 권장하는 것이다.
Q. 다시 본론으로 돌아가서, Point를 3개 생성하라는 이유가 무엇인가? 왜 3개가 필요한가?
A. 이 작업에서 Point는 Merge를 해도 문제가 되지 않는, Biped의 Pivot 정보를 참조하기 위한 도구로 사용된다.
팔꿈치는 윗팔과 아랫팔의 중간 각도에 위치한다.
그러므로 일단 윗팔과 아랫팔의 Pivot 정보를 참조하기 위한 2개의 Point가 필요하다.
그 다음으로 윗팔과 아랫팔 Pivot 정보를 참조하기 위해 생성한 2개의 Point와 팔꿈치 Bone을 연결시켜주는 Point가 하나 필요하다.
Q. 팔꿈치 Bone을 그냥 윗팔과 아랫팔 Point에 연결시키면 안 되는 것인가?
A. 팔꿈치 Bone은 윗팔과 아랫팔에 (팔꿈치 방향으로)수직으로 위치해야 한다.
그래서 아랫팔과 정렬을 시킨 후 90도를 회전시켜준다.
하지만 Oreientation Constraint를 적용시키면 다시 회전이 틀어지게 된다.
Keep Initial Offset을 활성화하면 원래 위치로 돌아가긴 하지만, 타겟의 Weight 값을 조절하면 Keep Initial Offset으로 되돌려놓았던 회전 값이 다시 조금씩 틀어지게 되므로 Keep Initial Offset은 사용하지 않는것이 좋다.
그러므로 팔꿈치 Bone의 각도를 유지하며, Orientation Constraint를 적용하기 위해서 Point를 사용하는 것이다.
Q. Point 3개를 생성하고 나면 무엇을 하는가?
A. 팔꿈치 Bone과 Point 3개를 생성했으면, 더이상 생성해야 하는 것은 없다.
이제는 정렬과 연결을 하면 된다.
Q. 정렬과 연결을 어떻게 하는가?
A. 먼저 Point 2개를 같은 모양으로하고, 나머지 1개는 다른 모양으로 한다.
모양을 다르게 하는 이유는 용도가 다르기 때문에 구분을 위해서이다.
모양이 같은 2개는 윗팔과 아랫팔에 각각 정렬시킨다.
그리고 윗팔에 정렬시킨 Point에 Position Constraint를 적용하고, 아랫팔에 정렬시킨 Point를 타겟으로 지정한다.
이렇게 하면 윗팔에 정렬시킨 Point와 아랫팔에 정렬시킨 Point의 위치가 같아진다. (회전 값은 달라서 구분된다)
위치를 같게 만드는 것은 같은 용도의 Point끼리 모아두는 것이 관리하기 좋기 때문이다.
그리고 각 Point를 윗팔과 아랫팔 Biped에 알맞게 Link 시킨다.
그러면 윗팔과 아랫팔 Point의 작업은 끝이다.
이제 모양이 다른 Point를 아랫팔에 정렬시킨다.
다음으로 모양이 다른 Point에 Orientation Constraint를 적용시키고 윗팔과 아랫팔 Point를 타겟으로 지정한다.
타겟으로 지정한 두 Point의 Weight 값은 각 50으로 설정한다.
더하여 윗팔에 정렬시켰던 Point에 Link를 한다.
Link를 함으로써 팔을 돌렸을 때 알맞게 팔의 회전을 따라 돌아가게 된다.
마지막으로 팔꿈치 Bone의 Pivot을 아랫팔의 Pivot으로 정렬하고, (팔꿈치 방향으로)90도 돌려준 다음에 모양이 다른 Point에 Link를 한다.
Q. 위에처럼 하면 Merge를 했을 때, 적용이 잘 되는가?
A. 잘된다.
Merge를 하면 메세지 창이 세번 뜰 것이다.
첫번째 뜨는 창은 Merge 파일에서 오브젝트를 어느것을 가져올지를 결정하는 것이다.
그냥 간단하게 All 버튼을 눌러서 모두 가져오면 된다.
그러면 창이 또 뜬다.
두번째 뜨는 창은 이름이 같은 오브젝트가 있는데, 어떻게 할 것인지를 묻는 것이다.
Applt to All Duplicates를 체크하고 Skip버튼을 눌러준다.
그렇게 하면 이름이 같은 오브젝트들은 모두 가져오지 않는다고 설정을 한 것이다.
그다음 마지막으로 창이 하나 더 뜬다.
마지막 창은 Link로 연결해준 오브젝트에 기존 부모 오브젝트는 없지만, 이름이 같은 오브젝트가 존재하는데 해당 오브젝트를 부모 오브젝트로 설정할 것인가를 묻는 것이다.
Yes To All을 눌러줘야 문제없이 작동한다.
여기서 No/No To All을 눌러주면 기존에 설정해뒀던 Link가 사라지게 되므로, 하나씩 다시 Link 해줘야 한다.
위처럼 설정을 해주면 드디어 Merge가 완벽하게 된 것이다.
오류나는 것 없이 기존에 만들어두었던 대로 작동이 원활하게 될 것이다.
Q. 끝인가?
A. 한쪽만 작업하지 말고 양쪽 다 작업을 해줘야 한다.
똑같은 방법으로 반대편에 작업을 하면 되기 때문에 설명할 것도 없다.
양쪽 다 작업을 끝냈다면, 실질적인 작업은 끝이긴 하다.
작동에 문제가 없다면 말이다.
하지만 언제나처럼 레이어 정리를 해줘야 한다.
오브젝트의 이름을 명명법을 참고하여 알맞게 바꿔주고, Layer를 하나 생성해서 넣어주면 된다.
Layer의 이름은 Additional Skeleton이 아닌 부위의 이름을 넣어주면 된다.
왜냐하면 Merge를 했을 때, 해당 Layer를 다시 Additional Skeleton 레이어에 넣어줄 것이기 때문이다.
지금 작업에서는 Elbow라는 이름을 적어주면 무난할 것 같다.
Q. Layer도 Merge가 되는가?
A. 그렇다.
그렇기 때문에 Layer 정리까지 해주는 것이다.
Q. 추가로 할 말이 있는가?
A. 딱히 할 말은 없다.
굳이 할 말을 찾자면, 프로젝트별로 최적화 문제 등으로 Bone의 사용이 제한적일 것이다.
하지만 개인 작업에서는 아낌없이 쓰기를 바란다.
Additional Skeleton이 5개가 있는데, 모두 사용을 한다면 결과물은 훨씬 이뻐질 것이다.
댓글