Open5

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全体概要

https://docs.blender.org/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
https://bluebirdofoz.hatenablog.com/entry/2019/09/23/161128

うーぱーるーぱーうーぱーるーぱー

UI要素の種類

UIまわりに関して混乱していたのでまとめてみる。
UIに関連する要素は主に
・メニュー
・オペレーター
・パネル
・プロパティ
などがある。他にもいくつかのものがあるがここでは触れない。

メニュー

メニューは上の画像のようなリスト形式になっているものを指す。

パネル


パネルはショートカットNを開いたときやプロパティにあるような要素を指す。
パネル内の要素をプロパティと呼ぶ。

オペレーター


オペレーターはコマンドを実行したあとにビューの左下に表示される要素を指す。
これを使用することで実行後にも変更を適用できる便利なものにできる。

プロパティ

プロパティはパネルで扱う各要素を構成している。