【3Dエンジン】Irrlicht初心者質問スレ【高速描画】at GAMEDEV
【3Dエンジン】Irrlicht初心者質問スレ【高速描画】 - 暇つぶし2ch403:名前は開発中のものです。
08/01/24 04:50:43 xvOsgKrW
横から失礼。

コンシューマだとシナリオ作った後に
よく使う文字をカウントして、必要最低限の文字をもたせたり、
あとは、最近(?でもないか)ならキャッシュ機構をもたせて、
よく使うのはキャッシュヒット、あまり使わないのはその場で生成する。

MLのライブラリの中身見てないから、すでに実装されてるよ!だったらスマソ

404:名前は開発中のものです。
08/01/24 09:52:27 YttCO1k2
>>403
CGUITTFontはキャッシング機構を持ってる。
で、400が言ってるのは、
「キャッシュに上限がないみたいだけど、メモリ大丈夫?」
ということ。
で、現実としてそう問題にならんよ、と返答されてる

405:名前は開発中のものです。
08/01/24 10:23:18 FpXK7fP/
>>403
CGUITTFontは一度でも現れた文字は必ずキャッシュされているようです。
だからビデオメモリの消費量が心配なのですが…

>>402
情報ありがとうございます。ですがもうFreeTypeでレンダリングするところ
まではできてしまったので、もうこのままテクスチャ転送まで進めたいと思います。
1枚絵表示するのにテクスチャ確保するのもあほみたいなので、フレームバッファに
直接書き込む手段と、2D周りがかなり弱いのでその辺補うライブラリも構築することにします。

それと動的ロードの話が出てきましたけど、IReferenceCountedの実装を見るとヘッダ
ファイルのなかでdelete thisしてます。
これは、コンパイラの最適化か何かでDLL呼び出し元でdeleteされるとまずくないですかね?
new/deleteの実装が異なるコンパイラで作成されたDLLを動的ロードすると、delete時に
不整合を起こすような気がします。あまり詳しくないのでひょっとしたら無駄な心配
なのかもしれませんが…

406:名前は開発中のものです。
08/01/24 10:45:41 FpXK7fP/
>>401
回答ありがとうございます。
フルスクリーン切り替えは面倒ですね…。

407:名前は開発中のものです。
08/01/24 10:49:29 YttCO1k2
>>405
0.5ぐらいの時代だから2年近く前?にdeleteの問題は公式フォーラムで議論されてたはず。
で、結論は「問題なす」だったはづ

408:名前は開発中のものです。
08/01/24 17:48:13 FpXK7fP/
>>407
以前に議論された話題だったのですね。失礼しました。


409:名前は開発中のものです。
08/01/25 19:00:41 MPN2QJSG
質問です。直感でさくっとお答え頂きたいです。
FPSゲーを作ろうとしていて、よさげなライブラリを探しています。
画面を左右2分割にして、2人でプレイ出来るようにしたいのですが、
irrlicht での実装は描画の面において楽に出来ますか?

410:名前は開発中のものです。
08/01/25 20:32:40 jU51nQMI
>>409
ビューポートとカメラの切り替えで実現できると思います>分割対戦

411:名前は開発中のものです。
08/01/25 22:21:07 Vt/UlEbN
>>409
公式のチュートリアルに画面分割のサンプルあるお

412:名前は開発中のものです。
08/01/25 23:45:04 +c4l9exa
OctreeTriangleSelectorを使ってメッシュのどの面とどの面が
衝突したかまで分かる詳細な衝突判定ってできますか?

413:409
08/01/26 06:10:08 /SAwn9ff
>>409-410
レスありがとうございます!
ュルルルリッヒエンジンでがんばってみます。

414:名前は開発中のものです。
08/01/26 06:11:19 /SAwn9ff
スマソ >>410-411ですた。ありがとう!

415:名前は開発中のものです。
08/01/26 18:00:09 0EKxzkd2
OGREからこっちに鞍替えを目論んでます。
本家のFeaturesに「BlenderのエクスポーターがSDKにあるよ」みたいな事が書いてあったんで1.4のSDK落としてみたんですが、見つかりません…
readmeのフォルダ一覧にもexportersフォルダが書いてあるのに見つからず。
どうすれば…orz
OGRE用のメッシュファイル(.mesh)も読めるみたいですが、試してみた方いますか?

