トップ  >  1. Blenderリリースノート翻訳  >  Blender機能別  >  Blender2.41 PythonAPI
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をセットしていませんでした。
  • 行列のリサイズで、1を対角線に入れるように。



ARMATURE、BONE、CONSTRAINT


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

[ #3712 ] ある Armature 上での makeEditable() と update() の呼び出しが、Bone を二回複製していました。
  • update()の呼出で、編集 Bone が開放されないバグを修正。

  • bone.children の修正

- 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.Join() を Object の関数に移動しました。
    例:ret_val = ob.join(objects)
    現在は、現在の選択状態や、コンテクストの選択の変更に依存しなくなりました。

  • 各 join_* 関数を、Join ができるモードでないときは0を、動作する時は1を返すように。



Object.insertPoseKey

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


Object.Duplicate

  • 関数 Duplicate を Object モジュールに追加。Object.Duplicate(linked=1)
    基本的に、adduplicate() のラッパーとなっています。
    これまで、Object を Python でコピーするのは簡単ではありませんでした。モディファイア、Particle などを考慮し処理する方法さえありませんでした。現在の選択されている物を使用します。

  • adduplicate() が、dupflags を引数とするよう変更。もう Blender や Python で、[Alt]キーの偽装をする必要がなくなりました。

  • Python の Object.Duplicate() が指定されたデータを複製できるよう、キーワードのパラメータを取るよう変更しました。
    例:Object.Duplicate(mesh=1) # Mesh データも複製

  • Python による複製を、adduplicate() のドキュメントどおり、再描画(redraw)しないように。



Mesh


  • Mesh_getFromObject が、Mesh と Surf タイプで、新しい Mesh に Material リストをコピーするように。Mball と Text はまだ作業が必要です。

  • Blender.Mesh.Mode


Python Mesh バグ修正

  • バグ修正 #3761: Mesh に Face がない時に、mesh.faceUV=1 をセットしようとすると、RuntimeError 例外を投げるように。以前の挙動では何もしませんでした。

  • edge と face の extend() メソッドが、 Edge と Face を与えたパラメータ順に追加するように。
    もし、複製した Edge もしくは Face が指定された場合、その順序は保持されますが、複製された物は削除されるため、表示が合わなくなることに注意して下さい。

  • extend()、findEdges()、faces.uv が、リストとタプルを受け入れるように。

  • mesh.verts.extend() が引数の型チェックを正しく行っていなかったのを修正。

  • mesh.faces.extend() の二つのバグ修正:入力リスト内の複製された Face のエラーチェックと、Texture Face が使用可能な場合の extend の修正。

  • delete() メソッドの参照カウンタの問題のクリーンアップ。また、更に edge.extend() と face.extend() の入力タイプが緩和され、シングルリストもしくはタプルがエラーなしで受け入れられるようになりました。

  • extend メソッド内の参照カウンタの別のバグの修正。

  • Cam Barton氏が me.faces[i].col の setter がないのを発見しました。



NMesh


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


その他


  • バグ修正 #3671: Blender.Beztriple.New() が、エラーメッセージでは受け入れたといっているにもかかわらず、パラメータとしてシーケンスを受け入れていませんでした。このパッチの作者のYann氏に感謝します(また、私はパラメータがタプル内でなくても受け入れられるようにしました)。また、New() 関数についてドキュメントに追加しました。

  • バグ修正 #3652: material.setSpecCol() が、従来使用されていた分かれた状態のパラメータではなく、タプルのみを許容していました(私の tp_getset の更新の以前)。これと他の似たような状況を修正しました。



IPO.addCurve

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


バグ修正

  • Mesh Object との convert 関数のバグ修正。モディファイアのない Object もコンバートできるものの、結果の Mesh は壊れており、EditMode に出入りすると Blender が Segfault していました。これは各 Mesh Object のモディファイアをコンバート前にテストします。

  • Metaball をコンバートした Mesh が、Wire では表示されていませんでした。

    また、選択状況も改良され、すべての新しくコンバートされた Object が選択状態になり、コンバート元の Object は非選択状態になります。



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

  • PupBlock メソッド。これは "clevernumbut" コードのラッパーで、スクリプト作者がユーザ入力用として、複数の違うポップアップを連続使用する代わりに、ポップアップブロックを使用できるようにするものです。総合テスト用の blend ファイルと、サンプルファイルをご覧下さい。

  • clever numbut 内のボタンを整列しました。変数を変更する特定のアクションに適当につけられた名前をコメントアウト、現在はパネルがローテーションで使用されるようになったため、"Rot" で始まるボタンのラベルを追加しました。

  • グルーピングからラベルを排除。クレバー数値ボタンは Rounded Theme により、見栄えがよくなりました。

  • do_clever_numbuts 内の Tooltip が表示されないバグを修正。
    解説:すべてのイベントをクリアし、Tooltip が動作するようになりました。これは理想的ではなく、do_clever_numbuts が呼ばれたときに、呼んだ側のメニューにまだイベントが残っていたから、という理由のみです。ショートカットキーからの呼び出しではこの問題はありません。




Release Notes-Notes241-API Misc - BlenderWiki
元記事更新日時:09:05, 23 January 2006
プリンタ用画面
友達に伝える
投票数:16 平均点:10.00
前
Blender2.41 その他のバグ修正
カテゴリートップ
Blender機能別
次
Blender2.42 Blender ノードUI

ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

2021/07/01版
●Blender.org
BlenderFoundation
- Blenderのダウンロード
- 公式チュート等
- 公式マニュアル(和訳)

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

●テストビルド
Buildbot(自動生成)


●開発関連
公式開発サイト
Blender開発blog
Blender Wiki