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