Release Notes-Notes241-API Misc - BlenderWiki


PythonAPI



POSE


Python Pose モジュール

Log:
Python用の pose コード。
- object.getPose を追加。Pose/Pose Bone の操作が可能になります。
- matrix のシーケンスアクセサ内のオーバーフローバグを修正。
- mat3 から vec / roll を取得するコードを追加。
- NLA にいくつか内部修正。Bone の行列を設定可能に。


Mathutils


Python Mathutils 修正

Mathutils の修正:#3737 Vector.resize4D() が、2.37ではしていた、4つめの要素(スケーリング要素)への1をセットしていませんでした。これはより「正確」ですが、あまり役に立ちません。matrix.resize4x4 も1を入れているので、前の状態に戻し、一貫性も保った方がいいのかもしれません。


Mathutils

[ #3661 ] Matrix クラスの resize4x4 が、対角線に1をセットしていませんでした。



ARMATURE、BONE、CONSTRAINT


バグ修正: #3738 キーが見つからない時、BonesDict が、KeyError 例外を投げる代わりに None を返していました。また、構造体の初期化についての2・3のコンパイルの Warning を修正しました。

[ #3712 ] ある Armature 上での makeEditable() と update() の呼び出しが、Bone を二回複製していました。

- bone.children を、Bone の直接の子を返すよう修正。
- 以前の挙動ができるよう、bone.getAllChildren() を追加。


Constraint の修正

bf-comitters ML の、「秘密の実習生」によるバグ修正。get_constraint_target() 関数で、ある Constaraint が未知のタイプを所持していた時にポインタが初期化されなくなるのを防ぐため、そのケースも捕捉すべきでした。


BEZTRIPLE



Python Beztriple の修正

Log: setPoints() の printf を削除、適切な例外処理を追加。


Window


Window Editmode 修正

Window.Editmode(0) を修正、U.undosteps がゼロでない場合、undo_push_mesh() のみが呼ばれるように。
また、好きなときにいつでも Undo 情報のプッシュを中止できる、オプションパラメータを追加。


Window Theme

- 小さな修正:今までなかったTheme オプション(bone_solid、bone_pose、strip、strip_select)を Blender.Window.Theme に追加。また、(バージョン情報に)ともない、theme をスクリプトとして保存するスクリプトと、モジュールドキュメントを更新。


IPO


IPO.getKey

Log: Michael Reimpell氏による、選択中の Relative キーの get/set と、Ipo Shape key の現在の値を取得するパッチを適用。まだ、メソッド/アトリビュートをすべきか、どう命名すべきかといった議論すべき問題がありますが、これは(おそらく)将来の API のリライトで着手される予定です。


OBJECT


Object.Get

M_Object_Get を、もっと高速な Object_CreatePyObject に更に置き換え。Object.GetSelected が、3DView に(その Object が)いない場合に、None を返さないように。
これはドキュメントに書かれておらず、常にリストを得られると想定しているスクリプトではめちゃくちゃになっていたようです。代わりに、単に空のリストを返すようになりました。


Object.GetSelected

Object.GetSelected()に関していくつか注意を追加 - 最後の Localview を使用します。


Object.insertShapeKey

jean-michel soler(jms)氏からのパッチ - .insertShapeKey()

この Python API は、ある Object に Shape Key を挿入します。Mesh、Lattice Curve、Surface で動作します。以下がその使用方法です。
import Blender
OBJECT=Blender.Object.GetSelected()[0]
OBJECT.insertShapeKey()


Object の修正

Object.Get( name ) が、AttributeError 例外を投げていました。より適切な ValueError 例外を投げるよう変更しました。


Object.Join

Object の Join の Python フック、Object.Join()

Join のコールを space.c と view3dmenu から分離し、select_group_menu() のように、space.c 内の join_menu() に入れました。join_curve、join_mesh などからの okee() が join_menu() に入ったため、Python でこれらを邪魔な UI メニューなしで呼び出せるようになりました。またこれにより、以前は二つの場所で行っていた処理を、現在は join_menu() が行っているため、少し改善されています。



Object.insertPoseKey

NLA/PATH ウォークサイクルを Action に焼付ける試みを継続するため、Object.insertPoseKey を追加。


Object.Duplicate




Mesh




Python Mesh バグ修正




NMesh


(mesh.PutRaw() や mesh.update()により)新しい Mesh を作成しようとする前に、NMesh のリストをチェックするローカル関数、check_NMeshLists() を作成。以前は NMesh のリストにゴミがある場合があり、Mesh が何度かめちゃくちゃになっていました。


その他





IPO.addCurve

Toni氏のためのバグ修正:Ipo_addCurve() で、新しい Ipo Curve のデータ初期化を正しく行うため、set_icu_vars() を呼び出す必要がありました。


バグ修正




Scene.getChildren

scene.getChildren() のヒープを速くしました。私のテストでは983.3倍高速です。7200個の Object の取得にかかった時間は、従来:1.18秒、現在:0.0012秒です。
以前は、Scene 内の Object 毎に名前を比較し、すべての Object のリストから参照していました。現在は単に Object をその根元から直接取得し、Python オブジェクトに変換し、リストに加えているだけです。


Curve ドキュメント修正

Log:
バグ修正 #3731: cyclic Ipo Curve の Python API によるアクセスで、"end point" が間違った値で返ってくる、というユーザの報告がありました。これは cyclic Ipo の動作の誤解だったのですが、私たちは今後のため、わかりやすくドキュメントを更新しました。


Lamp モード

Lamp モードを変更するサンプルを epydoc に追加。


コマンドラインのスクリプトバグ修正

Log:
バグ #3658 Daniel Holtz氏による報告(感謝)
http://projects.blender.org/tracker/?func=detail&atid=125&aid=3658&group_id=9

コマンドラインでのバックグラウンドのスクリプト実行:blender -b -P myscript.py
で、Blender 2.40がクラッシュ。

問題は、text.c の add_text() にありました。G.scene がこの時点で NULL になる可能性があります(BG モード)。チェックを追加しました。
323: if (G.scene) /* can be NULL (bg mode) */ BLI_convertstringcode(str, G.sce, G.scene->r.cfra);
スクリプトのファイルネームをコマンドラインのプロンプトで指定するという特別なケースのため、この行を add_text() に追加することにより、BLI_convertstringcode をうまくスキップできるでしょう。もし異議があればおっしゃって下さい。


CleverNumButs





Release Notes-Notes241-API Misc - BlenderWiki
元記事更新日時:09:05, 23 January 2006