【3Dエンジン】Irrlicht初心者質問スレ【高速描画】
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2006/10/05(木) 06:50:19ID:UN/zUzoQ※回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近Irrlichtを始めたばかり
3.SDKを見ても、Googleで検索しても、エキサイト翻訳でもいまいち理解できない人
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「英語読め」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する人 】
・ どんな事で躓いているのか明確にする。
・ 長くならないなら躓いている部分のコードを晒してみてください。
・ 解決した場合、お礼を言うのは当然ですが、何をどうしたら解決したかを明確に書くこと。
前スレ
http://pc8.2ch.net/test/read.cgi/tech/1104179696/
0405名前は開発中のものです。
2008/01/24(木) 10:23:18ID:FpXK7fP/CGUITTFontは一度でも現れた文字は必ずキャッシュされているようです。
だからビデオメモリの消費量が心配なのですが…
>>402
情報ありがとうございます。ですがもうFreeTypeでレンダリングするところ
まではできてしまったので、もうこのままテクスチャ転送まで進めたいと思います。
1枚絵表示するのにテクスチャ確保するのもあほみたいなので、フレームバッファに
直接書き込む手段と、2D周りがかなり弱いのでその辺補うライブラリも構築することにします。
それと動的ロードの話が出てきましたけど、IReferenceCountedの実装を見るとヘッダ
ファイルのなかでdelete thisしてます。
これは、コンパイラの最適化か何かでDLL呼び出し元でdeleteされるとまずくないですかね?
new/deleteの実装が異なるコンパイラで作成されたDLLを動的ロードすると、delete時に
不整合を起こすような気がします。あまり詳しくないのでひょっとしたら無駄な心配
なのかもしれませんが…
0406名前は開発中のものです。
2008/01/24(木) 10:45:41ID:FpXK7fP/回答ありがとうございます。
フルスクリーン切り替えは面倒ですね…。
0407名前は開発中のものです。
2008/01/24(木) 10:49:29ID:YttCO1k20.5ぐらいの時代だから2年近く前?にdeleteの問題は公式フォーラムで議論されてたはず。
で、結論は「問題なす」だったはづ
0408名前は開発中のものです。
2008/01/24(木) 17:48:13ID:FpXK7fP/以前に議論された話題だったのですね。失礼しました。
0409名前は開発中のものです。
2008/01/25(金) 19:00:41ID:MPN2QJSGFPSゲーを作ろうとしていて、よさげなライブラリを探しています。
画面を左右2分割にして、2人でプレイ出来るようにしたいのですが、
irrlicht での実装は描画の面において楽に出来ますか?
0410名前は開発中のものです。
2008/01/25(金) 20:32:40ID:jU51nQMIビューポートとカメラの切り替えで実現できると思います>分割対戦
0411名前は開発中のものです。
2008/01/25(金) 22:21:07ID:Vt/UlEbN公式のチュートリアルに画面分割のサンプルあるお
0412名前は開発中のものです。
2008/01/25(金) 23:45:04ID:+c4l9exa衝突したかまで分かる詳細な衝突判定ってできますか?
0414名前は開発中のものです。
2008/01/26(土) 06:11:19ID:/SAwn9ff0415名前は開発中のものです。
2008/01/26(土) 18:00:09ID:0EKxzkd2本家のFeaturesに「BlenderのエクスポーターがSDKにあるよ」みたいな事が書いてあったんで1.4のSDK落としてみたんですが、見つかりません…
readmeのフォルダ一覧にもexportersフォルダが書いてあるのに見つからず。
どうすれば…orz
OGRE用のメッシュファイル(.mesh)も読めるみたいですが、試してみた方いますか?
0416名前は開発中のものです。
2008/01/26(土) 18:35:32ID:zD+QiSlQOGREのCVSに「blenderimport」と「blendersceneexporter」ってフォルダがあるけど
これがBlender関係のSDKじゃね?
0417名前は開発中のものです。
2008/01/26(土) 21:19:47ID:0EKxzkd2それってもしかしてコレのことですか?
ttp://ogre3d.org/wiki/index.php?title=Tools:_Blender&printable=yes
OGREでBlenderで作ったデータを読むことはできてます。
思いっきり要すると
Blenderで作ったデータをIrrlichtで読むにはどうすればいいの?
という事が聞きたかったのですが、うまく伝えられてなかったらすいません。
OGREで使ってた.meshのデータをIrrlichtでアニメ付でちゃんと読めればベストなんですが。
ttp://irrlicht.sourceforge.net/features.html
に
there are exporters for popular 3D packages (Blender, 3DSMax, Gile[s], ..) included in the SDK.
って書いてあるから、SDK落とせば何か入ってんだろ、とか思ってたらそれらしいのが入ってないし。。。
BlenderとIrrlichtの組み合わせでやってる人、居ませんか?
0418名前は開発中のものです。
2008/01/26(土) 22:32:35ID:zD+QiSlQすまん、「本家のFeatures」を、OGREのFeaturesと勘違いしてたみたいだ
Irrlichtのスレなのにな・・・
Irrlicht + Blenderなら、アニメーションが出来るDirectXのメッシュ(.x)使った方がいい
IrrlichtはXメッシュをそのまま読めるからIrrlicht用にわざわざコンバートしなくて済むしな
ただ、Xメッシュはツールによってフォーマットが少し異なる場合があるので注意な
0419名前は開発中のものです。
2008/01/27(日) 00:34:07ID:+Y3aPJmy仕方ないから「{」の前に改行入れるコンバータ作っちまった。
0420名前は開発中のものです。
2008/01/27(日) 15:56:59ID:oNRFDMwA.xで試してみました。
IrrlichtのMesh Viewerで読めたので、たぶんコレで大丈夫だと思います。
ありがとうございます。
0421名前は開発中のものです。
2008/01/28(月) 17:43:17ID:afuGywxJところでOGREからこっちに移行する気になった理由はなんだったんだろか
0422名前は開発中のものです。
2008/01/28(月) 17:58:37ID:XOEvg/3a0423名前は開発中のものです。
2008/01/28(月) 23:58:25ID:G7mZ8jO6ところで、drop()を忘れそうな自分はboost::intrusive_ptrを愛用していますが、
使ってる人はいるでしょうか?
0424名前は開発中のものです。
2008/01/30(水) 11:06:43ID:+OYkniIM俺も昔は使ってたけど、サイズがでかくなるし、ポインタコピーするたびに
内部でごにょごにょやってるしで精神衛生上よろしくない
だから、解放処理が必要なオブジェクトはシングルトンなマネージャクラスに任せてる
マネージャのコンストラクタで生成&初期化して、デストラクタで開放させれば
管理する必要が無くなる
やろうと思えば手動開放もできる
使うときは
IrrlichtDevice *dev = IrrManager::getSingleton().getIrrDevice();
みたいな感じで、初期化さえしとけばいつでもどこでもアクセスできる
OGRE使ってこの方法を見てから、俺の中ではこれが主流になってる
0425名前は開発中のものです。
2008/02/02(土) 16:46:40ID:XyRp6hRG現在は自分の後ろ側などしか省略されず、視線方向のものは全て描画されています。
マップ作成にはGtkRadiant1.4.0を使用しているのですが、マップの作成法に問題があるのでしょうか?
それともそういった処理はirrに何かコードを追加しないといけないのでしょうか?
描画ポリゴン数が4万を越えたあたりから貧弱ノートでは厳しくなってきました。
マップロード部はこんな感じです。
IQ3LevelMesh *mapMesh = (IQ3LevelMesh*)scene->getMesh("maps/village.bsp");
IMesh *geometry = mapMesh->getMesh(quake3::E_Q3_MESH_GEOMETRY);
ISceneNode *mapNode = scene->addOctTreeSceneNode(geometry);
0426名前は開発中のものです。
2008/02/05(火) 00:59:32ID:iDwHPm2hdriver->setMaterial(Material);
driver->draw3DLine(・・・)
というとき、Thicknessの値をいろいろ変えても画面上の線が常に1ドット幅なんですが、
どうすれば2ドットの線などを描けますか?
0427名前は開発中のものです。
2008/02/05(火) 20:36:47ID:iDwHPm2hメインサポートがOpenGLだったんですね
0428名前は開発中のものです。
2008/02/06(水) 00:53:20ID:Ac93WCkK0429名前は開発中のものです。
2008/02/13(水) 21:57:17ID:sC00+SwFDirectXだと光源がない状態になってしまいます。(真っ黒
しかし、ある友人のパソコンでは、
OpenGLのときにguifont->drawをするとクラッシュしてしまうので、(DXなら動く)
DirectXのサポートは続けておきたいのですが、どうしたらいいですか?
その他人のパソコンでguifont->drawが使えない理由としてどんなものか考えられるか、と、
DirectXに切り替えると上の事例が起きる問題の解決方法を教えてください。
0430名前は開発中のものです。
2008/02/13(水) 23:32:38ID:1ZAmjx1a友人のGPUがOpenGL2.0に準拠してないかバグ持ちドライバな可能性がある
0431名前は開発中のものです。
2008/02/13(水) 23:43:28ID:sC00+SwFうーなるほど そうだとするとこっちには手が無いですね・・・ ありがとうございます
0432名前は開発中のものです。
2008/02/15(金) 13:19:44ID:uwsfmr7ZCGUITTGlyphのデストラクタでエラーが出ます。
サンプルでもNode関係を使っているのはなさそうなので、
これは仕様なのでしょうか?
環境はWindowsXPMCEのSP2、IrrlichtML1.4、VisualStudio2005Pro、freetype-2.3.5です。
0433名前は開発中のものです。
2008/02/15(金) 22:44:27ID:aJ3r8mIn見えない敵とかの描画を省略しようと思ったらそら交差判定が必要になるでしょう
0434名前は開発中のものです。
2008/02/16(土) 00:11:18ID:Kcju6cnrこのバグ、1.4では直ってないの
0435名前は開発中のものです。
2008/02/16(土) 19:51:58ID:BJXzP4O8必要ですし…何かお勧めのライブラリがあれば教えてほしいです。
0436名前は開発中のものです。
2008/02/17(日) 11:12:58ID:k/Iqe8sDirrlichtでxファイルを読み込むときに右手、左手の座標系を指定して読み込ませることって
できるんでしょうか?
ttp://gamdev.org/up/img/11075.jpg
↑のようにXSIで作成しているときと、Xファイルビューアまたはirrlicht上で表示したときに鏡
像のような表示になってしまうのを、なんとかしたいのです。
環境はWinXP VC2008 irrlicht-1.4 です。
0437名前は開発中のものです。
2008/02/18(月) 20:53:38ID:9PaR4TSRdriverに預けてあるテクスチャを本体が先に開放してるくさい
どこかで既にremoveTextureが呼ばれてる気がする
addTextSceneNodeの後にfont->grab()でもしておけばエラー回避は可能
その代わり、テクスチャ開放がされなくなります
どうしたものか
0438名前は開発中のものです。
2008/02/19(火) 11:43:22ID:CEbiXydm0439名前は開発中のものです。
2008/02/24(日) 02:38:40ID:eWBznvroところで、436の件が自己解決したので報告。
汚い方法ではあると思うけど
irrlichtのCXMeshFileLoaderを元にx座標を反転させながら
xファイルを読み込むファイルローダを作って解決させました。
0440名前は開発中のものです。
2008/02/24(日) 11:04:27ID:OyDG9+KHおつかれです。
0441名前は開発中のものです。
2008/02/26(火) 23:42:36ID:ve4woYRm常に手前から光が当たる
手抜きライティングをするにはどうすればいいですか?
0442名前は開発中のものです。
2008/02/27(水) 00:44:37ID:pSPDiQm8ライティングしないようにするとかはダメ?
(ポリorテクスチャの色そのまま表示するように)
対象ノード->setMaterialFlag(irr::video::EMF_LIGHTING, false);
0443lesson.ifdef.jp
2008/02/27(水) 01:28:06ID:7TCghY78考え方として、以下のようなものはどうでしょう?
1.カメラの背後に光源という感じに、カメラを親として光源を設定
2.キーが押されたら、カメラの代わりにワールドを動かす
これで、一応はカメラの方向から必ずライティングされるかと
0444名前は開発中のものです。
2008/02/28(木) 15:18:04ID:e5iGSVK/0445名前は開発中のものです。
2008/02/28(木) 23:49:36ID:9jMY1Ybl立体感つけたいのでライティングします。
>>443
CameraSceneNodeFPSと組み合わせたいのでそれはちょっと。
0446lesson.ifdef.jp
2008/02/29(金) 19:57:00ID:MU+29BuV「常にカメラの方向からライティングされる」という意味ですよね?
「常に手前」という表現がちょっと曖昧なので、上記で解釈しました。
ライトを作成する時に、親を「ライト」にすれば大丈夫です。
(前回のは、親に設定したはずが別の値を設定していたため、
期待した動きにならなかったので、別の方法を提示してみました。
今日見たら引数が間違ってた・・・)
//FPSカメラを作成
ICameraSceneNode *CameraNode = smgr->addCameraSceneNodeFPS(0,100,5);
//カメラを親にライトを設定(ライトはカメラの位置)
smgr->addLightSceneNode(CameraNode, vector3df(0,0,0), SColorf(0xFFFF0000), 100.0f);
第1引数にカメラのnodeをセット
第2引数に親からの位置を(0,0,0)=親と一緒をセット
で、やってみてください。
0447lesson.ifdef.jp
2008/02/29(金) 19:59:41ID:MU+29BuV・ライトを作成する時に、親を「ライト」にすれば大丈夫です。
↓
・ライトを作成する時に、親を「カメラ」にすれば大丈夫です。
0448441
2008/03/04(火) 23:27:13ID:+F3tYXlGscene::ICameraSceneNode *camera = smgr->addCameraSceneNodeFPS(0, 100.f, 100.f);
camera->setPosition( core::vector3df(0,0,-100) );
scene::ILightSceneNode *light = smgr->addLightSceneNode( camera, core::vector3df(0,0,0) );
light->getLightData().Type = video::ELT_DIRECTIONAL;
0449lesson.ifdef.jp
2008/03/08(土) 20:08:31ID:42plfOngおめでとー!
これを少しいじれば、太陽のように見せることもできそうですね。
あとでやってみようかな。
0450441
2008/03/08(土) 23:32:53ID:vuhDlgNPあれ、ELT_POINTでも同じになっている気がします・・。
点光源なのに離れても暗くなりません。
あと、テクスチャつきだとライトの色は反映されているみたいですが影がつきません。
0451lesson.ifdef.jp
2008/03/09(日) 01:14:28ID:QaJyCdZ9テクスチャつきのオブジェに対してのライトは
マテリアルの設定を操作する必要があります。
SMaterialのLightingを見てみてください。
これがライトの影響を受けるか受けないかです。
(デフォルトでは影響を受けないようになってたかも)
0452名前は開発中のものです。
2008/03/11(火) 21:38:47ID:qxZlvuLX頂点カのαを減少させてフェードアウトってできるんでしょうか?
EMT_TRANSPARENT_ALPHA_CHANNELに頂点のα値を反映させたいんです
0453名前は開発中のものです。
2008/03/11(火) 23:26:06ID:txVQuh45FPSゲームでよく使われるスポットライトも作れるんでしょうか
その場合カメラと連動してライトも動かさないといけないのですが・・・
0454名前は開発中のものです。
2008/03/12(水) 22:51:57ID:biTsIJxrいや、デフォルトではtrueですが・・。
何でだろ、examplesのSpecial FxのroomMeshを読み込む部分のコードを
そのままコピーしたらちゃんとライティングされています。
0455441
2008/03/12(水) 23:35:51ID:biTsIJxr0456名前は開発中のものです。
2008/03/13(木) 16:26:24ID:Aiv+dbIO0457名前は開発中のものです。
2008/03/13(木) 17:25:48ID:23U/XaUN頂点単位でしかライティングできないから、ライトマップ使わないとだめ。
勘違いしてたらすまん。
0458名前は開発中のものです。
2008/03/14(金) 22:33:58ID:HWct05muいや、出来なくないと思いますが?
バンプマッピングとかパララックスマッピング使えますし。
フォンシェーディングは自分でシェーダー読み込まないと使えないみたいですが。
0459名前は開発中のものです。
2008/03/17(月) 23:23:15ID:haIYreE8スポットライトはパララックスマッピングやバンプマッピングでは使えないようです・・。
しかもライト2個までだし!!自分で実装しないといけませんね、これは。
ttp://gonzo.dip.jp/~gonzo/cgi-bin/uploader2/upload.cgi?mode=dl&file=4407
ライティングはどうやってもうまくいかないのであきらめることにしました・・。
それよりさまざまな問題が。
何故かどうやっても1バイトのメモリリークがなくなりません。行やファイル名が表示されないんです。
OBBTreeを使ったメッシュ同士の衝突判定クラスで、
三角形を含む全ての当たっているOBBを検出したいのですが1個しか検出できません。
ソースのDLKEYはobbtreeです。
ttp://home7.highway.ne.jp/nomura_y/prog005.htm
OBBTreeの使い方はここを参考にしました。というよりプログラムをコピーしました。
0461名前は開発中のものです。
2008/03/21(金) 13:41:00ID:k9t2KKAYBB対BB、セレクタ対セレクタ、セレクタ対BBのどれかで
単純に現在接触しているかを知るにはどうすればいいですか?
0462名前は開発中のものです。
2008/03/21(金) 17:06:47ID:ipDiEarq0463名前は開発中のものです。
2008/03/21(金) 18:15:39ID:k9t2KKAY手のジョイント位置と対象位置でバウンディングスフィアしてパンチ!とか一応やってみました。
でもirrlichtの機能の範囲でBBなんかでさくっと判定できる方法があればやり方を知りたいです。
具体的にはCSceneNodeAnimatorCollisionResponseを参考にしてみたんですが
移動抜きで現時点の接触を知りたい場合にスフィアなりせずにirrlichtの機能任せにできないかなと思って。
0464441
2008/03/22(土) 21:30:03ID:KVorMeSUBBって一般的なAxis Aligned Bounding Box(AABB)のことですよね。
template<class T>
bool irr::core::aabbox3d<T>::intersectsWithBox(const aabbox3d<T> & other) const [inline]
でAABB同士の当たり判定ができます。
セレクタ対セレクタは、・・・難しそうですね。
セレクタ対BBは、ITriangleSelectorに指定したAABBに含まれる三角形ポリゴンを取り出す機能があります。
それにしてもうpから5日経つのに音沙汰なしですか・・?
>>459 の
OBBTree使ったメッシュ同士の当たり判定。結構高速でそれなりに正確です。
ゲームに使うには十分だと思います。
ttp://www-2ch.net:8080/up/download/1206188724122478.uVc1b2
流れちゃったので再うpします。DLKEYはobbtreeです。OBBTreeの部分は
ttp://home7.highway.ne.jp/nomura_y/prog005.htm
をIrrlicht用に移植しました。TriangleSelectorとしての機能もつけたいんですがうまくいきません・・。
ほかにもいろいろ問題がありますが、まぁ動いたのでいいでしょう・・・。
0465名前は開発中のものです。
2008/03/23(日) 17:58:02ID:YyMn0R5Aスクリーンの大きさぴったりに描画されるビルボードの作り方はありますでしょうか?
(カメラを親にしてビルボードを作成しているので常に目の前にビルボードを描画するところまではできています。)
何をしたいかというと
1回テクスチャにレンダしたデータを画面に表示するときにピクセルシェーダを経由して表示させようとしています。
draw2dimageではシェーダーマテリアルの設定がうまくいきませんでした。
何かヒントでもあればご教示ください。
0466lesson.ifdef.jp
2008/03/23(日) 22:41:58ID:fLRzMwSc規制解除されたので書き込みを
>>441
ライトはビデオカードによって表示できる個数に制限があるかもです
古いカードでも3個まではライトを確認してます
(前面から青、背面から赤、カメラ位置に白で確認)
うちの環境だとバンプマッピングができず、ビデオカード変えると
OpenGLでの描画ができず・・・ (初期不良か
ファイルはダウンロードできたのでOBBTreeを見てみたいと思います
当たっているOBBが違う色で表示されれば目視が楽そうですね
色々いじってみます(rockwall.bmpがなかったので適当に作りました)
0467441
2008/03/24(月) 21:11:28ID:cbUStkSt2D用の命令ではシェーダーが適用されない使用になっているのでだめです。(ソースを見ると、シェーダー無しの状態に戻していました)
struct VS_OUTPUT
{
float4 pos : POSITION0;
float2 texCoord : TEXCOORD0;
};
VS_OUTPUT vs_main( float4 inPos: POSITION )
{
VS_OUTPUT o = (VS_OUTPUT) 0;
inPos.xy = sign( inPos.xy);
o.pos = float4( inPos.xy, 0.0f, 1.0f);
// get into range [0,1]
o.texCoord = (float2(o.pos.x, -o.pos.y) + 1.0f)/2.0f;
return o;
}
RenderMonkeyのScreen-AlignedQuadから取ってきた頂点シェーダーです。(HLSL)
別にカメラを親にしなくても、このシェーダーを適用するだけで表示される・・筈です。
シーンノードで描画する場合はsetAutomaticCullingでカリングのモードをEAC_OFFにしておきましょう。
>>466
当たっているOBBは赤で表示されます。最初に見つかった1ペアだけですが。
Irrlicht SDKに含まれていますよrockwall.bmp
(だからIrrlicht SDKと同じフォルダ構造にしていたんです)
0468465
2008/03/24(月) 23:59:55ID:YyeAT6+Oご指摘ありがとうございます。
指摘されたHLSLを使うことで、うまくできました。
以下が作ってたサンプルになります。
(内容は法線MAPを使って輪郭描画を行うサンプルです。)
ttp://gamdev.org/up/img/11248.zip
0469名前は開発中のものです。
2008/03/25(火) 00:01:49ID:YyeAT6+O上のZIPですが、自分の環境がirrlichtライブラリの中に手を入れたりしているので
そのままではコンパイルできないかも知れませんので注意してください。
0470名前は開発中のものです。
2008/03/29(土) 00:01:52ID:9eKD+9jY候補と印象は以下
1、エンティティの中にシーンノードを保持する。
シーンノードを自由に組み合わせられるのは魅力的だが、
特殊な表現をするには結局新しいシーンノードを作る必要がありそう。
2、シーンノードを継承する。
自由に描画処理を記述できるメリットは大きいが面倒そう。
3、シーンノードアニメータを継承してシーンノードに追加する。
複数のシーンノードを組み合わせて使うのが大変そう。
4、それ以外。
0471名前は開発中のものです。
2008/03/30(日) 23:27:58ID:q0Ctn/EASpecial Shader Pack by Nadroって何処からDL出来るんですか?
フォーラムに飛びますが何処からDLするのか分かりません。
0472lesson.ifdef.jp
2008/04/04(金) 22:03:23ID:I+kk4Izj遅くなりましたがOBBTreeの報告です
COBBTreeTriangleSelector.cpp内の17行目辺り
bool COBBTreeTriangleSelector::_checkCollision()の
この部分を
if (!childAL && !childAR && !childBL && !childBR)
{
result = true;
}
trueを返していますが、コメントアウトしておいてください。
if (!childAL && !childAR && !childBL && !childBR)
{
// result = true;
}
これで、当たり判定があった部分は全て表示が変わります。
ただし問題が1つあって、回転させた場合、
「回転する前のオリジナルのOBBTreeの位置に当たり判定が発生」しています。
これは、createRotationAnimator()が悪さをしているのだとは思いますが
そこまでは調べていません。
とりあえず報告まで お試しください
0473lesson.ifdef.jp
2008/04/04(金) 22:10:21ID:I+kk4Izjキャラクタークラスを作成するにあたって、
私としては「2、シーンノードを継承する。」が一番楽だとは思います。
キャラを用意して、動きなどを設定してあげれば
render()で全て描画してくれるので確かに楽です。
getPosition/setPosition/getRotationなどがすぐに使えるのがいいです。
気になる点としては、描画順番の管理の仕方でしょうか?
(弾丸を発射させても、MAPの後ろに隠れて表示されないなど
そういう問題が発生して、どうしようかと思っている所です)
これは、他にわかる人からの助言が欲しいです。
0474lesson.ifdef.jp
2008/04/04(金) 22:18:25ID:I+kk4Izj17行目ではなく147行目です・・・
関数名で検索してください;;
>>471
Nadro氏の投稿記事内で時々URLが出ていますが、
全てがダウンロードできるわけではなさそうです。
ttp://rapidshare.com/files/38691306/Chernobyl_Shaders.rar.html
ttp://rapidshare.com/files/39444062/Chernobyl_Shaders_Multi_Lighting.rar.html
ttp://rapidshare.com/files/41942562/0_1_CGE_Plastic.rar
あとは、同じように記事内にShaderのプログラムがそのまま
記載されているので、それを必要な部分に組み込む形になるかと思います。
0475名前は開発中のものです。
2008/04/06(日) 00:16:57ID:Naj1qGbTソースを見た限り、Irrlichtはノードをテクスチャでソートしてしまっているので、
細かい描画順の管理(Ogreのプライオリティ管理のようなもの)は出来ないかと思います。
が、半透明オブジェクトのパスは、通常オブジェクトのパスより後に来ることは保証されているので、
マップのような半透明のHUDで弾オブジェクトが隠れてしまうのを防ぎたいのであれば、
registerNodeForRendering の引数に ESNRP_TRANSPARENT を指定するといいんではないでしょうか。
0476名前は開発中のものです。
2008/04/06(日) 00:25:09ID:8nqMAlGmありがとうございます!試してみます
>「回転する前のオリジナルのOBBTreeの位置に当たり判定が発生」しています。
どうりで当たっていないOBBが赤くなると思いましたよ・・。
さて、どうすりゃいいか・・。
0477lesson.ifdef.jp
2008/04/06(日) 01:01:36ID:qjatMiVM>Irrlichtはノードをテクスチャでソートしてしまっているので、
やっぱり、ソートしてる感じですかorz
特定の向きだと表示される場合があったりしてすごいはまりました。
情報ありがとうございます。
はまる前はISceneNodeを継承させずにやってたので気づきませんでした。
0478lesson.ifdef.jp
2008/04/06(日) 01:19:50ID:qjatMiVMアニメータが悪さしてるかと思っていましたが
setPosition/setRotationで移動/回転を行ってみたところ
こちらでもオリジナルの座標で計算していました。
なので、_checkCollisionなどで「回転」も与えないと厳しそうですね。
オリジナル版では接触部分の色変化はさせていなかったので、
もしかしたら気づかなかったのかもしれません。
0479名前は開発中のものです。
2008/04/07(月) 17:33:46ID:tTPi+peNVista,VC++Expressで、プロジェクト名lessonです。どこが悪いか教えてください
<出力>
1>------ ビルド開始: プロジェクト: lesson, 構成: Debug Win32 ------
1>マニフェストを埋め込んでいます...
1>mt.exe : general error c10100b1: Failed to load file "..\Debug\lesson.exe". U_Q9LdK
1>~[
1>ビルドログは "file://c:\irrlicht-1.4\lesson\lesson\Debug\BuildLog.htm" に保存されました。
1>lesson - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
ビルド ログ ビルド 開始: プロジェクト: lesson、構成: Debug|Win32
コマンド ライン 一時ファイル "c:\irrlicht-1.4\lesson\lesson\Debug\RSP00000113044012.rsp" を作成しています。内容 :
[
/outputresource:"..\Debug\lesson.exe;#1" /manifest
".\Debug\lesson.exe.intermediate.manifest"
]
コマンド ライン "mt.exe @"c:\irrlicht-1.4\lesson\lesson\Debug\RSP00000113044012.rsp" /nologo" を作成しています。
出力ウィンドウ マニフェストを埋め込んでいます...
mt.exe : general error c10100b1: Failed to load file "..\Debug\lesson.exe". U_Q9LdK
~[
結果 ビルドログは "file://c:\irrlicht-1.4\lesson\lesson\Debug\BuildLog.htm" に保存されました。
lesson - エラー 1、警告 0
0480名前は開発中のものです。
2008/04/07(月) 17:35:25ID:tTPi+peNVC++2008Expressです
0481441
2008/04/07(月) 21:45:06ID:HN/Waynt>なので、_checkCollisionなどで「回転」も与えないと厳しそうですね。
行列を使って回転の処理もちゃんとしているつもりでしたが
どうやら何処か処理が間違っているようです。
野村XX氏のは行列を移動用と回転用で分けて渡していますがこのプログラムでは
そうしていません。core::matrix4のtranslateVectとrotateVectを使えば分けなくてすむと
思ったのでそうしました。
0482lesson.ifdef.jp
2008/04/08(火) 00:32:01ID:UBGq2D2b>Irrlicht lessonのとうりインストールしましたが、エラーが出てコンパイルできません。
むむ、すみません。ファイルを作成した場合は、
ビルドする対象に設定する(ソリューションに追加する)必要があります。
その部分を更に詳しく追記しておきましたので、確認してください。
■エラー内容
通訳?すると、ビルドする対象が存在しないためビルドに失敗しました、です。
■対処方法
ソリューションにmain.cppを追加してください。
http://lesson.ifdef.jp/000.html の下部に詳細を追記しておきました。
ソリューション エクスプローラーにファイルを追加すると大丈夫です。
>>441
OBB自体の描画は問題ないようなので、当たり判定をする時の座標を
注目すれば何とかなりそうな気はします。
こちらでも、確認できたら再度お知らせします。
オリジナルよりも簡潔になっている部分も多々あったので応援してます。
0483名前は開発中のものです。
2008/04/08(火) 19:37:04ID:46Ui6/PRできました。ありがとうございます
またお願いします
0484441
2008/04/08(火) 23:57:58ID:s2YHW7Mxでも今日うpは無理かもです。
0485441
2008/04/10(木) 21:51:47ID:x0tHNvR8COBBTreeTriangleSelector::isCollisionの
boxA.Matrix.rotateVect(vecAtoBTrans, boxA.Center - boxB.Center);
となっているところを
boxA.Matrix.rotateVect(vecAtoBTrans, boxB.Center - boxA.Center);
にしなければならなかったようです。
0486441
2008/04/10(木) 23:42:49ID:x0tHNvR81.基底クラスをITriangleSelectorではなく独自のに変更する
(CTriangleSelectorだとTrianglesがCOBBTreeTriangleSelectorを作るたび配列Trianglesが
毎回作られ処理時間とメモリが無駄)
2.できればOBBの面が裏返らないようにしたい
3.接触しているポリゴンのペアと交点を取得可能にする
4.OBBTree以外にも球や直方体と当たり判定が可能にする
lesson.ifdef.jpさんデバッグありがとうございます
0487名前は開発中のものです。
2008/04/11(金) 19:18:44ID:guvAZOSLLessonB03ーXファイルの表示について、lesson.exeを実行するとちゃんと表示できます。しかし、Lesson.dswを開いてVC++上で実行するとコンパイルはできても、tiger.xが真っ黒でテキスチャが反映されません。一応Debugフォルダにtiger.xを入れてみてもやっぱりだめです。
何が原因かがわかりません。
Lesson006-テクスチャはともにうまくいきました。
どうぞご確認ください
0488lesson.ifdef.jp
2008/04/11(金) 22:13:29ID:5Azux61SVCの初期設定の不足分の指摘ありがとうございました。開発がんばです!
>>441
修正お疲れ様です! 変更予定箇所が沢山ありますね。
変更は大変なので、バックアップを忘れずにっっ
>>487
ご利用ありがとうございます。微妙にライトの挙動がおかしいですね…
プロジェクトから実行した際に、真っ黒なのを確認しました。
現段階の対応策として、nodeの定義の後に以下を追記してください。
ライトの影響を無視するので、テクスチャの確認は可能です。
node1->setPosition(vector3df(-2,0,0));
node1->setMaterialFlag(EMF_LIGHTING, true); //←これ追加 false:ライト無視
:
node2->setPosition(vector3df(2,0,0));
node2->setMaterialFlag(EMF_LIGHTING, true); //←これ追加 false:ライト無視
<<お土産>>
現在作っているFPSゲームの実行ファイルをアップしておきます。
http://lesson.ifdef.jp/file/irrlesson_hb.zip
0489lesson.ifdef.jp
2008/04/11(金) 22:36:35ID:5Azux61Sご利用ありがとうございます。微妙にライトの挙動がおかしいですね…
プロジェクトから実行した際に、真っ黒なのを確認しました。
現段階の対応策として、nodeの定義の後に以下を追記してください。
ライトの影響を無視するので、テクスチャの確認は可能です。
node1->setPosition(vector3df(-2,0,0));
node1->setMaterialFlag(EMF_LIGHTING, false); //←これ追加 false:ライト無視
: ^^^^^
node2->setPosition(vector3df(2,0,0));
node2->setMaterialFlag(EMF_LIGHTING, false); //←これ追加 false:ライト無視
^^^^^
※trueではなくfalseです…。
trueで表示されないことを確認して、そのままupしてしまったorz
0490名前は開発中のものです。
2008/04/13(日) 10:39:19ID:DXszE/f/http://2sen.dip.jp:81/cgi-bin/upgun/up4/source/up0364.zip
0491lesson.ifdef.jp
2008/04/13(日) 21:34:01ID:yZyopwHg数日で戦車のXファイルを表示できるまでになったのはスゴイですね
キー操作で動かせるようになると、さらに楽しくなるのでオススメです
0492名前は開発中のものです。
2008/04/13(日) 23:09:36ID:++ZLZc4Wまだまだ間違いがありました・・。
DLKEYはobbtreeです。多分入れ忘れは無いと思います
0493lesson.ifdef.jp
2008/04/13(日) 23:50:10ID:yZyopwHgダウンロードしてみましたが、以下の2つが見つかりませんでした…
CCameraSceneNode.cpp
CCameraTPSSceneNode.cpp
とりあえずご報告まで
0494441
2008/04/14(月) 22:12:55ID:u3RVdEoB0495470
2008/04/16(水) 11:25:01ID:0VSRffog返信遅れてすいません。
シーンノードはデータ駆動でデータを再現すれば状態を復元できます。
ゲームの特徴と一致していますし
「キャラクターはシーンノードを継承する」というので同感です。
ただ、言われた通り描画順序の問題や更新処理のみを行うことが困難です。
本格的にやるならIrrlichtの改造が必要そうですね。
0496441
2008/04/17(木) 22:45:15ID:t7r2WetSBVHとか使わなきゃいけないんでしょうか?
0497lesson.ifdef.jp
2008/04/19(土) 18:08:01ID:IeoDZSma使用していないファイルをプロジェクトから外すことで
問題なく動作するのを確認できました。
キーで2つのオブジェクトも操作できるので当たり判定の確認も
わかりやすくなっていました。
>>470
キャラクターの描画だけであれば、シーンノードで特に問題はありません。
銃弾や他オブジェクトはシーンノードを継承せずに、
drawIndexedTriangleList/drawIndexedTriangleFanを使用して
回避することも可能です。
できればシーンノードを継承していきたいですが、
私としては当分は自前の描画で対応してみようかなと思っています。
0498441
2008/04/20(日) 20:58:58ID:A28b/pa+を読んでみる事にします。
0499441
2008/04/20(日) 21:02:14ID:A28b/pa+Cache-Efficient Layouts of Bounding Volume Hierarchies
です。果たして実装できるのだろうか?
ttp://gamma.cs.unc.edu/COLBVH/
ttp://lucille.atso-net.jp/blog/?p=177
ttp://lucille.atso-net.jp/wiki/index.php?%B6%F5%B4%D6%A5%C7%A1%BC%A5%BF%B9%BD%C2%A4
0500470
2008/04/26(土) 22:21:42ID:LvlHrFkO自前で描画できれば最高ですね。
実力不足でシーンノードを利用するというのが本音です。
できればオブジェクトは統一的に管理したいので
OnRegisterSceneNodeを呼ぶタイミングを操作する手もあるかもしれません。
これならIrrlichtを修正する必要はないですしね。
色々と検討してみます。
0502lesson.ifdef.jp
2008/04/27(日) 23:35:33ID:RbWzqJOX最初から読み込めるモデルファイルに
http://www.counter-strike-dl.com/cs-skins.html
で公開されている武器やキャラクターモデルを使用できるようになります
(ここでは、Counter-Strike 1.6のモデルに対応しています)
MD2に比べて、モデルのクオリティが上がっているのでなかなかよさげです
また時間があればSourceやHL2にも対応してみたいと思います
こちらでソースと実行ファイルを公開しました
http://lesson.ifdef.jp/
>441
BVHは詳しくないですが、基本的にはIrrlichtで用意されている
ITriangleSelectorを使用しています
もしかしたら、こちらの方が参考にしやすいかもしれません
(Irrlichtのソースはかなり見やすい方なのでおすすめです)
>470
シーンノードを使用するとrender()が呼ばれない場合が発生してしまいます
自分の記述ミスなのか、内部のミスなのかは不明ですが
ここも何か関係しているのかもしれません
この場合の無理やりな対策方法としてOnRegisterSceneNode()内で
render()を呼び出すことで何とか回避可能です
自力の描画はモデル等ではなく空間上のスプライト(画像)関連で
使用しています
これであれば、特に描画に苦しむことなく対処可能かと思います
drawIndexedTriangleFan/drawIndexedTriangleListを呼べばいいので
挑戦したくなったときにでも見てみるとよいかもです
(DirectXやOpenGLと記述方法が同じなので、そちらで勉強するのもアリです)
0503名前は開発中のものです。
2008/04/30(水) 19:11:34ID:lXj3d1Z3Irrlicht-Toutorial7.Collisionで
scene::IAnimatedMesh* q3levelmesh = smgr->getMesh("20kdm2.bsp");
scene::ISceneNode* q3node = 0;
if (q3levelmesh)
q3node = smgr->addOctTreeSceneNode(q3levelmesh->getMesh(0));
scene::ITriangleSelector* selector = 0;
if (q3node)
{
q3node->setPosition(core::vector3df(-1370,-130,-1400));
selector = smgr->createOctTreeTriangleSelector(
q3levelmesh->getMesh(0), q3node, 128);
q3node->setTriangleSelector(selector);
selector->drop();
}
と、q3nodeが設定されていますが、このq3nodeは一体何ですか?後で妖精ノードが追加されているけどそれとは違いますよね。
0504名前は開発中のものです。
2008/04/30(水) 19:12:19ID:lXj3d1Z3scene::ICameraSceneNode* camera =
camera = smgr->addCameraSceneNodeFPS(0,100.0f,300.0f);
camera->setPosition(core::vector3df(-100,50,-150));
scene::ISceneNodeAnimator* anim =
smgr->createCollisionResponseAnimator(
selector, camera, core::vector3df(30,50,30),
core::vector3df(0,-3,0),
core::vector3df(0,50,0));
camera->addAnimator(anim);
anim->drop();
は、カメラが壁にぶつかるのを防ぐためにカメラ衝突判定用のノードanimを作り、これと壁との衝突を判定しているとうことでいいですか?
■ このスレッドは過去ログ倉庫に格納されています