本日は Blender の技術調査枠です。
Blenderで利用可能なpythonスクリプトを作ります。
bluebirdofoz.hatenablog.com
オブジェクトの親オブジェクトを取得する
オブジェクトの親オブジェクトをチェックして最上位オブジェクトを選択します。
最上位オブジェクトは親オブジェクトを取得できません。
・object_tree.py
# bpyインポート import bpy # シーン内の最上位のオブジェクトのみ選択する # 引数 arg_objectname:指定オブジェクト名 # 戻り値 def select_parent_object(): # シーン内の全てのオブジェクトを走査する for check_obj in bpy.context.scene.objects: # オブジェクトの親オブジェクト(parent)を取得する parent_obj = check_obj.parent # 親オブジェクトが取得できたかチェックする if parent_obj == None: # 親が取得できなければ最上位オブジェクト # オブジェクトを選択状態にする check_obj.select = True print(check_obj.name + ' is parent') else: # 親が取得できれば子オブジェクト # オブジェクトを非選択状態にする check_obj.select = False print(check_obj.name + ' is children') return # 関数の実行例 select_parent_object()
オブジェクトの子オブジェクトの一覧を取得する
オブジェクトの子オブジェクトをチェックして再帰的に選択します。
子オブジェクトは直下のオブジェクト群をタプルで取得できます。
・object_tree.py
# bpyインポート import bpy # 指定オブジェクトとその全ての子オブジェクトを選択する # 引数 arg_objectname:指定オブジェクト名 # 戻り値 def select_children_object(arg_objectname='Default'): # 指定オブジェクトを取得する check_obj = bpy.data.objects[arg_objectname] # オブジェクトを選択状態にする check_obj.select = True # 指定オブジェクトの子オブジェクト(children)を取得する children_objs = check_obj.children # 子オブジェクトはタプルで取得される # 全ての子オブジェクトをチェックする for children_obj in children_objs: # 子オブジェクトを再帰的に走査して選択する select_children_object(children_obj.name) print(check_obj.name + '->' + children_obj.name) return # 関数の実行例 select_children_object('Sphere')