416:名前は開発中のものです。
08/01/26 18:35:32 zD+QiSlQ
>>415
OGREのCVSに「blenderimport」と「blendersceneexporter」ってフォルダがあるけど
これがBlender関係のSDKじゃね?

417:名前は開発中のものです。
08/01/26 21:19:47 0EKxzkd2
>>416
それってもしかしてコレのことですか?
URLリンク(ogre3d.org)
OGREでBlenderで作ったデータを読むことはできてます。

思いっきり要すると
Blenderで作ったデータをIrrlichtで読むにはどうすればいいの?
という事が聞きたかったのですが、うまく伝えられてなかったらすいません。
OGREで使ってた.meshのデータをIrrlichtでアニメ付でちゃんと読めればベストなんですが。

URLリンク(irrlicht.sourceforge.net)

there are exporters for popular 3D packages (Blender, 3DSMax, Gile[s], ..) included in the SDK.
って書いてあるから、SDK落とせば何か入ってんだろ、とか思ってたらそれらしいのが入ってないし。。。
BlenderとIrrlichtの組み合わせでやってる人、居ませんか?

418:名前は開発中のものです。
08/01/26 22:32:35 zD+QiSlQ
>>417
すまん、「本家のFeatures」を、OGREのFeaturesと勘違いしてたみたいだ
Irrlichtのスレなのにな・・・

Irrlicht + Blenderなら、アニメーションが出来るDirectXのメッシュ(.x)使った方がいい
IrrlichtはXメッシュをそのまま読めるからIrrlicht用にわざわざコンバートしなくて済むしな

ただ、Xメッシュはツールによってフォーマットが少し異なる場合があるので注意な

