夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

BlenderでPythonスクリプトをアドオンとして登録する

本日はBlender枠です。

BlenderではPythonを使用してコードを実行することができますが、UIをもとに実行したりなど高度なことを行う場合アドオンとして作成することが便利です。

今回は基本的なアドオンをPythonで作成します。

〇コード

今回は次のコードを使用します。Desktopなど任意の場所に.pyの拡張子でファイルを作成して以下のコードを貼り付けます。

bl_info = {
    "name": "My Sample Add-on",
    "author": "Your Name",
    "version": (1, 0),
    "blender": (3, 4, 0),
    "location": "View3D > UI > My Panel",
    "description": "A sample add-on",
    "warning": "",
    "doc_url": "",
    "category": "3D View",
}

import bpy

# Define a new operator (action or function)
class HelloWorldOperator(bpy.types.Operator):
    bl_idname = "object.hello_world"
    bl_label = "Hello, World!"

    def execute(self, context):
        self.report({'INFO'}, "Hello, World!")
        return {'FINISHED'}

# Define a new UI panel
class HelloWorldPanel(bpy.types.Panel):
    bl_label = "My Panel"
    bl_idname = "OBJECT_PT_hello_world"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'Tool'

    def draw(self, context):
        layout = self.layout

        # Add the operator to the panel
        layout.operator("object.hello_world")

# Registration
def register():
    bpy.utils.register_class(HelloWorldOperator)
    bpy.utils.register_class(HelloWorldPanel)

def unregister():
    bpy.utils.unregister_class(HelloWorldOperator)
    bpy.utils.unregister_class(HelloWorldPanel)

if __name__ == "__main__":
    register()

このコードではアドオンの情報部と実際の処理部分の2つがあります。

bl_info{}の部分がアドオンとして登録する情報です。

bl_info = {
     #アドオン名
    "name": "My Sample Add-on",
     #アドオンの作者
    "author": "Your Name",
    "version": (1, 0),
 #Blenderの依存バージョン
    "blender": (3, 4, 0),
 #どこに表示するか
    "location": "View3D > UI > My Panel",
    "description": "A sample add-on",
    "warning": "",
    "doc_url": "",
    "category": "3D View",
}

この情報はプリファレンスとしてアドオンを登録する際に使用されます。

①Blenderを起動してプリファレンスを起動し、インストール画面を選択します。

②作成したPythonスクリプトをインストール対象として登録します。

③ここではMy Sample Add-onとしてbl_infoとして登録した情報が出てきます。

今回のコードはHelloWorldPanel()クラスでUIを表示しています。

class HelloWorldPanel(bpy.types.Panel):
    bl_label = "My Panel"
    bl_idname = "OBJECT_PT_hello_world"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'Tool'

    def draw(self, context):
        layout = self.layout

        # Add the operator to the panel
        layout.operator("object.hello_world")

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

詳細は上記記事をご覧ください。ここではMy Panelという名前でTool(ツール)のカテゴリーで登録しています。 これによって3DビューポートのツールにMy Panelが表示されます。

以上でアドオンとしてPythonコードを登録できました。