2009年08月25日

物理シミュレータとIKについて

頑張って更新するとその後やる気が起きなくなって困りますね。

物理シミュレータで手抜きのIKって出来そうですよね。手先のBoneの位置だけ指定して、そこに向かってPD制御で力をかければ、Jointの制約で勝手にIKぽい動きをしてくれるのではないかと。

キーフレームアニメーションを物理計算する場合は下記のような方法でできるそうです。
http://www.tmps.org/index.php?%CA%AA%CD%FD%B7%D7%BB%BB%A4%CB%A4%E8%A4%EB%A5%AD%A1%BC%A5%D5%A5%EC%A1%BC%A5%E0%CA%E4%B4%D6

というわけで、BulletのBasicDemoを色々書き換えて、Ragdollっぽいものを作ってみました。Boneをカプセルで、接続部分を球で作ってbtGeneric6DofConstraintでつないでいます。

今回は特に制限などはつけていませんが、何をどの部分にどう繋いで可動範囲をどう指定するかとか結構面倒な気がしてきました。

後は接続先の位置を初期位置に設定して、その位置に向けて球にPD制御の力をかけています。

マウスで球を動かせば、その位置に手先が行ったりするので、IKもどきにはなるんじゃないかなーとは思います。あんまり使い道がない気もしますね。

実行結果



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

2009年08月11日

Irrlicht+Box2DでSTG 7日目

とうとう7日目です。

アイテムとボスを追加してみました。

実行結果



スクリプトで動きの制御とかしないと単調になって駄目ですね。
結局音系も入れられなかったですね。

まぁなんとか1週間でもそれっぽいものができたんじゃないかなぁと思います。

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

2009年08月10日

Irrlicht+Box2DでSTG 6日目

誰が何と言おうと6日目です。

今回はちょっとだけエフェクト追加と敵からの攻撃を入れていました。

Irrlichtのシーンノードにはアニメータというものを追加することができます。

参考サイト:http://www.zgock-lab.net/irrlicht/tut05.htm

これを使ってテクスチャアニメーションや、生存時間の設定等ができます。
    ISceneNodeAnimator *anim = Device->getSceneManager()->createDeleteAnimator(2000);
BulletNode->addAnimator(anim);
anim->drop();
これで2000msで削除されるアニメータを追加することになり、2秒後にBulletNodeは削除されます。

これを使って、弾が当たった時や敵が死亡したときに数百ミリ秒エフェクトを表示するようにしました。

実行結果



後は敵の生成や動きをスクリプトで制御したり、アイテム実装したり、ボスを実装したり、スキルを実装したり、音楽・効果音を追加したり…まだまだいろいろありますね。

まぁ1週間だとこれくらいが私の限界ですね。

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

2009年08月08日

Irrlicht+Box2DでSTG 5日目

なぜかブロック崩しになってしまいました。
30秒で終わってしまうゲーム・・・。

実行結果



敵グラフィックにFirst Seed Material様のデータを使用させていただいております。
http://www.tekepon.net/fsm/


今日は主に衝突イベント処理を追加しました。

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

2009年08月07日

Irrlicht+Box2DでSTG 4日目

今日は時間が取れなかったのであまり進んでいません。
もう4日目とか困ったものですね。

変更点
・敵作ってみました。
・ブロック崩し風になってしまいました。
・一応プログラム内は色々改善しています。
・SHIFT押すとMP消費して速度増加にしてみました。

実行結果



明日頑張ろう・・・。
web拍手 by FC2
posted by シンドラー at 20:58 | Comment(0) | TrackBack(0) | Irrlicht | このブログの読者になる | 更新情報をチェックする

2009年08月06日

Irrlicht+Box2DでSTG 3日目

地形が動かないと進んでいる気がしないので、背景を動かすようにしてみました。

IrrlichtのTutorial 3:Custom SceneNodeを使って自動的にスクロールするシーンノードを作ります。
http://irrlicht.sourceforge.net/docu/example003.html
詳しくは追記のところで。

こういう場合はテクスチャがシームレスでないと継ぎ接ぎが見えてしまいますので、シームレスなフリーのテクスチャを探しました。
http://seamlesstextures.net/textures
これってライセンスはどうなってるんですかね。

後、右側が空いているだけというのもなんなので、CEGUI使ってGUIを表示することにしました。Irrlicht1.5で動かすためにまたちょっと手間が要りました。

