ボーンの回転って?

どうも、ぼくです。

きのう #3dmu にコーヒー飲みに行った(!?)わけなんですが、その懇親会でちょっと質問された、というかボーダー柄のシャツ着た人(「こわくない」って連呼してた方)が「この人に聞けばいいよ」的なことで無茶振りされて取りあえず回答しました、ということがありまして。

スクリーンショット 2015-11-01 13.18.14

「現在フレームのボーンがどのくらい回転しているか知りたい」場合に、Blender Python API でアクセスする方法というか何というか。

先に答えを書いておくと、こうです。これが回答として要件に合致したかどうかはわかりませんが。
metarigオブジェクトののforearm.Lボーンの回転値を1フレーム目から19フレーム目まで。

scene = bpy.data.scenes[0]
bone = bpy.data.objects['metarig'].pose.bones['forearm.L']
for x in range(1,20):
    scene.frame_set(x)
    print(bone.rotation_quaternion)

「コマ数」を変更して、値を取得、というのを繰り返すわけですね。

実際に回答したのは回転値を取得する部分だけでしたが。

ボーンの情報を得たいということで「bpy.data.objects[‘metarig’].data.bones[‘forearm.L’]…」とやってしまいがちですが、そちらは初期ポーズ、すなわちエディットモードで表示される状態で、本当に必要な情報は「.pose.bones[‘forearm.L’]」の方ですよ、ということですね。

ちなみに、オブジェクトやボーンのプロパティへアクセスしたい場合には、プロパティエディタの入力項目にマウスカーソルを合わせて少し待つと何か出てきますので、そこを見ればいいのではないかと思います。

スクリーンショット 2015-11-01 13.18.30

スクリーンショット 2015-11-01 14.56.42

あと、メニューの Help > Python API Reference から、オンライン上にあるBlender Python APIリファレンスを開いておくとよさげ。

ということで。