本日は Blender の技術調査枠です。
Blender3.0で利用可能なpythonスクリプトを作ります。
指定アーマチュア内の指定ボーンを参照する
ボーンの参照にはボーンを含むアーマチュアオブジェクトの bones 変数からアクセスできます。
docs.blender.org
取得できる Bone データからは以下の情報が参照できます。
docs.blender.org
サンプルスクリプト
アーマチュアオブジェクトとボーン名を指定すると、指定のボーンデータの参照を取得できます。
・Script_select_bone_target.py
# bpyインポート import bpy # 指定アーマチュア内の指定ボーンを参照する def select_bone_target(arg_targetobject:bpy.types.Object, arg_bonename:str) -> bpy.types.Bone: """指定アーマチュア内の指定ボーンを参照する Keyword Arguments: arg_targetobject {bpy.types.Object} -- 対象オブジェクト arg_bonename {str} -- 対象ボーン名 Returns: bool -- 実行の正否 """ # 指定オブジェクトがアーマチュアか確認する # オブジェクトタイプの一覧 # (https://docs.blender.org/api/current/bpy.types.Object.html#bpy.types.Object.type) if arg_targetobject.type != 'ARMATURE': # アーマチュアでない場合はボーンを取得しない return None # アーマチュア内の指定ボーンを取得する(有効状態のレイヤー内のボーンのみ対象) target_bone = arg_targetobject.data.bones.get(arg_bonename) return target_bone # 関数の実行例 # 指定アーマチュア内の指定ボーンを参照する get_bone = select_bone_target( arg_targetobject=bpy.data.objects.get("metarig"), arg_bonename="control.ChinIK") # 取得したボーン名とボーンの長さを表示する # ボーン操作のマニュアル # (https://docs.blender.org/api/current/bpy.types.Bone.html) print("Bone : name = " + get_bone.name + ", length = " + str(get_bone.length))