1 名前:名前は開発中のものです。 mailto:sage [2006/10/05(木) 06:50:19 ID:UN/zUzoQ] zlibライセンスでクロスプラットホームなゲームライブラリ、Irrlichtのスレです。 ※回答する人も、質問する人も必ず読んでください これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近Irrlichtを始めたばかり 3.SDKを見ても、Googleで検索しても、エキサイト翻訳でもいまいち理解できない人 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「英語読め」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する人 】 ・ どんな事で躓いているのか明確にする。 ・ 長くならないなら躓いている部分のコードを晒してみてください。 ・ 解決した場合、お礼を言うのは当然ですが、何をどうしたら解決したかを明確に書くこと。 前スレ pc8.2ch.net/test/read.cgi/tech/1104179696/
360 名前:357 mailto:sage [2007/12/03(月) 22:52:11 ID:FEcfD3/b] lessonさん、>>359 さんありがとうございます。 >>359 のレスを見て簡単かもと思ったのですが、Altを押している間は イベントが呼ばれないようなので、この中での処理は諦めました。 結果として描画ループ内に //全画面表示 //Altはirrのイベントで処理できないのでWIN32API使用 if(GetKeyState(VK_RMENU)>>7 &1 && GetKeyState(VK_RETURN)>>7 &1){ switchToFullScreen(); //自作全画面処理 } といった感じで追加しました。 >>359 の方法を使えれば良いのですが、自分には少々ハードルが高いようです。英語読めないですしw 不恰好ですが目的の動作は実現しました。感謝です。
361 名前:名前は開発中のものです。 mailto:sage [2007/12/07(金) 22:33:14 ID:COpAhiGY] Windows API使うとLinuxで動かないのから SDLとか使ったほうがいいんじゃないの
362 名前:lesson.ifdef.jp mailto:sage [2007/12/08(土) 00:55:31 ID:ipyfMo3f] >>361 さん せっかくの掲示板ですから、 もう少し具体的な解決策も書いたらどうでしょう? お互いスキルアップにもつながりますし ●キー取得 ・DLLの改造…SYSKEYの処理を追加する ・SDLを使用する…SDL_PollEventの後で処理を追加する ・OpenGL(GLUT)を使用する…glutGetModifiersで処理 ・DirectXを使用する…GetDeviceStateで状態取得 ・Win32APIを使用する…GetKeyStateで状態取得 別の方法として、そもそも複数キーを使用しない ・Homeキーを押したら全画面処理をするなど
363 名前:名前は開発中のものです。 mailto:sage [2007/12/11(火) 01:51:39 ID:WAcCpdFv] ◆質問 Irrlicht.dllを動的に読み込むにはどうするのが一番楽? ◆やったこと 状況に応じてIrrlicht.dllを切り替えたくなった。 とりあえずLoadLibraryとGetProcAddressで createDeviceの関数ポインタ取って来るスケルトンを作ってみたけど、 GetProcAddressの返り値NULL('A`) ◆環境 VC7.1くらい Irrlicht1.4
364 名前:363 mailto:sage [2007/12/11(火) 23:48:27 ID:WAcCpdFv] そういえば関数名は正しかったのかな・・・と思いdependecywalker使用したら、 createDeviceじゃなくて、150文字くらいのもっさい関数でした…。 スケルトンは動くようになって良かったけど、DLL動的したら、この先ずっとDLL内の関数名を気にしながら開発しないといけないのか・・・?
365 名前:名前は開発中のものです。 mailto:sage [2007/12/12(水) 00:13:40 ID:4mpK8EPR] シビアに速度を求めないのだったら、 Irrlicht の API を呼び出す単純なラッパーをつくってやればいいんジャマイカね。 俺はスクリプトエンジンから API 呼ぶプラグインつくってるけど、メモリ 2G 未満のもっさりノートで EventReceiver とか Animator をスクリプトに記述するような無茶しても結構問題なく動いてる。
366 名前:名前は開発中のものです。 mailto:sage [2007/12/12(水) 00:16:19 ID:4mpK8EPR] どうでもいいが間違ったorz メモリ 1G 未満 ね。
367 名前:モデム壊れてた ◆YATA/oetrw mailto:sage [2007/12/12(水) 00:32:10 ID:hv2mu0E9] >>363 ↓このようにC形式で関数エクスポートされてないので難しいかもしれない。 extern 'C' { IrrlichtDevice* createDevice(...); } もし、動的ロードに成功したとしても問題がひとつ。 Irrlichtはマイナーバージョン間ですら互換性がない。 だから、本体実行ファイルが持っているヘッダとは別バージョンの DLLを読み込んだときに関数エラーが発生してしまうと思います。 バージョン間の差異を解決できれば動的ロードも夢ではないです。 こう言うのしか思いつかなかった(互換性は埋められない) exe->(動的ロード)->extern 'C' を使ったラッパーDLL1.4->(静的リンク)->Irrlicht.dll 1.4 L(動的ロード)->extern 'C' を使った ラッパーDLL1.3->(静的リンク)->Irrlicht.dll 1.3 ------- チラ裏 irrIMが手詰まりになったので、IrrlichtML 1.4おいていきます。 FreeTypeヘッダをインクルードしなくて済むようにCGUITTFontを隠蔽化。 etwas.wolfish.org/files/IrrlichtML-1.4-win32Linux.zip
368 名前:名前は開発中のものです。 mailto:sage [2007/12/12(水) 00:39:16 ID:hv2mu0E9] かぶった。 >>365 さんのほうが詳しそう。 >>364 extern 'C'されてないとCreateDevice@fooxyzzzzのような別の関数名に置き換わってしまうんです。
369 名前:363 mailto:sage [2007/12/12(水) 00:51:44 ID:byr9Z6t8] >>365 ,367,368 ありがとう 昔0.8くらいの頃に作ったスケルトンに最新DLLを上書きしたらエラーでまくりで、 createDeviceに至っては引数構成も違う雰囲気。 DLLのヴァージョン上がる度に手製ソースの方までいじるのは避けたいから、 Irrlicht1.dll・・・みたいに用意して動的に切替、と考えてた。 DLLのバージョン更新による差分については、可能ならば自前ラッパーで吸収したいと考え中。 それはそれとして追加質問 Irrlichtに慣れたいんだけど、自分は今まで2D畑中心でやってきたからやはりまず2D系テクから覚えたい。 公式チュートリアルやシューティング勉強中の人のソースは見た、けど、 2Dのキャラクタ画像を拡大縮小したり透過率を指定したり回転させたりするようなサンプルが見当たらない。 今後、これらのサンプルはどういう方向性で探索するべきだろうか? それとも、複雑な2D機能はIrrlichtでは対応出来ない?
370 名前:名前は開発中のものです。 mailto:sage [2007/12/12(水) 16:19:26 ID:M90VuyCU] サンプルばっかりに頼らないでAPIドキュメントで調べろよ でも回転は見当たらないから自分で頂点触るしかないのかな
371 名前:名前は開発中のものです。 mailto:sage [2007/12/13(木) 00:05:19 ID:NC1QbeZC] 前から気になってたんだが、 scene::ISceneNode::getRotation( ) は const core::vector3df& を返すのに、 scene::ISceneNode::getPosition( ) が const core::vector3df を返すのはなんでだぜ。 値返しなのに const はおかしいから単なるバグかね。
372 名前:名前は開発中のものです。 mailto:sage [2007/12/16(日) 17:42:06 ID:G2b9tMyR] クォータニオンを扱う関数があるみたいですけど、どうやって使うんですか?
373 名前:名前は開発中のものです。 mailto:sage [2007/12/17(月) 01:35:15 ID:9HMeNQD7] GOGOのサンプルをファイル分割してみた 整理してうpします
374 名前:名前は開発中のものです。 mailto:sage [2007/12/18(火) 23:55:35 ID:cUWqWIvR] >>372 さんも質問していますが、quatanionを使ったベクトルの回転はどうすれば良いのでしょうか。 API リファレンス読んでも、英語力皆無なのでどの関数がどんな機能を持っているのか…。 例えば任意のベクトル v1 とベクトル v2 があるとき、 v2 を軸として v1 を回転する方法などお教えいただけないでしょうか。
375 名前:374 [2007/12/20(木) 15:35:27 ID:jqRYwRor] 一応自己解決。下のコードでいけました。 quaternion qua; qua.fromAngleAxis(rot, v2); matrix4 mat = qua.getMatrix(); mat.transformVect(v1); ただ、Direct3Dの関数で処理したのと微妙に挙動が異なるような。 試しにカメラを縦に回転させるアニメータを作ってみたが、 Y軸付近で回転量が小さくなるような気がしたのと、ジンバルロックが解決できない。 下のコードだとジンバルロックで動かなくなることはないのだが……。 D3DXQUATERNION qua(0.0f, 0.0f, 0.0f, 1.0f); D3DXQuaternionRotationAxis(&qua, &axis, rot); D3DXMATRIX mat; D3DXMatrixRotationQuaternion(&mat, &qua); D3DXVec3TransformCoord(&normalized, &normalized, &mat);
376 名前:名前は開発中のものです。 mailto:sage [2007/12/20(木) 17:17:48 ID:D8YXZHbq] FEZのようなインターフェースを作れないかな? FPSっぽいカメラとキー操作なんだけど FPS視点ではなく3rd視点という
377 名前:名前は開発中のものです。 mailto:sage [2007/12/20(木) 17:29:57 ID:1FySn3dT] 普通に作れるでしょ・・・
378 名前:名前は開発中のものです。 mailto:sage [2007/12/21(金) 02:22:22 ID:W06+iKTa] 当たり判定は正確ですか?
379 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 03:21:29 ID:qH4tCHw4] CADとかShadeで作ったメッシュを読み込むには、 どの形式でエクスポートするのがベターでしょうか。 Xファイルだと読み込めないこと多いので……。
380 名前:名前は開発中のものです。 mailto:sage [2007/12/24(月) 23:31:42 ID:VhCZgB33] 最近ばかり初めてゲームの製作をするですが、 どうイジってIrrlichtでトゥーンレンダリングを出来ますか?
381 名前:名前は開発中のものです。 mailto:sage [2007/12/24(月) 23:50:22 ID:5nrbPA5X] ja.wikipedia.org/wiki/ シェーダ
382 名前:名前は開発中のものです。 mailto:sage [2007/12/25(火) 00:34:31 ID:IJC6bSYh] >>380 Toon(Cell) Shading snippet using HLSL. See below. irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=18281
383 名前:名前は開発中のものです。 mailto:sage [2007/12/26(水) 09:27:39 ID:xCkClyRy] CollisionResponceAnimatorを二つ設定すると 時間経過ごとに重力が増大していくんだが…Irrlichtのバグ? SDK同梱のサンプルマップで試したんだが 落下速度が異常に早くなって、階段すら上れなくなる。 誰か、解決法や関連情報を知っている人はいないでしょうか。
384 名前:名前は開発中のものです。 mailto:sage [2007/12/26(水) 19:33:39 ID:yUN26AYS] ColisionResponceAnimatorを2つ使う必要性が良くわからないんだが。 2つ以上のオブジェクトとColisionResponceしたいんなら、 1つのColisionResponceAnimatorにMetaTriangleSelectorを当てればおk
385 名前:名前は開発中のものです。 mailto:sage [2007/12/26(水) 23:44:30 ID:xCkClyRy] >>384 出来ました。ありがとうございます。
386 名前:名前は開発中のものです。 mailto:sage [2007/12/27(木) 21:44:30 ID:8IcVTLM6] Irrlichtでクリッピング距離を変えるにはどうしたらいいでしょうか。 Direct3Dでは D3DXMatrixPerspectiveFovLH() の引数で設定することができましたが、 Irrlichtではそれらしきものが見当たらず・・・
387 名前:386 mailto:sage [2007/12/28(金) 20:40:22 ID:Hp4RPsA7] 自己解決しました。 一応書いとくと scene::ICameraSceneNode* camera = smgr->addCameraSceneNode(〜); で、 camera->setFarValue( 距離 ); で最大距離、 camera->setNearValue( 距離 ); で最小距離。 なんでForum見ることを思いつかなかったんだろ(;´Д`)
388 名前:名前は開発中のものです。 mailto:sage [2007/12/28(金) 22:39:55 ID:ShcOiBSU] >>386 Irrlicht付属のヘルプにも載ってます irr::scene::ICameraSceneNode Class Reference setFarValue (f32 zf)=0 Sets the value of the far clipping plane (default: 2000.0f). setNearValue (f32 zn)=0 Sets the value of the near clipping plane. (default: 1.0f).
389 名前:386 mailto:sage [2007/12/30(日) 12:25:25 ID:KN9VCd/i] ありがとうございます。 ちゃんと調べないとダメですねorz
390 名前:名前は開発中のものです。 [2008/01/04(金) 06:42:00 ID:B3YR/5Yx] イルリッヒは時代遅れ
391 名前:名前は開発中のものです。 mailto:sage [2008/01/04(金) 07:34:17 ID:CcNPOaPX] 今は何の時代?
392 名前:名前は開発中のものです。 [2008/01/04(金) 10:30:21 ID:B3YR/5Yx] オーガ
393 名前:名前は開発中のものです。 mailto:sage [2008/01/09(水) 00:31:36 ID:INF4za2E] あけましておめでとうございます 非公式ドキュメントのトップページが壊されていたため閲覧不能でした 先日修正しておきました あそこの管理人さんは今どうしておられるのやら
394 名前:名前は開発中のものです。 [2008/01/09(水) 15:48:14 ID:oe3Z1pea] おまえらなんでwindowsでイルリヒト使ってんの? ダイレクトエックソでも使ってろよ
395 名前:名前は開発中のものです。 mailto:sage [2008/01/09(水) 19:16:17 ID:1bUx6/kQ] 低レベルな釣りだな 出直して来い
396 名前:名前は開発中のものです。 mailto:sage [2008/01/09(水) 21:37:04 ID:bwau3Xen] しかしイルリヒトと読んでるところは評価出来る
397 名前:名前は開発中のものです。 mailto:sage [2008/01/23(水) 17:55:29 ID:jmfBDAYQ] IrrlichtMLの中の人見てるみたいなので質問ここに書きます。 CGUITTFontについてです。 新たな文字が現れるたびにテクスチャに確保しているようですが、これはたとえばノベル ゲーム等文字種が多数現れる場合、メモリ不足に陥らないでしょうか?キャッシュの上限 を設定したほうがよい気がしますが…
398 名前:名前は開発中のものです。 mailto:sage [2008/01/23(水) 18:05:26 ID:jmfBDAYQ] 連投すいません。フルスクリーン<->ウインドウの切り替えはデバイス作り直し しかないのでしょうか。 その場合、deviceをdropしたら確保したリソースは自動的に開放されるのでしょうか?
399 名前:名前は開発中のものです。 mailto:sage [2008/01/23(水) 19:23:35 ID:Sr3V79Hv] >>397 中の人じゃないが、前実験で第二水準まで全部出してみたけど メモリ不測にはならなかったよ。 WindowsXP 512MB環境
400 名前:名前は開発中のものです。 mailto:sage [2008/01/24(木) 00:06:10 ID:FpXK7fP/] ちょっと計算してみました。A8R8G8B8の16x16のテクスチャを確保すると1グリフあたり1024 byte=1kbyte。それが約2万文字なので約20mbyteということで比較的最近のビデオカード だと問題の無い値に収まりますね。 とはいえたかがフォントのレンダリングにビデオメモリ20mbyteも食われるのはもったいない おばけが出る気がします。20pixel位のフォントをレンダリングしたらさらに4倍に膨れ上がり ますし。 やっぱり当初の計画通りFreeTypeを直接叩いてフレームバッファ(あるいはテクスチャロ ック)に転送するという形をとることにします…
401 名前:名前は開発中のものです。 mailto:sage [2008/01/24(木) 01:14:48 ID:qECrGTwM] >>397 MLの中の人です。数日間、モニターが壊れて画面がとてもカレー色でした。 一見メモリ消費量が多いように見えても、読込フォントの最大文字数までです。 なので、現在のOS上では微々たる消費量ではないかと。。 テクスチャは文字単位ではなく、フォント単位で確保されると思ったほうがいいです。 ビットマップフォントも含めて、メモリ不足に遭遇してないので放置ということで…。 どうしても気になるようなら、getFont(...)せずにCGUITTFontを直に生成して、必要なくなったらdrop()してはどうでしょう? 一部のGUIに適用するだけなら、この方法でうまく開放されると思います。 >>398 フルスクリーンへの切替は、IrrlichtサンプルのDEMOのようにデバイス作り直しのみ。 deviceをdrop()した時点で、Irrlicht管理のオブジェクトは全て破棄してくれますよ。
402 名前:名前は開発中のものです。 mailto:sage [2008/01/24(木) 01:14:49 ID:YttCO1k2] >>400 おまいさんのこだわりは結構だし、それを止める気はないが、 現実によっぽど長編の小説でも実際に使われてる文字は せいぜい2000文字ぐらいだぞ。 (以前トルストイの「戦争と平和」の訳で約1800文字種とかいうのを読んだ) 普通のゲームならせいぜい1000文字ぐらいじゃないか? なので、限りなく杞憂に近いとは思う。 が、まあがんがれ
403 名前:名前は開発中のものです。 [2008/01/24(木) 04:50:43 ID:xvOsgKrW] 横から失礼。 コンシューマだとシナリオ作った後に よく使う文字をカウントして、必要最低限の文字をもたせたり、 あとは、最近(?でもないか)ならキャッシュ機構をもたせて、 よく使うのはキャッシュヒット、あまり使わないのはその場で生成する。 MLのライブラリの中身見てないから、すでに実装されてるよ!だったらスマソ
404 名前:名前は開発中のものです。 mailto:sage [2008/01/24(木) 09:52:27 ID:YttCO1k2] >>403 CGUITTFontはキャッシング機構を持ってる。 で、400が言ってるのは、 「キャッシュに上限がないみたいだけど、メモリ大丈夫?」 ということ。 で、現実としてそう問題にならんよ、と返答されてる
405 名前:名前は開発中のものです。 mailto:sage [2008/01/24(木) 10:23:18 ID:FpXK7fP/] >>403 CGUITTFontは一度でも現れた文字は必ずキャッシュされているようです。 だからビデオメモリの消費量が心配なのですが… >>402 情報ありがとうございます。ですがもうFreeTypeでレンダリングするところ まではできてしまったので、もうこのままテクスチャ転送まで進めたいと思います。 1枚絵表示するのにテクスチャ確保するのもあほみたいなので、フレームバッファに 直接書き込む手段と、2D周りがかなり弱いのでその辺補うライブラリも構築することにします。 それと動的ロードの話が出てきましたけど、IReferenceCountedの実装を見るとヘッダ ファイルのなかでdelete thisしてます。 これは、コンパイラの最適化か何かでDLL呼び出し元でdeleteされるとまずくないですかね? new/deleteの実装が異なるコンパイラで作成されたDLLを動的ロードすると、delete時に 不整合を起こすような気がします。あまり詳しくないのでひょっとしたら無駄な心配 なのかもしれませんが…
406 名前:名前は開発中のものです。 mailto:sage [2008/01/24(木) 10:45:41 ID:FpXK7fP/] >>401 回答ありがとうございます。 フルスクリーン切り替えは面倒ですね…。
407 名前:名前は開発中のものです。 mailto:sage [2008/01/24(木) 10:49:29 ID:YttCO1k2] >>405 0.5ぐらいの時代だから2年近く前?にdeleteの問題は公式フォーラムで議論されてたはず。 で、結論は「問題なす」だったはづ
408 名前:名前は開発中のものです。 mailto:sage [2008/01/24(木) 17:48:13 ID:FpXK7fP/] >>407 以前に議論された話題だったのですね。失礼しました。
409 名前:名前は開発中のものです。 mailto:sage [2008/01/25(金) 19:00:41 ID:MPN2QJSG] 質問です。直感でさくっとお答え頂きたいです。 FPSゲーを作ろうとしていて、よさげなライブラリを探しています。 画面を左右2分割にして、2人でプレイ出来るようにしたいのですが、 irrlicht での実装は描画の面において楽に出来ますか?
410 名前:名前は開発中のものです。 mailto:sage [2008/01/25(金) 20:32:40 ID:jU51nQMI] >>409 ビューポートとカメラの切り替えで実現できると思います>分割対戦
411 名前:名前は開発中のものです。 mailto:sage [2008/01/25(金) 22:21:07 ID:Vt/UlEbN] >>409 公式のチュートリアルに画面分割のサンプルあるお
412 名前:名前は開発中のものです。 mailto:sage [2008/01/25(金) 23:45:04 ID:+c4l9exa] OctreeTriangleSelectorを使ってメッシュのどの面とどの面が 衝突したかまで分かる詳細な衝突判定ってできますか?
413 名前:409 mailto:sage [2008/01/26(土) 06:10:08 ID:/SAwn9ff] >>409-410 レスありがとうございます! ュルルルリッヒエンジンでがんばってみます。
414 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 06:11:19 ID:/SAwn9ff] スマソ >>410-411 ですた。ありがとう!
415 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 18:00:09 ID:0EKxzkd2] OGREからこっちに鞍替えを目論んでます。 本家のFeaturesに「BlenderのエクスポーターがSDKにあるよ」みたいな事が書いてあったんで1.4のSDK落としてみたんですが、見つかりません… readmeのフォルダ一覧にもexportersフォルダが書いてあるのに見つからず。 どうすれば…orz OGRE用のメッシュファイル(.mesh)も読めるみたいですが、試してみた方いますか?
416 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 18:35:32 ID:zD+QiSlQ] >>415 OGREのCVSに「blenderimport」と「blendersceneexporter」ってフォルダがあるけど これがBlender関係のSDKじゃね?
417 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 21:19:47 ID:0EKxzkd2] >>416 それってもしかしてコレのことですか? 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の組み合わせでやってる人、居ませんか?
418 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 22:32:35 ID:zD+QiSlQ] >>417 すまん、「本家のFeatures」を、OGREのFeaturesと勘違いしてたみたいだ Irrlichtのスレなのにな・・・ Irrlicht + Blenderなら、アニメーションが出来るDirectXのメッシュ(.x)使った方がいい IrrlichtはXメッシュをそのまま読めるからIrrlicht用にわざわざコンバートしなくて済むしな ただ、Xメッシュはツールによってフォーマットが少し異なる場合があるので注意な
419 名前:名前は開発中のものです。 mailto:sage [2008/01/27(日) 00:34:07 ID:+Y3aPJmy] メタセコで作ると「{」の位置のせいで読めなかったりな。 仕方ないから「{」の前に改行入れるコンバータ作っちまった。
420 名前:名前は開発中のものです。 mailto:sage [2008/01/27(日) 15:56:59 ID:oNRFDMwA] >>418 .xで試してみました。 IrrlichtのMesh Viewerで読めたので、たぶんコレで大丈夫だと思います。 ありがとうございます。
421 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 17:43:17 ID:afuGywxJ] >>420 ところでOGREからこっちに移行する気になった理由はなんだったんだろか
422 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 17:58:37 ID:XOEvg/3a] どうせ「英語読めない」でしょ
423 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 23:58:25 ID:G7mZ8jO6] 自分はOGRE知らないのですが、ライセンスに惹かれてIrrlichtを選択しました。 ところで、drop()を忘れそうな自分はboost::intrusive_ptrを愛用していますが、 使ってる人はいるでしょうか?
424 名前:名前は開発中のものです。 mailto:sage [2008/01/30(水) 11:06:43 ID:+OYkniIM] >>423 俺も昔は使ってたけど、サイズがでかくなるし、ポインタコピーするたびに 内部でごにょごにょやってるしで精神衛生上よろしくない だから、解放処理が必要なオブジェクトはシングルトンなマネージャクラスに任せてる マネージャのコンストラクタで生成&初期化して、デストラクタで開放させれば 管理する必要が無くなる やろうと思えば手動開放もできる 使うときは IrrlichtDevice *dev = IrrManager::getSingleton().getIrrDevice(); みたいな感じで、初期化さえしとけばいつでもどこでもアクセスできる OGRE使ってこの方法を見てから、俺の中ではこれが主流になってる
425 名前:名前は開発中のものです。 mailto:sage [2008/02/02(土) 16:46:40 ID:XyRp6hRG] irr1.3.1で壁の向こう側など、見えないポリゴンの描画を省略したいのですがうまくいきません。 現在は自分の後ろ側などしか省略されず、視線方向のものは全て描画されています。 マップ作成には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);
426 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 00:59:32 ID:iDwHPm2h] Material.Thickness=10.0; driver->setMaterial(Material); driver->draw3DLine(・・・) というとき、Thicknessの値をいろいろ変えても画面上の線が常に1ドット幅なんですが、 どうすれば2ドットの線などを描けますか?
427 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 20:36:47 ID:iDwHPm2h] エンジンをDX9からOPENGLにしたらうまくいきました メインサポートがOpenGLだったんですね
428 名前:名前は開発中のものです。 mailto:sage [2008/02/06(水) 00:53:20 ID:Ac93WCkK] たぶん、ラインのサイズ指定がOpenGL依存なんだろうと思う
429 名前:名前は開発中のものです。 mailto:sage [2008/02/13(水) 21:57:17 ID:sC00+SwF] OpenGLだとaddLightSceneNodeで照らしたaddCubeSceneNodeがちゃんと見えるのに、 DirectXだと光源がない状態になってしまいます。(真っ黒 しかし、ある友人のパソコンでは、 OpenGLのときにguifont->drawをするとクラッシュしてしまうので、(DXなら動く) DirectXのサポートは続けておきたいのですが、どうしたらいいですか? その他人のパソコンでguifont->drawが使えない理由としてどんなものか考えられるか、と、 DirectXに切り替えると上の事例が起きる問題の解決方法を教えてください。
430 名前:名前は開発中のものです。 mailto:sage [2008/02/13(水) 23:32:38 ID:1ZAmjx1a] >>429 友人のGPUがOpenGL2.0に準拠してないかバグ持ちドライバな可能性がある
431 名前:名前は開発中のものです。 mailto:sage [2008/02/13(水) 23:43:28 ID:sC00+SwF] >>430 うーなるほど そうだとするとこっちには手が無いですね・・・ ありがとうございます
432 名前:名前は開発中のものです。 mailto:sage [2008/02/15(金) 13:19:44 ID:uwsfmr7Z] IrrlichtML版のgetFontで得た日本語フォントをISceneManager::addTextSceneNodeに渡すと、 CGUITTGlyphのデストラクタでエラーが出ます。 サンプルでもNode関係を使っているのはなさそうなので、 これは仕様なのでしょうか? 環境はWindowsXPMCEのSP2、IrrlichtML1.4、VisualStudio2005Pro、freetype-2.3.5です。
433 名前:名前は開発中のものです。 mailto:sage [2008/02/15(金) 22:44:27 ID:aJ3r8mIn] >>425 見えない敵とかの描画を省略しようと思ったらそら交差判定が必要になるでしょう
434 名前:名前は開発中のものです。 mailto:sage [2008/02/16(土) 00:11:18 ID:Kcju6cnr] ttp://lesson.ifdef.jp/B03.html このバグ、1.4では直ってないの
435 名前:名前は開発中のものです。 mailto:sage [2008/02/16(土) 19:51:58 ID:BJXzP4O8] 皆さん音楽はIrrlichtで音楽はどうしてますか?IrrKangはフリー以外だとライセンス購入が 必要ですし…何かお勧めのライブラリがあれば教えてほしいです。
436 名前:名前は開発中のものです。 mailto:sage [2008/02/17(日) 11:12:58 ID:k/Iqe8sD] xファイルの読み込みについて質問があります。 irrlichtでxファイルを読み込むときに右手、左手の座標系を指定して読み込ませることって できるんでしょうか? ttp://gamdev.org/up/img/11075.jpg ↑のようにXSIで作成しているときと、Xファイルビューアまたはirrlicht上で表示したときに鏡 像のような表示になってしまうのを、なんとかしたいのです。 環境はWinXP VC2008 irrlicht-1.4 です。
437 名前:名前は開発中のものです。 mailto:sage [2008/02/18(月) 20:53:38 ID:9PaR4TSR] >>432 driverに預けてあるテクスチャを本体が先に開放してるくさい どこかで既にremoveTextureが呼ばれてる気がする addTextSceneNodeの後にfont->grab()でもしておけばエラー回避は可能 その代わり、テクスチャ開放がされなくなります どうしたものか
438 名前:名前は開発中のものです。 mailto:sage [2008/02/19(火) 11:43:22 ID:CEbiXydm] ニコニコ吹いたw
439 名前:名前は開発中のものです。 mailto:sage [2008/02/24(日) 02:38:40 ID:eWBznvro] 過疎り杉で全俺が泣いた。 ところで、436の件が自己解決したので報告。 汚い方法ではあると思うけど irrlichtのCXMeshFileLoaderを元にx座標を反転させながら xファイルを読み込むファイルローダを作って解決させました。
440 名前:名前は開発中のものです。 mailto:sage [2008/02/24(日) 11:04:27 ID:OyDG9+KH] >>439 おつかれです。
441 名前:名前は開発中のものです。 mailto:sage [2008/02/26(火) 23:42:36 ID:ve4woYRm] カメラがどんな向きを向いていても 常に手前から光が当たる 手抜きライティングをするにはどうすればいいですか?
442 名前:名前は開発中のものです。 mailto:sage [2008/02/27(水) 00:44:37 ID:pSPDiQm8] >>441 ライティングしないようにするとかはダメ? (ポリorテクスチャの色そのまま表示するように) 対象ノード->setMaterialFlag(irr::video::EMF_LIGHTING, false);
443 名前:lesson.ifdef.jp mailto:sage [2008/02/27(水) 01:28:06 ID:7TCghY78] >>441 考え方として、以下のようなものはどうでしょう? 1.カメラの背後に光源という感じに、カメラを親として光源を設定 2.キーが押されたら、カメラの代わりにワールドを動かす これで、一応はカメラの方向から必ずライティングされるかと
444 名前:名前は開発中のものです。 mailto:sage [2008/02/28(木) 15:18:04 ID:e5iGSVK/] いつになったらゲームパッド対応するんだろう・・・
445 名前:名前は開発中のものです。 mailto:sage [2008/02/28(木) 23:49:36 ID:9jMY1Ybl] >>442 立体感つけたいのでライティングします。 >>443 CameraSceneNodeFPSと組み合わせたいのでそれはちょっと。
446 名前:lesson.ifdef.jp mailto:sage [2008/02/29(金) 19:57:00 ID:MU+29BuV] >>441 「常にカメラの方向からライティングされる」という意味ですよね? 「常に手前」という表現がちょっと曖昧なので、上記で解釈しました。 ライトを作成する時に、親を「ライト」にすれば大丈夫です。 (前回のは、親に設定したはずが別の値を設定していたため、 期待した動きにならなかったので、別の方法を提示してみました。 今日見たら引数が間違ってた・・・) //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)=親と一緒をセット で、やってみてください。
447 名前:lesson.ifdef.jp mailto:sage [2008/02/29(金) 19:59:41 ID:MU+29BuV] 446の修正 ・ライトを作成する時に、親を「ライト」にすれば大丈夫です。 ↓ ・ライトを作成する時に、親を「カメラ」にすれば大丈夫です。
448 名前:441 mailto:sage [2008/03/04(火) 23:27:13 ID:+F3tYXlG] 出来ました!こんな感じでやりました。 scene::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;
449 名前:lesson.ifdef.jp mailto:sage [2008/03/08(土) 20:08:31 ID:42plfOng] >>441 おめでとー! これを少しいじれば、太陽のように見せることもできそうですね。 あとでやってみようかな。
450 名前:441 mailto:sage [2008/03/08(土) 23:32:53 ID:vuhDlgNP] >>448 あれ、ELT_POINTでも同じになっている気がします・・。 点光源なのに離れても暗くなりません。 あと、テクスチャつきだとライトの色は反映されているみたいですが影がつきません。
451 名前:lesson.ifdef.jp mailto:sage [2008/03/09(日) 01:14:28 ID:QaJyCdZ9] >>441 テクスチャつきのオブジェに対してのライトは マテリアルの設定を操作する必要があります。 SMaterialのLightingを見てみてください。 これがライトの影響を受けるか受けないかです。 (デフォルトでは影響を受けないようになってたかも)
452 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 21:38:47 ID:qxZlvuLX] αつきテクスチャを貼り付けたビルボードをαテストを使って透過させつつ、 頂点カのαを減少させてフェードアウトってできるんでしょうか? EMT_TRANSPARENT_ALPHA_CHANNELに頂点のα値を反映させたいんです
453 名前:名前は開発中のものです。 mailto:sage [2008/03/11(火) 23:26:06 ID:txVQuh45] lessonさんのライトのところを見たんですが FPSゲームでよく使われるスポットライトも作れるんでしょうか その場合カメラと連動してライトも動かさないといけないのですが・・・
454 名前:名前は開発中のものです。 mailto:sage [2008/03/12(水) 22:51:57 ID:biTsIJxr] >>451 いや、デフォルトではtrueですが・・。 何でだろ、examplesのSpecial FxのroomMeshを読み込む部分のコードを そのままコピーしたらちゃんとライティングされています。
455 名前:441 mailto:sage [2008/03/12(水) 23:35:51 ID:biTsIJxr] その内ソースをupします。
456 名前:名前は開発中のものです。 mailto:sage [2008/03/13(木) 16:26:24 ID:Aiv+dbIO] SIRENみたいなゲームも作れそうですね
457 名前:名前は開発中のものです。 mailto:sage [2008/03/13(木) 17:25:48 ID:23U/XaUN] >>453 頂点単位でしかライティングできないから、ライトマップ使わないとだめ。 勘違いしてたらすまん。
458 名前:名前は開発中のものです。 mailto:sage [2008/03/14(金) 22:33:58 ID:HWct05mu] >>457 いや、出来なくないと思いますが? バンプマッピングとかパララックスマッピング使えますし。 フォンシェーディングは自分でシェーダー読み込まないと使えないみたいですが。
459 名前:名前は開発中のものです。 mailto:sage [2008/03/17(月) 23:23:15 ID:haIYreE8] >>453 スポットライトはパララックスマッピングやバンプマッピングでは使えないようです・・。 しかもライト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の使い方はここを参考にしました。というよりプログラムをコピーしました。
460 名前:441 [2008/03/17(月) 23:32:00 ID:haIYreE8] >>459 = >>441 とりあえず上げときます。