
| ホーム | ツリー | 索引 | ヘルプ |
|
|---|
| Module API_intro |
|
(*)は更新した印。
2.42からの変更点についてはhttp://mediawiki.blender.org/index.php/Release_Notes/Notes243/Python_APIを見てください。Armature (*)
BezTriple (*)
BGL
Camera (*)
Curve (*)
Draw
(*)
Effect
Geometry (*)
Group (*)
Image (*)
Ipo
(*)
IpoCurve (*)
Key
(*)
Lamp
Lattice (*)
Library (*)
Material (*)
Mathutils (*)
Mesh
(*)
MeshPrimitives (*)
Metaball (*)
NMesh (*)
Noise
Object (*)
Modifier (*)
Pose (*)
Constraint (*)
ActionStrips (*)
Registry
Scene (*)
Sound (*)
Text
Text3d
Texture (*)
TimeLine
Types
Window
Theme (*)
World
sys
特別な機能:
スクリプト:メニューへの登録方法、説明文の書き方、設定に関すること (new)
Blender Python APIは、 Blender内部のデータと機能にアクセスできるPythonモジュールの集まりです。 現在も改良が続いています。
Pythonはプログラミング言語のひとつです。 PythonでスクリプトをつくればBlenderをリアルタイムに拡張できます。 初心者はPythonのチュートリアル から始めると良いでしょう。
スクリプトを使えばいろんなことが出来ます。 例えば、繰り返し作業を自動化したり、モデル編集用の新機能を追加したり、 標準でサポートしていないファイル形式のインポートやエクスポートをしたりできます。 もっと複雑なアプリケーションをつくることもできます。 Blenderには最初からスクリプトが付属していますし、Blender関連サイトには他にもたくさんのスクリプトがあります。blender -P
<scriptname>というコマンドでBlenderを起動すると、
指定したスクリプトが実行されます(<scriptname>はスクリプトのファイル名です)。
または、'blender myfile.blend -P textname'とすると、
.blendファイルに保存されているTextの名前から実行できます。
blender -b <blendfile> -P
<scriptname>としてください(語順が重要)。
<blendfile>は任意の.blendファイルです(Blenderのホームディレクトリ(Blender.Get('homedir'))にある.B.blendでも良い)。
このモードではウィンドウは表示されず、
スクリプトが終了したらすぐにBlenderが終了します。
Textを作成してオブジェクトとイベントにリンクするという手順です)。
例についてはObject.Object.addScriptLinkを見てください。
Blender.Runモジュール関数を使ってください。
実行されるほうのスクリプトは、自身のグローバル辞書を持ち、自身のコンテクストで実行されます。
メッセージ、メニュー、数値・文字列用の小さな入力ボックスを表示する。
ココを見てください)。
主な入力イベントキューを横取りして、キーボード操作、マウス操作、 再描画イベントを処理する(あるいはBlenderに渡す)。 この使い方は良くありません。個人使用のためにあります。
Blender.Run()を見よ)。
Window、Draw、BGLモジュールのドキュメントを読んでください。
また、Pythonのサイトを見れば便利な外部モジュールについて調べられます。
しかし外部モジュールはBlenderに付属していないので、
外部モジュールをインポートしたスクリプトを他の人が使うときには
その外部モジュールが別途必要になります。
PythonはBlenderに組み込まれているので、 BPythonモジュールにアクセスするにはBlender内でスクリプトを実行する必要があります。 外部のPythonインタプリタからはBlenderモジュールをインポートできません。
その一方で、いろいろな用途のために、スクリプトの自動処理によってBlenderを制御できます。
興味があれば、以下の機能について学んでください。
OnLoadスクリプトリンク、 "-b <blendfile>"
(バックグラウンドモード)や"-P <script>"
(スクリプトの実行)のコマンドラインオプション、 Blender.Save, Blender.Load, Blender.Quit などのAPI、 LibraryやRenderモジュール。
注意:Blenderのウィンドウが初期化される前にスクリプトが実行されるので、
ウィンドウ関連の属性を取得・設定する関数(Windowの関数など)は使えません(ウィンドウを表示しない'-b'モードでも同様です)。
そういう関数を使いたいときは、OnLoadスクリプトリンクを利用してください
(Scene.Scene.addScriptLink参照)。
コマンドラインスクリプトからOnLoadスクリプトリンクを作成してセットすることもできます。
Blenderがバックグラウンドモードなのかインタラクティブモードなのかを調べるには、
Blender.modeモジュールの変数を見てください。
コマンドラインとバックグラウンドモードの例.
ユーザーが操作しなくても自動的に動いて色々なことをしてみせるデモンストレーションを作れます。 デモでは、静止画や動画をレンダリングしたり、 レンダリングした動画を再生したり、リアルタイムにアニメーションを再生したり、 ラジオシティを計算したり、他にもいろんなことができます。 .blendファイルをデモにするには、自動実行をするためのスクリプトを書いて、 OnLoadスクリプトリンクとしてシーンにリンクしてください。 そうすれば、Blenderを "-y" 引数で起動しない限り、.blendファイルを開くと自動的にデモが開始されます。
Blenderにはゲームエンジンが内蔵されていて、3Dゲームを作って遊べるようになっています。 ゲームのAIや制御などを強化するスクリプトを書けば、 より複雑な相互作用と仕掛けを実現できます。 ゲームエンジン用のAPIは、このリファレンスで説明するBlender Python APIとは分かれています。 ゲームエンジン用のAPIリファレンスは、www.blender.orgのDocumentationにあります。
そもそもプログラムとはデータ構造を操作するものであり、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.
| ホーム | ツリー | 索引 | ヘルプ |
|
|---|
| Generated by Epydoc 2.1 (modified by morita) on Tue Feb 27 21:06:19 2007 | http://epydoc.sf.net |