用語集¶
このページでは、Blenderの初心者やより深い理解を求める方に向けて、BlenderとPMEで使用される主要な用語と概念を説明します。
Blenderの基本概念¶
データ(bpy.data)¶
Blenderファイル(.blend)に保存される全てのデータへのアクセスを提供します。
bpy.data.objects・bpy.data.materialsなど、種類ごとのコレクション形式で整理されています。
名前やインデックス形式で直接データにアクセスできる、静的なデータベースです。
bpy.data.objects['Cube'] # 特定のオブジェクトデータ
bpy.data.materials.new("Gold") # 新規マテリアルの作成
bpy.data.meshes[0] # インデックスによるアクセス
obj = bpy.data.objects.get('Cube')
if obj: obj.location.x += 1.0
Blender Pythonコンソールでの bpy.data の使用例¶
コンテキスト(bpy.context)¶
ユーザーの作業状態に応じて、動的な参照を提供します。 選択中のオブジェクト、アクティブなツール、現在のモード、マウスカーソルを置いているエリアなど、ユーザーの操作によって変化する瞬間的な状況を知ることができます。 例えば、同じショートカットキーでも、3Dビューポートで押した時とシェーダーエディタで押した時で異なる動作をするのは、それぞれのエリアが異なるコンテキスト(文脈)を提供しているからです。
bpy.context.object # 現在アクティブなオブジェクト
bpy.context.selected_objects # 選択中の全オブジェクト
bpy.context.mode # 現在のモード(OBJECT/EDIT等)
bpy.context.area.type # 現在のエリアタイプ
# 高度な例:コンテキストを上書きし、特定のエリアでオペレーターを実行
area = next(a for a in bpy.context.window.screen.areas if a.type == 'VIEW_3D')
with bpy.context.temp_override(area=area):
bpy.ops.view3d.view_selected('INVOKE_DEFAULT')
Blender Pythonコンソールでの bpy.context の使用例¶
参考: Context (docs.blender.org)
DataとContextの違い
bpy.data を使う場面:全マテリアルをリストアップする、特定の名前のオブジェクトを必ず操作する
bpy.context を使う場面:選択中のオブジェクトに対してツールを実行する、現在のモードに応じてUIを切り替える
bpy.data は「何が存在するか」という静的な事実を扱い、bpy.context は「今何をしているか」という動的な状況を扱います。前者がデータベース的な性質を持つのに対し、後者はユーザーインターフェースと密接に結びついた、インタラクティブな性質を持ちます。
オペレーター(bpy.ops)¶
Blenderで特定のアクションを実行する機能単位です。 オブジェクトの追加やベベルなどの代表的な機能だけでなく、UIリストの入れ替えなど小さなアクションまで、全ての機能がオペレーターとして定義されています。
ホットキーに割り当て可能
メニュー/ボタンに表示可能
Pythonスクリプトから呼び出し可能
マクロで実行可能
PME内では、マクロオペレーターやモーダルオペレーターを使用して複数のオペレーターを組み合わせ、カスタムツールを作成できます。
例: bpy.ops.mesh.subdivide()
ポールメソッド (Poll Method)¶
オペレーターやパネルのPoll関数は、Contextを参照して「今この機能が使えるか」を判定します。
キーマップ(Keymap)¶
エリアタイプや編集モードに応じて変化するホットキー割り当てのコレクションです。
例: Gキーはオブジェクトモードでは「移動」に割り当てられていますが、スカルプトモードでは「つかむ」に割り当てられています。
PMEは、これらのキーマップを個人のワークフローに合わせてさらにカスタマイズするのに役立ちます。
リファレンス: Keymap (docs.blender.org)
プロパティ(Property)¶
Blenderの様々なデータ項目(オブジェクトの位置、マテリアル設定など)を指し、通常UIではスライダー、チェックボックス、フィールドとして表示されます。
PMEでは以下が可能です:
メニュー/パネルでプロパティの表示と編集
スクリプトやPoll関数での参照
プロパティエディターを介したカスタムプロパティの追加
例: bpy.context.object.location
モード(Mode)¶
Blenderの動作状態(オブジェクトモード、編集モードなど)を指します。 各モードにはそれぞれのツールとアクションのセットがあります。
PMEのPoll機能により、アクティブなモードに基づいて特定のツールやメニューの表示/非表示を切り替えできます。
例: bpy.context.mode == 'EDIT_MESH'
画面構成の概念¶
Blenderのデフォルト画面構成¶
エリア(Area)¶
Blenderインターフェース内の大きなワークスペース領域です。 3Dビューポート、アウトライナーなどの異なるエディタータイプはそれぞれエリアを占有します。
PMEのToggle Side Areaは、実行したエリアを分割し、その隣に一時的なエディターエリアを開閉します。同じエリア内のリージョンを開閉するToggle Sidebarとは別機能です。
エリアには、ツールバーやプロパティシェルフなどのリージョンと呼ばれるサブ領域が含まれる場合があります。
| 関連: リージョン、ウィンドウ、ワークスペース | リファレンス: Area (docs.blender.org)
リージョン(Region)¶
エリア内の細分化された領域で、特定のUI要素(ツール、プロパティなど)を含みます。
PMEのパネルグループ機能により、リージョンにカスタムコンテンツを追加できます。
Sidebarはエリア内にあるリージョンの一種で、独立したエディターエリアではありません。
3Dビューポートのリージョン構成(ヘッダー、ツールバー、サイドバー等)¶
関連: エリア、パネル
リファレンス: Region (docs.blender.org)
ヘッダー(Header)¶
エリアの上部または下部にある水平バーです。 通常、メニュー、よく使用されるツールアイコンなどが含まれます。
3Dビューポートのヘッダー例¶
PMEではメニュー/パネル拡張を使用してヘッダーにカスタムボタンを追加できます。
| 関連: リージョン | リファレンス: Header (docs.blender.org)
パネル(Panel)¶
サイドバーやプロパティエリアによく見られる、折りたたみ可能なUIウィジェットのグループです。
サイドバー内のパネル例¶
PMEでは以下が可能です:
新しいパネルの作成
既存パネルの拡張
パネルのグループ化
不要なパネルの非表示
| 関連: プロパティ、リージョン | リファレンス: Panel (docs.blender.org)
PME固有の概念¶
Pie Menu Editorの概要¶
スロット(Slot)¶
メニュー内の個別の要素またはスロットです。各スロットは以下のように設定できます:
コマンドの実行
プロパティの表示または編集
サブメニューの呼び出し
カスタムレイアウトの描画
関連: コマンドタブ、プロパティタブ、メニュータブ、カスタムタブ
コマンドタブ(Command Tab)¶
スロットエディターのタブの一つで、Pythonコードを実行したり、オペレーターを直接呼び出したりできます。
1行のPythonスクリプトの実行
カスタム関数の呼び出し
変数やオペレーターの操作
例: C.active_object.location.x += 1.0
カスタムタブ(Custom Tab)¶
描画コードで UI レイアウトを定義する、スロットエディターのタブです。
例:
L.box().label(text="Custom Layout")
インタラクティブパネルモード(Interactive Panels Mode)¶
すべてのUI要素内に追加のPMEツールボタンを表示するPMEモードで、以下を簡単にします:
メニューIDの識別
パネル拡張の設定
UIのカスタマイズ
このモードは、様々な要素やメニューがどこに配置されているかを視覚化するのに役立つため、PMEを学習する際に特に有用です。
マクロオペレーター(Macro Operator)¶
複数のオペレーターを順番に実行することを可能にします。 PMEマクロオペレーターエディターでは以下が可能です:
オペレーターシーケンスの記録
オペレーターパラメーターの調整
実行フローの管理
複雑なワークフローを1クリックにまとめるのに非常に有用です。
モーダルオペレーター(Modal Operator)¶
継続的なユーザー入力に応答するリアルタイムでインタラクティブなオペレーターです。 PMEのモーダルオペレーターエディターで独自のモーダルオペレーターを作成でき、以下が可能になります:
マウス移動への反応
キーイベントと状態変化
リアルタイムフィードバックと更新
カスタムインタラクティブツールの構築に最適です。
Poll メソッド(Poll Method)¶
メニューやツールが現在使用可能かどうかを判定するPython関数です。使用可能な場合はTrue、そうでない場合はFalseを返す必要があります。
例:
ao = C.active_object; return ao and ao.type == 'MESH'
一般的な使用例:
現在のモードに基づいたUI要素の有効/無効
特定のオブジェクトタイプに機能を制限
無効なツールを非表示にしてエラーを防止
スロットエディター(Slot Editor)¶
PMEメニュー/ボタンの動作を定義する中央UIです。以下のような複数のタブが含まれます:
コマンド(コード実行用)
プロパティ(プロパティ表示用)
メニュー(他のPMEメニューの呼び出し用)
ホットキー(ショートカット呼び出し用)
カスタム(カスタムレイアウト用)
スロットエディターのUI¶
スクリプティングが初めての場合でも、グラフィカルインターフェースを通じてすべてを設定できるように設計されています。
高度な概念¶
イベントシステム(Event System)¶
キーボードとマウスイベントを追跡するBlenderの入力処理メカニズムです。以下に不可欠です:
モーダルオペレーター
カスタムホットキー
インタラクティブツール
例:
E.ctrl and E.shift and message_box("Ctrl+Shift Pressed")
レイアウトシステム(Layout System)¶
UIレイアウトを構築するBlenderのシステムです。PMEはこのシステムに依存して以下を行います:
ラベル、ボタン、プロパティフィールドの配置
オペレーターとカスタムウィジェットの位置決め
UI要素の階層構造化
例:
L.box().label(text=text, icon=icon, icon_value=icon_value)
オペレーター実行コンテキスト(Operator Execution Context)¶
オペレーターの実行方法を決定します。最も一般的な2つのコンテキストは:
INVOKE_DEFAULT
Blenderがマウス位置決めやポップアップ確認などの追加ユーザー入力を待つインタラクティブモード。EXEC_DEFAULT
事前設定されたパラメーターでオペレーターを即座に実行。スクリプトやマクロでよく使用される。
例:
# マウス入力に基づいてオブジェクトをインタラクティブに移動
bpy.ops.transform.translate('INVOKE_DEFAULT')
# ユーザー入力なしでオブジェクトをX軸に沿って5.0移動
bpy.ops.transform.translate('EXEC_DEFAULT', value=(5.0, 0.0, 0.0))
| 関連: オペレーター、コマンドタブ、モーダルオペレーター、マクロオペレーター | リファレンス: Execution Context (docs.blender.org)