2009年01月28日

Irrlicht+BulletでSoftbodyのテスト その9

タイトルから内容がわからなくて困ったものです。

今回は一応複数オブジェクト対応の第一歩をしてみました。

パラメータ調整が色々難しいですね。

今のところ実行結果のような感じです。

頭と胴体の2オブジェクトですが、パラメータ設定がおかしいと首だけ回転したりします。ホラーですね。

モデルは例によって3次元CG@七葉様のものであります。

実行結果



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

2009年01月25日

Irrlicht+BulletでSoftbodyのテスト その8

というわけで、前回の続きです。

Bullet付属のSoftDemoを参考にマウスでドラッグを実装しました。SoftDemoはGLUTを使用しているので、基本的にはglutMouseFuncのmouseFunc()とglutMotionFuncのmouseMotionFunc()にマウス処理が書かれています。後はその時取得した情報から描画ループのclientMoveAndDisplay()で更新といった感じです。

何をやっているかはSoftDemoの上記の関数を見れば大体わかると思います。まぁドラッグ中のマウスの座標と現在のノードの座標の差を比例制御で動かしているような気がします。比例だけだと収束しないのでPID制御とかに改良するといいのかもしれません。

マウスでクリックした位置の取得は、少し前に試した視錐体のアレをIrrlichtとBullet用に少し変更して使いました。

軽いモデルなら実行結果のようにそれなりに動きますが、頂点数が7000超えるようなモデルだと衝突時に遅くなっちゃいますね。この辺りもパラメータをうまく設定すれば改善できそうな気もしないでもないです。

次は・・・複数オブジェクトを持つモデルへの対応が中途半端だったのでそれをなんとかするかもしれません。

実行結果



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

2009年01月24日

Irrlicht+BulletでSoftbodyのテスト その7

昨日の続きです。

Softbody同士の衝突が剛体っぽかったのは、パラメータのせいでした。generateBlendConstraintsとgenerateClustersの値を変えたら揺れ具合が色々変わりました。マー相変わらず役割は良くわかりませんが。

一応GUIも少し作ってみましたが、リセットがうまくいっていません。IrrlichtのMesh情報が残ってしまっているようで。この辺はIrrlichtの問題ですね。dropしただけでは駄目なんですかね。

次は以前中途半端にしていたマウスでSoftbodyのドラッグをやろうかなと思います。

実行結果



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

2009年01月23日

Irrlicht+BulletでSoftbodyのテスト その6

ここ数日はOgre3D関係をちょっとやっているのですが、うまくいっていないので別のことでもしようと思います。

というわけで、Softbodyのパラメータを調べてみたいので、CEGUIを使って実行時にパラメータ調整できるようにしたいと思います。

とりあえず以前作ったプログラムにCEGUIを付け加えて、FPSを表示するようにしてみました。

ちゃんと60Hzで回っているのにシミュレーションが遅く見えるのはなぜでしょうかね。stepSimulationの引数を変えてみてもあまり変わらないし。仕様なのかパラメータ設定のせいなのか・・・。

一応Softbody同士も衝突判定するようなフラグを設定しているのですが、見てわかるように剛体っぽい衝突です。仕様なのかパラメータ設定のせいなのか・・・。

        softBody->m_cfg.kDP = 0.0;// Damping coefficient [0,1]
softBody->m_cfg.kDF = 0.2;// Dynamic friction coefficient [0,1]
softBody->m_cfg.kMT = 0.02;// Pose matching coefficient [0,1]
softBody->m_cfg.kCHR = 1.0;// Rigid contacts hardness [0,1]
softBody->m_cfg.kKHR = 0.8;// Kinetic contacts hardness [0,1]
softBody->m_cfg.kSHR = 1.0;// Soft contacts hardness [0,1]
softBody->m_cfg.piterations=2;
softBody->m_materials[0]->m_kLST = 0.8;
softBody->m_materials[0]->m_kAST = 0.8;
softBody->m_materials[0]->m_kVST = 0.8;
softBody->scale(btVector3(scale.X, scale.Y, scale.Z));
softBody->setPose(true, true);
softBody->generateBendingConstraints(2);
softBody->randomizeConstraints();
softBody->generateClusters(1);
softBody->m_cfg.collisions = btSoftBody::fCollision::CL_SS+btSoftBody::fCollision::SDF_RS;
Softbody同士の衝突は、多分generateClustersでクラスタ作るのと、m_cfg.collisionsでbtSoftBody::fCollision::CL_SSフラグを立てる必要があるのではないかと思っています。

なお、本実行結果で用いているモデルは、三次元CG@七葉様とメタセコイア付属のモデルを使わせていただいております。問題がありましたらお知らせください。

実行結果



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

2009年01月16日

視錐台とビューポートとマウスとレイキャスト

そろそろ翻訳も疲れてきたので、何か作りたいと思います。

やっぱりマウスでドラッグとかしたいので、OpenGLとGLUTの復習としてビューポートと視錐台の関係を確認して、マウスでクリックした場合、その点が3次元空間上のどこに位置するのかを取れるようなプログラムを作ってみました。

何に使うかというと、カメラの座標からマウスでクリックした座標に向けてレイを飛ばして交差判定をして、当たったオブジェクトを動かしたりということです。

まぁこの辺りは自分でやらなくてもグラフィックエンジンの方でやってくれるんですけどね。

