ゲーム作りが大好きな人のブログ

ゲームを作るのが大好きな人のブログ。UE4とBlender、MAYA(LT)、3DCoatを使用しています!

【Blender】【Python】IKの回転値を適用させる方法

Blenderのバージョンは2.82で検証しています
まずは下の画像を見てください。
f:id:toofu0:20200223193141g:plain
IKで動かしたあとボーンに回転値が入っていません。
今回はこの回転値を入れる方法をご紹介します。

【説明の前に】これが原因でどんな問題が起こるか

f:id:toofu0:20200223193558p:plain
IKには「影響」というパラメータがあります。
このパラメータはIKのかかり具合を表すパラメータで
0.0 になるとIKの機能が無効、1.0 に近づくほどIKの機能が有効になります。
つまりIKの機能を切りたい時は「影響」を 0.0 にするのが良いという事になります。
 
 
そして下のGIFは「影響」を1.0から0.0にした物になります。
f:id:toofu0:20200223193959g:plain
影響 0 にしたら勝手に動いとるがな。

この原因はボーンに回転値が入ってないからです。
影響を 0.0 にした事で初期値である 0 , 0 , 0 の回転に戻っています。

というわけで、これをさっくり直す為にIKで動かしたボーンに
回転情報を入れるやり方を紹介します。
 
 

やり方

  1. ポーズモードに移行
  2. 適用したいボーンを選択(複数可)
  3. 下記のスクリプトテキストエディターに張り付け「スクリプト実行」
import bpy

for bone in bpy.context.object.data.bones:
    if bone.select == True:
        poseBone = bpy.context.object.pose.bones[bone.name]
        poseBone.matrix = poseBone.matrix

 
 

結果

f:id:toofu0:20200223195828g:plain
 
 

参考にさせていただいたサイト様

dskjal.com
全然関係のない話なんですが、上のサイト様の情報マジですごいです。
かなり助けられてます。感謝しております。