【3Dエンジン】Irrlicht初心者質問スレその4
■ このスレッドは過去ログ倉庫に格納されています
zlibライセンスでクロスプラットホームなゲームライブラリ、Irrlichtのスレです。
※回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近Irrlichtを始めたばかり
3.SDKを見ても、Googleで検索しても、エキサイト翻訳でもいまいち理解できない人
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「英語読め」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する人 】
・ どんな事で躓いているのか明確にする。
・ 長くならないなら躓いている部分のコードを晒してみてください。
・ 解決した場合、お礼を言うのは当然ですが、何をどうしたら解決したかを明確に書くこと。
過去スレ
3 http://hibari.2ch.net/test/read.cgi/gamedev/1281085813
2 http://hibari.2ch.net/test/read.cgi/gamedev/1159998619/
1 http://pc8.2ch.net/test/read.cgi/tech/1104179696/ 自分用に改造を加えたIrrlichtを
git svnで管理すると便利という事に最近まで気がつかなかった。
本家で変更があっても追いつくのが大分楽になった >>12
これはxファイルとの相性が悪い。だからやめた Irrlicht-1.7.2リリース記念火気庫ヽ( ´∀`)ノ ボッ 知らなかった
バグフィックスのみか、早速DLしてみよう 戻り値がIAbc*のgetAbcって基本的に同じ値が返ってきてdropする必要はないってことだよね?
getTimerとか複製できなきゃタイマー機能としてはあまり役に立たないような >>28
つ 付属のドキュメント
メソッドごとにdropすべきか書いてある
drop忘れててもVisualStudioのメモリリーク検出機能使えば分かるけど
タイマー複製したいって何で? ごめん、役に立たないと言ったのは見当違いで
同時に複数計測したい場合に、個別にstart stopできた方がいいんじゃないかって思っただけ このエンジン好きなんだが3dのアニメーションだけはどうしたらいいかわからん
まともにやりとりできるフォーマットがなさすぎる いまはBlender2.49+Ogremeshエクスポーター
過去に試した組み合わせは(1年前〜現在。各エクスポート最新とは限らない)
Irrlicht1.7.1
Modtool6.01
DirectX export△ Irrlicht Load △ モデル・モーションとテクスチャUVがそれぞれ左右反転
OgreMesh export×(クラッシュ)
Blender2.4.9
DirectX export△ Irrlicht Load × 読み込みエラー
Ogremesh export△ Irrlicht Load △ 頂点抜けが起きることがある。エクスポートが不安定
b3d(Blitz3dフォーマット)がいいよって意見もみたけどエクスポーターが見つけられず
fragMOTIONなどの別ツール経由は・・・ちょっと非現実的かな。手間的に考えて
Ogremeshエクスポーターのエラーに悩みつつIrrmeshの完成を待ちわびています
ネットではPMD+BVHで走らせてる方もいらっしゃるみたいだね >>33
ttp://irrlicht.sourceforge.net/phpBB2/viewtopic.php?p=222901#222901
b3dならここにあるみたいだよ。使ってみたら? 過疎ってるなあ
もっと認知度を上げられないものだろうか IrrlichtにしろOrge3DにしろUnrealEngineにしろなぜか人がいないよね。
なぜなんだろう。そんなにゲームが作りたい人がいないのか。
ゲーム作ろうと思ったらここらのゲームエンジンを使わざるを得ないのに。 そもそも3Dはマップ作りにしろ、カメラを含むシーンにしろ、モデルにしろ、アニメーションのモーションにしろ。
すべての敷居が2Dの比じゃないからな。
出来るやつも少ないし。まだまだ希少。
それらがすべて出来る前提のエンジンなんてなかなか流行らないだろーな。 3Dをやっている人は探せばいるでしょう
Irrlichtのような3Dエンジンを使おう、とは思いつかないだけで 例えば生のOpenGL使って作れるゲームなんてたかがしれてるよね。
どうしてるんだろうか 個人でやるような分には、生でDirectXやOpenGLを使おうがラッパーライブラリを使おうが
できること(作れるもの)自体はあんまり変わらない気もするけども
生で使う場合はある程度は自前でラッパー作るようなもんだから、まあ最初から既存のラッパー使ったほうが楽ではあるが… オライリーあたりがライブラリの参考書を出してくれればいいんだが・・・ 3DグラフィックとC++って時点で両方習得するのに何年かかんのって話だからなw
登山みたいで楽しいんだが
登るのが大変すぎるだけに登って満足して終わりになっちゃう気もする >>42
それわかるw
正直なところ敷居が高すぎる。
かと言ってUDKとかUnityもツクールみたいに気兼ねなく簡単にできる、
ってわけでもないし。 敷居が高いって元々はそういう意味じゃないぞ!
「相手に不義理などをしてしまい、行きにくい」というのが本来の意味。
2DだけのゲームでIrrlicht使っている人はいるだろうか 自分みたいに UDKやUNITYをさわりだけいじってみたけど、マップ作ったり、テクスチャ読み込んでマテリアル作ったりは簡単にできるんだがな。
JRPGみたいにNPC出して会話とかできて、攻撃は剣と弓で、とかゲームシステムの細かい部分になると自力でどうぞ、って事になってしまう。
自分でゲームエンジンを解析して、どこに作り込でいけばいいか理解しないと進めない。
そこからの難しさは一からプログラムで作っているのと大して変わらない。 ここは何時から、自分のスキル不足を愚痴るスレになったんだっけか?
e-book版が21.59米ドル = 1776円
けっこう安いな
日本語版がでてないとはいえ勝手に訳してwikiにアップなんてしたら怒られるよね
日本語版発売に期待
立ち読み版みたいなのはないの? >日本語版がでてないとはいえ勝手に訳してwikiにアップ
この努力をなぜ本家HPの日本語化に向けないのか 勝手に訳して出版社に持ち込んで交渉したらお金も入るよ。 そういや今Irrlichtで作っているのがSRPGだった
どこで作っているかは秘密だが 書き込むならオープンにする
秘密にしたいなら黙ってるかチラシの裏にでも書いておけ
ただの構ってちゃんだろ これから制作するソフト用のエンジンを探しているのですが、
Irrlichtは、マウスカーソルがある所のポリゴンを取得できますか?
CGツールみたいに、オブジェクト中の特定のポリゴンを選択とか
やりたいので >>62
もちろんできるよ。
公式のチュートリアル7で解説してるから見るといいよ フォーラムに書けないチキンなのでここに書く。
フォーラムの方々に泣くほど感謝。
ハードウェアスキニングのコード
Hardware Skinning for Irrlicht 1.7
を改変してウェイトに対応させた。三晩悶絶した。
ウェイトに対応する代わりにNormalが使えなくなるけど
irrlicht側は一切変更不要。
ポイントは
mesh->setHardwareSkinning(true);
mesh->updateNormalsWhenAnimating(false);
の実行順序。
ドワーフ6*6(6*7?)
HD5850 windows 7 x64(exeはx86)
OpenGL [Light:off][HWS:off] 125fps
OpenGL [Light:off][HWS(Weight):on] 688fps 65続き
更にフォーラムのfmxさんの投稿を参考に
convertToTangentsして
Binormalをウェイト*3(4番目は1.0-(合計))に転用しNormalを生き残らせてみた。
まだやってないけどTangentに頂点カラーかマトリクスindexを持たせれば
頂点カラーも生き残らせることができるかも。
本当に本当にフォーラムは必見。
連投ごめん。終わり。 2Dゲー作る勉強を始めたんだけど、今までSDLをちょろっと触った程度の知識しかなかったから
画像を思った場所にポリゴンで表示するだけで一苦労だった
チュートリアルサイト見ててもその処理が何をしてて何故必要なのかが説明されてないことが多くて(常識だから?)
理解を得るのにかなり苦戦するぜ。という俺の日記 日記は他でやれ・・・と言いたいが久しぶりのポジティブなレス
応援してる がんばれ irrExtが全然使われていないのって公式からたどり着きにくいからなのか?
そもそもどんな物なのか、よく分からないと言っている人もいる
http://irrlicht.sourceforge.net/forum/viewtopic.php?f=2&t=43064 テクスチャの透過色(完全に透明)を設定した上で
実際に表示するときに全体的な透過率を設定できるようにしたいんですが全く手立てがつかめません
MaterialTypeの設定だけでは無理そうな感じだとは思うのですが、何か良い方法はありませんか
具体的には、黒を透過色とした画像ファイルをテクスチャに読み込んで
表示させるときに黒以外の部分の透過率を0〜100%で設定したいんです texture->lock()でピクセルを調べて、カラーキーでなければアルファ値を設定することで実現可能な感じがしました
でも手元の環境で想定できるフォーマットはA8R8G8B8のみ・・・他も考えなきゃならないんだろうか
テクスチャ生成フラグにETCF_ALWAYS_32_BITを指定しても常にA8R8G8B8になる保障はないのかな >>72-73
透過色を設定するというか、指定した色を投下したテクスチャを新たに作るメソッドなのだが
IVideoDriver::makeColorKeyTexture
http://irrlicht.sourceforge.net/docu/classirr_1_1video_1_1_i_video_driver.html#aed772902f4fe1185b44ce81b9b0b9add
・アルファテストを有効にしたままマテリアルカラー(または頂点カラー)のアルファを使う
・テクスチャのアルファとマテリアルカラー(または頂点カラー)のアルファを乗算する
マテリアルタイプがあれば良かったんだが、どうやら無さそうだな・・・
>>73で言うようにテクスチャを書き換えるか、シェーダーを使うしか無いかも
固定機能でテクスチャ書き換えずにやるにはIrrlicht本体のソースをいじるしかない
CD3D9Texture.cppを見てみた
テクスチャ生成フラグにvideo::ETCF_NO_ALPHA_CHANNELが指定されていると、
ETCF_ALWAYS_32BITでもR8G8B8になるよ
あと、生成に失敗すると16bitでリトライしているようだ。
テクスチャのカラーフォーマットが指定されたものになっているかは確認したほうがいいと思う。 >>74
調べてくださってありがとうございます
その通りのマテリアルタイプがあれば万々歳でしたね
テクスチャ書き換えでは毎フレーム行うと相当な負荷がかかるようで工夫が要りそうでした
試しに同じ結果になる処理をDXライブラリにやらせたらCPU使用率3%以下で毎フレーム余裕orz
ソースいじる自信もないので保留か テクスチャいじるより、頂点カラーいじったら?
マテリアルタイプは EMT_ONETEXTURE_BLEND にして。
ブレンド/アルファソース情報をMaterialTypeParamに適切にpackする必要あるけど、
まあそこはCD3D9MaterialRender.hのTRANSPARENT_ALPHA_CHANNELを参考に、
SMaterial.h の enum なんかとにらめっこする感じで、あとはアルファソースを EAS_VERTEX_COLOR | EAS_DIFFUSE にすれば modulate してくれる。はず。
あ、最近のバージョンって、マテリアルで D3DRS_DIFFUSEMATERIALSOURCE 選択できんだっけ?
SMaterial.ColorMaterial かな。頂点カラーがダイナミックライトに反応しなくていいなら
これを NONE にして、SMaterial.DiffuseColorのaいじるだけでいいかも。
適当に説明端折ってるんで、ヘッダとかソースとか見つつで。 あ、 SMaterial.DiffuseColorのaいじるだけでいいかも っていうのは、
その前段に書いた ONETEXTURE_BLEND の対応をした上で、
頂点カラーをいじるんじゃなくて、マテリアルのDiffuseColorの設定だけで
いけるかも、っつーことね。 >>76
仰るとおりにやってみたら上手くいきました
結果的には以下のようなコードで確認できました(テストではスプライトを意識したものです)
material.MaterialType = EMT_ONETEXTURE_BLEND;
material.MaterialTypeParam = pack_texureBlendFunc( // texureってなんぞ
EBF_SRC_ALPHA,
EBF_ONE_MINUS_SRC_ALPHA,
EMFN_MODULATE_1X,
EAS_TEXTURE | EAS_VERTEX_COLOR);
verts[0].Color.setAlpha(alpha);
verts[1].Color.setAlpha(alpha);
verts[2].Color.setAlpha(alpha);
verts[3].Color.setAlpha(alpha);
速度も損なわずに動作するようなので目的は達成できそうです、本当にありがとうございました
Diffuseを使う方法については思うようにいきませんでした。EAS_DIFFUSEも存在しないようです >>78
あ、EAS_DIFFUSE は記憶で書いた後直そうとして間違ったみたいw
EAS_TEXTURE | EAS_DIFFUSE って最初書いてて、ヘッダ確認したら
_DIFFUSE じゃなくて _VERTEX_COLOR だったので直そうとしたら、
間違って _TEXTURE のほう書き換えちゃったみたいw
マテリアルのDiffuseはダメだったかー。そのコードで、
material.ColorMaterial = ECM_NONE;
material.DiffuseColor.setAlpha(alpha);
みたいにすると、ドライバ見る限りはディフューズソースを
マテリアルディフューズにしてくれそうな感じだったんだけど(1.7.2)。
まあ、目的はこなせたようなので良かった。 ONETEXTURE_BLENDがそんなに万能だったとは・・・ ドット絵のキャラに吹き出しでしゃべらしたいんだけど、吹き出しってどうやったらだせるでしょうか? え、そんな事聞いてどうすんの?
吹き出しを書いた画像を作って、それを描画した上に文字を出せとか
そういう答えが聞きたいのかい 目標は2Dゲーなんだけど、用意された機能でできることの見極め(というか模索)が大変でなかなか進まないなぁ
拡大縮小、反転、アルファブレンドまでならdraw2DImageで高速描画
回転や加算ブレンドが絡むと独自の何でもできるポリゴン描画、というとこまできた
ところで2Dとか自前のポリゴンってシーンマネージャーに触らずとも表示されるんだね addBillboardSceneNode等で追加されている子ノードを
順に取り出して扱うにはどうすればいいのですか? 親子関係を持つのはISceneManagerではなくISceneNode派生
リファレンス読んでないのがばればれだし意味も無く上げんな >>86
?
addBillboardSceneNodeの第一引数は親となるノードの指定なんだけど? こんなことでなんで面倒な雰囲気になってるのかわからんが、
ISceneNode.h を読むなりリファレンスを読むなりすれば、
childrenを引っ張り出すメソッドがあると思うのでそれを使っておくれ。
parent=0 で追加した連中がよくわからんというなら、
ISceneManager に root node 取るメソッドがあるのでそれ使っておくれ。
CSceneManager の実装的な事を言えば、root = SceneManager のはずだが、
まあ API を使っておいた方が良いだろう。 irrihitの本ないですか?
自分で触る前に概要だけ把握しておきたい Unityの本は日本語のものが3冊ぐらい出るのになあ。 >>92
完成度が違いすぎる
Irrlichitが悪いとは思わんが商用利用するようなものじゃない
良くも悪くも個人クリエイター向け 有志が空き時間に作るものと商業的にフルタイムで開発されているものを比べるのは無意味 こんなの過去スレで紹介されていたよね
Irrlicht Engine ? View topic - "AlterEgo" First Adult game in the world using Irr
http://irrlicht.sourceforge.net/forum/viewtopic.php?f=6&t=34558 アクションとかやるんだったらUnityとかの方が楽に気はするけど、
ただ3Dで絵を出したいだけのRPGとかシミュレーションとかだと、
こっちの方がやっぱり楽そう。
フレームワークがかえって足かせになる、とUnityをろくに触ってもいない人が言ってみる。 Unityは商業ゲームエンジン
IrrlichtはOSSのレンダリングエンジン 確かに簡単じゃないな。
DCCからのアセットワークフローも貧弱だし機能もやや古臭いし。
でもゲームは結局自由度が必要だからZlibは大きなメリットだと思うがなぁ。 1.7.2と1.8 rev4011
EDT_DIRECT3D9でARGB8888テクスチャのlock unlock結果反映される?
EDT_OPENGLなら反映されるけどEDT_DIRECT3D9だとintel nvidia amd 全滅 早速ビルドした
DeviceType=E_DEVICE_COSOLEでアスキーアートになると聞いてやってみたが
DOSに意味不明の文字が表示されるだけだった。残念 おまえら最近調子どう?
出力できる絵が少し古くなってきた感が否めないし
Unityの台頭で注目度も低くなってるけど
やっぱプログラマと相性がいいフレームワークだと思うんだよね
>>100
Unityの勢いはiPhoneやAndroidのせいだと思うよ
PC向けとして盛り上がってるとは思えない
ちなみにiPhone向けは今は無料でダウンロードできるからとりあえずダウンロードしとけ Irrlichitの情報って最近なにかないの?
動画やデモ的なものでも何でもいいからあったら教えてください 公式では毎月スクリーンショットのコンテストをやっているよ
Monthly Screenshot Contest ? June 2012 ? Irrlicht Engine - A free open source 3D engine
http://irrlicht.sourceforge.net/2012/07/1226/ 公式でAndroidに対応しただと!?
SourceForge.net Repository - [irrlicht] Revision 4309
http://irrlicht.svn.sourceforge.net/viewvc/irrlicht?revision=4309&view=revision
- Added initial support for Android OS with example no. 8. Thanks for a gsfare and hiker for their hard work for this commit. CSceneNodeAnimatorCollisionResponseの存在にいま気付いた・・・
ってかCSceneMangerとかの存在にも気付いてなかった
これはサンプル実装で「これ見て自分で書け」ってことなのかな?
Collisionのほうはそうっぽいけど・・・どうも感覚がよくわかりませんわ 【スレのURL】http://toro.2ch.net/test/read.cgi/gamedev/1285057945/
【名前欄】
【メール欄】
【本文】↓
久し振りの書き込みだな
>>115
チュートリアルを見たら良いじゃないか
カメラがFPSの操作で動かせるようになっているでしょ?
コリジョンも出来るし重力で落下もする
Irrlicht Engine: Tutorial 7: Collision
http://irrlicht.sourceforge.net/docu/example007.html
スクリーンショットにいつの間にかジャパニーズ ニンジャが加わっているw 代行スレと誤爆したああああ
てか普通にかけちゃってるね なんつーか、どのクラスが本格的に実装されてるかよくわからんのですよね
Doxygenのirr::scene一覧なんかに出てくるクラスがいまいちで(あるいはPure Virtualで)
隠れてるstabのほうが出来良かったりとか、よーわかりませんわw
CSceneManagerとかみなさん普通に使ってるものなんすかね?
俺はISceneManagerで事足りてるんで、それでいいっちゃいいんだけど、他の人の感覚はどうなんだろうと CSceneManagerを使っているかと言われたら使っているでしょ
インターフェースを通じて使っているだけ
Irrlichtはクラスは全てインタフェース用のクラスを通して使うようになっていて
Cで始まる実装のクラスはアプリケーションから直接使うのはできない
だから継承するのも無理
使うならソースから取ってくるとかしないといけない あれ? 完全に勘違いしてました
〜CollisionResponseを、イベントレシーバーのように実装が必要なクラスだと思い込んでました
別の原因でエラーが出たのを早とちりしていたようです
いやー何レスも勘違いしててすみません。レスどうもでした ■ このスレッドは過去ログ倉庫に格納されています