元記事:Release Notes-Notes246-Game Engine - BlenderWiki


ゲームエンジン



パッチ823582188211が追加され、様々なゲームエンジンの改良と、Windows のプロジェクトファイルの修正が行われました。


2Dフィルタ


この新しい Actuator は、モーションブラー、ブラー、ソーベル輪郭抽出などような多くの画像フィルタを最終レンダリング結果に適用します。
Custom 2D filters で、GLSL を使用したユーザによる2Dフィルタを作成できます。使用方法はビルトインのフィルタと同じですが、2DFilter Actuator で "Custom Filter" を選択後、シェーダプログラムを TextWindow に書き、そのシェーダプログラムの名前を Actuator に入力しなければなりません。



モーションブラー

Motion Blur

 セピア化

Sepia

 輪郭抽出

Sobel




ぼかし

Blur

 画像の膨張による画像の補間

Dilation

 


訳注:以下の項は元のページより少し再編成しています。ていうかめちゃくちゃだよこれ…


Loc/Rot/Scale Ipo の変更


すべての Ipo チャネルが独立になりました。Blender 2.45では、3つの Loc Ipo チャネルは、自動的に全部まとめて設定されていました。例えば、X、Y、Z座標を決定するのに単に LocX Ipo チャネルのみでも十分でした。Y と Z値は Blender 内のオブジェクトのオリジナルの Y と Z の位置から持ってきていたからです。
3つの Rot や 3つの Scale Ipo チャネルについても同様です。欠けているチャネルは、オブジェクトのBlender 内でのオリジナルの方向・大きさから持ってきた定数を持っていると仮定していました。

このパッチで、すべての Ipo チャネルが独立します。もし、Blend ファイル内で、同じタイプの3チャネルを一緒に定義し忘れていた場合、これにより、後方互換性の問題が生じる可能性があります。オブジェクトの未定義の Loc、Rot、Scale は、そのオブジェクトが子、もしくは生成された物である場合、親もしく生成したオブジェクトの Loc/Rot/Scale の影響を受けます。
(訳注:元々後方互換性などほとんどないも等しいし)。


Delta Loc/Rot/Scale Ipo


Delta Loc/Rot/Scale(dLoc/dRot/dScale)Ipo カーブが Blender ゲームエンジンでもサポートされました。ただし以下の制限があります。

1. Delta Loc/Rot Ipo はそのオブジェクトの(ローカルではなく)グローバル座標・方向を変更します。

2. Delta Scale はオブジェクトのローカルスケールを変更します。

3. Delta Ipo カーブは、Ipo が最初にアクティブになった時、オブジェクトのスタート時の Loc/Rot/Scale と相対的に働き、その後 Delta Ipo はグローバルになります。これはつまり、後で Ipo カーブをリスタートした時、その間にそのオブジェクトの Loc/Rot/Scale を変更したとしても、そのオブジェクトはこの初期 Loc/Rot/Scale を返すということです。

もちろん、現在はチャネルが独立されて適用されるため、これは Ipo チャネル内に定義されている特定の Loc/Rot/Scale にのみ適用されます。

4. オブジェクトが Blender から BGE(Blender Game Engine)に変換された時、Delta Ipo カーブ内の初期の非0値の結果であった Delta Loc/Rot/Scale を無視します。しかし、Delta Ipo カーブがアクティブになるとすぐその非0値は計算に入れられ、そのオブジェクトは Blender での Loc/Rot/Scale と同じ状況にジャンプします。
初期非0値のある Delta Ipo カーブは、いい習慣ではないことに注意して下さい。論理的には Delta Ipo カーブは最初は常に0から始まるべきなのです。

5. もし、同じタイプのグローバルと Delta チャネルの両方(LocX と DLocX など)を設定した場合、その結果はグローバルチャネルが二つのチャネルの和と等価になります(LocX+DLocX)。


rayCastTo


KX_GameObject: 用の新しい Python メソッド、rayCastTo()。

rayCastTo(other,dist,prop)

別の場所/KX_GameObject に向き、dist 内にあり prop に Property がマッチする最初のオブジェクトを返します。オブジェクトがなかったり、prop がマッチした物がなければ None を返します。

パラメータ:
[wiki]-''other'' = 3つのタプル(X, Y, Z座標)もしくはオブジェクトの参照(ターゲットはそのオブジェクトのセンター)
(タイプ:リスト [x,y,z]もしくはオブジェクトの参照)

-''dist'' = 検索する最大距離(負の値で背後を見ます)。0もしくは省略した場合、other の場所までになります。
(タイプ:float)

-''prop'' = 対象オブジェクトが持っているべき Property 名。空もしくは省略した場合、すべてのオブジェクトを検索します。
(タイプ:String)
[/wiki]

スピードアップ


このパッチでは、データ変換モジュールの BL_ConvertMesh メソッドを変更し、作成されたポリゴン Material オブジェクトの数を減らすことができるようにします。

普通はそれぞれの Material バケット(一つの Material と共にレンダリングされる Mesh のグループ)には一つの Materialオブジェクトしかありません。しかし、その時にコンバータ内で作成される Material の数は非常に多くなり、ポリゴン数の多いシーン内で多くのメモリを消費します。このパッチは、それらのコンバータ内で一時的にのみ使用される Material オブジェクト(KX_BlenderMaterial)を削除します(そして現在はゲーム終了後にコンバータが破棄された時のみ削除します)。

Cube を7回 Subdivide した物では(90kポリゴン以上)、2.45のゲームエンジンでは200MBを使用していましたが、このパッチを適用し、Game メニューの "Use Blender Materials" オプションを ON にしたSVN ビルドでは44MBでした。


Armature デフォームされた Mesh の交換の修正


Deform モディファイア(Armature)を持つオブジェクトの Mesh の変更が正しく処理されるようになりました。新しい Mesh にはその Armature の Bone とマッチする VertexGroup がないといけません。簡単にいうと、Blender 内で新しい Mesh をそのオブジェクトに割り当て、Action をテストした時、その新 Mesh が正しくデフォームされないといけないということです。これでゲーム中にそのオブジェクトの Mesh を交換しても、同様にデフォームされるでしょう。


Rader Sensor で負の軸を指定可能に


-X axisなど、負の軸を指定可能になりました。


BGE 内でのリアルタイム SetParent 関数


このパッチには、ゲーム中に親子関係を形成・破棄するための新しい関数、KX_GameObject::setParent() と KX_GameObject::removeParent()関数があります。これらの関数は Python と、新しい Actuator、Parent(KX_ParentActuator)からアクセスできます。関数のドキュメントはこちらにあります。
Parent した時、そのオブジェクトは方向、位置、スケールを保持しますが、その時点からその親により更に回転、移動、スケーリングされます。
親子関係が破棄された時、そのオブジェクトはその時の方向、位置、スケールを保持します。
もしそのオブジェクトもしくは新しい親の X、Y、Z スケールがε以下ならこの機能は影響を及ぼしません。


ESCキー


[ESC]キーは Keyboard Sensor で ESC を設定していなければ、デフォルトですべてのモードでゲームを終了するようになりました。もし[Esc]キーを他に割り当てていた場合、ゲームデザイナーはゲームを終了する代替の方法を用意する必要があります。


getLinearVelocity


getLinearVelocity()で local Velocity も得られるように。


元記事:Release Notes-Notes246-Game Engine - BlenderWikiの18:09, 19 May 2008版を元にしています。