Rigging note.
/* Materials di rangkum dari Fahrenheit Digital Rigging for Feature Animation */
For personal understanding & reminder :)
FK_IK Arm
A.Main Arm Rigging.
* FK joints, IK joints and "jnt" joints(will be driven by FK & IK arm joints)
Create IK joints
- Edge loop dari tangan, kemudian kasi cluster. (agar point berada di titik tengah dari selection)
- buat cv curve, dari cluster shoulder ke cluster wrist, tegak lurus ( by holding shift)
- buat 4 joints, 2 di elbow, tegak lurus dengan curve (hold c)
- set local rotation axis.
- rename the joint: char_l_arm01_ik - char_l_arm04ik_end
- buat locator, snap ke joint pertama, tarik ke belakang (z), rename char_l_armPoleVec01_loc
- set preferred angle.
- set ikHandle - flipped, not big deal. rename : char_l_arm01_ikh, rename effector : _eff
- buat locator, snap ke joint 1, parent joint1, polevector dan ikhandle ke locator itu.
- select wrist cluster, kmdn locator1, aim constraint.
- delete aim constraintnya.(karena tujuannya hanya utk menyesuaikan lokasi dari cluster.)
- dengan menggunakan locator1, kita bisa rotate utk menentukan arah dari elbow.
- karena joint pertama masi flipped rotasinya, bisa diatasi dengan menyeleksi poleVec locator dan ikHandle, lalu poleVector constraint.
- select joint ke tiga, dan ikHandle, kemudian orient constraint, lalu buang orient constraint (akan ada cycle warning), hal ini dilakukan agar local axis mengikuti joint.
Create FK and Jnt joints
- select Ik joint pertama, duplicate 2 kali, parent ke world.
- buang effector node, rename : a) ik -> fk b) ik -> jnt
- ganti rotation order (utk non IK joints) dari xyz ke yzx.
B.Stretcy IK explanation.
*How the 'scaling' works
- A = joint1
- B = joint2
- C = IkHandle distance
if C => (A+B) then scale = 1
if C < (A+B) then scale = (C)/(A+B)
C.Stretchy IK arms.
*create components and nodes to allow stretch.
- ukur distance dengan menggunakan distance tool. Klik 2 kali di viewport.
- rename locator. rename : char_l_armLen01_loc
- rename distance node, rename : char_l_armLen01_dis
- point constraint locator1 dengan first ikJoint.
- point constraint locator2 dengan ikhandle.
- createNode multiplyDivide -n char_l_armLen01_mdn;
- ganti ke divide.
- connect distance ke input1x
- buka MD node di channel box, isikan input2x sama dengan input1x
- createNode condition -n char_l_armLen01_cnd;
- Di attr editor, ganti ke greater than.
- connect distance ke first term.
- di second term, nilainya kasi sama dengan first term
- connect outputx dari md ke color true R
- connect outcolor R ke scaleX dari setiap ikArm joints.