身内の宣伝コーナー
フルオーダーから既製デザイン柔軟に対応!
袴ロンパースの製作販売してます!レンタルもやってます!
よかったら見てみてね
ココから本題
今回はGoogleのBardというAIを使ってみようと思います。
リンク飛べます。
まだまだ試験運用を始めた段階ということなのでレベルなどは不明です。
ChatGPTなどと使い方は変わらないと思います。
検証:メニューの追加など
というのに対して下記が原文です。
はい、喜んで手伝います。Blenderのアドオンの作成は、Pythonの知識とBlenderの基本的な操作方法があれば、比較的簡単に行うことができます。
まずは、作りたいアドオンの機能を決めましょう。例えば、以下のような機能が考えられます。
- 新しいツールを追加する
- 既存のツールを拡張する
- 新たなオブジェクトやマテリアルを追加する
- シーンの設定を変更する
機能を決めたら、その機能を実現するために必要なPythonコードを記述します。Blenderのアドオン開発には、Pythonの標準ライブラリに加えて、BlenderのPython APIを使用します。BlenderのPython APIについては、Blenderの公式ドキュメントや、インターネット上のチュートリアルなどを参考にするとよいでしょう。
コードを記述したら、Blenderにアドオンをインストールして、動作を確認します。アドオンのインストールは、Blenderの[編集] > [プリファレンス...] > [アドオン] タブから行うことができます。
アドオンの動作を確認したら、必要に応じてコードを修正します。動作に問題がなければ、アドオンを公開することができます。アドオンの公開は、Blenderのアドオンリポジトリに登録することで行うことができます。
具体的な手順については、以下のような流れで進めるとよいでしょう。
なかなか丁寧な印象。
動くか見てみます。
なんとなくゴールを作りましょう
・サイドメニューにパネルを追加
・その中でオブジェクトを追加したい
・スケール変更がしたい
・細分化したい
とかにしてみましょう
聞いてみよう
サイドメニューにコマンドを追加するアドオンが作りたいです。
まずは「立方体を追加」の機能を備えたものがいいです。
了解しました。それでは、サイドメニューにコマンドを追加するアドオンの開発手順を説明します。
1. 作りたいアドオンの機能を決める
まず、作りたいアドオンの機能を決めましょう。今回は、サイドメニューに「立方体を追加」のコマンドを追加するアドオンにします。
2. 必要なPythonコードを記述する
次に、必要なPythonコードを記述します。コードは、以下のようになります。
bl_info = {
"name": "Cube Addon",
"description": "Add a cube to the scene",
"author": "Bard",
"version": "0.1",
"blender": (2, 93, 0),
"location": "View3D > Sidebar",
"category": "Object"
}
import bpy
class CubeAddonPanel(bpy.types.Panel):
bl_label = "Cube Addon"
bl_idname = "OBJECT_PT_cube_addon"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
def draw(self, context):
layout = self.layout
layout.operator("object.add_cube")
class AddCubeOperator(bpy.types.Operator):
bl_idname = "object.add_cube"
bl_label = "Add Cube"
def execute(self, context):
bpy.ops.mesh.primitive_cube_add()
return {"FINISHED"}
def register():
bpy.utils.register_class(CubeAddonPanel)
bpy.utils.register_class(AddCubeOperator)
def unregister():
bpy.utils.unregister_class(CubeAddonPanel)
bpy.utils.unregister_class(AddCubeOperator)
if __name__ == "__main__":
register()
このコードは、以下の処理を行います。
bl_info
プロパティで、アドオンの基本情報を指定します。import bpy
で、BlenderのPython APIをインポートします。CubeAddonPanel
クラスを定義して、サイドメニューに表示するパネルを作成します。draw()
メソッドで、パネルのレイアウトを定義します。AddCubeOperator
クラスを定義して、立方体を追加するオペレーターを作成します。execute()
メソッドで、立方体を追加する処理を記述します。register()
関数で、アドオンを登録します。unregister()
関数で、アドオンを登録解除します。
3. Blenderにアドオンをインストールする
アドオンをインストールするには、Blenderの[編集] > [プリファレンス...] > [アドオン] タブから、「アドオンをインストール」ボタンをクリックして、アドオンをインストールします。
アドオンのインストールフォルダは、以下のとおりです。
すごいですよね
なんとなく解説までつけてくれる
さて動くのですかね
スクリプト画面に貼り付けて実行してみます。
とりあえずエラーなし
ここにメニューが追加されてますね
Miscって何なんだろうか
Mytoolsに変更をお願いしてみます。
ここで一旦躓いています(笑)
なんでなんだろう
ああだこうだサイドバーの指定をして、なんとか変わりました
bl_info = {
"name": "Cube Addon",
"description": "Add a cube to the scene",
"author": "Bard",
"version": "0.1",
"blender": (2, 93, 0),
"location": "SIDEBAR ",
"category": "MyTools"
}
import bpy
class CubeAddonPanel(bpy.types.Panel):
bl_label = "Cube Addon"
bl_idname = "PT_CubeAddonPanel"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = "MyTools" # カテゴリ名を"MyTools"に変更
def draw(self, context):
layout = self.layout
layout.operator("object.add_cube")
class AddCubeOperator(bpy.types.Operator):
bl_idname = "object.add_cube"
bl_label = "Add Cube"
def execute(self, context):
bpy.ops.mesh.primitive_cube_add()
return {"FINISHED"}
def register():
bpy.utils.register_class(CubeAddonPanel)
bpy.utils.register_class(AddCubeOperator)
def unregister():
bpy.utils.unregister_class(CubeAddonPanel)
bpy.utils.unregister_class(AddCubeOperator)
if __name__ == "__main__":
register()
なんとか変わりました。
ではこの立方体追加のあとにポップアップメニューでサイズを変更できるかやってみます。
このコードで、立方体を追加したあとにポップアップメニューでスケールを調整したいです
bl_info = {
"name": "Cube Addon",
"description": "Add a cube to the scene",
"author": "Bard",
"version": "0.1",
"blender": (2, 93, 0),
"location": "View3D > Object > MyTools",
"category": "MyTools"
}
import bpy
class CubeAddonPanel(bpy.types.Panel):
bl_label = "Cube Addon"
bl_idname = "PT_CubeAddonPanel"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = "MyTools"
def draw(self, context):
layout = self.layout
layout.operator("object.add_cube")
class AddCubeOperator(bpy.types.Operator):
bl_idname = "object.add_cube"
bl_label = "Add Cube"
def execute(self, context):
bpy.ops.mesh.primitive_cube_add()
# 立方体のスケールを調整するポップアップメニューを表示する
menu = bpy.context.user_interface.invoke_popup(scale_menu, width=250)
def scale_menu(self, context):
layout = self.layout
layout.operator("object.scale_cube")
class ScaleCubeOperator(bpy.types.Operator):
bl_idname = "object.scale_cube"
bl_label = "Scale Cube"
def execute(self, context):
# アクティブなオブジェクトのスケールを調整する
object = context.active_object
object.scale = context.scene.tool_settings.transform_scale
return {"FINISHED"}
def register():
bpy.utils.register_class(CubeAddonPanel)
bpy.utils.register_class(AddCubeOperator)
bpy.utils.register_class(ScaleCubeOperator)
def unregister():
bpy.utils.unregister_class(CubeAddonPanel)
bpy.utils.unregister_class(AddCubeOperator)
bpy.utils.unregister_class(ScaleCubeOperator)
if __name__ == "__main__":
register()bl_info = {
"name": "Cube Addon",
"description": "Add a cube to the scene",
"author": "Bard",
"version": "0.1",
"blender": (2, 93, 0),
"location": "View3D > Object > MyTools",
"category": "MyTools"
}
import bpy
class CubeAddonPanel(bpy.types.Panel):
bl_label = "Cube Addon"
bl_idname = "PT_CubeAddonPanel"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_category = "MyTools"
def draw(self, context):
layout = self.layout
layout.operator("object.add_cube")
class AddCubeOperator(bpy.types.Operator):
bl_idname = "object.add_cube"
bl_label = "Add Cube"
def execute(self, context):
bpy.ops.mesh.primitive_cube_add()
# 立方体のスケールを調整するポップアップメニューを表示する
menu = bpy.context.user_interface.invoke_popup(scale_menu, width=250)
def scale_menu(self, context):
layout = self.layout
layout.operator("object.scale_cube")
class ScaleCubeOperator(bpy.types.Operator):
bl_idname = "object.scale_cube"
bl_label = "Scale Cube"
def execute(self, context):
# アクティブなオブジェクトのスケールを調整する
object = context.active_object
object.scale = context.scene.tool_settings.transform_scale
return {"FINISHED"}
def register():
bpy.utils.register_class(CubeAddonPanel)
bpy.utils.register_class(AddCubeOperator)
bpy.utils.register_class(ScaleCubeOperator)
def unregister():
bpy.utils.unregister_class(CubeAddonPanel)
bpy.utils.unregister_class(AddCubeOperator)
bpy.utils.unregister_class(ScaleCubeOperator)
if __name__ == "__main__":
register()
で
エラーが
Python: Traceback (most recent call last):
File "\Text", line 32, in execute
AttributeError: 'Context' object has no attribute 'user_interface'
これを直接Bardに渡します。
ここから無限ループに入り、要望が叶いませんでした…
まだまだなのかな
聞き方が悪いのかな?
ココまで
私の活動案内
この記事の関連商品