タグ: 左右対称

  • blender : objectにarmatureをweightして,主要なboneにIK constraintを設定したあと,左右のboneをsynmetryする [2026/06/02]

    blender : objectにarmatureをweightして,主要なboneにIK constraintを設定したあと,左右のboneをsynmetryする [2026/06/02]

    はじめに

    人体objectにarmatureを設定しboneの回転により関節が動かせるよになった.次は,個別のboneの回転によるポージングでは手間がかかるので,IK constraintを設定して,target/pole boneの移動によりIK constraintが設定されているboneの回転に変換するように設定した.

    しかし,pose modeの人体objectの形が,rest mode の形(rest mode)と異なっているのは,target/pole boneの初期の位置が影響しているためである.

    rest mode (edit mode)とpose mode (object modeでも同じ)で人体objectの形に変化がない設定とはどうしたらよいのだろう.

    更に,左右のboneの設定を左右対称(シンメトリー)になるように設定するのは至難の業である.散々,チャレンジしたが,要約設定の手順を理解できた.同時に,左のboneの設定を右にある対となるboneに設定するadd-onをつくり,設定できるようにした.

    設定方法

    今回は,現在までにできるようになった手順を忘れないうちに残しておくことにする.読者にも参考になると思う.

    前提 (ojbectとarmature)

    1. 人体objectは作成されていること
    2. armatureは人体objectに設定されていること
    3. armatureのboneは人体objectの骨に相当する位置に配置されていること
    4. 各boneにはmesh objectに適切なweight paintが完了しているこ

    前提 (boneとIK constraint)

    1. 回転させたいboneにIK constraintが設定されていること
      (bone constraints > IK (add bone constraintで選択し,target/pole boneを配置していること)
    2. bone > inverse kinetics > limit (x, y, z)の値を人体の稼働域に調整できていること

    target/pole boneの位置を探す

    IK constraintを設定しtarget/pole boneを設置すると,IK constraintをonにしたとき,設定されているboneの位置が大抵の場合ずれるので,初期値の位置(rest mode)を維持できるtarget/poleの位置を探す.

    1. IK constratintをonにする
    2. edit modeとpose modeを交互に切り替えて人体objectが変形・移動しないedit modeでのtarget/pole boneの位置を探す.具体的には,edit modeでの人体objectの位置・形を覚えておき,pose modeにした時の差分をedit modeでのtarget/pole boneの位置の微調整により整えていく

    ここまで正しく設定できると,edit modeでの人体objectは,IK constraint (on)が設定されていてもpose modeに切り替えた時,形・位置はある程度維持されていることになる.

    ある程度の維持と言ったのは,以下のpole angleの調整も必要であるためで,並行して調整できればよいが,以下のpole angleの完成状態を頭に描けるなら,この設定調整の後に移行の「IK constraintのpole angleを決める」の調整を実施する.


    IK constraintのpole angleを決める

    IK constraintを設定しtarget/pole boneを設置すると,IK constraintをonにしたとき,設定されているboneの「ねじれ」がずれるので,初期値の位置(rest mode)を維持できるIK constraint > pole angleの値を探す.root boneに近いboneから遠いboneで以下に示した手順を順次行う.

    1. IK constraintをonにする
    2. edit modeで正しいねじれ(位置)を人体objectのねじれ具合から記憶する
    3. pose modeに切り替えて,pole agnleを修正し適切なねじれにする
    4. 次に,root boneから遠いboneを選択し,2へもどり繰り返す.具体的には鎖骨から上腕骨,さらに線腕骨,手首と設定を順次行う
    5. 左側のboneの設定が済んだら,右側も設定する.
      (ここは,自作add-onで設定をすませた)

    Bone constraints > limit rotationの設定

    target/pole boneで回転が誘導させるboneの角度の範囲を設定する.設定したいboneには既にIK constraintが設定されている.その下にlimit rotationを追加し,Limit X, Limit Y, Limit Zの範囲を適切に設定しなければならない.

    この設定は,次回に説明できると思う.

    つづく

    設定が完成できたら,追記する.

    2026/06/02, Mr.KenJin