元記事:Python Scripting



Python スクリプト



追悼:Jacques Guignot氏


このリリースを私たちの仲間である、フランス人開発者、Jacques Guignot氏に捧げます。

Jacques氏は、Michel Selten氏が活動を始めた二、三ヶ月後、私たちが Blender 2.25 Publisher からの API を拡張するためにリライトをまだ始めてまもない頃、チームに三番目に参加されたメンバーです。Ipo モジュールのリライトに加え、氏は私たちの実装が最終的に古いものと置き換えた時に、2.28リリースに存在した、すべての新しいモジュール ― Curve、Effect、Metaball、World ― にも貢献されました。このチームの頑張りは後に、最初のBlender Conference(2003年)の "Best Coding Achievement" に選ばれました。

Jacques氏はコンピュータプログラミングの教師であり、熱烈なオープンソースファンでした。また、教養と感性の人であり、話すのが楽しい人でした。
私たちのほとんどが氏が非常に親切で友情に厚い開発者であることを思い出しているでしょう。
ありがとう、友よ!

Jacques氏は2005年2月6日にこの世を去りました。


Blender2.37 の Blender Python API リリースノート


1) 重要な注意

- このリリースはまだ Python Ver.2.3 でコンパイルされており、次のリリースでは2.4でされるでしょう。もし2.4でコンパイルする必要がある場合、blender.orgのTesting Buildsフォーラムをチェック、もしくは質問してみて下さい。ここでは公式リリースから約一週間後あたりに、これらを利用可能にするかについて議論されていました。

- スクリプトのディレクトリの構造が少し変更されています。
現在 data ディレクトリと modules ディレクトリの両方がメインの Scripts ディレクトリの内側にあります。
これにより、いくつかのスクリプトで必要なBPython モジュールをすべて見つけることができないため、ユーザ自身の .blender/ フォルダを home ディレクトリに持つ人では問題が起こる可能性があります。この「修正」は、極めてシンプルです:

Blender をインストールしたディレクトリから、Scripts/ ディレクトリの内容を、/.blender/scripts ディレクトリへコピーするだけです。


2) 追加と更新:
- 新しいモジュール: Text3d + Font。3D TextObject へのアクセス用。

- 登録スクリプト用の新しいメニュー:Render、Themes、FaceSelect、System
- Material と Mesh に、OOPs での位置とアトリビュート選択を追加。
- .insertIpoKey()メソッドを、Object、Material、Lamp、World、Camera に追加。

- .clearScriptLinks() メソッドが、追加されたユーザアトリビュートのクリアを行うため、オプションで ScriptLink のリストも許容するように。
- いくつかのタイプで Scene、Object 内の Layer へのアクセスが改良。古い .Layer(s)は integer(Layer のビットマスク)を想定していますが、.layers は文字列リストを許容します。

Script Links:
- 新規:Space ハンドラ ― ScriptLink とは違い、space(現在は 3DView のみ)へイベントと描画のコールバック用にリンクします。詳細は Blender Python Reference documentation for 2.37 を参照して下さい。
- 新イベント:"Render"。"Render" として、静止画もしくはアニメーションレンダリング前に、もしくは "PostRender" として、レンダリング後にクリーンアップ用に実行されます。
- "blender -y" は Scene onload 以外の、すべての Script link も禁止するように。
- ScriptsButtonsWindow に、新しい "Enable Script Links" ボタンを追加。プラス、Script Link の追加を助けるため、見た目を改良。


それぞれのモジュール

Blender:
- Run()、UpdateMenus()、ShowHelp() を追加。
- Get() は User Preferences の File Paths タブからすべてのパスを返すことができるようになりました。
- Get() now can return all paths from User Preferences window, File Paths tab
- .mode アトリビュートを追加。Blender が "background" モード、もしくは "interactive" モードかを知ることができます。
- .event アトリビュートが GUI イベントのコールバック中、(適正なら)アスキー値を保持するように。

Object:
- Particle interaction の設定と、softbody 設定をサポート。
- object.getData(): オプションの boolean パラメータ、'names_only' を追加。
- object.get/setDupliVerts()

Curve:
- curve.isCyclic()、CurNurb.isCyclic()
- get/setBevOb() (get, set と Bevel Object のクリア)
- flagU と flagV アトリビュートへのアクセス。

NMesh:
- 完全に Edge をサポート。
- face.sel (EditMode の選択状態)と、face.hide アトリビュート。
- nmesh.update(): オプションの boolean パラメータ 'vertex_shade' を追加。シェーディング情報で VertexColor を初期化するのに使用されます。
- nmesh.setMode() が、nmesh.getMode() の返り値のような int のパラメータを許容するように。
- nmesh.transform()
- GetNames()

Window:
- file と image selector が、コールバックのメソッドをサポートするように。

