archIVe

[Blender] アドオン開発個人メモ

Blenderアドオン開発に関する個人的なメモです。 気になる箇所があればトップページに記載しているSNS等でご指摘ください。

命名規則

基本的にPEP8に従うが、クラス名など一部の命名は完全準拠というわけではなさそう。 PEP8のA Foolish Consistency is the Hobgoblin of Little Mindsに次の一文があるため、Blenderのお作法に合わせるのが適切と判断した。

In particular: do not break backwards compatibility just to comply with this PEP!

クラス

標準アドオンのコードやperplexityを用いた検索結果から次の規則で命名することにした。 Property Groupは HT , MT のようなキーワードが見つからず、Blender Python APIのexamplesでは MyPropertyGroup となっている。 しかし、以下の理由から PG をキーワードとして使用することにした。

その他、 register 実行時にBlenderコンソールに出力されるwarningも考慮している。

# Header: HT
class <ADDON_NAME>_HT_<header>_<name>(bpy.types.Header):
    bl_idname = '<ADDON_NAME>_HT_<header>_<name>'
    # example: https://docs.blender.org/api/current/bpy.types.Header.html

# Menu: MT
class <ADDON_NAME>_MT_<menu>_<name>(bpy.types.Menu):
    bl_idname = '<ADDON_NAME>_MT_<menu>_<name>'
    # example: https://docs.blender.org/api/current/bpy.types.Menu.html

# Operator: OT
class <ADDON_NAME>_OT_<operator>_<name>(bpy.types.Operator):
    bl_idname = '<ADDON_NAME>.<operator>_<name>'
    # example: https://docs.blender.org/api/current/bpy.types.Operator.html

# Panel: PT
class <ADDON_NAME>_PT_<panel>_<name>(bpy.types.Panel):
    bl_idname = 'VIEW3D_PT_<ADDON_NAME>_<panel>_<name>'
    # example: https://docs.blender.org/api/current/bpy.types.Panel.html

# UI List: UL
class UI_UL_<ADDON_NAME>_<ui>_<list>_<name>(bpy.types.UIList):
    # example: https://docs.blender.org/api/current/bpy.types.UIList.html

# Property Group: PG
class <ADDON_NAME>_PG_<property>_<group>_<name>():
    # example: https://docs.blender.org/api/current/bpy.types.PropertyGroup.html

ファイル分割

operator , property , ui で分割している。 __init__.py でクラスを登録していくが、その順番がパネルの表示順になるようだ。