Python Console(Pythonコンソール)

Python Console(Pythonコンソール)は、Python API全体、コマンド履歴、オートコンプリートにアクセスして、コマンドをすばやく実行する方法です。コマンドプロンプトはPython3.xで一般的であり、インタープリターが読み込まれ、プロンプト >>> でコマンドを受け入れる準備ができています。

Pythonコンソールは、Blenderの組み込みPythonの可能性を探る良い方法です。Pythonコンソールを使用してPythonコードの小さな断片をテストし、それを大きなスクリプトに貼り付けることができます。

../_images/editors_python-console_default.png

Pythonコンソール。

Interface(インターフェイス)

ヘッダーメニュー

View(ビュー) メニュー

Zoom In(ズームイン) / Zoom Out(ズームアウト)

コンソールテキストのフォントサイズを増減します。

Move to Previous Word(前の単語に移動) Ctrl-Left

前の単語の先頭にカーソルを移動します。カーソルが単語の途中にある場合、カーソルは現在の単語の先頭に移動します。

Move to Next Word(次の単語に移動) Ctrl-Right

次の単語の末尾にカーソルを移動します。カーソルが単語の途中にある場合、カーソルは現在の単語の末尾に移動します。

Move to Line Begin(行頭に移動) Home

現在の行の先頭にカーソルを移動します。

Move to Line End(行末に移動) End

現在の行の末尾にカーソルを移動します。

Console(コンソール) メニュー

Clear All(すべてクリア)

コンソールを更新して、ビューを新たに開始します。コマンド履歴はクリアされないことに注意してください。

Clear Line(行をクリア) Shift-Return

プロンプト行からすべてを削除します。

Delete Previous Word(前の単語を削除) Ctrl-Backspace

カーソルから前の(ピリオドで区切られた)単語の先頭までのすべてを削除します。カーソルが単語の途中にある場合は、現在の単語の先頭までのすべてを削除します。

Delete Next Word(次の単語を削除) Ctrl-Delete

カーソルから次の単語の終わりまでのすべてを削除します。カーソルが単語の途中にある場合は、現在の単語の最後までのすべてを削除します。

Copy as Script(スクリプトとしてコピー) Shift-Ctrl-C

履歴バッファ全体をクリップボードにコピーします。これをテキストファイルに貼り付けて、Pythonスクリプトとして使用できます。

Copy(コピー) Ctrl-C

選択範囲をコピーします。

Paste(貼り付け) Ctrl-V

コマンドラインに貼り付けます。

Indent(インデント) Tab

カーソルの位置にタブ文字を挿入します。

Unindent(インデントを解除) Shift-Tab

選択範囲のインデントを解除します。

Backward in History(履歴の後方) Up

現在のコマンドを、コマンド履歴の前のコマンドに変更します。

Forward in History(履歴の前方) Down

現在のコマンドを、コマンド履歴の次のコマンドに変更します。

Autocomplete(オートコンプリート) Tab

詳細は、 Auto Completion を参照してください。

メインビュー

キーバインディング

  • Left / Right -- カーソルを移動。

  • Ctrl-Left / Ctrl-Right -- カーソルを単語単位に移動。

  • Backspace / Delete -- 文字を消去。

  • Ctrl-Backspace / Ctrl-Delete -- 単語を消去。

  • Return -- コマンドを実行。

  • Shift-Return -- 実行せずにコマンド履歴に追加。

使用方法

エイリアス

便宜上、いくつかの変数とモジュールを使用できます:

  • C: bpy.context へのクイックアクセス。

  • D: bpy.data へのクイックアクセス。

  • bpy: Blender Python APIモジュールのトップレベル。

コンソール環境の初見

インタプリタ環境に何がロードされているかを確認するには、プロンプトで dir() と入力して実行します。

../_images/editors_python-console_dir.png

オートコンプリート

試しに、bpy. と入力してから Tab を押すと、コンソールのオートコンプリート機能が動作していることがわかります。

../_images/editors_python-console_completion.png

bpy 内のサブモジュールのリストが表示されるのに気付きます。これらのモジュールは、Blender Python APIで実行できるすべてのことをカプセル化しており、非常に強力なツールです。

bpy.app モジュールのすべての内容を一覧表示しましょう。

オートコンプリートを有効にしたプロンプト上の緑色の出力に注目してください。表示されるのは、オートコンプリートリストの結果です。上記のリストでは、すべてモジュール属性の名前ですが、名前が ( で終わる場合、それは関数です。

これを多用することで、APIの学習に役立ちます。今これを理解したので、 bpy のモジュールの調査に進みましょう。

モジュールを使ってみる前に

デフォルトのBlenderシーンで3D Viewport(3Dビューポート)を見ると、Cube(立方体)、Light(ライト)、Camera(カメラ)の3つのオブジェクトに気付くでしょう。

  • すべてのオブジェクトはコンテキスト内に存在し、それらが操作されるさまざまなモードが存在します。

  • とにかく、アクティブなオブジェクトは1つだけであり、複数のオブジェクトが選択されている可能性があります。

  • すべてのオブジェクトはblendファイル内のデータです。

  • これらのオブジェクトを作成および変更する操作/関数があります。

上記のすべてのシナリオ(すべてがリストされているわけではありませんが、注意してください...)の場合、 bpy モジュールはデータにアクセスして変更する機能を提供します。

bpy.context

注釈

以下のコマンドで適切な出力を表示するには、3Dビューポートでオブジェクトを選択していることを確認してください。

../_images/editors_python-console_bpy-context.png
bpy.context.mode

現在の3Dビューポートのモード(オブジェクト、編集、スカルプトなど)をプリントします。

bpy.context.objectbpy.context.active_object

3Dビューポートのアクティブオブジェクトにアクセスできます。

Xの位置を1に変更します:

bpy.context.object.location.x = 1

オブジェクトを前のX位置から0.5移動します:

bpy.context.object.location.x += 0.5

位置 X、Y、Zを変更します:

bpy.context.object.location = (1, 2, 3)

X、Yコンポーネントのみを変更します:

bpy.context.object.location.xy = (1, 2)

オブジェクトの位置のデータ型:

type(bpy.context.object.location)

アクセスできるデータがたくさんあります:

dir(bpy.context.object.location)
bpy.context.selected_objects

選択したすべてのオブジェクトのリストにアクセスできます。

これを入力してから Tab を押します:

bpy.context.selected_objects

リストの最初のオブジェクトの名前をプリントするには:

bpy.context.selected_objects[0]

複雑なもの...しかし、これはアクティブオブジェクトを含まないオブジェクトのリストをプリントします:

[obj for obj in bpy.context.selected_objects if obj != bpy.context.object]

bpy.data

bpy.data には、blendファイル内のすべてのデータにアクセスできる関数と属性があります。

現在のblendファイル内の次のデータにアクセスできます: オブジェクト、メッシュ、マテリアル、テクスチャ、シーン、スクリーン、サウンド、スクリプトなど。

それはたくさんのデータです。

../_images/editors_python-console_bpy-data.png

bpy.ops

ツールシステムは、操作の概念に基づいて構築されています。操作は通常、ボタンやメニューから実行されますが、Pythonから直接呼び出すこともできます。

すべての操作のリストについては、 bpy.ops APIドキュメントを参照してください。