【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/
0308名前は開発中のものです。
2007/10/23(火) 04:46:43ID:RQcCX2DHMagic 2D Library
http://www.freewebs.com/bcxgl/index.htm
0309名前は開発中のものです。
2007/10/23(火) 04:47:09ID:+WToHqauSDLにMPEG2デコーダ付いてなかった?使った事無いけど
そうでなければDirectShowのグラフにgrabberをぶら下げて
ベタビットマップをテクスチャに貼り付ける.
オーバーレイはデバイス握ってるとたぶん無理じゃないか?
0310名前は開発中のものです。
2007/10/23(火) 11:26:57ID:61W+y2K1そのライブラリ、>>306,>>307の問題を両方解決してくれそうだな
関数群がカプセル化されてないのが惜しいぜ
0311名前は開発中のものです。
2007/10/24(水) 00:20:01ID:GWIOzhxY>>308
更新が止まってしまっていますね。
最新バージョンに合わせたいので見送ろうかと思います。
>>309
SDLのほうはわからないです。
ビットマップはありなのかなぁ。一番楽な気はしますが。
0312名前は開発中のものです。
2007/10/24(水) 19:08:34ID:R8GREAfn作者のEmil氏の名誉のために言っとくが
MagicLibの1.31版がないのは1.3用でそのまま動くからのはずだけどな
0313名前は開発中のものです。
2007/10/24(水) 21:53:30ID:RB/VGvZDすいません。。。確認不足でした。
0314名前は開発中のものです。
2007/10/26(金) 01:34:29ID:c03y8h9A以下のIrrlicht a GoGoのサイトのサンプルを実行してみたのですが、
ttp://www.zgock-lab.net/irrlicht/tut04.htm
キャラが回転するはずなのに世界が回ってしまいます。
ソースは随分古いみたいなので、何か仕様が変わったりしたのでしょうか?
どうすれば直るのか教えてください。
0315名前は開発中のものです。
2007/10/26(金) 01:59:02ID:+UlAqHmS最終状態としてはそれで合ってる。
「簡単な3rd Personカメラ」の章の直前までの
状態にすればいい。
そのへんの基本は変わってないはず。
0316名前は開発中のものです。
2007/10/28(日) 15:24:54ID:vLz3dorA返事が遅くなったけど、できました。ありがとうございます。
ところで、シーンやノードとかの概念というか関係がいまいちよく分からないんですが、
分かりやすい解説ってどこかにないですかね?
なんか翻訳wikiくらいしか拠り所がないんですが・・・
英語が得意だったらなぁ・・・
0317名前は開発中のものです。
2007/10/28(日) 16:05:46ID:256r1oeiISceneNode.hを読む
0318名前は開発中のものです。
2007/10/28(日) 18:05:39ID:lSIhpM9Z3D世界をエクスプローラのようなツリー構造で管理しているとイメージすればいいかと。
Irrlicht
|
---キューブ
|
---ボール
0319名前は開発中のものです。
2007/10/28(日) 18:51:34ID:vLz3dorA見てみました。
英語さえ分かればドキュメントは豊富だってのは分かるんですけどね・・・
やっぱ俺は純国産じゃないと駄目かなぁ・・・
>>318
それは分かるんですが、それぞれの役割みたいのの簡単な説明があればなぁーと。
まぁ色々いじってて、少しずつなんとなく分かってきたんですが・・・
0320名前は開発中のものです。
2007/11/03(土) 13:53:32ID:cu+jXMlXファイル名が更新されずに消えてしまうんですがどうすればいいんでしょう。
0321名前は開発中のものです。
2007/11/09(金) 00:31:56ID:xOZdaHMlFPSなのでとりあえずキャラクターは表示させず、移動はFPSカメラを利用しています。
そこで走る、歩くなどを表現したいのでFPSカメラの移動速度を変えたいのですが、
addCameraSceneNodeFPSで更新するしかないのでしょうか?
add〜を連続使用するというのも不安ですし、
そもそもキャラクターの移動はFPSカメラで済まさず、自分で処理するべきなのでしょうか?
0322名前は開発中のものです。
2007/11/09(金) 07:41:23ID:c3OcvDGqICameraSceneNodeを継承して、移動速度が変わるようなカメラクラスを作る
雛型はFPSのをコピーすれば後はキー入力部分を変更するだけ
このクラスはマネージャに未登録だからadd〜では追加できなくなる
次のコードで対応
CCameraSceneNodeFPSown* CameraPFS = new CCameraSceneNodeFPSown(smgr->getRootSceneNode(), smgr);
CameraFPS->drop();
0323名前は開発中のものです。
2007/11/11(日) 18:57:11ID:FfvcBzgB画角を調整しても、画面端に行くにつれてモデルに歪みが生じてしまい、
いまいちちゃんと表示されないのですが、
なにか良い方法ありますか?
0324321
2007/11/11(日) 21:35:00ID:ogyLcZhWクラス作りがんばります。
クラスを作り終えた結果と共にレスを返したかったのですが、
c++についても初心者なため、時間がかかりそうなのでとりあえず報告のレスをば。
あと初心者ついでにお聞きしたいのですが、
addCameraSceneNodeFPS関数は、
ICameraSceneNode* node = new CCameraFPSSceneNode(〜);
となっています。
CCameraFPSSceneNodeはCCameraSceneNodeを継承しています。
また、CCameraSceneNodeはICameraSceneNodeを継承しています。
参考にしているサイトttp://www.med.osaka-u.ac.jp/pub/cl-comp/saito/cppintro/cppintro8.html
から考えると、ICameraSceneNodeへのポインタからCCameraFPSSceneNodeへアクセスした場合
CCameraFPSSceneNodeで定義されたメンバ関数にアクセスできるように思います。
しかしCCameraFPSSceneNodeで定義されているsetMoveSpeed関数などにアクセスできません。
理由がまったくわからないのですが、どうしてなのでしょうか?
0325名前は開発中のものです。
2007/11/12(月) 02:01:36ID:hpWiFfmIその場合、CCameraFPSSceneNodeクラスのメンバ関数へのアクセスは
ICameraSceneNodeクラスを通した共通関数しか扱えなくなる。
だから、例えCCameraFPSSceneNode内で
setMoveSpeedがpublic関数と定義されていてもアクセス不能です。
もしsetMoveSpeedを使いたいのであれば、こうすること。
CCameraFPSSceneNode* node = new CCameraFPSSceneNode(〜);
~~~~~~~~~~~~~~~~~~~~~~~~~
他にダウンキャストって手もあるんだけど、あんまりお勧めはしない。
ICameraSceneNode* node = new CCameraFPSSceneNode(〜);
CCameraFPSSceneNode *p = dynamic_cast<CCameraFPSSceneNode*>( node );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0326324
2007/11/12(月) 05:40:47ID:7YnjD95v仮想関数は、インターフェース部になったクラスに存在し、
その上で再定義されたポインタ越しの関数を呼び出せるというものだったんですね。
勉強になりました、ありがとうございました。
0327名前は開発中のものです。
2007/11/16(金) 22:28:36ID:h9AyeuU1で
キャラから弾を飛ばしても
自キャラの移動速度を少し速めると
キャラの前進移動スピード>弾のスピード
になってしまい、追いついてしまいます
でも弾を速くすると今度は速過ぎて見えなくなるし・・・
何か解決策はあるでしょうか
0328名前は開発中のものです。
2007/11/16(金) 23:29:15ID:z3YC6Y9u早過ぎず遅すぎない弾の速度に微調整
0329名前は開発中のものです。
2007/11/17(土) 00:17:31ID:2u92yTvZとするのが物理的には正しいんじゃね
0330名前は開発中のものです。
2007/11/17(土) 09:41:11ID:/9LSycbG弾が尾を引くようにすれば?
0331名前は開発中のものです。
2007/11/17(土) 11:13:17ID:B5H01eQ3virtual bool OnEvent(SEvent event)
{
if (event.EventType == irr::EET_KEY_INPUT_EVENT) // キー入力であれば
{
switch(event.KeyInput.Key) // キーの種類が
{
の中に入れるべきですか
Irrlicht LessonにはジョイパッドのIDやキーの取得に関しては書いてあるのですが
実際にどうやって使ったらいいか分からなくて・・・
0332名前は開発中のものです。
2007/11/17(土) 11:30:58ID:B5H01eQ3アドバイスありがとうございます。
微調整してみたら結構自然になりました
0333名前は開発中のものです。
2007/11/17(土) 12:39:07ID:B5H01eQ3マップとキャラの衝突のコード晒しときます。
これでマップ上を自由に動き回れるはず
// マップ
Device->getFileSystem()->addZipFileArchive("media\\map\\blackbridge.pk3");
IAnimatedMesh *MapMesh = Scene->getMesh("blackbridge.bsp");
ISceneNode *MapNode = Scene->addOctTreeSceneNode(MapMesh);
MapNode->setMaterialFlag(EMF_LIGHTING, false);
MapNode->setPosition(vector3df(1000,-350,550)); // マップの位置を少し下げる
scene::ITriangleSelector* selector = 0; // セレクタ−1宣言
// マップノードをトライアングルセレクターとして登録
if (MapNode){
selector = Scene->createOctTreeTriangleSelector(
MapMesh->getMesh(0), MapNode, 128);
MapNode->setTriangleSelector(selector);
selector->drop();
}
// MAPとキャラの衝突判定
scene::ISceneNodeAnimator* anim2 =
Scene->createCollisionResponseAnimator(
selector, SydneyNode, core::vector3df(10,21,10),
core::vector3df(0,-1,0),
core::vector3df(0,0,0));
SydneyNode->addAnimator(anim2);
anim2->drop();
0334名前は開発中のものです。
2007/11/17(土) 22:02:27ID:+0vqtOt2while(device->run())ループ内で描画前にでもjoyGetPos(JOYSTICKID1, &joyinfo);してやって
その結果を元にユーザイベントを投げればOnEventで処理できると思うよ
0335名前は開発中のものです。
2007/11/19(月) 09:57:08ID:CkrKyzUSすみません
ユーザーイベントを投げるにはどうすればいいのでしょうか・・・
virtual bool OnEvent(SEvent event)
{
if (event.EventType == irr::EET_USER_EVENT)
{
return true;
}
でいいと思うのですが、
ループからどう関連付ければいいか分からなくて・・・
0336名前は開発中のものです。
2007/11/19(月) 10:23:44ID:CkrKyzUS何とか自分でやってみます
まだWindows版のみで手直しが必要なため動画だけ。
Input Method for Irrlicht 3D engine
ttp://www.youtube.com/watch?v=ctOgPadDnbo
先達たちに感謝。
ソースはまた後ほど。
0338名前は開発中のものです。
2007/11/20(火) 00:43:58ID:R5KE+nst0339336
2007/11/20(火) 01:19:13ID:njgoBjcyjoyGetPos(JOYSTICKID1, &joyinfo); //ジョイパッドの情報を取得
getState(joyinfo); //取得した情報をIDに置き換える
をして、getStateで△ボタンを押すとIDに1が入って、
postEventでレシーバーにユーザーイベントを投げるというのを
やろうとしたのですがpostEventのところでハンドルされていない例外が発生しました
と出ます。。。
どこが問題なのでしょうか。。
//ユーザーイベント送信
void postEvent(s32 eventType, s32 eventId)
{
SEvent event;
event.EventType = EET_USER_EVENT;
event.UserEvent.UserData1 = eventType;
event.UserEvent.UserData2 = eventId;
Device->postEventFromUser(event);
}
//変換
void getState(JOYINFO joyinfo)
{
if(joyinfo.wButtons == 0x0001){
s32 ctrlID = 1;
postEvent(EUMT_JOYPAD_INPUT, ctrlID);
}
}
0340名前は開発中のものです。
2007/11/20(火) 01:43:30ID:njgoBjcy多重宣言になってたのに気付かなかった。。
一応ジョイパッドのボタンを押すと
キャラが前進する
というところまではできました
問題は離しても進んでしまうところ。。
0341lesson.ifdef.jp
2007/11/20(火) 18:31:20ID:y97bgTzNサンプルではグローバル宣言しているので、グローバル宣言をやめて、
postEventの引数にdriverも追加すれば大丈夫でしょう。
キャラのアニメーションに関しては、
最後に指定されたモーションが実行され続けるはずです。
キーが押されなかった場合の処理も指定する必要があります。
前回の状態と比較して、変化があった場合に、
モーションを変更するようにしてみましょう。
0342名前は開発中のものです。
2007/11/20(火) 23:27:33ID:wC+JOKs+0343名前は開発中のものです。
2007/11/21(水) 02:15:04ID:CVvSjocpこれだとソースコードレベルで空が固定されてしまいます。
GtkRadiantなどの空シェーダーを利用したいのですがうまく反映されませんでした。
反映させるためには何かコードを追加しないといけないのでしょうか?
0344名前は開発中のものです。
2007/11/21(水) 03:53:01ID:icyD2fymおお、管理人さん自ら恐れ入ります。
早速やってみます
0345名前は開発中のものです。
2007/11/21(水) 22:55:14ID:nvAoZQa6GUIを表示させるまでの手続きは増えましたが
代わりに必要なモジュールだけを組み込めるかと
IrrIM Test20071121a(win用ソース)
ttp://etwas.wolfish.org/Irrlicht/irrlichtml.html
0346344
2007/11/22(木) 05:24:42ID:0gf5OqeXif (lastState != Receiver->State){ // 「立ち」と「走り」状態に変化があったら
if (Receiver->State){ // 「走り」なら
Player->setMD2Animation(EMAT_RUN); // アニメーションを「走り」に
} else { // そうでなければ
Player->setMD2Animation(EMAT_STAND); // アニメーションを「立ち」に
}
lastState = Receiver->State; // 状態変化を保存
}
これを使ってやっても
Stateを発信する方が
event.KeyInput.PressedDownとevent.UserEvent.UseData1
では違うようです・・・(って当たり前か・・・)
0347lesson.ifdef.jp
2007/11/22(木) 22:27:45ID:CUMTGKWp>Stateを発信する方が
>event.KeyInput.PressedDownとevent.UserEvent.UseData1
event.UserEvent.UseData1でも同様に
Stateを返してしまえば大丈夫ですね。
キーボードで右に値するキー(→・Dなど)が押されたときの処理と
コントローラで「右」を押した時の処理を同じにすればいいでしょう。
イベントの種類や名前などで難しく考える必要はありません。
0348名前は開発中のものです。
2007/11/28(水) 23:41:14ID:XwD1PSD9ユーザーwikiある?
0349名前は開発中のものです。
2007/11/29(木) 00:12:51ID:xhLqnguPIrrlicht 非公式ドキュメント
ttp://www.realintegrity.net/~irr/
・解説サイト
Irrlicht A GoGo
ttp://www.zgock-lab.net/irrlicht/
Irrlicht Lesson
http://lesson.ifdef.jp/index.html
日本語サイトって
このぐらいしか無いのでは
特にIrrlicht Lessonにはお世話になってます
( >が>になってたり <が<になってたりするのは仕様でしょうか? )
0350名前は開発中のものです。
2007/11/29(木) 00:17:21ID:xhLqnguP0351名前は開発中のものです。
2007/11/29(木) 00:39:20ID:tGg1J08/>にするつもりが;(セミコロン)を忘れちゃったんじゃないかな
0352名前は開発中のものです。
2007/12/02(日) 05:45:18ID:aXIFpf6m0353名前は開発中のものです。
2007/12/02(日) 08:41:19ID:fawlqgIaVISTAも認識するようだ
0354名前は開発中のものです。
2007/12/02(日) 10:59:54ID:nuORG0MM0355名前は開発中のものです。
2007/12/02(日) 16:12:39ID:gcOHwiFd以前組んだのを再コンパイルして走らせてみたが、CPU負荷がかなり改善されていい感じだ
0356名前は開発中のものです。
2007/12/02(日) 17:15:56ID:nuORG0MM0357名前は開発中のものです。
2007/12/02(日) 19:45:54ID:dQ2XkPD6例えば全画面表示などに利用するAlt+ENTERを取得できるのでしょうか?
Alt+ENTERを押してもポンというシステム音がするだけで反応してくれませんでした。
確認として
printf("PressedDown : %s\n", event.KeyInput.PressedDown ? "on" : "off");
printf("KEY_RETURN : %s\n", event.KeyInput.Key == KEY_RETURN ? "on" : "off");
printf("KEY_MENU : %s\n", event.KeyInput.Key == KEY_MENU ? "on" : "off");
printf("KEY_RMENU : %s\n", event.KeyInput.Key == KEY_RMENU ? "on" : "off");
printf("is RETURN : %s\n", isKeyPressed(KEY_RETURN) ? "on" : "off");
printf("is MENU : %s\n", isKeyPressed(KEY_MENU) ? "on" : "off");
printf("is RMENU : %s\n", isKeyPressed(KEY_RMENU) ? "on" : "off");
printf("\n");
というコードをレシーバのEET_KEY_INPUT_EVENTに追加してみたところAlt単体では反応しませんでした。
唯一反応したのがAlt押す→ENT押す→ENT離す→Alt離すのときで、MENUのみonになりました。
ですがこれだと同時押しの判定ができず困っています。
ちなみにisKeyPressed()はIrrlicht Lessonさんの複数キー処理のメソッドです。
0358lesson.ifdef.jp
2007/12/03(月) 18:42:59ID:L4J5OiMRWinAPIの以下の関数を使用するとよいでしょう。
・GetKeyboardState(全ての仮想キーの状態を取得)
・GetKeyState(指定したキーの状態を取得)
これらを使用することにより、システムキーの状態も取得できるはずです。
また、Shift/Ctrl/Menu(Alt)を左右別々に取得も可能です。
ただし、システムキー「離した」という情報は取得できません。
これであれば、Alt+Enterを取得できるかと思われます。
0359名前は開発中のものです。
2007/12/03(月) 19:29:29ID:adx0yp9Jそれにしても、なんで、WM_SYSKEYDOWNは検出対象外なんだろか
CIrrDeviceWin32.cppのメッセージ周りを修正して再コンパイルって手もあるみたいよ
F10 in Windows(vitekのコード参照)
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=22630
0360357
2007/12/03(月) 22:52:11ID:FEcfD3/b>>359のレスを見て簡単かもと思ったのですが、Altを押している間は
イベントが呼ばれないようなので、この中での処理は諦めました。
結果として描画ループ内に
//全画面表示
//Altはirrのイベントで処理できないのでWIN32API使用
if(GetKeyState(VK_RMENU)>>7&1 && GetKeyState(VK_RETURN)>>7&1){
switchToFullScreen(); //自作全画面処理
}
といった感じで追加しました。
>>359の方法を使えれば良いのですが、自分には少々ハードルが高いようです。英語読めないですしw
不恰好ですが目的の動作は実現しました。感謝です。
0361名前は開発中のものです。
2007/12/07(金) 22:33:14ID:COpAhiGYSDLとか使ったほうがいいんじゃないの
0362lesson.ifdef.jp
2007/12/08(土) 00:55:31ID:ipyfMo3fせっかくの掲示板ですから、
もう少し具体的な解決策も書いたらどうでしょう?
お互いスキルアップにもつながりますし
●キー取得
・DLLの改造…SYSKEYの処理を追加する
・SDLを使用する…SDL_PollEventの後で処理を追加する
・OpenGL(GLUT)を使用する…glutGetModifiersで処理
・DirectXを使用する…GetDeviceStateで状態取得
・Win32APIを使用する…GetKeyStateで状態取得
別の方法として、そもそも複数キーを使用しない
・Homeキーを押したら全画面処理をするなど
0363名前は開発中のものです。
2007/12/11(火) 01:51:39ID:WAcCpdFvIrrlicht.dllを動的に読み込むにはどうするのが一番楽?
◆やったこと
状況に応じてIrrlicht.dllを切り替えたくなった。
とりあえずLoadLibraryとGetProcAddressで
createDeviceの関数ポインタ取って来るスケルトンを作ってみたけど、
GetProcAddressの返り値NULL('A`)
◆環境
VC7.1くらい Irrlicht1.4
0364363
2007/12/11(火) 23:48:27ID:WAcCpdFvcreateDeviceじゃなくて、150文字くらいのもっさい関数でした…。
スケルトンは動くようになって良かったけど、DLL動的したら、この先ずっとDLL内の関数名を気にしながら開発しないといけないのか・・・?
0365名前は開発中のものです。
2007/12/12(水) 00:13:40ID:4mpK8EPR俺はスクリプトエンジンから API 呼ぶプラグインつくってるけど、メモリ 2G 未満のもっさりノートで
EventReceiver とか Animator をスクリプトに記述するような無茶しても結構問題なく動いてる。
0366名前は開発中のものです。
2007/12/12(水) 00:16:19ID:4mpK8EPRメモリ 1G 未満 ね。
0367モデム壊れてた ◆YATA/oetrw
2007/12/12(水) 00:32:10ID:hv2mu0E9↓このように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
0368名前は開発中のものです。
2007/12/12(水) 00:39:16ID:hv2mu0E9>>365さんのほうが詳しそう。
>>364
extern 'C'されてないとCreateDevice@fooxyzzzzのような別の関数名に置き換わってしまうんです。
0369363
2007/12/12(水) 00:51:44ID:byr9Z6t8ありがとう
昔0.8くらいの頃に作ったスケルトンに最新DLLを上書きしたらエラーでまくりで、
createDeviceに至っては引数構成も違う雰囲気。
DLLのヴァージョン上がる度に手製ソースの方までいじるのは避けたいから、
Irrlicht1.dll・・・みたいに用意して動的に切替、と考えてた。
DLLのバージョン更新による差分については、可能ならば自前ラッパーで吸収したいと考え中。
それはそれとして追加質問
Irrlichtに慣れたいんだけど、自分は今まで2D畑中心でやってきたからやはりまず2D系テクから覚えたい。
公式チュートリアルやシューティング勉強中の人のソースは見た、けど、
2Dのキャラクタ画像を拡大縮小したり透過率を指定したり回転させたりするようなサンプルが見当たらない。
今後、これらのサンプルはどういう方向性で探索するべきだろうか?
それとも、複雑な2D機能はIrrlichtでは対応出来ない?
0370名前は開発中のものです。
2007/12/12(水) 16:19:26ID:M90VuyCUでも回転は見当たらないから自分で頂点触るしかないのかな
0371名前は開発中のものです。
2007/12/13(木) 00:05:19ID:NC1QbeZCscene::ISceneNode::getRotation( ) は const core::vector3df& を返すのに、
scene::ISceneNode::getPosition( ) が const core::vector3df を返すのはなんでだぜ。
値返しなのに const はおかしいから単なるバグかね。
0372名前は開発中のものです。
2007/12/16(日) 17:42:06ID:G2b9tMyR0373名前は開発中のものです。
2007/12/17(月) 01:35:15ID:9HMeNQD7整理してうpします
0374名前は開発中のものです。
2007/12/18(火) 23:55:35ID:cUWqWIvRAPI リファレンス読んでも、英語力皆無なのでどの関数がどんな機能を持っているのか…。
例えば任意のベクトル v1 とベクトル v2 があるとき、
v2 を軸として v1 を回転する方法などお教えいただけないでしょうか。
0375374
2007/12/20(木) 15:35:27ID:jqRYwRorquaternion 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);
0376名前は開発中のものです。
2007/12/20(木) 17:17:48ID:D8YXZHbqFPSっぽいカメラとキー操作なんだけど
FPS視点ではなく3rd視点という
0377名前は開発中のものです。
2007/12/20(木) 17:29:57ID:1FySn3dT0378名前は開発中のものです。
2007/12/21(金) 02:22:22ID:W06+iKTa0379名前は開発中のものです。
2007/12/22(土) 03:21:29ID:qH4tCHw4どの形式でエクスポートするのがベターでしょうか。
Xファイルだと読み込めないこと多いので……。
0380名前は開発中のものです。
2007/12/24(月) 23:31:42ID:VhCZgB33どうイジってIrrlichtでトゥーンレンダリングを出来ますか?
0381名前は開発中のものです。
2007/12/24(月) 23:50:22ID:5nrbPA5X0382名前は開発中のものです。
2007/12/25(火) 00:34:31ID:IJC6bSYhToon(Cell) Shading snippet using HLSL. See below.
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=18281
0383名前は開発中のものです。
2007/12/26(水) 09:27:39ID:xCkClyRy時間経過ごとに重力が増大していくんだが…Irrlichtのバグ?
SDK同梱のサンプルマップで試したんだが
落下速度が異常に早くなって、階段すら上れなくなる。
誰か、解決法や関連情報を知っている人はいないでしょうか。
0384名前は開発中のものです。
2007/12/26(水) 19:33:39ID:yUN26AYS2つ以上のオブジェクトとColisionResponceしたいんなら、
1つのColisionResponceAnimatorにMetaTriangleSelectorを当てればおk
0385名前は開発中のものです。
2007/12/26(水) 23:44:30ID:xCkClyRy出来ました。ありがとうございます。
0386名前は開発中のものです。
2007/12/27(木) 21:44:30ID:8IcVTLM6Direct3Dでは
D3DXMatrixPerspectiveFovLH()
の引数で設定することができましたが、
Irrlichtではそれらしきものが見当たらず・・・
0387386
2007/12/28(金) 20:40:22ID:Hp4RPsA7一応書いとくと
scene::ICameraSceneNode* camera = smgr->addCameraSceneNode(〜);
で、
camera->setFarValue( 距離 );
で最大距離、
camera->setNearValue( 距離 );
で最小距離。
なんでForum見ることを思いつかなかったんだろ(;´Д`)
0388名前は開発中のものです。
2007/12/28(金) 22:39:55ID:ShcOiBSUIrrlicht付属のヘルプにも載ってます
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).
0389386
2007/12/30(日) 12:25:25ID:KN9VCd/iちゃんと調べないとダメですねorz
0390名前は開発中のものです。
2008/01/04(金) 06:42:00ID:B3YR/5Yx0391名前は開発中のものです。
2008/01/04(金) 07:34:17ID:CcNPOaPX0392名前は開発中のものです。
2008/01/04(金) 10:30:21ID:B3YR/5Yx0393名前は開発中のものです。
2008/01/09(水) 00:31:36ID:INF4za2E非公式ドキュメントのトップページが壊されていたため閲覧不能でした
先日修正しておきました
あそこの管理人さんは今どうしておられるのやら
0394名前は開発中のものです。
2008/01/09(水) 15:48:14ID:oe3Z1peaダイレクトエックソでも使ってろよ
0395名前は開発中のものです。
2008/01/09(水) 19:16:17ID:1bUx6/kQ出直して来い
0396名前は開発中のものです。
2008/01/09(水) 21:37:04ID:bwau3Xen0397名前は開発中のものです。
2008/01/23(水) 17:55:29ID:jmfBDAYQCGUITTFontについてです。
新たな文字が現れるたびにテクスチャに確保しているようですが、これはたとえばノベル
ゲーム等文字種が多数現れる場合、メモリ不足に陥らないでしょうか?キャッシュの上限
を設定したほうがよい気がしますが…
0398名前は開発中のものです。
2008/01/23(水) 18:05:26ID:jmfBDAYQしかないのでしょうか。
その場合、deviceをdropしたら確保したリソースは自動的に開放されるのでしょうか?
0399名前は開発中のものです。
2008/01/23(水) 19:23:35ID:Sr3V79Hv中の人じゃないが、前実験で第二水準まで全部出してみたけど
メモリ不測にはならなかったよ。
WindowsXP 512MB環境
0400名前は開発中のものです。
2008/01/24(木) 00:06:10ID:FpXK7fP/byte=1kbyte。それが約2万文字なので約20mbyteということで比較的最近のビデオカード
だと問題の無い値に収まりますね。
とはいえたかがフォントのレンダリングにビデオメモリ20mbyteも食われるのはもったいない
おばけが出る気がします。20pixel位のフォントをレンダリングしたらさらに4倍に膨れ上がり
ますし。
やっぱり当初の計画通りFreeTypeを直接叩いてフレームバッファ(あるいはテクスチャロ
ック)に転送するという形をとることにします…
0401名前は開発中のものです。
2008/01/24(木) 01:14:48ID:qECrGTwMMLの中の人です。数日間、モニターが壊れて画面がとてもカレー色でした。
一見メモリ消費量が多いように見えても、読込フォントの最大文字数までです。
なので、現在のOS上では微々たる消費量ではないかと。。
テクスチャは文字単位ではなく、フォント単位で確保されると思ったほうがいいです。
ビットマップフォントも含めて、メモリ不足に遭遇してないので放置ということで…。
どうしても気になるようなら、getFont(...)せずにCGUITTFontを直に生成して、必要なくなったらdrop()してはどうでしょう?
一部のGUIに適用するだけなら、この方法でうまく開放されると思います。
>>398
フルスクリーンへの切替は、IrrlichtサンプルのDEMOのようにデバイス作り直しのみ。
deviceをdrop()した時点で、Irrlicht管理のオブジェクトは全て破棄してくれますよ。
0402名前は開発中のものです。
2008/01/24(木) 01:14:49ID:YttCO1k2おまいさんのこだわりは結構だし、それを止める気はないが、
現実によっぽど長編の小説でも実際に使われてる文字は
せいぜい2000文字ぐらいだぞ。
(以前トルストイの「戦争と平和」の訳で約1800文字種とかいうのを読んだ)
普通のゲームならせいぜい1000文字ぐらいじゃないか?
なので、限りなく杞憂に近いとは思う。
が、まあがんがれ
0403名前は開発中のものです。
2008/01/24(木) 04:50:43ID:xvOsgKrWコンシューマだとシナリオ作った後に
よく使う文字をカウントして、必要最低限の文字をもたせたり、
あとは、最近(?でもないか)ならキャッシュ機構をもたせて、
よく使うのはキャッシュヒット、あまり使わないのはその場で生成する。
MLのライブラリの中身見てないから、すでに実装されてるよ!だったらスマソ
0404名前は開発中のものです。
2008/01/24(木) 09:52:27ID:YttCO1k2CGUITTFontはキャッシング機構を持ってる。
で、400が言ってるのは、
「キャッシュに上限がないみたいだけど、メモリ大丈夫?」
ということ。
で、現実としてそう問題にならんよ、と返答されてる
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/以前に議論された話題だったのですね。失礼しました。
■ このスレッドは過去ログ倉庫に格納されています