2008年05月08日

Ogre 3D + CEGUI + PhysX その2

その2といっても前回のを少し改良しただけです。

改良点は・・・STLのvectorを使って後からオブジェクトを追加できるようにしました。
これでCEGUIのボタンをぽちっと押したら1個オブジェクトを追加、といったことができるようになります。

PhysXの方がやっぱり安定しているんですかね。
ホロを200匹に増やしてみましたが少し重くなったかなーぐらいで問題なく動いています。
PC買ったばっかりで性能がいいせいかもしれませんが。

さて次はどうしましょうか。落ち物パズルみたいなものを作ってみたい気がする今日この頃です。

実行画面

ogre_cegui_physx_002.JPG ogre_cegui_physx_003.JPG
web拍手 by FC2
posted by シンドラー at 21:30 | Comment(0) | TrackBack(0) | Ogre 3D & CEGUI | このブログの読者になる | 更新情報をチェックする

2008年05月07日

Ogre 3D + CEGUI + PhysX その1

これまではODEをやってきましたが、どうも三角メッシュを用いた衝突判定だと不安定になるようですので、安定していると評判のPhysXを使ってみたいと思います。
内容としては、Ogre3Dでメッシュファイルを読み込み、そのデータをPhysX側で使って物理シミュレーションを行う、という感じです。

前回のOgre3D + CEGUIのサンプルに、PhysXのチュートリアルLesson 101, 104を参考に追加していく感じでいきます。
Ogre3Dでメッシュの頂点座標等を取得する方法は下記の情報を参考にしました。

http://www.ogre3d.org/phpBB2/viewtopic.php?t=9891

具体的な手順としては、下記のようになります。


  1. Ogre3Dでメッシュファイルを読み込みEntityを作成(mSceneMgr->createEntity("Name", "obj1.mesh";)
  2. Entityからメッシュ情報を参照するためのポインタを取得(MeshPtr pMesh = mEntity->getMesh();)
  3. 上記参考文献を参考に頂点座標をNxVec3型の配列として保持
  4. PhysXのチュートリアルLesson 104を参考にConvex Meshとしてオブジェクトを生成
  5. PhysX側でシミュレーションをして位置・姿勢を更新し、Ogre3D側でその情報から描画を更新(mSceneMgr->getSceneNode("Name")->setPosition(pos[0], pos[1], pos[2]);)
注意点として、Ogre3DのクォータニオンはWXYZの並びですが、PhysXのNxQuatはXYZWの並びになっているようですので、入れ間違えるとおかしな姿勢になります。

実行画面

ホロを10頭?ほど作ってみました。低ポリゴンのホロですので10頭?ぐらいなら問題ないようです。

ogre_cegui_physx_001.JPG



web拍手 by FC2
posted by シンドラー at 01:05 | Comment(0) | TrackBack(0) | Ogre 3D & CEGUI | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。