FK(Forward Kinematic)와 IK(Inverse Kinematic)
Forwad Kinematic(정운동학)
- 부모가 움직이면 연결된 자식도 따라 움직인다
Inverse Kinematic(역운동학)
- 자식이 움직이면 부모가 함께 움직인다. 부모가 움직여도 자식은 영향을 받지 않는다.(ex. 마리오네트인형)
- 애니메이션 작업을 할때 자주 사용한다.
- 아바타 에는 사용할 수 없다.
버추얼 프로그램 자체에서 일부를 알아서 IK처리를 하는것이 대부분이다.
IK 설정법
뼈를 하나 더 추가해준 다음 이름을 IK_Controller로 설정
IK_Controller와 제일 아래에 있는 bone을 선택후, ctrl + P > Keep Offset클릭
그다음, Pose Mode로 가서 IK_Controller와 바로 아래에 있는 뼈 선택, ctrl+ shift + C 한 다음 Inverse Kinematics선택


파란 뼈모양 버튼을 누른 후, Target과 Bone을 다음과 같이 설정해준다.(Bone.005가 IK_Controller)
여기서 Chain Length는 움직이는 범위가 어디까지 영향을 미칠 것인지 정해주는 항목이다.
값이 높을수록 해당하는 bone에서 chain length만큼 연결된 뼈만 같이 움직인다. (0은 무한대)
Twist Bone
Bone을 회전시킬때 제한된 bone을 가지고는 Weight를 잘 칠해도 오브젝트가 꼬여서 움푹 들어가는 현상을 막을 수가 없다.
이를 해결하기 위해 고안된 bone이다.
문제의 bone을 복사해준 후, 이름을 twist로 바꿔준다. Vertex그룹에 twist bone의 vertex 그룹 이름을 bone이름과 동일하게 만들어준다.(ex. 본이름 twist -> vertex group 이름 twist)
꼬임이 덜해지도록 Weight를 칠해서 보완을 해준다.(twist본의 루트는 0.5, 각각 위아래쪽에 0.25)
twist bone의 weight를 칠할때는 bone의 루트나 상위 bone을 중심으로 해서 칠한다.
twist bone의 bone constraint에 copy rotation을 추가한후, target을 뼈의 전체인 Amature로 설정, Bone항목을 메인으로 돌려줄 뼈로 지정해주고 Axis를 돌려줄 방향만 활성화시켜준다. 그다음 Influence를 0.5정도로 두면 bone이 돌아갈때 twist bone이 절반만큼 함께 돌아간다.
돌려줄 bone을 z방향으로 회전시킨 후, twist bone을 회전시켜 오브젝트의 위쪽을 살짝 함께 돌려주어 꼬임을 덜하게 해주는 원리이다.
VRM Humanoid 뼈 만들기
1) 가장먼저 Shift + A -> Amature -> Single Bone을 클릭하여 몸의 중심이 될 뼈를 하나 만들어주고 이름을 Hips로 지정해준다.
그 다음, Hips Bone의 뿌리 위치를 아바타의 Hip쪽에 위치하게 해준다.
2) Hips본의 끄트머리에서 extrude를 하여 새 뼈를 만들어주고, 이름을 Spine으로 지정, Bone의 끝이 아바타의 허리쯤에 위치하도록 해준다. 뼈가 몸의 중심에 있다는것과 뼈의 시작점을 중심으로 mash가 움직인다는 점을 의식하며 위치를 잡아준다. Relations의 Connected 항목을 체크해제하여 위치를 잘 잡아준다. 같은방법으로 Chest Bone역시 만들어준다.
3) Chest Bone의 끝에서 Extrude, Breast Bone을 만들어준다. Connected를 해제해주고 Bone의 루트를 가슴이 시작되는 부분, 끝을 가슴 끝트머리에에 위치하게 해준다. 그 다음, 그 끝에서 extrude를하여 가슴 위쪽 Bone역시 만들어준다. 뼈가 움직이는 xyz축은 Bone의 면에 의해 결정되므로 회전을 통해 적절하게 돌려준다. 그 다음 뼈의 이름을 명명해주는데, 팔, 다리, 가슴과 같은 부위는 좌우가 나뉘므로 각각 Breast_L, Breast1_L로 명명하여 좌우를 구별해준다.
4)Chest에서 extrude, Shoulder_L Bone을 만들어주고 거기서 또 Extrude하여 UpperArm_L, LowerArm_L, Hand_L bone을 순서대로 만들어준다. 그 다음, Hand Bone을 복사하여 각각 손가락에도 Bone을 만들어준다.
5) 팔을 만들어준 방법과 동일하게 다리를 만들어준다. 다리는 Hip bone의 끄트머리에서 exturde, connect 해제하여 원하는 위치에 놓는다. 발가락은 손가락과 다르게 전체를 뭉뚱그려서 하나의 bone만 생성해준다. 다 생성된 본을 A를 눌러 전체선택후 우클릭 > Synmetrize를 하여 오른쪽 뼈도 만들어준다.
6)이제 Mash를 클릭, 뼈를 Shift + 클릭으로 선택해준 다음, Ctrl+P하여 AmatureDeform -> With Automacit Weights를 하여 몸과 뼈를 연결해준 다음 Weight Paint를 해서 자연스러운 리깅을 완성해주면 끝!
리깅을 위한 브러쉬 세팅
웨이트는 0.1 이하로 낮게 설정하고 Blend 타입은 Add로 바꾸어준다.
그 다음 오른쪽 Tool에서 Front Faces Only 체크 해제, Symmetry항목의 Mirror Vertex Group과 X Mirror를 활성화. Falloff Shape를 Projected로 바꿔준다.
Data Transfer Modifier
속옷같은 경우는 바디매쉬의 웨이트값을 가져와서 수정해서 사용하면 편하다.
Data Transfer 모디파이어를 이용하면 쉽게 웨이트 값을 가져올 수 있다.
Source 는 Body를 선택해주고 Generate Data Layer를 하면 매쉬에 버텍스 그룹이 자동생성된다. 바디와 가까운 버텍스 그룹만 생성하려면 Vertex Data에서 VertexGroup 세팅을 Nearest Vertex로 설정해준 다음 데이터 레이어를 생성하면 된다.
'공부 > Blender' 카테고리의 다른 글
2025/04/16 버추얼 아바타 제작 공부(Cloth Simulation 및 Sculpting) (0) | 2025.04.25 |
---|---|
2025/03/18 버추얼 아바타 제작 공부(헤어) (0) | 2025.03.18 |
2025/03/02 버추얼 아바타 제작 공부(헤드제작) (0) | 2025.03.02 |
2025/02/20 버추얼 아바타 제작 공부(바디 모델링 다듬기 및 UV맵 작업) (0) | 2025.02.20 |
2025/02/05 버추얼 아바타 제작 공부(손, 발 모델링) (0) | 2025.02.05 |