2007年12月27日

Irrlicht+ODE その4

Irrlicht+ODE その4です。今回も見事に脱線しています。前回やるといったことをやらない、そんなことばっかりですね。

ODE本は数学的な説明もわかりやすくしてくれているので色々勉強になります。そこで衝突航法に関する情報があったので、それについて少し試してみたいと思います。

この辺りはゲーム開発者のためのAI入門の方が色々詳しいので、そちらも参考にしてみたいと思います。今回はODEの物理シミュレーションを使用してミサイルの照準(Light-of-Sight: LOS)追跡を行ってみたいと思います。ついでにIrrlichtでのパーティクル等のエフェクトの練習もしたいと思います。ミサイルの炎と煙とか(今回そこまで手が回るかどうかは分かりませんが)。その辺のチュートリアルはIrrlicht Tutorial 8や11辺りが参考になると思います。

物理シミュレーションで物体を動かす場合に注意する点として、物体の位置を指定するのではなく、力を与えることで物体を動かすことが挙げられます。ODEの場合でも、SetBodyPosition関数などで直接オブジェクトの絶対座標を指定することはできますが、衝突判定をしている場合にめり込みが発生し、ありえない力がかかったり、ワープするような現象になるため可能な限り避けるべきです。つまり、ある位置にオブジェクトを移動させたい場合には、その位置に行くような力を発生させる必要があります(例:車の場合はタイヤの方向と回転させる力を調節して、目的の方向へ移動する)。でもまぁ最初なので手抜きします。

実行結果
screenshot_irrlicht_ode_004.jpg

続きを読む
web拍手 by FC2
posted by シンドラー at 19:55 | Comment(2) | TrackBack(0) | Irrlicht | このブログの読者になる | 更新情報をチェックする

2007年12月24日

Irrlicht+ODE その3

では前回の続きです。クラス設計どうすればいいかよくわからないですね。オブジェクトは複数あって、その情報はIrrlichtが持っていて、ODEもオブジェクトの情報が必要で、デバイスやカメラやイベント処理はIrrlichtの管轄で…。しょうがないからとりあえず適当に作って後でまとめ直してみることにします。

えー今回はちょっとGUI関係の機能を追加してみたいと思います。参考サイトは以下の2つぐらいで。

http://irrlicht.sourceforge.net/tut005.html
http://lesson.ifdef.jp/A03.html

とりあえず上のチュートリアルを参考に無理やりボタンなど表示してみました。日本語を使いたい場合は下のサイトの方法などで行う必要があるようです。日本語表示面倒ですな。今回はIrrlicht付属のGUIを使用していますが、CEGUIなど別のGUIライブラリを使用できるはずなので、その辺も少し調べてみたいと思います。やっぱりOgreにしようかな〜どうしようかな〜。

screenshot_irrlicht_ode_003.jpg

CEGUIの使用方法はWikiが参考になると思います。
http://www.cegui.org.uk/wiki/index.php/The_Beginner_Guide_to_Getting_CEGUI_Rendering

まぁとりあえずはIrrlicht付属のGUIで摩擦や跳ね返り定数、ブロックの追加などいじれるようなサンプルにしていきたいと思います。既にソースコードが恐ろしいことに!


web拍手 by FC2
posted by シンドラー at 03:43 | Comment(0) | TrackBack(0) | Irrlicht | このブログの読者になる | 更新情報をチェックする

2007年12月22日

Irrlicht+ODEその2ぐらい

Irrlicht+ODEの続きです。たぶん。一から自分で作るということで、まずは直方体1個と地面なサンプルを作りたいと思います。

要求

IrrlichtとODEのインストールとコンパイル(ODEのTriMeshのOPCODEとかMALLOCとか)が終わって、前のIrrlicht+ODEで書いた追加のインクルードディレクトリやライブラリディレクトリの設定は終わっている状態を想定します。IrrlichtとODEの両方の知識があれば読む必要はないです。

開始

流れ的にはIrrlichtで読み込んだモデルのメッシュ情報をODEに伝えて、ODEがその情報から物理シミュレーションを行って、シミュレーション結果をIrrlichtで描画するということになるとは思います。できるかどうかはやってみないとわかりませんが。

参考サイトは以下の2つです。

Irrlicht Lesson B02.ノード
夢考房:ODE講座6:衝突検出

まずはクラス設計から行いたいと思います。世界全体を管理するCWorldクラスとIrrlichtを管理するCRenderクラス、ODEを管理するCPhysicsクラスの3つぐらいですかね。後は簡単にするためにCWorldがCRenderとCPhysicsを1個ずつ持ってる感じで。本当はCRenderとCPhysicsはオブジェクトの一部と考えてCObjectなどのスーパークラスを作った方がいいんでしょうがまぁ手抜きです。

注意点としては、ODEとIrrlichtでは座標系が異なることです。なのでどちらかに合わせる必要があります。個人的にはこのどちらでもないOpenGLの右手系に合わせたいんですけどね。

screenshot_irrlicht_ode_002.jpg

なんかまーお見せするのが恥ずかしいソースコードなので公開はもうちょっとまとまってからにしたいと思います。と言いつつ最後まで改善されずにということがよくありますね。

実行結果

直方体が重力に従って落ちて跳ね返り係数に従って跳ね返るだけです。影もないし視点も変えれないし微妙ですねぇ。まぁ最初だしこんなものです。

screenshot_irrlicht_ode_001.jpg

web拍手 by FC2
posted by シンドラー at 02:52 | Comment(0) | TrackBack(0) | Irrlicht | このブログの読者になる | 更新情報をチェックする

2007年12月19日

Visual Studio 2008 Exress Editions

