Module API_intro
[frames | no frames]

Module API_intro

The Blender Python API Reference 日本語版

(*)は更新した印。

2.42からの変更点についてはhttp://mediawiki.blender.org/index.php/Release_Notes/Notes243/Python_APIを見てください。

トップモジュール:

サブモジュール:

追加情報:

はじめに:

Blender Python APIは、 Blender内部のデータと機能にアクセスできるPythonモジュールの集まりです。 現在も改良が続いています。

Pythonはプログラミング言語のひとつです。 PythonでスクリプトをつくればBlenderをリアルタイムに拡張できます。 初心者はPythonのチュートリアル から始めると良いでしょう。

スクリプトを使えばいろんなことが出来ます。 例えば、繰り返し作業を自動化したり、モデル編集用の新機能を追加したり、 標準でサポートしていないファイル形式のインポートやエクスポートをしたりできます。 もっと複雑なアプリケーションをつくることもできます。 Blenderには最初からスクリプトが付属していますし、Blender関連サイトには他にもたくさんのスクリプトがあります。

スクリプトの実行方法:

スクリプトを実行するには次のような方法があります:

ユーザーとの相互作用:

スクリプトに出来ること: これ以上の情報については、WindowDrawBGLモジュールのドキュメントを読んでください。 また、Pythonのサイトを見れば便利な外部モジュールについて調べられます。 しかし外部モジュールはBlenderに付属していないので、 外部モジュールをインポートしたスクリプトを他の人が使うときには その外部モジュールが別途必要になります。

コマンドラインモード:

PythonはBlenderに組み込まれているので、 BPythonモジュールにアクセスするにはBlender内でスクリプトを実行する必要があります。 外部のPythonインタプリタからはBlenderモジュールをインポートできません。

その一方で、いろいろな用途のために、スクリプトの自動処理によってBlenderを制御できます。 興味があれば、以下の機能について学んでください。 OnLoadスクリプトリンク、 "-b <blendfile>" (バックグラウンドモード)や"-P <script>" (スクリプトの実行)のコマンドラインオプション、 Blender.Save, Blender.Load, Blender.Quit などのAPI、 LibraryRenderモジュール。

注意:Blenderのウィンドウが初期化される前にスクリプトが実行されるので、 ウィンドウ関連の属性を取得・設定する関数(Windowの関数など)は使えません(ウィンドウを表示しない'-b'モードでも同様です)。 そういう関数を使いたいときは、OnLoadスクリプトリンクを利用してください (Scene.Scene.addScriptLink参照)。 コマンドラインスクリプトからOnLoadスクリプトリンクを作成してセットすることもできます。 Blenderがバックグラウンドモードなのかインタラクティブモードなのかを調べるには、 Blender.modeモジュールの変数を見てください。

コマンドラインとバックグラウンドモードの例.

デモモード:

ユーザーが操作しなくても自動的に動いて色々なことをしてみせるデモンストレーションを作れます。 デモでは、静止画や動画をレンダリングしたり、 レンダリングした動画を再生したり、リアルタイムにアニメーションを再生したり、 ラジオシティを計算したり、他にもいろんなことができます。 .blendファイルをデモにするには、自動実行をするためのスクリプトを書いて、 OnLoadスクリプトリンクとしてシーンにリンクしてください。 そうすれば、Blenderを "-y" 引数で起動しない限り、.blendファイルを開くと自動的にデモが開始されます。

ゲームエンジンAPI:

Blenderにはゲームエンジンが内蔵されていて、3Dゲームを作って遊べるようになっています。 ゲームのAIや制御などを強化するスクリプトを書けば、 より複雑な相互作用と仕掛けを実現できます。 ゲームエンジン用のAPIは、このリファレンスで説明するBlender Python APIとは分かれています。 ゲームエンジン用のAPIリファレンスは、www.blender.orgDocumentationにあります。

Blenderのデータ構造:

そもそもプログラムとはデータ構造を操作するものであり、Blender Pythonスクリプトも例外ではありません。 Blenderの構造は「オブジェクト指向」です。 そしてBlender Pythonのインターフェースは、Blenderの画面と同じ方法でオブジェクトや属性を表現しようとしています。 そのため、Blender Pythonでプログラミングするときには、 BlenderのOOPSウィンドウの情報を理解することが重要です。 OOPSウィンドウは、Blenderのオブジェクトとその相互関係を表示するものです。

Blenderのグラフィック要素(メッシュ、ランプ、カーブなど)は、 ObjectとObDataという2つの部分から成っています。 Objectは、 どの要素にも存在する位置・回転・大きさという情報を持っています。 ObDataは、要素の種類ごとに特有の情報を持っています。

各ObjectはObDataにリンクしています。複数のObjectでひとつのObDataを共有できます。 また、グラフィック要素はマテリアル・リストにもリンクしています。 このリストを持つのは標準ではObDataです。

Blenderのすべてのオブジェクトは、それぞれ異なる名前を持つ必要があります。 しかし、名前にはオブジェクトの種類を示す文字列が自動的に付与されるので、例えばランプObjectとランプObDataの両方にLamp.001という同一の名前を付けることができます (それぞれOB:Lamp.001、LA:Lamp.001となります)。

Blenderの内部とその挙動について理解を深めるには、 Blender Architecture document を見てください。

スクリプト作成の初心者の方へ:

インタプリタ式はコンパイル式に比べて実行速度が遅い、とよく言われますが、 ほとんどのアプリケーションにとって問題にならない程度の差です。 とはいえ、遅くなる箇所をプロファイリング (あるいはBlender.sys.timeを使った単純な時間計測)で突き止めて上手に最適化すれば、 かなり高速化できる場合が多いです。最高のスクリプトをいくつか試しに使って、 どんな事が出来るのか体験してみてください。驚くかもしれません。


Version: 2.43

Author: The Blender Python Team (and Translator: morita)

Notes:

Requires: Blender 2.43 or newer.

See Also:
www.blender3d.org: main site, www.blender.org: documentation and forum, blenderartists.org: user forum, projects.blender.org, blender architecture: blender architecture document, www.python.org, www.python.org/doc, Blending into Python: User contributed documentation, featuring a blender/python cookbook with many examples.
Generated by Epydoc 2.1 (modified by morita) on Tue Feb 27 21:06:19 2007 http://epydoc.sf.net