用語集

このページでは、Blenderの初心者やより深い理解を求める方に向けて、BlenderとPMEで使用される主要な用語と概念を説明します。

Blenderの基本概念

データ(bpy.data)

Blenderファイル(.blend)に保存される全てのデータへのアクセスを提供します。 bpy.data.objectsbpy.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
bpy.dataの例

Blender Pythonコンソールでの bpy.data の使用例

参考: Data Access (bpy.data) bpy.types.BlendData

コンテキスト(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')
bpy.contextの例

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のインターフェース全体

Blenderのデフォルト画面構成

エリア(Area)

Blenderインターフェース内の大きなワークスペース領域です。 3Dビューポート、アウトライナーなどの異なるエディタータイプはそれぞれエリアを占有します。

  • PMEのToggle Side Areaは、実行したエリアを分割し、その隣に一時的なエディターエリアを開閉します。同じエリア内のリージョンを開閉するToggle Sidebarとは別機能です。

  • エリアには、ツールバーやプロパティシェルフなどのリージョンと呼ばれるサブ領域が含まれる場合があります。

| 関連: リージョン、ウィンドウ、ワークスペース | リファレンス: Area (docs.blender.org)

リージョン(Region)

エリア内の細分化された領域で、特定のUI要素(ツール、プロパティなど)を含みます。

  • PMEのパネルグループ機能により、リージョンにカスタムコンテンツを追加できます。

  • Sidebarはエリア内にあるリージョンの一種で、独立したエディターエリアではありません。

3Dビューのリージョン

3Dビューポートのリージョン構成(ヘッダー、ツールバー、サイドバー等)

関連: エリア、パネル

リファレンス: Region (docs.blender.org)

パネル(Panel)

サイドバーやプロパティエリアによく見られる、折りたたみ可能なUIウィジェットのグループです。

Blenderのパネル

サイドバー内のパネル例

PMEでは以下が可能です:

  • 新しいパネルの作成

  • 既存パネルの拡張

  • パネルのグループ化

  • 不要なパネルの非表示

| 関連: プロパティ、リージョン | リファレンス: Panel (docs.blender.org)

PME固有の概念

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クリックにまとめるのに非常に有用です。

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)