419:名前は開発中のものです。
08/01/27 00:34:07 +Y3aPJmy
メタセコで作ると「{」の位置のせいで読めなかったりな。
仕方ないから「{」の前に改行入れるコンバータ作っちまった。

420:名前は開発中のものです。
08/01/27 15:56:59 oNRFDMwA
>>418
.xで試してみました。
IrrlichtのMesh Viewerで読めたので、たぶんコレで大丈夫だと思います。
ありがとうございます。

421:名前は開発中のものです。
08/01/28 17:43:17 afuGywxJ
>>420
ところでOGREからこっちに移行する気になった理由はなんだったんだろか

422:名前は開発中のものです。
08/01/28 17:58:37 XOEvg/3a
どうせ「英語読めない」でしょ

423:名前は開発中のものです。
08/01/28 23:58:25 G7mZ8jO6
自分はOGRE知らないのですが、ライセンスに惹かれてIrrlichtを選択しました。

ところで、drop()を忘れそうな自分はboost::intrusive_ptrを愛用していますが、
使ってる人はいるでしょうか?


424:名前は開発中のものです。
08/01/30 11:06:43 +OYkniIM
>>423
俺も昔は使ってたけど、サイズがでかくなるし、ポインタコピーするたびに
内部でごにょごにょやってるしで精神衛生上よろしくない

だから、解放処理が必要なオブジェクトはシングルトンなマネージャクラスに任せてる

マネージャのコンストラクタで生成&初期化して、デストラクタで開放させれば
管理する必要が無くなる
やろうと思えば手動開放もできる


使うときは

IrrlichtDevice *dev = IrrManager::getSingleton().getIrrDevice();

みたいな感じで、初期化さえしとけばいつでもどこでもアクセスできる


OGRE使ってこの方法を見てから、俺の中ではこれが主流になってる

425:名前は開発中のものです。
08/02/02 16:46:40 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:名前は開発中のものです。
08/02/05 00:59:32 iDwHPm2h
Material.Thickness=10.0;
driver->setMaterial(Material);
driver->draw3DLine(・・・)

というとき、Thicknessの値をいろいろ変えても画面上の線が常に1ドット幅なんですが、
どうすれば2ドットの線などを描けますか?

427:名前は開発中のものです。
08/02/05 20:36:47 iDwHPm2h
エンジンをDX9からOPENGLにしたらうまくいきました
メインサポートがOpenGLだったんですね

428:名前は開発中のものです。
08/02/06 00:53:20 Ac93WCkK
たぶん、ラインのサイズ指定がOpenGL依存なんだろうと思う

429:名前は開発中のものです。
08/02/13 21:57:17 sC00+SwF
OpenGLだとaddLightSceneNodeで照らしたaddCubeSceneNodeがちゃんと見えるのに、
DirectXだと光源がない状態になってしまいます。(真っ黒

しかし、ある友人のパソコンでは、
OpenGLのときにguifont->drawをするとクラッシュしてしまうので、(DXなら動く)
DirectXのサポートは続けておきたいのですが、どうしたらいいですか?

その他人のパソコンでguifont->drawが使えない理由としてどんなものか考えられるか、と、
DirectXに切り替えると上の事例が起きる問題の解決方法を教えてください。

430:名前は開発中のものです。
08/02/13 23:32:38 1ZAmjx1a
>>429
友人のGPUがOpenGL2.0に準拠してないかバグ持ちドライバな可能性がある


431:名前は開発中のものです。
08/02/13 23:43:28 sC00+SwF
>>430
うーなるほど そうだとするとこっちには手が無いですね・・・ ありがとうございます

432:名前は開発中のものです。
08/02/15 13:19:44 uwsfmr7Z
IrrlichtML版のgetFontで得た日本語フォントをISceneManager::addTextSceneNodeに渡すと、
CGUITTGlyphのデストラクタでエラーが出ます。

サンプルでもNode関係を使っているのはなさそうなので、
これは仕様なのでしょうか?
環境はWindowsXPMCEのSP2、IrrlichtML1.4、VisualStudio2005Pro、freetype-2.3.5です。

433:名前は開発中のものです。
08/02/15 22:44:27 aJ3r8mIn
>>425
見えない敵とかの描画を省略しようと思ったらそら交差判定が必要になるでしょう

434:名前は開発中のものです。
08/02/16 00:11:18 Kcju6cnr
URLリンク(lesson.ifdef.jp)
このバグ、1.4では直ってないの

435:名前は開発中のものです。
08/02/16 19:51:58 BJXzP4O8
皆さん音楽はIrrlichtで音楽はどうしてますか?IrrKangはフリー以外だとライセンス購入が
必要ですし…何かお勧めのライブラリがあれば教えてほしいです。

436:名前は開発中のものです。
08/02/17 11:12:58 k/Iqe8sD
xファイルの読み込みについて質問があります。
irrlichtでxファイルを読み込むときに右手、左手の座標系を指定して読み込ませることって
できるんでしょうか?

URLリンク(gamdev.org)
↑のようにXSIで作成しているときと、Xファイルビューアまたはirrlicht上で表示したときに鏡
 像のような表示になってしまうのを、なんとかしたいのです。

環境はWinXP VC2008 irrlicht-1.4 です。

437:名前は開発中のものです。
08/02/18 20:53:38 9PaR4TSR
>>432
driverに預けてあるテクスチャを本体が先に開放してるくさい
どこかで既にremoveTextureが呼ばれてる気がする

addTextSceneNodeの後にfont->grab()でもしておけばエラー回避は可能
その代わり、テクスチャ開放がされなくなります
どうしたものか

438:名前は開発中のものです。
08/02/19 11:43:22 CEbiXydm
ニコニコ吹いたw

439:名前は開発中のものです。
08/02/24 02:38:40 eWBznvro
過疎り杉で全俺が泣いた。

ところで、436の件が自己解決したので報告。
汚い方法ではあると思うけど
irrlichtのCXMeshFileLoaderを元にx座標を反転させながら
xファイルを読み込むファイルローダを作って解決させました。

440:名前は開発中のものです。
08/02/24 11:04:27 OyDG9+KH
>>439
おつかれです。

441:名前は開発中のものです。
08/02/26 23:42:36 ve4woYRm
カメラがどんな向きを向いていても
常に手前から光が当たる
手抜きライティングをするにはどうすればいいですか?

442:名前は開発中のものです。
08/02/27 00:44:37 pSPDiQm8
>>441
ライティングしないようにするとかはダメ?
(ポリorテクスチャの色そのまま表示するように)
対象ノード->setMaterialFlag(irr::video::EMF_LIGHTING, false);

443:lesson.ifdef.jp
08/02/27 01:28:06 7TCghY78
>>441
考え方として、以下のようなものはどうでしょう?
1.カメラの背後に光源という感じに、カメラを親として光源を設定
2.キーが押されたら、カメラの代わりにワールドを動かす
これで、一応はカメラの方向から必ずライティングされるかと

444:名前は開発中のものです。
08/02/28 15:18:04 e5iGSVK/
いつになったらゲームパッド対応するんだろう・・・


445:名前は開発中のものです。
08/02/28 23:49:36 9jMY1Ybl
>>442
立体感つけたいのでライティングします。
>>443
CameraSceneNodeFPSと組み合わせたいのでそれはちょっと。

446:lesson.ifdef.jp
08/02/29 19:57:00 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
08/02/29 19:59:41 MU+29BuV
446の修正
・ライトを作成する時に、親を「ライト」にすれば大丈夫です。
 ↓
・ライトを作成する時に、親を「カメラ」にすれば大丈夫です。


448:441
08/03/04 23:27:13 +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
08/03/08 20:08:31 42plfOng
>>441
おめでとー!

これを少しいじれば、太陽のように見せることもできそうですね。
あとでやってみようかな。

450:441
08/03/08 23:32:53 vuhDlgNP
>>448
あれ、ELT_POINTでも同じになっている気がします・・。
点光源なのに離れても暗くなりません。
あと、テクスチャつきだとライトの色は反映されているみたいですが影がつきません。

451:lesson.ifdef.jp
08/03/09 01:14:28 QaJyCdZ9
>>441
テクスチャつきのオブジェに対してのライトは
マテリアルの設定を操作する必要があります。

SMaterialのLightingを見てみてください。
これがライトの影響を受けるか受けないかです。
(デフォルトでは影響を受けないようになってたかも)

452:名前は開発中のものです。
08/03/11 21:38:47 qxZlvuLX
αつきテクスチャを貼り付けたビルボードをαテストを使って透過させつつ、
頂点カのαを減少させてフェードアウトってできるんでしょうか?
EMT_TRANSPARENT_ALPHA_CHANNELに頂点のα値を反映させたいんです

453:名前は開発中のものです。
08/03/11 23:26:06 txVQuh45
lessonさんのライトのところを見たんですが
FPSゲームでよく使われるスポットライトも作れるんでしょうか
その場合カメラと連動してライトも動かさないといけないのですが・・・

454:名前は開発中のものです。
08/03/12 22:51:57 biTsIJxr
>>451
いや、デフォルトではtrueですが・・。
何でだろ、examplesのSpecial FxのroomMeshを読み込む部分のコードを
そのままコピーしたらちゃんとライティングされています。

455:441
08/03/12 23:35:51 biTsIJxr
その内ソースをupします。

456:名前は開発中のものです。
08/03/13 16:26:24 Aiv+dbIO
SIRENみたいなゲームも作れそうですね


457:名前は開発中のものです。
08/03/13 17:25:48 23U/XaUN
>>453
頂点単位でしかライティングできないから、ライトマップ使わないとだめ。
勘違いしてたらすまん。

458:名前は開発中のものです。
08/03/14 22:33:58 HWct05mu
>>457
いや、出来なくないと思いますが?
バンプマッピングとかパララックスマッピング使えますし。
フォンシェーディングは自分でシェーダー読み込まないと使えないみたいですが。

459:名前は開発中のものです。
08/03/17 23:23:15 haIYreE8
>>453
スポットライトはパララックスマッピングやバンプマッピングでは使えないようです・・。
しかもライト2個までだし!!自分で実装しないといけませんね、これは。

URLリンク(gonzo.dip.jp)
ライティングはどうやってもうまくいかないのであきらめることにしました・・。
それよりさまざまな問題が。
何故かどうやっても1バイトのメモリリークがなくなりません。行やファイル名が表示されないんです。
OBBTreeを使ったメッシュ同士の衝突判定クラスで、
三角形を含む全ての当たっているOBBを検出したいのですが1個しか検出できません。
ソースのDLKEYはobbtreeです。

URLリンク(home7.highway.ne.jp)

OBBTreeの使い方はここを参考にしました。というよりプログラムをコピーしました。

460:441
08/03/17 23:32:00 haIYreE8
>>459 = >>441
とりあえず上げときます。

461:名前は開発中のものです。
08/03/21 13:41:00 k9t2KKAY
単純なコリジョンについて誰か教えてください。
BB対BB、セレクタ対セレクタ、セレクタ対BBのどれかで
単純に現在接触しているかを知るにはどうすればいいですか?

462:名前は開発中のものです。
08/03/21 17:06:47 ipDiEarq
円が2個あるとします。 接触する事とは、中心と中心の距離で求められます。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch