トップ  >  1. Blenderリリースノート翻訳  >  Blender機能別  >  Blender 2.49 ゲームエンジンの Python API と Logic の変更
元記事:Dev-Ref-Release Notes-2.49-Game Engine - BlenderWiki
(訳注:便宜上ページを分けています)

Python APIと Logic の変更



GE Python APIの変更


[wiki]-多くの get/set メソッドがアトリビュートに置き換えられ、プロパティに直接アクセスできるように。
--非推奨のワーニングが Game メニューの "Ignore deprecation warnings" オプションで OFF にできるように(Game Player ではデフォルトで OFF になっています)。
--アトリビュートの範囲の限定が改良されました。
--古いスクリプトを新しい API を使用するよう更新するユーティリティを追加。必ずバックアップをとり、行われた変更を注意深く検査して下さい。[/wiki]
Textメニュー → Text plugins → Convert BGE 2.49

[wiki]-内部と外部スクリプトが、Python モジュールとして import できるように。
-Python の ''dir(ob)'' がすべてのメソッド、アトリビュート、プロパティ名をすべてのゲームエンジンの型で確実に返すように。

-削除されたゲームエンジンデータへのアクセス時、SystemError を Raise するように。この場合、'invalid' [[1:http://www.blender.org/documentation/249PythonDoc/GE/GameTypes.PyObjectPlus-class.html#invalid]] プロパティをチェックして下さい。

-Python 2.6互換に(Python 2.3 - 2.6をサポートするように)[/wiki]

[wiki]-GameObject 名が読込のみに(リネームにバグが多かったため)
-GameObject の Print 時、例外が発生しないように。

-CListValue の変更…
--BGE が内部で使用している CValueList の変更を禁止しました。
--''scene.objects.append(1)'' が描画中にクラッシュしていました。
--タイプに ''scene.objects[-1]'' のような負のインデックス値が使用できるように。
--Print の修正、''scene.objects'' がもう[,,,]と表示しなくなりました。
--まだ実装されていない機能の assert が、Blender を閉じていました。
--ユーザがこの関数を実行して保守している時、エラー出力が親切に(私は ListValue.count([1,2,3])で保守していました)。
--新しいメソッド、ListValue.from_id(int)。これは int の Python id()関数の返値を使用し、リストアイテムを検索します。[/wiki]
gameOb.other = id(otherGameOb)
…しばらく後に…
otherGameOb = scene.objects.from_id(gameOb.other)
[wiki]-''GameLogic.addActiveActuator(actu, bool)'' が、リスト中にその Actuator がない場合はエラーを発生させるよう変更。
以前はどんな値でも actu に指定でき、何もせず失敗していました(スクリプトのデバッグを難しくしていました)。

-Actuator を文字列にすることができるように。その Actuator の設定を変更したくない時に便利です。[/wiki]
GameLogic.addActiveActuator(controller.getActuator("SomeAct"), True)
…これを下記でリプレースできます…
controller.activate("SomeAct")
[wiki]-現存のメソッド、''ob.isA("KX_GameObject")'' が、Python のタイプを受け入れられるように(例:''ob.isA(GameTypes.KX_GameObject)'' )[/wiki]


GE Python APIの追加


[wiki]-VideoTexture モジュール
TODO ここにドキュメントを書くこと(訳注:原文ママ。ある程度は[[こちら:http://blender.jp/modules/xfsection/article.php?articleid=279]]を参照して下さい)

-ゲームエンジンからの OpenGL のモジュールとしてのアクセス。直接 import BGL できます。
-新モジュール、''GameTypes''。BGE で定義しているすべてのタイプにアクセスできます。
-GameLogic.getSceneList()
--GameObject の辞書形式のアクセスが可能に。
''ob.someProp = 10'' が ''ob["someProp"] = 10''と書けます。
これにより、新しいアトリビュートの名前の衝突が回避でき、最初にアトリビュート内でルックアップ構築の必要がないため、高速になります。

-Python のアトリビュートとメソッドがゲームのプロパティと衝突するとき、ワーニングを出力するように
-実験的なl KX_GameObject アトリビュート、"sensors"、"controllers"、"actuators" (素晴らしい!!!!)
-KX_GameObject.localInertia attribute
-KX_GameObject.replaceMesh(mesh)
-KX_GameObject.sendMessage(...)と GameLogic.sendMessage(...)
-KX_GameObject.setParent(parent,compound,ghost)、compound と ghost は新しい引数です。
-KX_GameObject.get(key, value) - 辞書のような KX_GameObject["key"]の代替機能。
dictionary like alternative to KX_GameObject["key"].
-KX_GameObject.has_key(key) - キーをチェックする辞書のような関数。
-ListValue.get(key, value) - 辞書のような ListValue["key"]の代替機能。
-ListValue.has_key(key) - キーをチェックする辞書のような関数。
-KX_Camera.useViewport ビューポートのトグルを get/set します(enableViewport(bool)の代替)
-KX_Scene.addObject(...)
-KX_Scene.active_camera が、Actuator なしでもそのカメラをセットできるように。
-KX_Scene.lights - Lamp オブジェクトのリスト
-KX_Scene.cameras - Camera オブジェクトのリスト
-KX_Scene.objects_inactive - (AddObject actuator が追加する前に)非表示レイヤのオブジェクトにアクセスできます。[/wiki]

BGE KX_Camera のスクリーン空間を処理するメソッド - (getScreenPosition、getScreenVect、getScreenRay)

[wiki]-''getScreenPosition(obj)'': スクリーン空間に投影されたオブジェクトの位置を取得します。
-''getScreenVect(x, y)'': カメラ位置からスクリーン座標への方向をベクトルで取得します。
-''getScreenRay(x, y, dist, property)'': スクリーン座標の方向を見て、dist以内の property のプロパティと最初にマッチするオブジェクトを取得します。[/wiki]


Logic Brick


Sensor


[wiki]-Pulse:Collision Sensor の新しいオプション。
--Pulse オプションを ON にすることで、衝突しているオブジェクトの組に変化があるとイベントが Trigger します。

--Collision 内の変化はオブジェクトのポインタから作成されたハッシュだけでなく、最後のイベント時に衝突したオブジェクト数との比較からも探知されます。

--また、Touch Sensor の内部衝突オブジェクトリストも、プロパティもしくは Matarial がマッチしたオブジェクトのみ格納されるよう変更しました。

-''Mouse Sensor''
--右マウスボタン(RMB)の状態の取得が可能に

-''Joystick Sensor''
--2軸のみに制限されていたのを8軸のペアまで引き上げました(8=ジョイスティック16個の軸のペア)

--新しい Joystick Sensor タイプ、"Single Axis"。単なるUp/Down/Left/Right ではなく、直接水平もしくは垂直の移動量を得ることができるようになりました。

--Python アトリビュート "axisSingle" を追加、(軸のリストから取得するのではなく)、選択された軸からの値を取得できるように[/wiki]


Tap 新オプション


Sensor の "tap" オプションを追加。自動的にON/OFFのパルスを生成します

ON にした時、このオプションはその Sensor からのすべての正のトリガを正+負のトリガのペアに変換し、負のトリガは次のフレームに送られます。Sensor からの負のトリガは、このオプションが自動的に負のトリガ二つを生成しますが、 Controller に渡されません。

Controller からの視点では、たとえ接続されている Sensor の状態が正のままであっても、Sensor は1フレーム間だけ正であるように見えます。

このオプションは他の Sensor オプションと下記の方法で相互作用します。
[wiki]-Level オプション:Tap オプションは Level オプションとは互いに排他です。両方は同時には ON にできません。

-Invert オプション:Tap オプションは Sensor の負のトリガを演算し、これを Invert オプションが正のトリガに変換します。
そのため Controller は、接続されている Sensor の状態が負に変わった時に、その Sensor が1フレーム間だけ正に見えることになるでしょう。

-正のパルスオプション:頻度(frequency)オプションが0以外の場合、Tap オプションはリピートされているそれぞれの正のパルスの後に負のトリガを追加します。このケースでは、正のパルスは前述どおり、接続されている Sensor が正であるかぎり、毎フレーム後に生成されます。

-負のパルスオプション:このオプションは Tap オプションとは相性が悪く、Tapオプションが ON の時は無視されます。[/wiki]

注意:Tap オプションがセットされている時、Keyboard Sensor の "All keys" の処理が特別になります。すでにどれだけの数のキーが押されたかに係わらず、正負のペアのトリガが新しくキー入力される毎に発生することになります。
また、キーがまだ押されているかどうかにも係わらず、キーが離されても、トリガーが発生しません。
二つのキーが連続するフレームで押された場合、二つの正のトリガと、直後のフレームで負のトリガが一つ発生します。



優先度の高い Controller


新しいブックマークボタンが Controller の UI で利用できるようになりました(訳注:名前の隣の[★]アイコン)。セットすると Controller が他のブックマークされていない Controller より前に実行されることが保証され、実行の計画が立てられます。
これは起動時に一度だけ実行する初期化スクリプトや、各ロジックフレーム開始時に他の Controller の必要な条件を設定しなければならないスクリプトなどに便利です。

また、Python レベルでも "useHighPriority" アトリビュートにより利用可能です。これはゲーム中でも変更可能です。

注意:複数のスクリプトがブックマークされている場合、これらの中での実行順序は保証されていません。これらがお互いに依存しないようにして下さい。


Python Module Controller


アトリビュート数の制限をなくしました。つまり、パッケージが自動的にサポートされるということです。"myModule.myFunc" 同様、"myPackage.myModule.myFunc" も指定可能で、ネストしているパッケージも動作します。
Python Controller は、1つの引数をとる関数の引数として、Python 関数に渡されます。
これにより、実行時のスクリプト編集が可能になります。
[wiki]-BA スレッド http://blenderartists.org/forum/showthread.php?t=156672
-動画 http://download.blender.org/apricot/live_bge_edit.ogv
(訳注:要VLC など ogg theora を再生できるプレイヤ)
[/wiki]

Actuator


[wiki]-Property Actuator 用のオプション、"toggle" が追加、bool、int、float、timer プロパティをON/OFF(1と0を切り替え)します。[/wiki]


2D filters


[wiki]-canvascoord - gl_TexCoord[3]
--そのピクセルのキャンバス上の座標を取得できるように。
-GLSL シェーダの詳細なエラー出力を(一度)行うようになり、デバッグがしやすくなりました。[/wiki]


カメラ


魚眼(ドーム)と球状パノラマディスプレイ


http://blender.jp/modules/xfsection/article.php?articleid=281

既知の制限
[wiki]-スクリーンのラスタライズが BlenderPlayer では動作しません
-マウスカーソルといくつかのイベントが無視されます
-MapInput の 反射(Refl)とNormal(Nor)オプションが継ぎ目を作ってしまいます[/wiki]


その他


いくつかの変更


[wiki]-"int" プロパティで、int ではなく、long int を使用するようになり、数値の範囲が広がりました。
従来:-2,147,483,648 〜 +2,147,483,647
現在:-9,223,372,036,854,775,808 〜 +9,223,372,036,854,775,807
64ビットシステムで、Python の id()に値を格納することができます。
-Expression Controller で、剰余演算子(%)が使用できるように
-ゲームエンジンを SDL なしでビルドできるように - WITH_BF_SDL
-ゲームエンジンを Solid と Sumo 物理エンジンなしでビルドできるように - WITH_BF_SOLID[/wiki]


バグ修正


その他のバグ修正


2.48aでは修正された小さなバグがたくさんあります。ここではユーザが気づいたであろうバグをリストアップしています。
[wiki]-KX_Scene のカリングアルゴリズムが 正しいカメラを使用していませんでした。
-logicBrick.getExecutePriority がタイポによりクラッシュしていました。
-Python API の CListValue.index(val)とCListValue.count(val)が、pyTypes が CValue に変換できなかった時にクラッシュするのを修正。
-Replace Mesh Actuator が現在のシーンにオブジェクトがない Mesh を参照した時にクラッシュするのを修正。
-Overlay Scene でも Physics Debug Visualization が動作するように。
-KX_GameObject SetParent - 再帰でクラッシュしていたため、自分自身への Parent を禁止するように。
-KX_PolygonMaterial の "gl_texture" アトリビュートが m_tface の正当性チェックをしていませんでした。
-KX_RayCast::RayTest - physics_environment の正当性チェックをしておらず、クラッシュの可能性がありました。
-KX_SceneActuator の getCamera Python 関数が、そこに Camera があるかどうかのチェックをしていませんでした。
-キーのログ記録が、-=_+| で動作していませんでした。
-[End]キーが Keyboard Sensor で全く動作していませんでした。
-新しい Light(KX_LightObject)の追加で、親からの Lamp レイヤの設定が継承されていませんでした。
-参照カウンタのバグ修正、gameOb.getParent()と gameOb.parent の両方で、参照がない場合に参照を追加していました。
-Random Sensor が GUI 内で Seed に0が設定されていた場合、真のランダムイベント列を生成するように。
-複数の[[ハットスイッチ:http://ja.wikipedia.org/wiki/%E3%82%B8%E3%83%A7%E3%82%A4%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF]](Hat)が動作していませんでした。4 hat まで可能に(従来は2)。
-IKオブジェクトが、同時に移動と回転による移動量を持つ Dynamic オブジェクトに正しく摩擦を与えていませんでした(移動が無視されています)。
-ソフトウェア OpenGL が、いくつかのシステムで BGE 開始時にクラッシュしていました(SDL 関連)。
-Dynamic オブジェクトが、Compound Shape に Parent され、その後 Parent解除されたとき、以前 Parent された位置にジャンプしていました。
-Near/Radar の、新しくアクティブになったオブジェクトの位置のエラーの修正。YoFrankie で探知の問題を引き起こしていました。
-Static オブジェクトでの force/velocity アクションが禁止になっていました。
-gImpact シェイプに margin が正しく渡されていなかったのを修正。
-あるオブジェクト用のメソッドが保持されている場合、そのメソッドがゾンビ状態になっているかのチェックがされておらず、クラッシュする可能性がありました。
-シーンの NULL チェックが抜けていたため、ファイルの読込に失敗したときにBlender がクラッシュしていました。
-新しいファイルが読み込まれた時、相対パスの変数が更新されていませんでした。
-lamp energy Ipo が GLSL モードでサポートされていませんでした。
-Rigid Body オブジェクトの 'No Sleeping' オプション(訳注:原文ママ)[/wiki]


修正された報告済のバグ


(訳注:バグ番号のリンク先を閲覧するには、projects.blender.org への登録が必要です。一部削除されている物もあります)
[wiki]-[#18175] 画面分割時の anaglyph ビューでエラー
-[#18228] (ローカルビューの代わりに無限遠のビューポイントを使用している)Camera が回転したときの Specular の変更
-[#17974] blender 2.48用の二つの小さな修正(メモリリークと初期化されていない変数)
-[[[#18419:https://projects.blender.org/tracker/index.php?func=detail&aid=18419&group_id=9&atid=306]]] Overlay Scene で、αブレンドされた Face の描画が異常
-[[[#18423:https://projects.blender.org/tracker/index.php?func=detail&aid=18423&group_id=9&atid=306]]] Overlay Scene での Lamp が、GLSL以外のモードの時、オリジナルシーンとマージされる
-[[[#18428:https://projects.blender.org/tracker/index.php?func=detail&aid=18428&group_id=9&atid=306]]] GLSL モードが不可視レイヤの Lamp を使って影を生成する
-[#18154] 2D Filter と motion blur がすべてのシーンで一度しか実行していない
-[#18504] GL_PROJECTION 行列が、2D Filter によってリセットされてしまう
-[#18504] Dupligroup の Offset が BGE で動作しない
-[[[#18168:https://projects.blender.org/tracker/index.php?func=detail&aid=18168&group_id=9&atid=306]]] ゲームエンジンの Python スクリプトシステム使用による、オブジェクトのローカル方向の取得
-[[[#18521:https://projects.blender.org/tracker/index.php?func=detail&aid=18521&group_id=9&atid=306]]] Dupligroups + Bullet SoftBody が壊れる
-[[[#17678:https://projects.blender.org/tracker/index.php?func=detail&aid=17678&group_id=9&atid=306]]] "Mouse over" Sensor ビューポートを使用時壊れる
-[[[#17670:https://projects.blender.org/tracker/index.php?func=detail&aid=17670&group_id=9&atid=306]]] Python による Mist のコントロールが、Textured モードで動作しない
-[[[#17863:https://projects.blender.org/tracker/index.php?func=detail&aid=17863&group_id=9&atid=306]]] ゲームのカメラが不安定
-[[[#17950:https://projects.blender.org/tracker/index.php?func=detail&aid=17950&group_id=9&atid=306]]] GE の Softbody が RigidBody/SoftBody/Dynamic オブジェクトに Parent された時にクラッシュする
-[[[#18496:https://projects.blender.org/tracker/index.php?func=detail&aid=18496&group_id=9&atid=306]]] ドームレンダリング使用時、Lamp 状態の切り替えによる問題を部分的に修正
-[#18606] KX_GameObject.orientation へ書き込みするとクラッシュが発生
-[#18616] Game engine を有効にした時、Scons+MinGW でのコンパイル時にエラー
-[[[#18681:https://projects.blender.org/tracker/index.php?func=detail&aid=18681&group_id=9&atid=306]]] Mousesensor Over が、3DView のカメラが Ortho モードの時に動作しない
-[[[#18749:https://projects.blender.org/tracker/index.php?func=detail&aid=18749&group_id=9&atid=306]]] joysticksensor.getAxisValue() でクラッシュ
-[#18819] 2.49 RC3 で、Game Actuator が globalDictionary の保存・読込時、正しいファイルを読み込まない
-[[[#18840:https://projects.blender.org/tracker/index.php?func=detail&aid=18840&group_id=9&atid=306]]] Joystick Sensor のラグ
-[#18624] Parent されたオブジェクトの衝突判定が失敗する(部分的な修正)
-[[[#17796:https://projects.blender.org/tracker/index.php?func=detail&aid=17796&group_id=9&atid=306]]] GLSL + Bone + set smooth = VertexGroup のバグ
-[[[#18091:https://projects.blender.org/tracker/index.php?func=detail&aid=18091&group_id=9&atid=306]]] オブジェクト X が オブジェクト Y に Parent されている時、オブジェクト X の当たり判定ボックスが移動に追従しない
-[[[#18596:https://projects.blender.org/tracker/index.php?func=detail&aid=18596&group_id=9&atid=306]]] 2.49rc1で IPO Actuator が Dynamic オブジェクトで動作しない
-[[[#18732:https://projects.blender.org/tracker/index.php?func=detail&aid=18732&group_id=9&atid=306]]] Python Light オプションが、GLSL Material で動作しない
-[[[#18665:https://projects.blender.org/tracker/index.php?func=detail&aid=18665&group_id=9&atid=306]]] Servo コントロールと相対運動
-[[[#18762:https://projects.blender.org/tracker/index.php?func=detail&aid=18762&group_id=9&atid=306]]] Softbody のデフォーマと、他のタイプのデフォーマの間の非互換性により、SoftBody がゲーム中消える現象を起こしている
-[[[#18664:https://projects.blender.org/tracker/index.php?func=detail&aid=18664&group_id=9&atid=306]]] Parent 解除時にオブジェクトの挙動の異常。Parent された オブジェクトがすべてのケースで Static になる[/wiki]



元記事:Dev-Ref-Release Notes-2.49-Game Engine - BlenderWiki
30 May 2009, at 09:20版を元にしています。
プリンタ用画面
友達に伝える
投票数:16 平均点:10.00
前
Blender 2.49 スクリプトの変更
カテゴリートップ
Blender機能別
次
Blender 2.49での更新

ログイン

ユーザ名:

パスワード:



パスワード紛失

クイックリンク

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

●ニュース(英文)
BlenderNation

●Blenderコミュニティ
blenderartists.org

●Blender Q&A
- Blender Stack Exchange

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


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