実行結果



ミクモデルでも結構重いので、下記サイトのちるのモデルを使用させていただいております。
http://homepage3.nifty.com/knuko/mmd/mmdIndex.html
まぁ無理にPMDファイル使わなければいいだけなんですが・・・。

後、GUIのお試しにMP=弾数=100に設定して、MPが無いと弾を撃てないようにしてみました。
弾に当たったらHP減らして0になったら…といったことが次の課題ですかね。
さっさと敵も追加しないと…。
続きを読む
web拍手 by FC2
posted by シンドラー at 20:00 | Comment(0) | TrackBack(0) | Irrlicht | このブログの読者になる | 更新情報をチェックする

2009年08月05日

Irrlicht+Box2DでSTG 2日目

今日はあまり進んでいない気がする2日目です。

今日やったのは昨日の修正+αぐらいでしょうか。

・移動の修正(SHIFTキー押していると低速移動等)
・生存時間の設定(一定時間が経つと消える)
・カメラを正射影に変更
 参考サイト:http://lesson.ifdef.jp/A06.html
・GUI表示のためビューポートの設定
 参考サイト:http://www6.atwiki.jp/t-na/pages/15.html

実行結果



まぁ平日は仕方がないですね。

物理シミュレータを使うと弾の速度が一定ではないので難易度高そうですね。一定に制限しますかね。後、弾同士の接触判定とか必要ないですよね。

Box2Dはマニュアルが結構わかりやすいです。自分のゲームエンジンに組込むにはみたいな視点で書かれているので。
http://www.box2d.org/manual.html

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

Irrlicht+Box2DでSTG 1日目

IrrlichtとBox2Dを使って1週間ぐらいでシューティングゲームでも作ろうかなーと思います。

1日目は環境設定、モデル表示、キーボード操作、弾の発射ぐらいまでですかね。

描画:Irrlicht
衝突計算:Box2D
その他:未定

Irrlicht用のクラス、Box2D用のクラス、Worldクラス、イベント管理クラス、オブジェクト管理クラスの5つぐらい作ってそれぞれの初期化・オブジェクト作成などを行っていきます。

モデルはせっかくローダを作ったのでPMDファイルを読み込んで初音ミクを使用させていただいております。

実行結果



キーボードの矢印キーでAddImpulse関数でオブジェクトに力を加えて移動させています。

この辺もちゃんとしないとキーを放しても動きっぱなしになってしまいます。まーそれは後日ということで。

後は、スペースキーで弾を生成/発射しています。衝突判定や反発力計算はBox2Dがやってくれて、表示はIrrlichtがやってくれるので楽ですかね。

今後やること:
キー入力修正
敵の作成、AIの検討等
オブジェクトの消滅等タスク管理?の実装
プレイヤーをボーンアニメーション等で少しは動かす
音楽や音
視覚的なエフェクト
点数表示などGUI
アイテムとか?

まぁ全部やるとも限りませんし1週間で終わるとも思えませんがとりあえずやってみますかね。

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

2009年08月01日

IKの角度制限について

簡単な角度制限として、CCD-IKを計算中にボーンの角度を取得し、ある一定範囲を超えないように制限してみました。

こんな感じでとても力技です。
  joint->getParent()->m_mLocalRotation.getEulerZYX(euler[2], euler[1], euler[0]);
if ((joint->name.compare("右足首") == 0) || (joint->name.compare("左足首") == 0))
{
// ヒザはX軸周りに-130〜0度の範囲
if (euler[0] < ToRadian(-130))
{
euler[0] = ToRadian(-130);
}
else if (euler[0] > ToRadian(0.0))
{
euler[0] = ToRadian(0.0);
}
// X軸周り1軸のみ回転
euler[1] = euler[2] = 0;
}
joint->getParent()->m_mLocalRotation.setEulerZYX(euler[0], euler[1], euler[2]);
実行結果



左足がプルプルしすぎですね。適当にやらずにもう少し考えないといけませんね。

でもまぁ一応以前よりは大分ましになったかと。

後は30FPSが維持できなくてもいいように、現在のフレーム=経過時間/FPSにしてみました。
web拍手 by FC2
posted by シンドラー at 00:29 | Comment(0) | TrackBack(0) | OpenGL & Metasequoia | このブログの読者になる | 更新情報をチェックする

広告


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

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

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