MRが楽しい

MRやVRについて学習したことを書き残す

Blender3.0で利用可能なpythonスクリプトを作る その114(指定アーマチュアのボーンを全て選択状態にする)

本日は Blender の技術調査枠です。
Blender3.0で利用可能なpythonスクリプトを作ります。

指定アーマチュアのボーンを全て選択状態にする

ボーンデータには Armature 型の bones 変数からアクセス可能です。
なおアクセス時に有効なレイヤーに含まれているボーンのみが参照されます。
docs.blender.org

ボーンの選択状態は select 変数で操作可能です。
docs.blender.org

サンプルスクリプト

対象オブジェクトがアーマチュアオブジェクトであればオブジェクト内のボーンを全て選択します。
なおスクリプトからのボーン選択は「ポーズモード」でなくても実行可能です。
・Script_select_boneall.py

# bpyインポート
import bpy

# 対象オブジェクトのボーンを全て選択する
def select_boneall(arg_targetobject:bpy.types.Object) -> bool:
    """対象オブジェクトのボーンを全て選択する

    Keyword Arguments:
        arg_targetobject {bpy.types.Object} -- 対象オブジェクト

    Returns:
        bool -- 実行の正否
    """

    # 指定オブジェクトがアーマチュアか確認する
    # オブジェクトタイプの一覧
    # (https://docs.blender.org/api/current/bpy.types.Object.html#bpy.types.Object.type)
    if arg_targetobject.type != 'ARMATURE':
        # アーマチュアでない場合はボーンを選択しない
        return False

    # アーマチュア内の全ボーンを選択状態にする(有効状態のレイヤー内のボーンのみ対象)
    # アーマチュア操作のマニュアル
    # (https://docs.blender.org/api/current/bpy.types.Armature.html#bpy.types.Armature.bones)
    for bone in arg_targetobject.data.bones:
        # 選択状態に設定する
        # ボーン操作のマニュアル
        # (https://docs.blender.org/api/current/bpy.types.Bone.html)
        bone.select = True

    return True

# 関数の実行例
# 対象オブジェクトがアーマチュアオブジェクトであればオブジェクト内のボーンを全て選択する
select_boneall(arg_targetobject=bpy.data.objects.get("metarig"))

f:id:bluebirdofoz:20220320002427j:plain
f:id:bluebirdofoz:20220320002436j:plain