Dev:JA/Ref/Release Notes/2.61/Python

提供: wiki
移動先: 案内検索

Blender 2.61: Python

リビジョン42577までの変更です。アイテムを編集および追加する前に、チェンジログの編集のガイドライン(英文)をお読みください。

レンダーエンジン API

  • update_progress()関数。外部レンダーエンジンの進行状況により、プログレスバーを更新します。- r41201
  • .is_animation と、.is_preview プロパティ。アニメーションもしくはプレビューレンダーが完了したかどうかをチェックします。- r41463
  • RenderEngine が永続的 Python オブジェクトになり、フレームがレンダリングされている間、プロパティは存在し、保持されます。コールバックが(将来)追加されるより、今は大抵の場合はこちらの方が便利です。- r41465
  • update() コールバックはシーンをエクスポートするのに使用されるのが理想で、レンダリングのみの場合は render() コールバックを使用してください。現時点ではこれは必須ではありませんが、これを分離することで、後々さらにスレッドセーフな物となるでしょう。- r41465
  • ビューポートレンダリング:- r41473
    • view_draw() コールバックはビューポートの代わりに OpenGL 描画を行います。
    • view_update() コールバックは依存グラフ(depsgraph)の更新後に呼び出されます。
    • tag_redraw() と tag_update() 関数。

レンダーエンジン API ドキュメント(英文)

永続的コールバック

新しい .blend ファイルが読み込まれた時、コールバックを永続的(Persistent)にできるように。- r41485, r41487

例:

import bpy
from bpy.app.handlers import persistent

@persistent
def my_func(scene):
    pass

bpy.app.handlers.frame_change_pre.append(my_func)

シーン更新のチェック

例えば、外部レンダーエンジンでインタラクティブなレンダリングを行いたい時に、シーンに変更があった事をチェックする機能が追加されました。

  • 二つの Python ハンドラが追加:scene_update_pre() と scene_update_post()。これらは Blender がシーンを変更し、シーン更新を行う前と後に実行されます。- r41476
  • データブロックに is_updated プロパティが追加されました。これはそのデータブロックに更新のタグが付いた場合に、上記のコールバック内で True にセットされます。これはレンダリングに使用されるほとんどの共通データブロック(object、material、world、lamps、texture、mesh、curve)で働きます。- r41476
  • Datablock コレクションにも is_updated プロパティが付きました。セットされた時、このタイプのデータブロックが追加もしくは削除、変更されたことを意味します。これはループを回避するためデータブロック全体をすばやくチェックするのにも便利です。- r41476
  • RenderEngine.view_update() も、ビューポートでのインタラクティブレンダリング用にこれらのプロパティをチェックできるようになりました。- r41476
  • frame_change_pre 内での変更が行われた後の更新がなかったのを修正。

Update API ドキュメント(英文)

オペレータプリセット

3Dビュー、ファイルセレクタ、redo 以外のポップアップでオペレータプリセットが動作するようになりました。- r41669, r41714

オペレータで利用する場合:

bl_options = {'REGISTER', 'UNDO', 'PRESET'}

Library データブロック

データブロックライブラリもしくは None を格納するオプションのコレクション添字。- r41946, r42368

bpy.data.objects["Mesh", "/subsurf_test.blend"]

bpy.data.scenes["Scene", None]

# also works with get()
bpy.data.armatures.get(("some_armature", "//some_lib.blend"), None)

# and with contains test
if  ("Cube", "//lib.blend") in bpy.data.objects:
    pass

Noise モジュール

noise モジュールを新しい Python API に更新。- r42248

  • noise モジュールは現在 mathutils のサブモジュールに移動されており、mathutils.noise からアクセスできます。
  • vector で返す全ての関数が、mathutils.Vector タイプで返すように。
  • 違う実装の random_unit_vector が使用されるようになり、3Dのみでなく、2D/3D/4Dベクトルに対応するように。
  • ネーミング:noise.vector は noise.noise_vector に、noise.vl_vector は noise.variable_lacunarity になりました。
  • API ドキュメントを更新。

その他

  • このリリースでは、ボタン上での右クリック時に Edit Source オプションが利用できるようになりました。これはそのユーザインターフェイスをコントロールする Python ソースファイルを、そのボタンが作成された行で開きます。- r41210
  • UIリストテンプレート:各リスト要素にコントロールを追加する機能 - r41338
  • event.unicode。スクリプトで Unicode のテキスト入力ができます - r41215
  • Quaternion.to_axis_angle() を追加 - r41460
  • mathutils.geometry.distance_point_to_plane(pt, plane_co, plane_no) - r41767
  • mathutils に、不正なタイプ名のエラーメッセージを追加。- r41774
  • 正確なカメラパラメータを再現したい時に必要になる、3Dビューの camera zoom と offset を公開。- r41625
  • SpaceFileBrowser.operator を active_operator にリネーム。- r41625
  • コンテクストメンバ 'active_operator' が追加 - r41669
  • Mesh.validate が不正なカスタムデータレイヤの削除をするよう拡張 - r41281
  • Mesh.validate() の、不正の頂点グループ、NaN値、0のノーマルの処理が改善 - r42528, r42324
  • ID プロパティが raw の(null で終わらない)バイトストリングに対応 - r41861
  • mesh faces に int/float/string プロパティを追加する関数 - r41876
  • scene.render.layers.new()/remove() 関数を追加 - r41957
  • bgpic.add() を new()にリネーム、remove() を追加 - r41965
  • mathutils.geometry.intersect_plane_plane が追加 - r42000
  • clear() メソッドが new()/remove() をサポートする大半の collections に追加。- r42091