本日は Blender の技術調査枠です。
Blenderで利用可能なpythonスクリプトを作ります。
bluebirdofoz.hatenablog.com
メッシュオブジェクトとアーマチュアの関連付け
最上位階層にあるメッシュオブジェクトと指定のアーマチュアの関連付けを行います。
引数でアーマチュアを指定できます。
・setparent_armature.py
# bpyインポート import bpy # シーン内の最上位階層のメッシュオブジェクトのみ選択する # 引数 # 戻り値 def select_parent_meshobject(): # シーン内の全てのオブジェクトを走査する for check_obj in bpy.context.scene.objects: # オブジェクトの親オブジェクト(parent)を取得する parent_obj = check_obj.parent # 親オブジェクトが取得できたかチェックする if parent_obj == None: # 親が取得できなければ最上位階層のオブジェクト # メッシュオブジェクトであるかチェックする if check_obj.type=='MESH': # 最上位階層のオブジェクトかつメッシュの場合 # オブジェクトを選択状態にする check_obj.select = True else: # 親が取得できれば子オブジェクト # オブジェクトを非選択状態にする check_obj.select = False return # メッシュオブジェクトとアーマチュアの関連付けを行う # アーマチュア:指定オブジェクト # メッシュ:最上位階層のメッシュオブジェクト # 引数 arg_objectname:指定オブジェクト名 # 戻り値 def setparent_armature_parentmeshs(arg_objectname='Default'): # 指定オブジェクトを取得する selectob=bpy.context.scene.objects[arg_objectname] # 指定オブジェクトがアーマチュアオブジェクトかチェックする if selectob.type=='ARMATURE': # 指定オブジェクトがアーマチュアの場合 # 最上位階層のメッシュオブジェクトを選択状態にする select_parent_meshobject() # 指定オブジェクトをアクティブにする bpy.context.scene.objects.active=selectob # アーマチュアオブジェクトを選択状態かつアクティブする selectob.select=True bpy.context.scene.objects.active=selectob # アーマチュアの関連付けを実行する bpy.ops.object.parent_set(type='ARMATURE') return # 関数の実行例 setparent_armature_parentmeshs('Character1_Reference')