前提・実現したいこと
ワンボタンで球とそれに位置をコンストレイントしたベジェ円を同時生成するblenderアドオンを作りたい。
発生している問題
blenderでアドオンを作る事が初めてでして、
「オブジェクトを生成するコード」
Python
1bpy.ops.curve.primitive_bezier_circle_add()
「位置コンストレイントを設定する(?)コード」
Python
1bpy.types.CopyLocationConstraint(target="任意のターゲット")
の2つは手探りで調べて何となくわかったのですが、
例えばオブジェクトAに「オブジェクトコンストレイント」を適用して、更にターゲットをオブジェクトBに設定する場合、
オブジェクトBをターゲットにする方法は分かっても、オブジェクトAにコンストレイントを適用するというコードをどう書けばよいかわからずに困っています。
直接の回答に繋がらずとも、調べ方や参考になるサイトだけでもあれば教えていただけると助かります。
作ったソースコード
問題があると思われる個所↓
Python
1bpy.ops.curve.primitive_bezier_circle_add() #ベジェ円の生成 2bpy.types.CopyLocationConstraint(target= bpy.ops.object.metaball_add ()) #拘束と球の生成
全文↓
Python
1import bpy 2 3 4# 球と円の生成 5class SAMPLE21_OT_CreateObject(bpy.types.Operator): 6 7 bl_idname = "object.sample21_create_object" 8 bl_options = {'REGISTER', 'UNDO'} 9 10 # メニューを実行したときに呼ばれる関数 11 def execute(self, context): 12 bpy.ops.curve.primitive_bezier_circle_add() #ベジェ円の生成 13 bpy.types.CopyLocationConstraint(target= bpy.ops.object.metaball_add ()) #拘束と球の生成 14 15 return {'FINISHED'} 16 17 18# メニューを構築する関数 19def menu_fn(self, context): 20 self.layout.separator() 21 self.layout.operator(SAMPLE21_OT_CreateObject.bl_idname) 22 23# Blenderに登録するクラス 24classes = [ 25 SAMPLE21_OT_CreateObject, 26] 27 28# アドオン有効化時の処理 29def register(): 30 for c in classes: 31 bpy.utils.register_class(c) 32 bpy.types.VIEW3D_MT_mesh_add.append(menu_fn) 33 34 35# アドオン無効化時の処理 36def unregister(): 37 bpy.types.VIEW3D_MT_mesh_add.remove(menu_fn) 38 for c in classes: 39 bpy.utils.unregister_class(c) 40 41# メイン処理 42if __name__ == "__main__": 43 register()
補足情報(FW/ツールのバージョンなど)
Python3.9.4 bit64
blender2.91
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/08 11:37
2021/08/09 14:55