本日は Blender の技術調査枠です。
Blenderで利用可能なpythonスクリプトを作ります。
bluebirdofoz.hatenablog.com
特定の名前のボーン名を変更する
全アーマチュアオブジェクトのボーン情報を取得します。
ボーンの名称を確認して特定の名称のボーンのみ名前を変更します。
・change_bone.py
# bpyインポート import bpy # 全ボーンデータの名前変更 # 1.アーマチュアオブジェクトを選択する # 2.全ボーンデータを取得して名前を変更する # 引数 # 戻り値 def change_bone_name(): # シーン中の全てのオブジェクトを走査する for ob in bpy.context.scene.objects: # オブジェクトがアーマチュアなら名前変更の対象とする if ob.type == 'ARMATURE': # アーマチュア内のボーンを走査する for bone in ob.data.bones: # ボーンの名前を取得 bonename = bone.name # 名前が"Character1_"で始まっていなければ変更対象 if bonename.find('Character1_') == -1: # ボーンの名前を変更する bone.name = '_' + bonename print(bone.name) return # 関数の実行例 change_bone_name()
[デフォルトのポーズに適用]を実行する
全アーマチュアオブジェクトに[デフォルトのポーズに適用]を実行する
ポーズを適用後、全てのボーンを選択状態にします。
・apply_armature.py
# bpyインポート import bpy # デフォルトポーズの適用 # 1.アーマチュアオブジェクトを選択する # 2.[ポーズモード]で[デフォルトのポーズに適用]を実行する # 引数 # 戻り値 def apply_armature_all(): # シーン中の全てのオブジェクトを走査する for ob in bpy.context.scene.objects: # オブジェクトがアーマチュアならデフォルトポーズの適用の対象とする if ob.type == 'ARMATURE': # オブジェクトをアクティブにする bpy.context.scene.objects.active = ob # ポーズモードに移行する bpy.ops.object.mode_set(mode='POSE') # [デフォルトのポーズに適用]を実行 bpy.ops.pose.armature_apply() # 反映済みが分かるようにボーンを選択状態に変更 # アーマチュア内のボーンを走査する for bone in ob.data.bones: # 全てのボーンを選択状態にする bone.select = True return # 関数の実行例 apply_armature_all()