Image:
- image.setFilename()
- image.getPixelF()、image.getMaxXY()

Camera:
- Ortho Camera 用の camera.get/setScale 。

Draw:
- Image()
- Text() と GetStringWidth() で、大きい文字をサポート。

Texture:
- 'NormalMap' image フラグ

Scene:
- scene.getActiveObject()

Scene.Render:
- render.getTimeCode()

Registry:
- ディスク上に保存されたコンフィグファイルからの読み書きをサポート。

Theme:
- Time space と、新しい theme 変数のサポート。

バグ修正:
#2093: Ipo.addCurve() が未定義のタイプの curve を追加していました。
#2160: 異常なスクリプトヘッダが、他のスクリプトの登録を止めていました。
#2117: Armature.Bone.setName() でオーバーフロー。
#2157: Blender.Image.image.reload() メソッドでクラッシュ。
#2192: sys.makename() のパラメータの長さが他の関連の関数より短い。
#2074: 完全に空の文字列ボタンによるクラッシュ。
#2123: Text.Load()の修正で、ファイルネームの文字列が上書きされていました。
#1655: background モード(blender -P script)を修正 / 正しい動作のため拡張。
#2379: bevel_center の UI を、ボタンの値の表示を改良するため少し変更しました。
#2254: Curve.appendPoint()が、PySequence_Check()で Segfault が起こしていました。
#2566: Scene の MapOld と MapNew 値を設定しても何も行われていませんでした。
#2418: File Selector をプログレスバーの設定の後で呼び出すとクラッシュしていました。
#2429: メニューのキャンセルイベントが、通常のイベントとして拾われていました。
#2211: VertexGroup のある Mesh に Vertex を追加するとハングアップしていました。
#2033: Lattice に Parent されている Mesh の Vertex 群のスケーリングが正しく行われていませんでした。
#2607: 400を超える長さを可能にした文字列ボタンで Segfault の可能性。
#2490: Vector == None で Warning 発生。
#2476: Image.Draw() が確実な Screen 設定に失敗する。

- World.get/setMode() が登録されていませんでした。
- Scripts Window のスライダのコールバック中の再描画の妨害。
- BGL ドキュメント内の、OpenGL の URL が壊れていたのを修正。
- Camera、World、Material モジュールに修正と、失われていた Ipo チャネルを追加。
- Mathutils: Matrix_Determinant() が行列式の結果ではなく、入力引数を返していました。コードの修正し、AngleBetweenVecs() の精度を16桁にしました。(以前は8桁)

4) スクリプト:

更新:

Save Current Theme
Texture Baker
BVH importer
Apply Deform
Sel Same (Faces に似ています)
AC3D import と export
BPy Doc Browser
System Info
Help Browser
Dispaint
Fix From Armature (現在の名前は Fix From Everything)
Unweld
VRML 2 (現在の名前は VRML 97)
Batch Name Edit
Paths importer (svg パート)
Wavefront OBJ importer と exporter

新規:

X3D exporter: Bart氏作。
Envelope Suite: Jonas Petersen氏作。
BVH 2 Armature: Jean-Baptiste Perin氏作。
Camera Changer: Regis Montoya氏作。
Interactive Console: Campbell氏作。
Discombobulator: Evan J. Rosky氏作。
Scripts Config Editor (helper スクリプト)

5) ドキュメント

- 新旧のスクリプトの基本的なドキュメントが Help メニューの、Scripts Help Browserスクリプトで読めるように。いくつかはオンラインドキュメントへのリンクもあります。

また、下記は新しく提供されたスクリプトの Wiki ページです。
New Scripts

- リリース後まもなく、改訂版の2.37 BPython API Reference が blender.org の documentation セクション で利用できるようになるでしょう。

6) クレジット

(98 コミットが1/4から5/29までに行われました)

下記はコードのコミット、バグ報告、ドキュメント記述、パッチ、提案、スクリプト更新、追加などにより貢献された方々です(もし見逃していた方がいましたらすみません。訂正に感謝します)。

Joilnen B. Leite氏、Stephane Soppera氏、Ken Hughes氏、Stephen Swaney氏、Johnny Matthews氏、Joseph Gilbert氏、Campbell Barton氏、Jonathan Merritt氏、Willian P. Germano氏、Tom Musgrove氏、Toni Alatalo氏、Austin Benesh氏、Martin Poirier氏、Kent Mein氏、Michael Reimpell氏、Yann Vernier氏、Daniel Dunbar氏、Jean-Michel Soler氏、Alex Mole氏、Gergely Erdelyi氏、Roland Hess氏、Manuel Bastioni氏、Paolo Colombo氏、Melchior Franz氏、Gert de Roost氏、Bart氏、Jonas Petersen氏、Jean-Baptiste Perin氏、Regis Montoya氏、Evan J. Rosky氏、German Alonso Tamayo氏