GLUTによる「手抜き」OpenGL入門様のページから色々拝借しております。問題がありましたら教えてください。

今回やっているようなことは多分「手抜き」様のページのFAQのQ1〜Q3でいいんじゃないかと思います。
http://www.wakayama-u.ac.jp/~tokoi/opengl/faq.html

まぁあくまで復習ということで勘弁してください。

実行結果

screenshot_glut_001.jpg

ソースコード

getRayTo.cpp
続きを読む
web拍手 by FC2
posted by シンドラー at 20:04 | Comment(0) | TrackBack(0) | OpenGL & Metasequoia | このブログの読者になる | 更新情報をチェックする

2009年01月15日

Mazing Tutorial: Small Game

一応ドキュメントの最後のチュートリアル、迷路ゲーム作成です。

コメント入り最終ソースコードが"apps\tutorial\mazing"にあります。

長かったです。半分ぐらいに分けても良かったですかね。

wkstypicalを開くと、app○○というプロジェクトが多数あり、それぞれがデモプログラムになっているようですので、プログラムを作成する場合はそのあたりを参考にすれば良いと思います。

CSのチュートリアルはこの辺にしておいて、次回はCELとかCELStartとかXMLやPythonスクリプトで何かする方法を試してみたいと思います。

実行結果

screenshot_cs_0424.jpg
続きを読む
web拍手 by FC2
posted by シンドラー at 16:58 | Comment(0) | TrackBack(0) | Crystal Space 3D | このブログの読者になる | 更新情報をチェックする

2009年01月11日

Simple Tutorial 3: Map Loading, Collision Detection

もう少し続きます。

4.2.3ではファイルからマップを読み込んで表示しています。
一応コンパイルはできたのですが、実行するとマップが真っ黒でした。
コマンドラインのオプションで-relightをつけたら一応光源が有効になりましたが、何かおかしい気もします。
このPCのグラボと相性が悪いんですかね。

実行結果

cs_simpmap.JPG
続きを読む
web拍手 by FC2
posted by シンドラー at 02:55 | Comment(0) | TrackBack(0) | Crystal Space 3D | このブログの読者になる | 更新情報をチェックする

Simple Tutorial 2: Adding a Mesh

続きです。このチュートリアルの通りにやったんですが、ちゃんと動きませんでした。多分コードを追加する場所を間違えてるんじゃないかと思いますが。

一応ここの内容はCS\apps\tutorial\simple2に対応しているはずですので、コレと同じ結果が出れば成功に違いありません。

実行結果

cs_simple2.JPG
続きを読む
web拍手 by FC2
posted by シンドラー at 00:19 | Comment(0) | TrackBack(0) | Crystal Space 3D | このブログの読者になる | 更新情報をチェックする

2009年01月10日

Simple Tutorial 1: Basic Setup, World Creation

というわけで、チュートリアルに入って行きたいと思います。ドキュメントの4.2です。

実行結果は前回の記事と同じなので省略します。

意外と長かったのでもう少し分けた方が良かったかな・・・。
続いて4.2.2に行きたいと思います。

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

2009年01月08日

Crystal Space 3Dのプロジェクト作成方法

前回の続きです。

自分でCrystal SpaceのSDKを使ってアプリケーションを作成する方法です。
基本的にはプロジェクト設定の方法です。

実行結果

cs_complile_015.jpg


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

Crystal Space 3Dのインストール

あけおめことよろというわけで、もう1月も一週間終わりましたね。

新年の新しいネタとして、少しCrystal Space 3Dを試してみたいと思います。

http://www.crystalspace3d.org/main/Main_Page

ライセンスがLGPLの3D開発環境だと思います。ゲーム開発向きなんでしょうかね。

Crystal Space 3DのSDKと、CEL(Crystal Entity Layer)というものがあるようです。

CELを使用すれば、PythonやXMLでスクリプトを書けば、C++を全く使わずにゲームを作ることもできるようです。

そういう使い方をしたい場合はCELStartというものをダウンロードすればいいみたいです。

SDKのバイナリは配布されていないようですので、VC++使って自分でプロジェクトを作って・・・といった場合にはSDKのソースをダウンロードしてコンパイルをしないといけないようです。

日本語情報はともかく、マニュアルはそれなりにそろっているような気がしないでもないですね。

http://www.crystalspace3d.org/main/Documentation

Crystal Spaceのユーザマニュアル、APIリファレンス、Wiki、CELのユーザマニュアル、APIリファレンス、Wiki、Tutorials、FAQといったものはちゃんと用意されているようです。

後はモデリングソフトとの連携ですが、Blenderと相性が良さそうな感じですかね。Blender2crystalプラグインなるものがあるようですし、2chかどこかでBlenderのGame EngineにCSを使うという情報を見たような気がしないでもないです。

Blenderで完結しても良いし、Blenderでモデリングやボーンなどの設定をしておいて、CELでスクリプトだけ書くというのもプログラミングをあまりしたくない人は有効なのかもしれません。まぁスクリプトを書くという作業もなかなか大変だと思いますが。

開発者の人のためのページはここです。

http://www.crystalspace3d.org/main/Programming

まぁ今日はソースコードのダウンロードとコンパイルまでのお話ということで。

デモアプリケーションの実行画面

cs_001.JPG
続きを読む
web拍手 by FC2
posted by シンドラー at 02:07 | Comment(0) | TrackBack(0) | Crystal Space 3D | このブログの読者になる | 更新情報をチェックする