BlenderアドオンAPIの断片
Blenderのアドオン開発を触りはじめたが、目的に対するコマンドをひとつひとつ探し出すのも大変なので基本的なところから断片的なコードをメモしておく。
特に記述がない場合バージョンはLTSの3.3.2で開発する。
アクティブオブジェクトの位置を取得する
actLoc = bpy.context.active_object.location
行列計算をする
計算用のライブラリをインポートして使用する
import bpy,mathutils
newVector = mathutils.Vector((1,0,0)) + mathutils.Vector((1,0,0))
平面と立方体を順次作成し、平面をアクティブ化する
#need
view_layer = bpy.context.view_layer
#create plane
bpy.ops.mesh.primitive_plane_add()
newObj = bpy.context.active_object
newObj.name = "newObject"
#create cube
bpy.ops.mesh.primitive_cube_add()
secObj = bpy.context.active_object
secObj.name = "secObj"
secObj.location = (1,0,0)
#activate
newObj.select_set(True)
bpy.context.view_layer.objects.active = newObj
API全体概要
上のリンクからBlenderのバージョンを選択するとバージョンに応じたAPIのドキュメントが参照できる。
目次を下にスクロールするとアプリケーションモジュールとスタンドアローンモジュールという種別が表示される。
スタンドアローンモジュールはアクセスする場合にインポートが必要になるので留意すること。
下記に主に使用すると思われるモジュールについて簡単な説明をする。
bpy.context
contextは現在のBlenderのアクセス領域に応じて使用可能になるコマンド群。
アクティブ状態や選択状態のデータにアクセスするものもここにあるのでよく使う。
基本的に読み取り専用
bpy.data
Blender上の各データの情報へのアクセス
bpy.ops
メニューから実行できるようなコマンド群はopsに属している。
基本的にエディタータイプに依存しているので留意すること。
bpy.types
IDやbpy_structなどこの中でもいくつかの種類があるようだ。
多くのコマンドがここに属している。
bpy.props
操作パネルを作ったりすることができる。
アドオンを配布したり登録したりする場合に特に重要になる。
b_mesh
メッシュの作成をする際に使用する。
mathutils
ベクトルや行列の計算はここに含まれる。
コマンドの確認をする方法
必要なコマンドを確認するためのいくつかの方法
検索する
グーグル検索で調べる。
基本は英語の方がいいが最近は日本語情報も増えているのでヒットする可能性もある。
Blender上で調べる
設定から開発者向けのチェックボックスをオンにしておくとメニューをctrl + cでコマンドのコピーができる。あるいはinfoエディターからも確認できる。
ドキュメントから調べる
検索やソフト上で確認できない場合、ドキュメントの検索からヒットしそうな単語を検索していくといい。
参考リンク
Blender 2.8のPython APIドキュメントを少しずつ読み解く リファレンスAPIの使用法 その1
UI要素の種類
UIまわりに関して混乱していたのでまとめてみる。
UIに関連する要素は主に
・メニュー
・オペレーター
・パネル
・プロパティ
などがある。他にもいくつかのものがあるがここでは触れない。
メニュー
メニューは上の画像のようなリスト形式になっているものを指す。
パネル
パネルはショートカットNを開いたときやプロパティにあるような要素を指す。
パネル内の要素をプロパティと呼ぶ。
オペレーター
オペレーターはコマンドを実行したあとにビューの左下に表示される要素を指す。
これを使用することで実行後にも変更を適用できる便利なものにできる。
プロパティ
プロパティはパネルで扱う各要素を構成している。