Blenderでリグを作成する場合に
実際にオブジェクトの変形に使うボーンと IK等の計算をするボーンを分けて作成する場合があります
そんな場合に「回転コピー」等のコンストレイントを一つ一つ設定するのは面倒なものです。
そこで選択ボーンにコンストレイント設定するスクリプトを作成してみたのでメモ
(多分 探せばいっぱい出てくるだろうけれど 自分の学習目的です)
import bpy
target_hedder = "IK_" #設定のターゲットにしボーンに付いている接頭語
obj = bpy.context.active_object
bone_names = obj.data.bones.keys() #選択したオブジェクト内のボーン名の一覧
for pose_bone in obj.pose.bones:
if pose_bone.bone.select:
name = pose_bone.name
target_name = target_hedder +name
if target_name in bone_names:
# 回転コピーコンストレイントの設定
# トランスフォームコピーの場合は'COPY_TRANSFORMS'
constraint = pose_bone.constraints.new('COPY_ROTATION')
# 同一アーマチュアオブジェクト内のボーンなので ターゲットは現在のオブジェクト
constraint.target = obj
# ターゲットボーンの名前
constraint.subtarget = target_name
# 変形の元になる座標空間 デフォルトのままでも問題ないかもしれない
constraint.target_space = 'POSE' # Default 'WORLD'
constraint.owner_space = 'POSE'
名前を基準にターゲットのボーンを探しています
必用に応じて内容を書き換えて使用してください
ボーンのリネーム
このスクリプトは ボーンの名前がきちんと対応するようにネーミングされているのが前提になります
基準のボーンから IK用のボーン等を作成する時のリネームに使える小ネタを一つ
編集メニューの 「名前を一括変更」で ルールに従ったオブジェクト等の名前変更ができます
ここで右上のプルダウンからボーンを選択することで 編集中のボーンの名前を一括変換できます
キャプチャのようにタイプ「名前を設定」を選ぶことで頭に付ける文字や 最後に付ける文字を設定するこができて
右側にある+ボタンを追加することで 同時に違った処理を追加することもできます
ここでは「検索と置換」を追加して 置き換え部分を空白にすることで 複製した時にできる末尾の番号を消しています
何かの参考になれば幸いです