Visual Studio 2008 Express Editionが提供され始めたようですね。
http://www.microsoft.com/japan/msdn/vstudio/express/

個人的にはVisual C# 2008でXNA使って何かとかやりたいですが、あまり手を広げすぎてもアレなのでとりあえずはまた今度ということにしておきます。すでにOgre 3DかIrrlichtかODEかPhysXかどれにしようかなーという状態ですし。

そういえばサウンド関係は全然いじってないですね。XNAならXACTだかXaudio2だか使えばいいかもしれませんが、OpenALも少し気になります。

Programming 3D Sound With OpenAL in Windows
http://www.gamedev.net/reference/articles/article1958.asp

Ogre3DとOpenAL
http://www.ogre3d.org/wiki/index.php/OpenAL

IrrlichtならirrKlangですかねぇ。こういうのも作られているようですし。
http://www.irrlicht3d.org/pivot/entry.php?id=582



そういえばYouTubeにデモやチュートリアルっぽいのもあった気がしますねぇ。動画で見た方が分かりやすいですよね。いろいろと。

何か話が脱線しまくった気がしますがまあいいか。メモブログだし。
web拍手 by FC2
posted by シンドラー at 11:42 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年12月16日

Irrlichtの勉強1−おまけ

ミクだけだとつまらないけどモデリングやアニメーションは作るの大変だなーということでmd2ファイル探してみました。ダウンロードにはユーザ登録が必要ですが下記サイトが良さそうでした。

http://planetquake.gamespy.com/

で、エヴァのmd2ファイルがあったのではちゅねミクの代わりにウォークスルーさせてみました。

武器は別md2ファイルになっているようですね。適当にアニメーション合わせたらうまくいきましたがもっとうまい方法ありそうですねぇ。武器切り替えとかFPSで必須でしょうし。

screenshot_ir_eva.jpg
web拍手 by FC2
posted by シンドラー at 22:02 | Comment(0) | TrackBack(0) | Irrlicht | このブログの読者になる | 更新情報をチェックする

2007年12月14日

Irrlichtの勉強1

えー、なんとかXファイルも作成できたので、BSPマップをキーボード入力でウォークスルーするプログラムでも作ってみたいと思います。壁や階段の衝突判定も行いたいと思います。後はおまけでスペースキーでネギ振って弾でも出してみます。

実行画面

screenshot_ir_walk.jpg

実行プログラム(HatyuneWalk.exe)


移動:矢印キー
弾を打つ:スペースキー
視点切り替え:Cキー
ジャンプ:Jキー
終了:未実装のためALT+F4


内容的には公式ページのTutorial 1, 2, 4, 7とIrrlicht A GoGoの第4回、第5回を参考にしています。


続きを読む
web拍手 by FC2
posted by シンドラー at 18:50 | Comment(0) | TrackBack(0) | Irrlicht | このブログの読者になる | 更新情報をチェックする

2007年12月13日

Blender Bone Animation→Xファイル→Irrlicht

Irrlichtでアニメーションするためには、md2, x, ms3dファイルでないとダメなようです。
そこで、Blenderでアニメーションを作成し、md2のエクスポータを使ってみました。
アニメーションがひどいことになりました。色々試行錯誤した結果、Xファイルで出力することになりました。

実行結果

screenshot_ir_x.jpg

実行プログラム

hatyune.zip

hatyune.exeを実行してください。動かなくても知りません。終了はALT+F4でやらないと駄目です。続きを読む
web拍手 by FC2
posted by シンドラー at 19:58 | Comment(0) | TrackBack(0) | Irrlicht | このブログの読者になる | 更新情報をチェックする

2007年12月12日

プログラミングメモ−C++のキャスト

プログラムを見ていたら見慣れないキャストがあったのでメモ。

例によって説明は丸投げ。
http://www.s34.co.jp/cpptechdoc/article/newcast/index.html

ふーむ。いろいろできるんですねぇ。ってC++のオブジェクト指向が全然理解できていないのがばれてしまう!

久々に本来の目的(メモ)通りの使い方ができましたとさ。
web拍手 by FC2
posted by シンドラー at 15:08 | Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2007年12月08日

Irrlicht+ODEチュートリアルについて

Intermediate Tutorial 3を作成中にPCフリーズして全部消えちゃいました。というわけでIrrlichtにプチウワキしてみようと思います。題材はIrrlicht+ODEです。前にも書いた気がしますが、Irrlichtは日本語の情報が少しはあるのであまり困りません。で、Irrlicht+ODEのチュートリアルの日本語版はどこかにあるかもしれませんが勉強も兼ねて自分で訳して試してみたいと思います。

Irrlichtのチュートリアルはここにあります。日本語の非公式Wikiに普通のチュートリアルの訳はある程度あったと思います。今回はIrrlicht+ODEということで、External TutorialsのODE Integrationを試してみます。まぁソースコードも付いているのでコンパイルして実行すればいいだけのような気もしますが。

と思ったらダウンロードできませんね。WebArchiveで古いページから何とかダウンロードできたけど、zipファイルが壊れてるみたいなのでZipRepairで直したら何とかなりました。

これが終わったら次はBlenderでIrrlicht用のメッシュファイルを作成できないか調べてみます。Quake 2 model(.md2)のImport/Exportプラグインはあるみたいですね。Quake 2 Modellerというものと併用すればできるかもしれないですね。わざわざmd2使わなくてもxファイルでいいのかな。方法がわかったらまたまとめたいと思います。
続きを読む
web拍手 by FC2
posted by シンドラー at 17:15 | Comment(0) | TrackBack(0) | Irrlicht | このブログの読者になる | 更新情報をチェックする