1 :
名前は開発中のものです。 :
2009/02/11(水) 05:00:58 ID:viN0kzG2
3 :
これっているの? :2009/02/11(水) 05:06:29 ID:viN0kzG2
4 :
名前は開発中のものです。 :2009/02/11(水) 09:47:31 ID:h8YGIY9f
DIRECTX10、まじ使えねーな Xファイルのサポートを無くすとは
Xファイルとかいりませんし
マジで、Xファイルきえるん? なら、どうやってモデルを配置すればいいん?
sdkmeshとか?
8 :
名前は開発中のものです。 :2009/02/12(木) 00:13:33 ID:VKYqPTmp
sdkmeshって何? Xファイルほど容量を小さくできるフォーマットもないのだよ、君
>>6 その前にお前
なんのモデリングソフト使ってXファイル出力する気でいるの?
実はまともにXファイルサポートしてるソフトからねぇんだから当然消えるだろ
消えて当然
10けっこうオススメだけどな
文句言う暇があったら10の勉強をした方がいい
sdkmeshは実戦で使うなってばっちゃが言ってた 何言バイナリ最強
DirectX11を視野に入れるなら基本同じ設計のDirectX10を習得しておくべき
FBXあたりを標準装備しておいてくれよ
俺は10と9を混在させてXファイル使ってるよ
前スレって1000まで行ったの? だれかjaneのログ上げてクレネーかなー
お前ら11の習得期間の予定は?
>>18 Windows7が出て対応ハードが安くなってからかな
2011年位になりそうだな
本職ってどれくらいでの理解を求められるの? 短期間で無理難題を言われるって愚痴をよく見るが 11出た瞬間仕様もよくわかってないのに難しいこと言われるってことだろ? 大丈夫なのか?
10とか11自体の習得はそんなに難しくないだろ 難しいというか面倒なのが 9とか10が混在する環境で両対応にしないといけないこと
:::::: :: : :_,,.. -──- 、.,_ : : :: ::: ::::: :::::::: :: : : / へ ,. '"´ `ヽ. :::::: ,.ヘ :::: :: : i そ l ´ ':,/:::i_|_ ::: :: :| l ,. Y'":::77 :::: | な / ,. '" `ヽr'__:::::::l | : | の / , / i i ', __ トt、___;l_」 : ! か ,' .i ,'_,,.. -' ハ ,ハ_/i´ ハ-i ', ::::: :::: :: : ',. l i !/_」ニ_、/::::!/´,r‐r!‐ァ'i./ | :::::: :::: ::: :ヽ、.__,. -‐-、 ! ,ア´'└リ `::::::'::::' !_,りノ7ヘ ! :::::::: ::::: :: : / だ ', . /レ' `,ゝ-‐' ⊂! | V ::::: :: : _,,..-‐i か i | ⊂⊃ ,ハ|_,,!ゝ-‐ ''"´ | ら .ト、 .i ト. ー-‐' ,.イ i |. 何 |/ ノ ,ハ. | `>. 、.,,___ ,,..イ ! / ', ? !' <::!'ヽ|`ヽ、. i`ヽ! ハ/ ヽ、.,__ ,ノつ ヽ;::::\ `>-‐イ /|/:', /」'"´ ';:::::::`'ヽ,.-、'^ヾ::::::::::',-‐ __,,.. -─----─ ''" :::::::::: i::::::::::::::ト-'^rr'i::::::::::::Y ̄ : : :: ::: :::::: :::::::::::::::::::::::::::
ごらんの有様
openGLとDirectXという対比をよく聞きますがDirectXには10とか11とかバージョンがありますよね openGLと比べるときにバージョンは関係ないんですか?
Maneged DirectXってDirectShowだけじゃなくてDirectMusicも含まれてないんですか? VS2008なんですけど、ヘルプを組み込むにはどうすればいいんでしょうか DirectXをインストールして入ってなければあきらめるしかないですか? 今はchmを直接開いてるんです
XNAでやれ
>>26 GLは機能がそれと分かるようなバージョンはない。
つぎはぎで色々追加されていってるからそのつどCAPS的なもので全部調べないとあかん。
GLにもバージョンはあるんだが… DirectX10相当だとOpenGL2.1あたりじゃないのか? CAPS的なチェックは必要だろうけど
で、オープンgLはもうDirectXに勝てないわけ?
勝ち負けっていうかそもそも土俵が違うから
GLはゲーム向きじゃねえしな
ゼルダはopenGLだったような気がするがな
Windowsではって訂正するわ
>>33 DirectXが使えないプラットフォームの話を持ち出して、
そもそも選択肢がないのに何が言いたいのかさっぱりわからん。
38 :
名前は開発中のものです。 :2009/02/15(日) 03:47:07 ID:Ewu1bR1s
立方体の面にそれぞれ別のテクスチャファイルを貼り付ける方法ってありませんか? directx9をつかっています。
>>38 平面6枚?
世の中そーゆーもんだ
・・・そうだっけ?w
40 :
名前は開発中のものです。 :2009/02/15(日) 04:07:25 ID:Ewu1bR1s
>>39 回答ありがとうございます。
>>平面6枚?
ってことは…6個を別々に宣言してそれぞれテクスチャを貼り付けるということでよろしいのでしょうか?
lock unlockすると速度が下がると聞いたことがあったので、8個の頂点を一まとめに宣言してテクスチャの貼り付けの段階で
それぞれのインデックスもしくはバーテックス頂点を指定して張り付けることができないのかと思ったもので。
>>40 いいんじゃね?
でもテクスチャは必ず別じゃないとダメなん?
6枚を1枚にまとめてUV設定してって・・・そりゃいわんでもわかるか・・・
42 :
名前は開発中のものです。 :2009/02/15(日) 04:25:58 ID:Ewu1bR1s
>>でもテクスチャは必ず別じゃないとダメなん? 本来の目的が3Dゲームで各部位の装備を別にしてそれを読み込んで表示することが目的でして、 説明を短くするために立方体と表現してしまい、もうしわけありませんでした。 >>6枚を1枚にまとめてUV設定してって 正攻法だとそっちかと思っていたのですが、ふと思い立ってテクスチャの細かい指定関数等あるのかと 思いつく限り検索をかけてみたのですが見当たらなく、質問させていただいたのが経緯となっていたのでした…orz
windowでGL使ったら悪いの?
>windowでGL使ったら悪いの? DOOM3はOpenGLで作ってますよ。 あなたはDirectXとOpenGLのドライバモデルの違いを勉強した方がいいね。
>>42 部位ごとに別のテクスチャを割り当てたモデルを作っておいて
描画時のSetTextureで今装備してるやつのテクスチャに入れ替えるってのじゃダメなの?
まーたドライバモデルとか難しい事を言う
変な言葉使って初心者を煙に巻こうとする奴 もう死ねばいいのに
モデリングソフトでいろいろな効果が作れますが、同じことがDirectXで出来る場合 どっちでやった方がいいんですか? なるべくデータを作りこんだ方がいいんでしょうか?
49 :
名前は開発中のものです。 :2009/02/15(日) 16:34:15 ID:0b4UfdGj
工エエェェ(´д`)ェェエエ工工
理由もお願いします
知ってるがお前の態度が気に食わない
そもそもモデリングソフトで作った効果は何を使って表示するんだよ。 どれだけ頭が悪ければそういう質問ができるのか、馬鹿の考えはさっぱりわからない。
まさか、モデリングソフトでつけた効果を何もしなくても表示できると思ってる? 効果の元となるデータを保存するまでがモデリングソフトの仕事 そのデータを元にその効果を再現するには結局自分でDirectXで実装しなければならない
>>47 自分で何も調べない奴こそ死んだ方がいいよ。
知らないのは罪では無いが、知ろうとしないのは罪だからね。
>>54 ありがとうございます!効果も手動でまた設定するんですかめちゃくちゃ大変ですね。
モデリングで400万ポリゴンで書いたファイルを表示させるにはどうすればいいんでしょうか
もしかしてもう手遅れデータですか?面取りなどモデラーでしないでスムーズ処理などもDirectで実行させたほうがよかったんでしょうか
調べず聞いてる一方なのは罪だと思うけど、知ってる人間が説明する事を放棄したらこういうスレは下火一向なわけだが。
400万ポリ・・・
まーあと
>>48 は初歩的なバーテックスアニメーションの事を言ってるんだと思うよ。
DirectXに習熟してる人なら知らないわけがないと思うけど
何言ってるのかわからない、どこがとうとかも聞きようがないときは 回答側はへんなESPは使わずに静かに待つべき
>>56 キミはDirextXのプログラムをやった事ないの?
DirextXの出来る事は、3頂点のデータからポリゴンをレンダリングする事
テクスチャマッピングや描画設定(カメラ、ライト、ステート等)を指定か
シェーダーを書いてポリゴンをシェーディングする事
が基本だぞ
モデリングソフトの情報を、上記で描画するには
自前でモデリングソフトのフォーマット解析(エクスポータープラグイン含む)&ローダー作成か、
人のライブラリ(D3DX含む)を使うしかないのだが…意味を理解出来る?
つまりXファイルは何が入ってるんですか? もしかして頂点データだけですか? きれいに色ぬって、ライト位置まで調整したんですが・・・
>>57 脊髄反射で書き込む人間も死んだ方がいいね
レスの流れを読め
だから、それらの情報をXファイルに含めるのは勝手だが それを読み取って表示するまでは自分で実装しなきゃだめってこと
その通り しかしここに居る人はやり方まで丁寧に教えてくれない 何故なら知らないから
だまれくそ野郎お前が知らないからって他も知らないと思うよ
そして誰も説明できなかった
確かにXファイルに埋める方法はまったく知らない。 そんな面倒な方法とらないでMAYAのエクスポーター書くし。
>>54 の使ってるソフトってMAYAなの?
あと
>>54 の言ってる「効果」って。Cg plug-inで付けたマテリアルの話なのかな?
もっと情報がないと、「そして誰も説明できなかった 」になるね。
最近ググレとか 日本語で喋れとか煽りが減ったよね めでたしめでたし
ククレ
おせちもいいけど
カレー
はいはいゆとりゆとり
Part9いらないだろ常考(笑)
ではお帰り下さい
まーた始まった
>>56 GetDeviceCapsで取得されるMaxPrimitiveCountによるわけだが、
恐らく400万ポリゴンは一気に描画できない。
MaxPrimitiveCount以下に分割して描画しないと駄目。
directXSDKって英語版しかDLできないんですか? というかみなさんソースだけみて勉強してるんですか?
>>79 日本語ヘルプもMSのサイトのどっかでダウンロードできたよ
ただし何年か前の。
追加情報だけは英語のヘルプ読めば良い。
けど、ほとんどサンプル読めばOK
サンプルブラウザーからプロジェクト作ってサンプル解析が基本かと。
まぁでも人それぞれだしぃ〜
俺も色んなDirectX9入門みたなの参考にした・・・
今では色んなサイトでも開設されてるしな〜
>>79 プログラマなら英語は読めて当然くらいに思っておけ。
論文とかマニュアルの類は、難しい言い回しが無いから意外と読める。
日本人は英語使えないから効率の悪さが致命傷レベル
とにかく広まるのが遅い
ここの人って英語のSFC読みまくって超速で対応しまくる人ばっかりなんですかぁ〜?
すーぱーふぁみこん?
俺居るの会社なんて5,6年前にタイムスリップしたか疑うくらい技術遅れてるぞ。
ち・ちがうんだからね///
何が違うんですか?
DirectXじゃないけど3Dプログラミングの基礎として 3Dグラフィクス数学とGAMEPROGRAMMINGGEMSの一冊目ぐらいは 持っておいて損はないような
読むのにどれ位かかる?
>>90 その人次第だと思うけど、2冊とも読むというより、必要に応じて参考にすればいい。
俺は通読していない。辞書的にぱら〜と見る。それで役に立つことが色々ある
3Dのプログラミングで何を考慮しないといけないのかが判る
3Dグラフィクス数学はめちゃくちゃメジャーだけど 今なら「実例で学ぶゲーム3D数学」の方がC++のコードも 載っているからいいのかも知れない。持ってないけど
どうせそのうち反射とか全部簡単な設定で勝手にやってくれるようになるんだろ
個人的にはDirect physicsとか 物理シミュのAPI群を作ってほしいです。
DirectX11で追加されるとかされないとか
mjd!?
まあどうせあと10年以内にはとっくに入ってるだろうな 写真の綺麗さで動かせるようになってるだろうな
このスレってなにがしたいわけ?
1名様お帰りです
このスレはDirectXの質問スレです 過疎板なので答えられる能力者がいないだけです、みんなで考えて答えを出しましょう
>>103 ここですら過疎ってんのに立てんじゃねえよ
スピードヴェクトルのノルムの作り方教えてください!><
D3DXVec2Length D3DXVec3Length
そもそも引き算でベクトルを作り出すのが先ですよね? 何秒ごとにベクトル作るとかそんな感じですか?
何をやりたいのか1からきちんと説明しろ お前の頭のなかのイメージなんて誰にも分からん
スピードがある速度になったらそれ以上加速しないとか ある速度以下になったら止まるとかがしたい そこでスピードの大きさが必要と考えたわけです
そんなことはサイヤ人にだって出来る
>>114 これってベクトルがあって長さを測る関数だろ?
今ベクトルがないもん
できないじゃん
>>115 位置情報があって進行方向も分かっているのにベクトルがないとな?
算数からやりなおせ。
予想では2点の位置を引いてベクトルを作る 時間で割ってスピードにする のだろうけどこれは合ってるだろ? メソッドを作ればいいのか? 例えば0.2秒ごとに位置を記録させる変数を2つ作って引いて0.2で割って変数入れ替えて みたいな 多分どんなゲームでも使われてるだろうから普通のやり方を知りたい
移動速度を現在位置に加算して移動してるんじゃないならその方法しかない 何作ってるか知らないがちゃんと移動速度を現在位置に加算して移動すべき
ああ、そういうことかorz 先に移動速度があるべきなのか 実は物理エンジン使ってるから速度の与え方が力なんだよな だからどういう速度ベクトルがその都度与えられてるかよくわからん
物理エンジン使ってるなら速度情報を内部に持ってるはずだから探してみそ
何の物理エンジンつかってるのかしらんけど 普通はGetLinearVelocity的な速度を取得するものがあるだろう
bulletです 日本語ヘルプがないからわからないんです 他の使い方ですら一苦労です
まさにgetlivervelocityありましたね 使ってみます、ありがとうございました
てか無駄な時間過ごしたよな・・・ 物理エンジンが速度記録してるなんて思いもしなかった・・・
>>124 よく今まで使って来れたな
とりあえずマニュアルは嫁
そもそも
>>107 の聞き方が悪い
最初から物理エンジンで動いてる物体の速度が知りたいと聞けばいいのに
「スレ違い」で切られてた可能性もあるが
つーか今更だがノルムってなによ^^;
>>124 速度は力学シミュレーションに必須なパラメータだから無いわけないだろw
え、あぁすまん。チェック遅れた。 つ スレ違い。
気にすんな
Utilities/PIX for Windowsなんですが、 パスの選択とA single-frame capture of Direct3D whenever F12 is pressedを押して Start Experimentでスタートさせたあとに出てくるダイアログでOKを押すとメッシュが表示されるんですが この画面でF12を押してもなにも反応がなく、Windowを閉じても何も起こらないんですが、どうすれば詳細が表示されるようになるんでしょうか
すいません違うサンプルファイルを指定したらできました
聴いた瞬間違う事を思いつくのはよく有る話
DirectX11ってwindow7を買ったら絶対ついてくるの?
ついてくるの意味がわからん。 windows updateでvista以降ならインスコ可能だろ。
OSによって使えるのと使えないのが決まるのか、ふ〜ん
人間が見てるみたいに画面が丸あるく見えるようにするにはどうすればいいですか?
丸あるくってどんな吸血鬼だよ
いっている意味がわからん。 俺の視界は長方形ハイビジョンぬだけど?
魚眼レンズがやりたいんだろう
陸上生物に魚眼レンズはないだろ。 最後に瞼の裏を描画すれば?
天球のこととか
>>142 おまえよー
天球やりたい奴が、
>人間が見てるみたいに画面が丸あるく見えるようにするにはどうすればいいですか?
こう書くか?
天球じゃねーからみんな困ってんだろ
画面の周囲を曇らせたいとか?
「人間が見てるみたいに」ってあるから、 FPSの死に際にあるような、周りが暗くなるやつじゃね?
ああよく見たら笑う所じゃないな
149 :
名前は開発中のものです。 :2009/02/23(月) 21:20:15 ID:kzZ78EMZ
頭悪いな
vistaを使ってる場合はDirectX10の本で勉強したほうがいいんですか?
あれだろ 背景モデル等を超巨大な球場に配置して リアル地球にすればいいんじゃね ようは水平線が丸く見える感じでいいんでしょ 若しくはシェーダーで歪ませるとか 天球ってww
なにが気に入らないんだ
>>150 自分の趣味の範囲でやるなら10
作った作品を誰かに見せたい(同人や就職活動作品)なら9
一枚のメッシュを両面から見えるようにするにはどうすればいいですか?
かりんグー
ありがとうございますた
ノーマルの問題はいいんですか?^^;
ノーマルって何?垂線?
法線
それともう一つ 板にjpgを貼るだけなのですが、色が混ざって絵が表示されないのですが、何が問題かわかりますか?
頂点カラー(どきつい色)有効にしているとか
できました、ありがとうございました
質問があります。 どなたかお答えいただきたく、お願いします。 現在描画中の画面をキャプチャして、 LPLLD3DTEXTUREなどで扱うテクスチャにすることはできますか? IDirect3DDevice9::GetFrontBufferData を使えばサーフェスにはできるのですが、 それをテクスチャとして利用する方法がわかりません。 よろしくお願いします。
1.CreateTextureでフレームバッファと同じサイズ&フォーマットのテクスチャを作る Usageには D3DUSAGE_RENDERTARGET 、Poolには D3DPOOL_DEFAULT を指定する。 2.テクスチャからGetSurfaceLevelを呼んでLPDIRECT3DSURFACE9を取得 3.SetRenderTargetでさっき取得したテクスチャのサーフェスを指定して普通に描画
166 :
164 :2009/02/26(木) 00:22:59 ID:b3xdFz5J
>>165 回答ありがとうございます。
しかし、できれば描画処理を再実行することなく、
現在のBackBafferの内容をコピーする方法を教えていただきたく。
よろしくお願いいたします。
いらんこと考えないで最初っからテクスチャにかいとけよ
168 :
164 :2009/02/26(木) 00:37:53 ID:b3xdFz5J
解決しました! ありがとうございました LPDIRECT3DSURFACE9 pSurface; LPDIRECT3DSURFACE9 backSurface; RECT rct; LPLLD3DTEXTURE tex; pd3ddev->CreateTexture(w,h, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &tex, NULL ); tex->GetSurfaceLevel( 0, &pSurface ); SetRect(&rct,0,0,w,h); pd3ddev->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &backSurface ); pd3ddev->StretchRect( backSurface, &rct, pSurface, &rct, D3DTEXF_NONE ); RELEASE( pSurface ); RELEASE( backSurface );
今、長さと格平面への角度がわかっているのですが、ここからサインコサインを使わずにdirectXの行列の関数や計算で各成分を出すにはどうすればよいでしょうか?
>格平面への角度 ここをもっと詳しく
それぞれの平面への角度です
>>169 よく読み直せ
主語が一つもはいってないぞ
長さや角度がわかっているベクトルのxyz成分を出したいのですが、どういう方法でやればいいのでしょうか?ってことです サインコサインは使うべきでないと聞いたので、できれば違う方法でお願します
そもそも、なぜサインコサインを使うべきではないのかを考えたうえで、 それでも使いたくない理由を聞きたい。
平面じゃなくて 各軸ベクトルとの角度ってこと? ベクトルの成分がわからないのに 角度が分かってるってどういう状況がよくわからないんだけど
C言語ではサインコサインは通常使えないって聞いた そういうシステムを使うと重くなるとも聞いたので計算でできないかと思った
誰に聞いたの?
ネット
Cの初心者板とかの掲示板だったと思う 使って問題ないなら使うけど 成分を計算で出すそもそも数学的なことがわからなかったのも含め聞いた
安心して使っていいと思うよ^^ 他の手段でやる方が重いと思うよ^^ 特定のベクトルを求めるにはxyzと同等の3つの要素が必要なので 「長さ」と「角度」だけでは求まらない。この場合は「角度2」みたいなものが無いと
オイラー角をベクトルにしたいに300ウォン
じゃあ普通にサインコサイン使います ありがとうございました
オイラー角だったら、回転前のベクトルがあるんじゃ?
そもそもC言語でsin cosが使えないと思ってる段階では DirectXは早すぎる希ガス 一般的な、Cのライブラリは覚えとかんときびしいぞ
sin con が名前しかわからないんですが なんとかなりますか?ゲーム用の数学勉強したほうがいいですか? それとも数学からやらないと厳しいですか?
>>185 コンピュータグラフィックスの基礎を抑えようと思うなら高校数学(数II/B以上)は必要だよ。
2次元/3次元空間における物体を円を描くように移動させたり、
物体をくるくると回転させたりするのにsin/cosを使うことになる(かもしれない)。
3D空間のカメラ位置を制御するのに三角関数使ってるb ベクトルが分かるようにはなっといた方がいいかと・・
一週間もやればだいたいOKな内容なのでさっさとやれといいたい
まじですか こう動かしたい時はこの式とかで組み合わせてなんとかなるような代物じゃないですか? 自分中学高校とずっとクラスでビリか、ほとんど学校来ないやつにたまに勝ってブービーのレベルなんですが ほんとに必要だとすると高校数学の為に中学数学が必要なんじゃないんですか? 今までソフトはC++でいろいろ作ってきたんですが、DSPの処理とか補間とか部分的な公式を埋め込んで作れて来たんですが DirectXは中身を理解できないと絶対無理な世界なんでしょうか? とりあえず今やってる飛行機を円運動で移動させるのに詰まって、どうも無理な気がしてきたんです 数学とか言ってちょっと半端ないので本を買いまくる前にもうひと押しください
>>189 数学は積み重ねだからできないもどのレベルでできないかで違うな
四則演算と分数ぐらいは理解しとけ
あとは気合でどうにかなる
まず、高校の教科書の超絶簡単な本をさらっと読んで理解するぐらいでいいんじゃね?
正直、あんまり難しいこといらないよ
数学はじめます。ありがとう まさか物理はいらないですよね?
すいません総合的に計画したくて・・・
>>189 いきなりクオーターユニオンからやるなってw
最低限やらんとあかんのは代数幾何。
ベクトル、行列演算、ほとんどこればかりだからこれだけはやっておけ
やりたい内容による 必要になったら覚えるで間に合うと思う。
けど基本を知らないと、これの名称が分からなくてググレ無いって事になつよ。
>>191 物体が落ちたり跳ねたりする現象を正確に再現したいと思ってるなら物理も必要。
でも普通はそれっぽいので妥協する。
> C言語ではサインコサインは通常使えないって聞いた 厳密に言うと三角関数はC言語の仕様に含まれないが、 数学ライブラリを使えば使えるようになる。 > DSPの処理とか補間とか部分的な公式を埋め込んで作れて来た 基本的なスキルはあると思うけど、 三角関数だけならそんなに敷居は高くないと思うよ。 引数が度数法かラジアン法かで実装時に戸惑うかと思うけどw > 飛行機を円運動で移動させる 本来飛行機は円運動しない。 円運動しているように見える事があったとしても、 それは全ての舵やスロットルを絶妙に制御しているからで、 サインコサインで直に円運動させるのは、 物理法則を無視する事になると思うよ。 もちろんそれは貴方のゲームデザインの話だし、 それで問題ないと思うけど、だったら物理はスルーでおkだw
重さは気にするほども無いようですね いろいろありがとうございます
標準ライブラリも含めてC言語の仕様なんだが、何が厳密なんだ? 適当かますのも大概にしろよ。
まぁ、昔は算術関数の計算量を嫌って テーブルからsincos値読み出してたりもしたけど いまのPCだったら気にするほどじゃないのかもね
>>201 いや、テーブル参照は逆に遅くなる場合があるよ。てか俺はテーブル参照で遅くなった。
テーブルは昔携帯アプリ作る時に使ったな
テーブルなんて最近は飯食うときにしか使ってないな。
今どきのPCはsincosも組み込み関数だしな・・・ テーブルはキャッシュミスのデメリットしかねえ。
2007JuneのUtilityにはBinとSourceがあって、DxViewerのソースが読めるんだが、 2003sumeerのmview.exeのソースってある?
またDirectX以外の話になってるなw でも新たに3Dスレ建ててもしょうがないし、 いい隔離方法ないかね?w
過疎板じゃなくなったらな
テクスチャってピクセル数などが決まっているのですか?
>>206 december2004には入ってるわよ。
”最大の”です 写真のようにきれいなテクスチャをあまり見たことがないような気がするので・・・
d 字が多すぎて挫折しました そういえばきれいなタイピングゲームとかあったので大丈夫そうですね
dinput.dllが読み込まれるたびにバスターが警告を出すのですが バスターの監視を切るしか無いんでしょうか
バスターに許可させればいい
描画の処理って全部forループでやるべきですか?
ループ内で只管呼び出してる
そういうやリ方載ってる本とかサイト有ります?
> そういうやリ方載ってる本とかサイト有ります? あるよ。「2ちゃんねる」ってサイトに載ってる。 main() { for(;;) { draw(); } } あとスレタイ読め。つか板名読め >アフォ
春か。
正直普段からそんなにレベルの高い話は出てないけどな
224 :
名前は開発中のものです。 :2009/03/03(火) 09:48:16 ID:dB0nT5TX
directmusicでBGM directsoundで効果音 を再生と分けたいのですが 一度に2つ使っても大丈夫ですか?
確かDirectMusic内部でDirectSound作ってる。DirectSoundは複数作っちゃダメ しかしDirectMusic作成時に自前で作ったDirectSoundを渡せる うろ覚えだから違ったらごめんね
226 :
名前は開発中のものです。 :2009/03/03(火) 21:34:26 ID:c7bu0rMk
定数バッファを作成するときに、サイズを16バイトの倍数にしないとだめだと思うのですが、 これって自分でサイズを計算してダミー用の変数とかを入れて倍数にするしかないのでしょうか? 何か、適当に少し大きめの16の倍数にしてくれるようなマクロとかってないですか?
#define D3DX_ALIGN16 __declspec(align(16)) VC6 SP5+プロセッサパック以降
228 :
名前は開発中のものです。 :2009/03/03(火) 23:08:40 ID:c7bu0rMk
16バイト境界が気になりだしたらSIMD命令使ってるソースを探すのがおすすめ そういう特殊用途でないなら_aligned_mallocで充分かも
Vistaでスペックも悪くないはずなのですが、DirctX10のサンプルを見ると動作が遅くなりますみたいなのが出て、実際遅いです みなさんもそうですか?DirectX10は軽いと聞いたのですが
グラフィックカードがDirectX10に対応してないんじゃね
デルの基本のやつなんですけどね
この1文で疎さが伝わってきた
DirectX11対応グラボまだぁ
まだDirectX11が完成していないっしょ
まあそうなんだけど^^; 何言いWindows7まだぁ
Direct3D9のボリュームテクスチャに、GPUでレンダリングする方法が分かりません Direct3D10は分かるのですが、もしかしてDirect3D9では出来ないのでしょうか?
ヘルプに書いてある通りだろ。
ヘルプになんて書いてあるか言えよクズ
ここでセガ本紹介されて軽く立ち読みしたがあんまり良い事書いてなかったように思うんだが・・・ しかも半分は2次元の話しだし
あれはC++とかの言語の入門書の次に読む本みたいな感じだから
>>237 キューブマップのレンダリングするときどうするか考えろハゲ
243 :
237 :2009/03/11(水) 09:07:39 ID:ZCYiepsq
キューブテクスチャはGetCubeMapSurfaceでサーフェイスを取得できます
しかしボリュームテクスチャはGetVolumeLevelでボリュームを取得しますよね
ボリュームから特定の軸で分割したサーフェイスが取得できると思っていたのですが
マニュアルを見てもサーフェイスを取得する方法が分かりません
>>238 ヘルプのどこになんと書いてあるか教えていただけませんか?
>>242 なぜそのような言い方をするんでしょうか
>>239 は私ではありません
どうしたらキューブテクスチャのようにレンダリング出来るのか教えていただけませんか?
つまりヘルプを読めば解決
分かりもしないやつらが偉そうにマニュアル嫁とかwww
それが人にものを教えてもらうときの態度かね
気に入らない書き込みは皆自演扱いかよwwww だいたいマニュアル見ても分からないって奴にマニュアル嫁ってwww お前らなんでこのスレにいるの?
耐性ない奴を煽る為
249 :
237 :2009/03/11(水) 12:29:06 ID:ZCYiepsq
ここでは教えていただけそうにないので他で質問させていただきます ありがとうございました。
ヘルプにわざわざ、どのオブジェクトがどのステータスに対応しているか、 表にまでしてくれているのに見つからないとか、ヘルプを作ってくれた人に謝れよ。
ごめん・・・
Direct3D9のボリュームテクスチャに、GPUで直接レンダリングする方法が分かりません ボリュームから特定の軸で分割したサーフェイスが取得できると思っていたのですが マニュアルを見てもサーフェイスを取得する方法が分かりません Direct3D10でのやり方は分かるのですが、もしかしてDirect3D9では出来ないのでしょうか?
そんなのコピペして面白いか?
まーたマルチか
プロのゲームプログラマーって D3DXライブラリとか使ったりしないんですか?
優秀で堅実な奴は使わない
恥ずかし過ぎるわな
嘘だろ?なんで使えないくらい重いとかか?
使えないくらい重いとは思わないけどツクールとかキットで作ってるやつは白痴っぽいぞ
ああ、DXライブラリか 普通のやつかと思った
>>256 DirectXのサンプルでもD3DXが使われてると思うのですが、
そういう人は何を参考にしてるんですか?
やっぱり普通のやつか D3DXライブラリってツクール扱いなの?
D3DXでやってることはD3Dさえ使えば自前で実装できるがな
え?どういうこと?d3d9.libみたいなこと言ってるの?自作ライブラリのこと言ってるの?
相変わらずのお前らの文章力読解力には頭が下がるわい
この場合は書いてる方が中途半端な知識で書き込むから悪いだろ そもそも質問内容が頭悪そうな感じがする
>>263 わかりました。ある程度なら自分で実装できそうなので
今度からD3DXは使いません
今までd3dx使ってたんなら急になしにはできないだろ。 d3dx使わないってことは、モデルのストリップ化から自分でやんなきゃならんのでは?
てか自分でつくることにそんなに意味があるのか?
将来ハード開発でもしたいなら意味はあるんじゃないか あと年くってる人に気に入られるかもしれん
自前で実装出来るのと、自分で作るべきとは全く別の話だ プロなら有料のエンジンやミドルウェアを使うだろうから、 D3DXを使わないだろうという状況は想像できる それまでの話 ゲームエンジンのライブラリの選別の時にでもD3DXよりも良い実装を探せ
能力的には自分で作れたほうがいいが、 実際の仕事でいちいち作る必要は無い。
プロっつーか仕事なら自社で作ってるものがあるだろ プロの人が趣味で作るときにはどうしてるのかね
ぶっちゃけD3DX使う使わないは荒れるだけで答えが出ない 使えば確実に不具合が出る場合以外は使えるものは何でも使うって人もいるし とにかくなんでもかんでも自分で作りたがる人がいるってだけ
でもD3DXはたまにバグがあったりするからな まあ自分で作るのも面倒だから基本的に利用してるが
>>256 の言い方からすればできる奴は使わないぜ!的な感じだけどな、それも一般的に
んなことない 使いどころさえ間違えなければいくら使っても良い と書くとライブラリ作成厨から突き上げを食らう 以下リピート
自作が好きならSTLとかBoostも自作すりゃいいのなぁ。
寝る前にさくっとアドバに行く人はいるかい?
誤
一応言わせてもらうと、ある程度高度なことをやろうと思った時に D3DXだと効率が悪かったり実装できなかったりすることがある そうでない場合は開発コストなり考慮してD3DX使うべき ってばっちゃが言ってた
D3DXはD3DXで使って足りない機能は補えばいいじゃないの? テクスチャの読み込みなんていちいち作らんでもいいだろ。
まぁ、実際は データのパッケージ化とかしたり 独自のアニメーション形式で保存したりするから 自分で読み込み関数つくったりしないといけないんだけどね
>自作が好きならSTLとかBoostも自作すりゃいいのなぁ。 自作が好きつーか、パフォーマンスを重視してSTL相当の物を自作しているゲーム会社は多いよ。 表に出ている所だとEASTLかな。
スレチだけどbulletの物体のワイヤーフレームの描画のし方わからないよ〜;; 誰かサンプルソースくれよ〜;;
後のbullet厨である。
L4Dのスレかと思ったぜ…… 多分別の話なんだろうけど
D3DXは演算結果が変わるとか問題なかった?
一応回避方法はある。 変わるつってもリプレイ実装しない限り関係ないしな。
以前リプレイが再現できないバグあったんだが、あれD3DXのせいだったのか。 たまに誤差レベルで計算結果がかわんの。
SIMD系とFPUの計算誤差の差だね。 D3DXは環境ごとに最新のSIMD命令使うから他のPCでずれたりする。 SSE2ならSSE2で固定しちゃえば問題ない。
昨日vipでも聞いてたな
お前らうろうろしてんのな きもちわりい
同じ系統のスレは大体見てるだろうw 特に専ブラ使っているのなら。
>>292 そうです
抽象型とかの意味や作り方はわかったのですが具体的にどういうソースになるのかわかりません
setDebugDrawerで線などの点データが渡されるならなんで始めからそれをつなぐように実装されてないんですか?
どういう感じで実装すれば良いのか教えてください
スレ違い いいかげんにしてくれ
だってbullet薦められたのここだし
>>ID:2bPBUehD こいつ以前別のスレで釣れたとか言ってたから、ただの荒らしなんでスルー推奨。
ちょww何そのいいがかり
てか誰もわからないんだろ
スルーすれば良いのにVIPでレスしたら
>>292 が蒸し返してきたからレスしただけなのによ
まあ明らかに
>>292 のせいだな
責任持って教えてやれよ、知ってるならな
>>301 スレ違い
つーか荒らしに構うなって言ってるだろ
本当に答えを知りたい人間が >てか誰もわからないんだろ と思っているなら、答えが得られないこのスレには書き込まずForumで質問するはず。 つまり、ID:2bPBUehDはただの愉快犯の荒らし。
別に荒らしじゃねえよ ここでbullet使えって教えてもらったんだし聞くのもわかるだろ 大半は使ってないから知らないのも当然だし過疎スレだからスレチでもいいだろ
誤:bulletの事で判らなくなったらまた此処に来て何でも何度でも聞いてくれ俺は常駐して懇切丁寧に回答するから何も気兼ねしないでいいぞなぜなら君は特別な存在だからです。 正:他所へ行け
いや、ここ過疎スレだから
香ばしい奴がいると聞いて飛んできました
むしろ全部自演なんじゃないかと思ってる
このスレは知らないとか言うのが禁句だからな
>>304 このスレの住人はbulletについて知らないから、ここで聞く意味が無い。
それは共通認識だよな?
>ここでbullet使えって教えてもらったんだし聞くのもわかるだろ
の「聞くのもわかるだろ」書くお前の脳みそがわからない。
つーか、そんなセンスない人間がプログラムやってて楽しいの?
>>311 過疎スレでいらいらすんなよ
ゲーム製作のDirectXと全く関係無いわけじゃないだろ
プログラム暦1年で3Dゲーム作ってるこのセンスには正直脱帽してるが
必死すぎワロタw 前スレまで持ち出すとかwwwwwww だって実装すんのかなりムズイだろ常識的に考えて
では前スレでの縁は無かったことにさせていただきますので 完全無欠のスレ違いということでお帰りください
わからないなら知らないとかスルーすれば良いのに煽るから
過疎スレだからスレチでも良い、などと初っ端からジャイアリズムを振りかざす強敵の出現に どうして静観など冷静にしていられますでしょうか、いいやいられない!
ジャイアリズム(笑) 強敵(笑) どこの厨ニだよ
それうまいよな まあDirectX9で出来るけど
>>319 トゥーンレンダリングとかトゥーンシェードで調べてみて
特殊技術は一切無い感じですか? みなさんでもできるレベル?
>>322 何が特殊技術なのか分からんが、シェーダ書ければ技術的には可能
ググってもあんまりでてこないんだがシェーダーを変えれば良いだけなの?出回ってるの? ダイレクトXのサンプルに入ってないの?
CGWORLD3月号にNARUTOのやつ載ってたよ
このスレにできるやつがどれほどいるのかと
結構いると思うのは俺だけ?
単純なものでいいなら トゥーンマップになるテクスチャを用意して シェーダーをちょこちょこっといじるだけでできる ただし、見栄えを良くしようとおもったり綺麗に輪郭を出そうとおもったら モデル作成の時点で面の取り方やトゥーンマップの配分など よくよく考えて作らないとなかなかその画像のようにはならない
ナルトのシェーダは地味に工夫してあって素直に凄いと思う
どんな工夫?
>>319 のには無かった気がするが
影の部分を斜線で表現したりってのもあったな
FPSゲームなどで使われてる 景色(遠くに見える空とか) の描画ってどうやってるんですか?
スカイボックス
ヘルプファイルで出してくれないかな。
次はニュー速か
回転させてから 座標変換させれば クォータニオンがいらないと思うんですが なぜですか?
自分が思っていることを何故かと問われても、 テメエがそう思っているからだろとしか答えようがない。
任意軸周りの回転ができればいらない。
DirectX End-User Runtimes (November 2008) - 日本語 ↑これが今現在の最新でよろしいですか?今再インストールちう。。
>>345 ちょwww
このページの内容
ファイル名 : directx_mar2008_redist.exe
バージョン : 9.22.1284
公開された日付 : 2009/03/17
日付でソートしたらこんなのが・・・
公開された日付 : 2009/03/17 なのに、ファイル名 : directx_mar2008_redist.exe
ファイルそのものは去年の3月??
なんなんだ・・・
そのページの原稿の最新版が3/17
>>347 速レスありがとうです!原稿?どうやら3月のは間違いみたいですね?
大人しく
directx_nov2008_redist.exe
を入れますね。
皆さん即レス、感謝です。
話が見えねえんだけど
トゥーンシェードのサンプルが欲しいってんだろ。 探し方に問題がある気がする。
探し方を教えてください
*.fxでディレクトリ検索すればいいだけじゃね
fxの拡張子って何?何か球がでてくるけど
メモ帳で開け・・・
March 2009かあ SlimDXをアップデートする作業がはじまるお
Direct2DとDirectWriteのサンプルは入っているのかね?
>>359 ドキュメントやサンプルはMSDNのリンクが張ってあるだけだ
Vista環境において今回のSDKをインストするとd2d1_beta.dllなどの
ランタイムがsystem32に放り込まれる
つーかリンク先のReadMeくらい読めよ
よんだけどドキュメントがあるとしか書いてなかったから 実働するサンプルがはいってるのかどうか知りたかったんだよ すまんかったな
SDK入れてみたんだが、インストーラがバグってないか? VS2008のインクルード設定をいくつか吹っ飛ばされたぞ。
解凍して自分で設定すればおk
365 :
名前は開発中のものです。 :2009/03/26(木) 19:36:26 ID:aMG8mINr
DirectX8のSDKがダウンロードできるところ ご存じないでしょうか? MSは古いのはすぐにダウンロード停止しちゃうからorz
大きめなゲーム作るとき、 LPDIRECT3DDEVIE9ってグローバルで持ってる? それとも関数の引数で渡してる?
クラスのメンバーにもつ
クラスのメンバーで持っても 他のクラスで使いたい場合はどうするのですか? 結局シングルトンなクラス?
ゲームの規模に関わらず ゲーム(ソフト))部分から直接LPDIRECT3DDEVIE9を呼び出す設計にはしない 描画クラスだけが保持していればいいだけの話 とりあずハードに依存する部分とソフト部分を切り離すことから始めたら
グローバルでやれ
それが一番簡単だな。
ゲームが作りたいのか、オブジェクト指向とか設計を勉強したいのか で別れるってことかな? あとは…、独学の自分仕様のラッパーを作るのは辞めとこうな
引数で渡すのはよろしくない気がする よく入門書にあるような Draw ( LPDIRECT3DDEVIE9 dev, float x, float y, float z ) ; みたいな関数を作ってしまうと たとえばDirectX以外の環境に移植しようとしたときにどうするんだって話になるから あくまで描画の呼び出しは Draw ( float x, float y, float z ) ; として LPDIRECT3DDEVIE9への参照はDrawのあるライブラリのスコープ内で解決しておく 移植時はこのDraw内部を同等のものへ差し替えると Drawの内部がDirectXで描いてようが例えばOpenGLで描いてようが ゲーム部分のソースに手をいれることなく移植可能になるよね
スレタイに「DirectX」と書かれていながら移植の心配してもなw 設計って言ったのは、COMオブジェクトの生存期間と LPDIRECT3DDEVIE9をメンバに持つクラスの生存期間を一致させるとか 引数であると生存期間外でも関数呼べちゃう事になるからダメよ
インターフェース定義クラスのISpriteから継承してSpriteを作り さらにそっから継承してd3d9SpriteやglSprite、ps2Sprite等を実装する 描画時はISprite::DrawもしくはSprite::Drawを呼ぶ <完>
>>373 別に引数渡しを擁護するつもりはないけど、373の理由なら、
Draw(Device dev, ...);
として、デバイスを抽象化するクラスをつくっとけばいいだけじゃね?
俺はこんな感じ。 -- draw.h -- class Alpha; class Beta; { static Alpha* alloc(); static void func(Alpha *alpha); }; -- draw.c -- #include "だぃれくと何がし.h" #include "draw.h" class Alpha { LPDIRECT3DDEVIE9 device; }; static void Beta::func(Alpha *alpha) { alpha->device; } -- other.c -- #include "draw.h" class Gamma { class Alpha *alpha; void func() { alpha = Beta::alloc(); Beta::func(alpha); } };
378 :
sage :2009/04/02(木) 23:44:37 ID:LT+KEwIm
DirectMusicでMidi再生すると、 コントロールパネルのオーディオあたりで設定した MIDIの規定のデバイスを無視して 常にMicrosoft Software Synthesizerしか再生に使ってくれないわけなんですが 設定した規定のデバイスを適応させて再生させるにはどんな方法ありますか>< MCI使って再生すると、適応は出来たんですが再生までラグがあるので駄目でした…
BBXとかそこらいらでマルチしてるだろ・・・。 MIDIじゃなくてWMAとかMP3とかOGG使え。
>>378 MCIで俺はMIDI再生用デバイスにmpegvideoを使った
これならラグはない
MCIとDMではシンセサイザーとWAVEで再生されるデバイスが違うからな WAVEサウンドだとボリュームの統一とれるし いろんな意味でDMは神だった
自分で再生コーデックを作る手もある これならMCIに縛られることはない、MIDIの譜面で常に同じ高音質を出せる なに? そんな苦労はしたくない?
>>382 MIDIっつっても結局鳴らすための音色データが波形の音声データとして必要だろ。
MIDIで容量が減るのは事前にその辺が入ってるからで
そこから用意するならOggやMP3以上のサイズになるんじゃないの?
もうOggでやればいいのに。
全然質問と違う頓珍漢な話しかできない馬鹿ばかりでワラタ ポート列挙してその中からマッパーを選ぶだけで規定のMIDIデバイスが使える ついでに適応ではなく適用 本当に世の中馬鹿ばかりだ
midiに代わる新しいサウンドフォーマット作ってよ GPGPUでサウンド作成してさ これならCPUの負担にはならないし
Oggあたりをサウンドカード側でハードウェアエデコードできりゃいいだけだと思うが。
フルスクリーンの時の画面サイズって、自分の好きなサイズに する事って出来ないんですか? 最初、ウィンドウモードで512*384というサイズで作ってんだんだけど 後からフルスクリーンにも対応させようと思ったら、切り替え時に止まってしまう。 しばらく考えてみたら、どうやらビデオカードに無い解像度は使えないと判断しました でも確か、RPGツクールVX等も変則的な解像度だけどフルスクリーンあるな あれはどうやっているんでしょうか・・・描画開始座標をずらしてるのかな・・・ いや、でもそれだと結局640*480でサーフェイスを用意しないといけないけど それだとウィンドウモードと別にプログラム書かなきゃならないのかな?
それは多分、ウインドウモードで枠を無くして全画面表示みたいな事してるだけだと思うが いわゆる擬似フルスクリーンだよ そうでなければ640*480に512*384をストレッチさせて表示してるか
390 :
378 :2009/04/04(土) 23:25:32 ID:ljiv6Io9
とりあえず、
>>380 の方法でMCI使ってやってみたんですが
リピート再生とかすると最初に戻った際
非常に短い時間動作が停止するようでした。
本当に短い時間なんですが、作ってるのがアクションゲーム故
ちょっと気になるように思ったんで
>>385 の方法も試してみます。
それにしてもDirectGraphicに比べてDirectMusicの資料の少なさは異常
DirectGraphicなどDirectXには存在しない。
392 :
378 :2009/04/05(日) 00:53:27 ID:VooKGBF/
sが要ったか
DirectGraphicsなどDirectXには存在しない。
まあ
>>391 ,
>>393 が言ってることはあってるけど、
ろくにドキュメントも読まないバカだというのもわかる。
いたずらに初心者の混乱させるだけだからそのネタはもういいよ
検索すればすぐに判る事を自分で調べようとしない輩の事を『初心者』というなら、そんな連中は要らない。
>>396 の日本語理解力をゆとりと言うんだろうか?
ゆとりじゃなくて単なる馬鹿
初心者はやり方を知りたいのに教えないんだよ、抜かされるのが恐いから
抜かされるってマラソンでもやってるのw
まあまず日本語ができないので理解できないってこともあるな
ID:jz5ZjdJDの日本語とやらをナントカしたほうが…
ID:jz5ZjdJDの日本語すら理解できないのかww これ程とはw
>初心者はやり方を知りたいのに教えないんだよ、抜かされるのが恐いから 初心者はやり方を知りたいのに、抜かされるのが恐いから、教えないんだよ そもそもここは、初心者スレでもないし質問スレでもないw
405 :
名前は開発中のものです。 :2009/04/07(火) 23:46:03 ID:1F4LM4ph
ワロタw >抜かされるのが恐いから>教えないんだよ 入れ替えた意味がわからんwwwwwwwwwwwwww腹痛てぇwwww
で、結局この初心は教えて欲しいのか? それにしては頭が高いようだがw ちゃんとスレの趣旨に沿った理路整然と質問できるのか? だったらその理路整然とした質問に沿って自分で調べるんだね。 そのほうが正確かつ的確な回答に到達できるよ。 それほどDirextXのドキュメントは充実してる。
だからドキュメント以上に実用的な返答をしないって意味だろ
すみません。XAudio2を使おうと思ってるのですが
http://msdn.microsoft.com/ja-jp/library/bb694521 (VS.85).aspx
↑にあるボイスのコールバックの使い方がよくわかりません。
方法 : ソース ボイスのコールバックの使用
http://msdn.microsoft.com/ja-jp/library/bb669171 (VS.85).aspx
とりあえず、↑のクラスをそのままコピペし、ビルドすると下記のエラーが出ます。
error C2695: 'VoiceCallback::OnStreamEnd': オーバーライドする仮想関数と 'IXAudio2VoiceCallback::OnStreamEnd' は呼び出し規約のみ異なっています。
error C2695: 'VoiceCallback::OnVoiceProcessingPassEnd': オーバーライドする仮想関数と 'IXAudio2VoiceCallback::OnVoiceProcessingPassEnd' は呼び出し規約のみ異なっています。
・
・
・
#include <xaudio2.h>
pragma comment( lib, "xapobase.lib" )
インクルードは↑しかしてませんが、他に何か必要なのでしょうか?
409 :
名前は開発中のものです。 :2009/04/08(水) 00:41:45 ID:pChef1ly
分からない側からしてみればただ漫然と「ドキュメントやヘルプ読め」ってのは 勉強わからない奴に教師が「教科書と解説読めば全部わかる」って言ってるようなもんだと思うが 抜かされる云々じゃなく要は親切さが足りないってだけだろ まあでもここ2chだし初心者スレ質問スレの良心のある人に訴えかけるべきだな
あのドキュメント群から得られる知識を組み合わせてもゲーム作れないなら、 単にゲームPGとしての才能が無いだけかと。 別に珍しい事じゃないから気に病む事はないと思うよ。
>>408 まぁエラーそのままの意味なんだが
SDKサンプルのXAudio2BasicStreamのコードと比較して違いを確認
MSDNライブラリ全般に言えるが、その手のコードスニペットは
コンパイルできないものが多いのであてにしない方がいいぞ
>>411 ありがとうございます。
SDKサンプルのサンプルだと
STDMETHOD_( void, OnStreamEnd )()
・
・
ってなってますね。。。
MSDNのサンプルは宛てにしないようにします。。。
>>408 普通に使えたぞ。
virtual void __stdcall って書けばいいだけだと思うが。
スキンメッシュはどうやって理解すれば良いのでしょう?
釣りに見えなくもないがマジレスすると 各頂点に、どのボーンにどれだけ連動して動くか(ウェイト)が格納されてるメッシュのこと 全ボーンのウェイトを入れると重くて仕方ないので、通常 float x 4 と int x 4 を利用して int側にボーンのインデックス、float側にウェイトを格納して4つのボーンに連動させる
何がなんだかサッパリです
頬を引っ張ってみろ。 それがスキンメッシュだ。 さらに引っ張ってみろ。 皮膚が破けたら、それがスキンメッシュの破綻した状態だ。 まずは破綻するところまで実践してみろ、話はそれからだ。
それモーフィング
>>418 言うの遅いよ!
もう破けちゃったじゃないか
>>418 モーフィングは骨格の形状まで変化することになるぞ。
皮膚を引っ張るのは外側にボーンに相当するフレームと、
作用が増えたことでウエイトの割合が変化しただけ。
いや、だからさ、ちぎれちゃダメなんだろ?
ひねりを加えて引っ張れば、表裏が逆転して破綻する。
やねうらおってまだいるん?
>>423 もう.NETとかJavaScriptとか、メモリ空間やCPU命令なんて意識しない
超高級言語に入り浸ってしまって技術者としては死んだようなもの。
昔は技術者として凄かったんだけどな。
D言語に飽きたあたりから落ち始めたな。
ワッフルのシステムがエロゲ屋としては優れてるのは そいつのお陰なの?
開発してたのは、昔の話じゃないの?
そうでもない予感 >WAFFLE 「優遇接待 〜孤島の極楽へようこそ〜」 >アーカイブ拡張子はcg.dat、中身は.bmp。yaneSDK
>>426-427 何この自演・・・・せめてID変えろよ・・・・
やねうらおはそこまで落ちたのかよ
昔は尊敬したんだけどな
本当にがっかりだぜ
それにスレ違だからやめようぜ
>>424 ソフト工学に身を染めていくに従い
物理的なものからより抽象的なものへ
低級なものからより高級なものへ
興味が移るのは自然だと思う。
数年前の日記読んでも今の日記読んでも 同じレベルで痛いというのは凄い事。むしろ進化してる。
>>428 最近大規模に串焼かれたからストック切れたんじゃね?w
>>429 結局YaneSDKのマルチプラットフォーム対応版は既に放置状態。
3D対応もするする言いつつ結局1度も3Dがちゃんと動いたライブラリはリリースできずで
3Dなんてやれば余裕といいつつ本当はできないんじゃないの?って話。
最近弄り始めたんだけど、リファレンスが乗ってるページとか、分かりやすい解説サイトとかない? 本屋でDirectXの本売ってなかったからさっぱりだ
まず引っ越せ
すばらしい指摘だ
本屋などいらんアマゾンがあればいい
本の通販はキツイって ハズレ買ったら、ツルツルの4,5千円の本が何時までも残るんだぜ 10分もありゃ解る薄い内容の重いだけのゴミを、死蔵して古新聞にも出せずに
Gemsを全部買えや はずれないから
ググれ 本より良い
本なんてタイトルみて手当たり次第にかって 読んでから良し悪し決めるものだと思ってた。 まぁ無駄な本にも役立つ事が1つや2つ書いてあるし。 Gemsクラスのクオリティを国産で一人で書いてる本に求めるのは無茶だろ。
gemsは翻訳文がカタくて読む気にならんわ。 いや読めません。
原文のまま読めば安くて読みやすいという事か。
gemsって原文がどっかに転がってるらしいYO
それGPU Gems
Gemsを全部買うのはアホだろ。 古いのは賞味期限切れのネタが多いだろ
だな 続刊と言うより最新のGemsがあれば最新のゲーム開発が出来るような編集になってる 過去のGemsに載ってる内容の改良・発展形が載ってたり
コメットかよ
志村ーBTBT!
初心な俺がGems買って対費用効果あるんかな?
ないね
経済効果ならあるよ
もちっと技術的な方向から必要の是非を検討してくれんかね
どこまで初心なのか分からんからなぁ そもそもDirectXの使い方を解説した本じゃないから
こいつアホだろ
アホではない、ちょっと物を知らないだけだ。 やさしくしといても損は無いと思うぞ。
どれぐらい組めるか書き込め 後は優しい人がなんとかしてくれる
どのぐらいかと言われると、 コンピュータグラフィックス 理論と実践という本を読んで、 モデラーを開発した経験がある、Zバッファレンダリング、 レイトレーシングレンダリング、スイープとか回転体とか モデリング機能を盛り込んだ。かなり古い本だから次のステップに進みたい。
>>460 >コンピュータグラフィックス 理論と実践という本を読んで
このスレ最高レベルだ
2chなんかにこなくていいから自分が思ったとおりに勉強しろマジで
そうなのか?明らかに古い本なんだが・・・
コンピュータグラフィックスを読めるならGemsは次のステップに丁度良いな
ありがとう、買ってみる
実際にゲームとか作ってからの方がいいと思う。 というか、アマチュアレベルではまず使いこなせないから必要ない。
洋書が読めるならReal-time renderingの最新版じゃないか。日本語になってるやつは古いけど
失敗しそうなやつだな
挫折コースだな
>・DirectX8実践プログラミング Amazon中古¥455より これはいらんだろ 他2個は、シェーダ系だけど シェーダたどり着く前に挫折しそうだw
8にもシェーダーはあったけどHLSLはまだ主流じゃなかったし いまさら8から学ぶべきことななにもないよね なにより9が6-7年くらい(?)のロングランだし 今から始めるなら9の固定機能少な目のシェーダー大目にしとけば 10、11への以降もそう戸惑わないんじゃない?
10じゃ9までのシェーダーが一切使えなくなってるけどな。 API関連も一新されて7→8と同じ事が9→11で起こってる。
Vistaしか動かない10なんて今覚えても意味ないだろ
11は10の拡張 ピクセルシェーダや頂点シェーダは10のものがほとんどそのまま使える
初心者のスタートは9か10かの話はもういいだろ・・・ このスレだけでいかに不毛かが分かる
男は黙ってOpenGL
それはこのスレの範囲外じゃw
DXUTとういのが難しいと聞いたのですが DXUTはどういうメリットがあるのですか?
ウインドウの生成やそれに伴うメッセージ処理、DirectXの初期化など 面倒くさいところを引き受けてくれる これすら難しいならs
つまり面倒さが DXUTにそういう処理を引き受けさせるための処理>ウインドウの生成(ryのための定番処理 だから嫌われてるの?今DXUTで作ってるんだが…
>>481 2ちゃんねらーに悪口言われてカワイソス
何事もなかったことにして次行った方が良さそうだね
そうだな
Gemsは必要に迫られれば自分で普通に考えられるテクニックしか載ってない
こんなところで 俺でもGems程度やればできる とかいわれてもなぁ・・・
やれば出来る子なんでつ
すみません うそです 強がっただけです
ベンチマークの測り方を教えてください
っしたぁ〜〜!
パフォーマンスカウンタは省電力機能とからむと厄介とか、いくつか注意点はあるので気をつけてね
おk
正しい用語を使っても相手に伝わらなければ無意味だけどな
>>492 間違っています。
以上。
はい次の方。
>>485 俺もそれ思った
実現させるために考えれば絶対到達することしか書いてないよな
こんな方法もできたんだとか思ったことない
そんなの教えなくて当たり前じゃないの? ゲーム業界のレベルってそこまで高くないだろ
後出しじゃんけん
まあDirectXはどんな会社でもゲーム作れるのが売りだし RPGツクールの作品が技術レベルとか存在しないし
ゲームを作りたいんですが地面のデータは解像度どれくらいでやればいいとかそういう目安ってどこで知れば良いのですか?
パフォーマンスに影響が出ないレベルは必須として 出来上がったものを他人にみせて(製品にして)自分が許せる範囲でお好きに
地形の見た目はポリゴン数よりテクスチャと頂点色とライティング。 FF11の背景とか見てみるとあのポリゴン数でよくやるわ、と思う。
>>501 プログラマの腕次第なところあるから、まずは色々試行錯誤してみろ。
ここで、いきなり100万ポリゴンとかいわれても出せないだろ?
D3DXCreateTextureFromFileで作ったテクスチャの画像サイズを得るには どうすれば良いですか?
GetLevelDesc()
508 :
名前は開発中のものです。 :2009/06/20(土) 22:39:01 ID:Wu2JE3tK
HLSLについて質問なんですが、d3d9のフラグメント使ってみた人いますか? 使えないって評判をちらほら見るんですが どこが不便なのか調べた限りではわかりませんでした。 使った方、よかったら感想聞かせてください。
>>508 DirectX10じゃなくなってるし。
DirectX11はシェーダーでクラスの継承とかでぜんぜん違うのが搭載されてるし。
レスどうもです! 11ってそこまで進化してるのか・・・ 確かにそんな高級ならテクニック数の爆発とは無縁なんだろうなぁ
DX9出始めの頃で忘れてしまったが、 当時の俺は、多分エフェクトファイルとの親和性が低いのを 問題視していたと思う。 エフェクトインターフェイスと併用が出来ないんで、 自分で同等のものを作るか、あるいはもっとローレベルな方法を 強いられる。 また、プログラム全体を通しての最適化に難がある、、、たような。 忘れた。
ゲームの配布先で d3dx_24.dll がねーよ って現象が結構あるらしいんだけど... DirectX9 SDK (2004 December) だと D3DX つかっても d3d9.dll にリンクしてくれるけど、 それ以降だと d3dx_**.dll がないとダメぽい。 これは最新版の DirectX 入れてくれとしかいいようがない?
DirectXランタイムはネット上ならMSのDirectXサイトで配布してる CDやDVDで配布する場合はディベロッパ向けにDirectXランタイムの 再配布可能パッケージがあるからそれを同梱してやればいいんじゃね
>>512 Webインストーラなら常に最新版を入れてくれるから、
それにリンク張っとくのがいいかと。
515 :
名前は開発中のものです。 :2009/06/21(日) 11:09:06 ID:peHhyDD5
昔のsdkで開発すれば良い
>>516 情報サンクス!
遅延読み込みにするってことは、
例えば D3DXVec3TransformCoord をつかっているなら、
D3DXVECTOR3 * (WINAPI * DynD3DXVec3TransformCoord)( .... ) = NULL;
とかやって、既存のプログラムで D3DXVec3TransformCoord 読んでるところを全て
DynD3DXVec3TransformCoord にかえておく ... (そして動的ロードする)
てことを,使っているすべての D3DX 関数でやらなきゃダメだよね。
めんどくせーーーーー
>>517 Xp以降でいいなら、単にVS等で、遅延ロードDLLに指定するだけでは。
服を着せかえるようにしたいのですがどうすれば良いですか?
モデルを差し替える
今裸の状態なんだけど
服って言わないで、困ってる点を挙げたら? 縮尺があわないとか、半透明な部分がうまく抜けないとか 労力やデータ量あわせても520の案で裸のボディも含む モデルを差し替えるのが実は最も適しているかもしれないし
だから 裸のモデル→服を着たモデル に差し替えるだってば 服が変わるとおっぱいの大きさが変わるゲームみたことあるだろ?そういうことだよ まぁ、ベースとなるモデルのボーン構造やアニメーションを維持したままで パーツごとにメッシュを差し替えられるように作るのがベスト スキンメッシュの理屈がわかってればそんなに難しくない モーションとかついてないモデルなら普通に重ねてだせばOKでしょ
いや、やり方が全くわからない初心者です 服は別のオブジェクトで作ったのですが、ウエイトを付けないと駄目だろうと思い そうするとモデリングからデータの抽出からどうすればよいのかわからなくなりました どういう感じで作業を進めていけば良いのでしょうか
つまり裸の物体と服の物体を同時にアニメーションさせるってことですか?
簡単に言うと服を着た状態でもウェイトをつけておく こいつに裸の状態のボーンやアニメーションを適用する
ありがとうございます 裸(ボーン)+服(ウエイトだけ設定)→一つのオブジェクトにする→アニメーション 裸→アニメーション、服→アニメーションを同時に だとやっぱり下なのですか? 上のほうが直感的だし軽そうで最初上かなと思ったのですがウエイトの仕組みとかをまだあんまり理解して無いのですがちょっと見てみたら無理に思えてきたのですがやっぱり下なのですか?
いや、つまり動くのはボーンだけでメッシュを登録していく感じ?
上であってるよ その一つのオブジェクトにするってところがめんどくさいから 服にウェイトをつけるんじゃなくて 服をきた人体にウェイトをつけておく 必要なものは ベース 裸の人体の頂点情報+ボーン+モーション パーツ 服を着た人体の頂点情報(ボーンやモーションはいらない) を用意しておいて 実際に動かすのはベースのボーンなんだけど 参照している頂点情報を切り替えることで着せかえる
サンクス とりあえず方向性は確定したので頑張ってみます
532 :
名前は開発中のものです。 :2009/06/27(土) 20:43:51 ID:D7q9OIpz
DirectX 9の勉強に役立つ本やサイトって知ってますか? 近くの本屋にはDirectXの本がないので、ネットで買おうと思ってます。 ついでに、初心者なので専門的な言葉を使いまくってるのは、たぶん無理です。
まずはヘルプのチュートリアル
534 :
名前は開発中のものです。 :2009/06/27(土) 22:23:50 ID:D7q9OIpz
ありがとうございます。やってみます
9.0と11.0の主な違いを教えてください
バージョン
違いがわからない人は11使っちゃいかんと思う 仕様が違ってる、書籍のソースが使えないなんてのは日常茶飯事
>>535 マジレスするとD3DXの行列ベクトル演算の関数以外の
全部が全く違うものになってる。
11出たの?
βははいってる
10と違って11は9〜10のカードでも動くから 新規で学ぶなら11で良いと思う
10は要らない子か・・・
10の追加拡張が11だからな
8と同じ扱いと考えれば11が今後のメインになってくんだろう
11で作ったやつが9のカードでも動くってマジ!? ちなみに11は当然デバイスのロストとか無視して作っていいんだよな? マジで!?
頭の悪い奴だ
>>545 動く≠実用的な速度で動く
当たり前の事だろ。
DirectX10みたいな起動すらしませんってのが改善されるだけだ。
CPUレンダがマルチコア対応で軽くなってるから SM2.0、3.0のアクセラレーションがあれば30以上は簡単に出せるけどね
SM20のアクセラレーション可能な環境でPS内でループ回してもエミュレーションで30出ると。
DirectX11ってXPにも対応してますか?
10がVISTA以降だろ・・・ 11も当然VISTA以降のみ対応。
553 :
名前は開発中のものです。 :2009/06/29(月) 01:37:47 ID:gfO0eJFI
D3D11てSM2.0もサポートするの? せっかくD3D10で下限を引き上げたのに なんだか大変だねえ。
SM4.0からじゃないか? DX10の時もSM4.0以外使えなかったような・・・
>>553 SM2.0までしかサポートしてないビデオカードでも動くってだけ。
現実的にはDirectX11対応のビデオカードじゃなきゃたかが知れてる。
>>555 動くってどういうこと?
SM2.0がHALで動くってこと?
つまりSM2.0がサポートされるってことか?
それはありがたい
なんか会話がかみ合ってない気がするんだが
>>558 ソフトウェアエミュレーションは何を
エミュレートするの?
アンタ、日本語が不自由な人だね。
無理して答えなくていいよ。
SM2.0クラスのビデオカードでDirectX11の機能を動かす場合に ハードウェアアクセラレーションが出来ますか?→○or×
そもそも
>>553 は
SM2.0クラスのビデオカードでDirectX11の機能が使えるかって事じゃなくて
DirectX11でSM2.0を使ったプログラム書けるのか聞いてるんじゃないのか?
ならSM2.0を使う必要がない、でFAなんじゃね。
誰か知っていたら教えてください。 DirectInputでマウスの入力を取得しているとき、 マウスのボタンを押したまま離していないのに勝手にボタンのUPイベントが通知される場合がありますが、 これは正しい動作なのでしょうか。 再現方法は、 1. マウスのホイールを入力 (DIMOFS_Z) 2. すぐにマウスのボタンを押下する。そのまま押したままにする。 (DIMOFS_BUTTON0とDIMOFS_BUTTON1で確認済) 3. マウスのホイールを入力 (DIMOFS_Z) すると、なぜか2でDownしたままになっているボタンのUpイベントが来ます。 もちろん実際にはマウスのボタンは押したままです。 1.と2.はほぼ同時のタイミングで入力すると再現します。 2.と3.は時間が開いても大丈夫です。 これはSDKのサンプル (Samples\C++\DirectInput\Mouse) で確認できます。 バッファを使っても使わなくても起きます。 情報求む。
マウスのメーカーと型番は?
マウスはMicrosoft Intelli Mouse Explorer 3.0です。 型番はたぶんB75-00123だと思います。
結局Directx11がSM2.0までのビデオカードで動くってわけじゃないのか
DX9レベルのハードで動くつってもそもそも その時代になかった機能までハードでやってくれる魔法があるわけじゃないぞ。 SM3.0世代までの整数演算だって全部FLOATでエミュレーションしてたんだし。
ttp://lizsoft.jp/fs/download.shtm この体験版をやってみたんだけど、
windows/system32/d3d8.dll とかを削除した状態でゲームを実行すると、
なんか勝手にd3d8.dllとd3d9.dll が復元されてるんだよね。
これってアリなの? っていうかどうやってるの?
付属のDLLはsotesw.dllが30MB、sotesd.dllが80MBとかも
気になる。どういう仕組みになってるんだろう??
と思ったら自分がつくったD3D9アプリでも同じ挙動になるなあ.... OSが勝手に補完してくれるのか???
OS「気が利くだろう?」
漢字表示をもっとも簡単、かつ高速に行うプログラム書いてくれ
必要もないのに毎フレーム書き直すなんてことをしない限り、 フォントイメージをテクスチャに転送してレンダリングするだけで実用速度になる。
それが簡単に思えないんじゃね? ぐぐってパクればOKだと思うんだが…テクスチャー? そんなん画面解像度分確保して、一文字でも変更があれば、 同時に表示する全ての文字だけ、左上からでも埋めてけばおk。
文字データ全部テクスチャデータ化して使う分だけ読み込んでる 自分の好きなフォント使えるし、他PCに持っていったときにそのPCに同じフォントが入って無くても使えるし もちろんフォントの著作権の問題はあるけど
579 :
toya :2009/07/12(日) 01:03:44 ID:+auraSRZ
聖書53ページ
よくあること
581 :
名前は開発中のものです。 :2009/07/12(日) 13:32:12 ID:v+1Ruet9
韓国人に近いリスト 一重 耳垢が乾燥している ワキガじゃない 平面顔 たれ眉毛 ど直毛 体毛が薄い 3つ当てはまったら朝鮮人に近い
質問です XPで作ったDX9アプリがVISTAでは動きませんでした なぜ?
君の書いたソースがバグってるから以上の理由は無い。
それは本当に「Vista」だから動かなかったのかい? ほかの開発環境の入ってないXPでも動かないってことはないかい?
サブなんたらがなんたらというエラーが出ます
日本語でおk
エラーは一字一句改変せずに
588 :
名前は開発中のものです。 :2009/07/12(日) 21:10:33 ID:jkZPQGRm
丁寧に書かれた質問に対しては、丁寧に回答されると思うんだな。 スクリーンショットの撮り方も知らないんだろうか
サイドバイサイドじゃねーの?
それならVISTAで動かないってこたないんじゃね
サイドバイサイドでした つまりどういう事?
マニフェストうめろ
マニフィスト関係ないだろ 単なるCRT設定ミスだと思われる オプションのコード生成のランタイムライブラリの設定が マルチスレッドデバッグDLLかマルチスレッドDLLになってる 外に出すときはReleaseにしてマルチスレッド(/MT)にしとけ
試してみます
OpenMPとか使ってるとマニフェストにかいとかないとこけるじぇ
XPでDX10 これ最強
サイドバイサイド side by side 隣に おそらくケースバイケースと言いたかったのだろう
そんな餌に俺様が(ry
599 :
奇跡age :2009/07/17(金) 10:39:11 ID:WnY7CWjL
qwertyui
マルチスレッドでも描画を先にしてから計算でおk? コアが増えてからDirectXとどう付き合えばいいのかよくわからなくなってきたZE!
ウィンドウモードでメニューとか処理してる間もゲームループと描画を止めずに動かしたいんだが 移動・描画・ウィンドウメッセージのスレッドを別々にすればいいのではないかと思うんだけど どうやればいいのかよくわからないんだよなぁ
どうもこうも普通にマルチスレッドのデザインパターン勉強しなされ
>>601 windowsのウィンドウは、それを作成したスレッドでメッセージが処理される。
メインのウィンドウは必ずプライマリスレッドで生成されるから、メインウィンドウのWM_COMMANDを
実行中は、他のメッセージは処理できない。つまりメニュー表示中は画面を更新できない。
WM_COMMAND中にPeekMessageとかやれば別だが……PeekMessage埋め込みは、思わぬ問題を
引き起こしたり、コードがぐちゃぐちゃになったりするのでお勧めできない。
これを簡単に避ける方法は2つしかない。
ひとつは、メニューをゲーム画面中に実装して、OSのメニューは使わない方法。
もうひとつは、プライマリスレッドから入力スレッドを作成して、ゲームで利用する
ウィンドウは、すべて入力スレッドで作成する方法。
これだとゲーム画面の更新は入力スレッドで行われ、メニュー操作はプライマリスレッドで
行われるので、メニュー選択中の画面は更新される。
最初はOpenMPから始めるのがいいんじゃない?Intelに日本語資料もあるし。 商業メーカーでさえ苦労する標準のThreadなんかは初心者では途方に暮れるだけだろう。
VisualStudioだとtask機能が追加されたOpenMP3.0が使えないのが痛いんだよなぁ・・・。 だからといってIntelコンパイラー買うのは無理な話だし。 でもキャラの座標更新とかアニメーション更新とかにOpenMP使うとかなり効果はあるね。
すみません、 DirectX9の2006年版SDKを入れて開発しているのですが、 3D製作ソフトのリアルタイムシェーダが最新版への更新を要求してきます。 End-User Runtimeを更新するとSDK側も変化を受けて これまでのコードで動作しなくなる可能性って有ると思われますでしょうか?
>>607 無事アップデートできコードの稼動を確認できました。
素早いご回答に感謝!
609 :
名前は開発中のものです。 :2009/08/06(木) 17:37:16 ID:kfzgiW63
大量の直方体を動かしたいんですけれど それぞれのローカル座標をデバイスでいじると ビデオカードの命令量が増えて逆に遅くなったりしますか?
ローカル座標という言葉は適切じゃなかったかも知れません。 DirectXではコマンド発行回数を100以内に抑えた方が良いって 誰かが言っていた気がするので、それだったら座標変換の 回数やモデル数も限定されるな〜と思うのですが。 実際多くのキャラクターが出るゲームって少数派ですよね〜。 でも出したい。ローポリゴンで出したい。その場合どうやるのが 効率的なのでしょうか?
まずは実装してみて、速度的な問題が発生してから聞きにきなさい。
ですね
>>610 5年前のCPUとGPUで数百の3Dオブジェクトに数千のパーティクルを
バカ正直にDrawIndexedPrimitiveで描いてたが余裕で60fps出てたな
画面がゴチャゴチャしてわけわかんなかったけどな
数千の3Dオブジェクトに数万のパーティクルを描きたいとかで
なおかつSM3.0使っていいならgeometry instancingでググってみるといいかもな
ネットブックを除けば大半のPCはノートでもSM3.0対応だから問題はない
>>613 なるほど…なんか余裕に出来そうな気がしてきました。
まずは普通にやってみようと思います。
シェーダーインスタンスを試してみたけどそれ程速度速いとは思えないのですが ハードウェアインスタンスは劇的に効果ありました ハードウェアインスタンス対応してるボード前提ならも凄い数出しても大丈夫そうです もっともそのボードであるならローポリといわず複雑なジオメトリ持ったモデルたくさん出せるのでしょうけど このスレというか板にいる人がどういう理由でゲーム作っててそういうPCで遊ぶのと想定してるか次第なんですかね 同人、フリゲ、学校の課題などなど
ハードウェアインスタンスなんて GeForceなら6000番台、 RadeonならXシリーズから普通に対応してるぞ。 何年前からの技術だとおもってるだ。
幅広く対応しつつ極力パフォーマンスを引き出したいなら、描画設定を選べるように するのが単純明快じゃね? 凝りたいなら、オートで最適な描画設定を選ぶ機能か何かを追加してもいいし。
デバイスロストからの復旧に関してつまってしまった。 ライティングありでロストからリセットすると、Vista環境ではメッシュが真っ黒になってしまう(Lightsが有効にならない?)。 リセットまでの手順は、 1、プロジェクションやカメラの位置、Lighting、Lights、RenderState等をnewしたりコピー。 2、リセット 3、デバイスに先ほど保持した状態群を再設定し、実際に更新。 誰か分かる方いますでしょうか?
>>616 6000番台以降だと6200、7050、7300等の廉価ボード?とかも対応してるのでしょうか?
2003年頃から対応ってことになるので、さすがにそれ以前の環境は考慮する必要なさそうですね
>>617 所詮はフリゲ作ってるだけなのでそこまではなかなか・・・
基本自分の作りたいゲーム作るなのでよくわからないままにハードウェアインスタンス前提で作ってます
>>618 ロスト時リセット前にライティングをいったん無効にしてみる。
板ポリゴンにテクスチャを貼って2Dの表示をやってるんだが テクスチャの画像が元ファイルのものと比べるとぼやけた感じになる これはちゃんと設定すれば高画質にできるものなのかな?
ドライバや描画設定変更するアプリがおかしな事になってないなら出るかと まずはフィルターの設定 表示サイズがテクスチャのサイズと合ってるか確認 フレームバッファサイズと表示サイズが合ってるか確認
まぁたぶんフィルタの選択ミスだろうな
フィルターか・・・ 調べてみる
625 :
618 :2009/08/08(土) 23:59:30 ID:3chv5U+J
>>620 ビンゴでした。ありがとうございます!
lights[i]のEnabledが単純なbool値ではなく、リセットを行うと内部的にはFalseになるのに表面上Trueになったりするっぽいです。
一度リセットの直前にEnabledをFalseにしてからリセット、再設定することで解決しました。
xpではおきませんが、余計なLights[i].Updateをリセットの直前等に挟むと場合によってはvistaでは強制終了することもあるっぽいです。
自前のプログラムでXファイル読み込んで 頂点データからモデルを表示させる方法と モデルデータをDirectXに表示させる みたいな方法の 2つの方法があるみたいなんですが 違いはあるんですか?
お前は何を言っているんだ…。
違ってるかもしれないが、質問の内容はこうだと思う 3Dモデルデータを読み込んで、表示して、モーションさせる。 この時に、モデルデータのモーション形式に2種類あって、 @ボーン組込みのモーション付きモデル A頂点データによる静止モデルデータの連続によるモーション付きモデル @は、良く使われるボーンタイプ。データ量はモーションデータだけで少ない。 だから小さいデータ量でメモリ消費が少ないが、実行時に計算が必要なのでCPU負荷が増える。 一般的にはこちらが設計時の自由度が高い。 Aは、フレーム毎にモデルデータ(頂点データ)があるので、データ量が多くメモリ消費が大きい。 つまり、静止モデルのデータをフレーム数だけ用意する。 その代わりに実行時に計算が無いので、CPU負荷が少ない。大きさを調節しなければならない。 メモリ消費と実行速度の兼ね合いになるだろう。
Windows 7 RCでDirectX 10を使いたいんだけど、ひょっとして最初から入ってたりするの? DirectX 10単体で落とそうと思って公式のダウンロードページに行くとDirectX 9のページに強制的に飛ばされてしまうorz
標準装備だお
つか最新のDirectXSDKには9も10も入ってるだろ。 DirectX9SDKじゃなくなってんぞ。
DirectX9のSDKやランタイムってあったっけ DirectX SDK、DirectX エンドユーザーランタイムにリネームされて久しいけど
GEMS1のCDの中身をハードディクスにコピーしたら avastさんがトロイの木馬を発見したらしい
誤検知だろ 神聖なるNVIDIA様がウイルスを保持しているはずがない
>>634 いやGAME PROGRAMMING GEMS
UPXか、それ系のexe packerでも使ってたんじゃないの?
武器(剣とか)と本体が一緒になってるXファイルのワンスキンモデルで 武器と敵の当たり判定を取ろうとしてるんですが、なにかいい方法はないでしょうか メッシュ情報から武器のテクスチャが割り当てられてる頂点だけ取ってくる・・・ とかは考えたんですが、かなり邪道な気がするんで。。 モデル内における特定ボーンの抽出や、ボーンの当たり判定あたりがサッパリなんで、 丁度良い説明サイトとかあれば教えてくだしぃ
まずは高レベル関数に頼らずモデルデータを自前で読み込むところから始めろ。
邪道じゃないと思うけど
すみません、多くのゲームで見られる RGB各256段階のカラースライダで、プレイヤーが自由に色を設定できるものの 実装方法を記したサイト等を、どなたかご存知ではないでしょうか? バーテックスカラーとテクスチャでやってみたんですが 色相変換のように綺麗に混ざってくれず、どうしたら良いものか。
テクスチャかバーテックスのどちらかをほぼ白か黒にして もう一方にユーザーが設定したRGBをセットして、乗算なり加算なりであわせればいいんじゃないの?
頂点カラーを使うのかテクスチャ自体の色を使うのかをまず明確にしろ。 それが決まったら、スライダーの設定と色を混ぜた結果を明確に定義しろ。 以上が決まったら、頂点カラーなりテクスチャなりにそれを書き込めば終わりだ。 混ざってくれないんじゃない、あやふやにやっているからその通りの結果になっているだけだ。
多くのゲームで見られるって部分から察するに 服の青とか赤とか特定部分の色を変えたり 肌色の部分だけの色を変えたり とかそういうのをやりたいってことなんかな? でテクスチャーは元の色のまま、バーテックスカラーにユーザー設定RGBを入れて それで色々とブレンドしてみたけど、どうブレンドしても思うような色が出ないと こういうこと?
644 :
640 :2009/08/15(土) 22:29:49 ID:nUVtD6WR
>>641-642 ご回答ありがとうございます。
頂点カラーの合成に乗算や加算モードが有ったのですね、
モデリングツール上のビューの方式のみと勝手に思い込んでいました。
ちょっとレンダリングパイプラインのその辺りを調べなおしてみようと思います;
>>643 特定部分の色を変えるのは頂点色では無理だと学んだので
そういうものは諦めるか、2枚の画像を使って抜き色で合成でもしようかと。
もっとシンプルな方法が有れば良いのですが、今の技量ではこれが限界そうで。
ご回答ありがとうございます! orz
だからデバイス任せの合成なんて考えるから出来ないんだよ。 テクスチャそのものを自分の必要な色に置き換えるだけで終わりだろ。
646 :
640 :2009/08/16(日) 02:52:33 ID:jZle4683
>>645 多数のキャラに使うので出来るだけテクスチャデータはそのままにしたくてつい。
その手も要所要所考えて使うようにしますね。
テクスチャーを操作しない前提で人型モデルを作るとして 例えばシェーダーで特定のテクスチャーカラーを任意の色に置き換えるとかも出来るわけでしょ 肌色箇所を抽出してユーザー設定の肌色に置き換え 髪色を抽出してユーザー設定の髪の色に置き換え ってやっていくとか これらにしたってグラデーション付けること考えると一工夫必要だけど 絶対にこうってやり方は無い気がする どういう方法とってもモデルやテクスチャーの作り方に工夫が必要になると思う
で、例えば3Dモデルのスライムとスライムベスを表現するなら どういう技術が一般的なの? @テクスチャ取替え(塗り替え) Aパレット変更 ほかなんかある?
別々のモデルを用意しておく。 終了
>>649 シェーダで何をどうするんだよ
それを聞いているだよバカ
>>650 モデルって何だよ
D3Dにモデルというリソースはねえぞノータリン
夏か・・・orz
バーチャファイターの1のイメージ?
directXで表示されてる3Dモデリングのデータを抜き出すことができるツールがあるらしいんですが 何て名称かわかる人いませんか?
スレ違いどころか板違い
Pix for windowsの事を知らない男の人って…
すみません 3Dソフト(xsi)で出力したモーション付きXファイルを DirectX Viewerで見ると形状が破綻して見えるのですが、 Viewer上で壊れて見えてもプログラム上では正しく表示される事って 有るでしょうか? Viewer上で壊れていれば絶対そのまま表示されると思うべきなのでしょうか?
プログラムは自分で作るんだから自分次第。
661 :
659 :2009/08/22(土) 21:14:19 ID:qDjMgetj
>>660 なるほど。絶対ではないのですね。ありがとうございました。
662 :
名前は開発中のものです。 :2009/08/26(水) 04:13:11 ID:Tspzk4Z1
カメラのズームイン/アウト、キャラを中心とした上下左右の回転移動を作りたいのですが、 正しい計算式がわからず変な挙動をしてしまい困っています。 D3DXMatrixLookAtLHを使っているのですが、妥当な計算式の乗っているサイトや書籍を となたかご存知ではないでしょうか?
下げ忘れすいません;
大前提としてsin、cosの使い方は理解しているのか?
665 :
662 :2009/08/26(水) 14:58:06 ID:o676OPLC
>>664 すみません、サンプルコードを漁り回っていたら計算式を見つける事が出来、解決できました。
Math.hからsin() cos()はちゃんと使っていたのですが、数学的な理解をしてない所為で変な回転を続けていました;
ありがとうございました orz
666 :
662 :2009/08/26(水) 16:05:54 ID:o676OPLC
また下げ忘れ; 度々すいません;
667 :
名前は開発中のものです。 :2009/09/02(水) 22:00:28 ID:RtR61rHB
迷いまくった挙句、解決策が見つからずここにたどり着いてしまった。。 あのですね。DirectMusicってマトモに使ったことある方、 今使っている方、いらっしゃいますか? DirectMusicを使って作ったゲームって普通に動きますか? というのは、今新しいDierctXでは既にDirectSoundと一緒に XAudioなるものに統廃合されたと言うではありませんか。 そんなのつゆ知らず(アホかと)DirectMusicの機能を多用したゲームを 作ってたんですが、VC++上ではデバッグできるんですがexeファイルを起動すると DirectMusic関連のものがまったく初期化されず動かせないんです。 ちなみに当方Windows7使ってますが、XP入れてるノートに移しても 起動できませんでしたが原因は違うかもしれません。 どちらにせよこれから作っていくゲームなんでvista,7で動いてもらわないと 困るという事です。 まだ説明不足な所が多くありますが、何かヒントになるような 経験だけでもよいのでお聞かせいただけると幸いです。
昔XAudio2が実装されたときに、これは使い勝手良い最高だ とか思って組み込んでみたんだが、そのときエンドユーザーライブラリの方には含まれてないので 使えなかったんだけど、これはいつになれば使えるようになるんですかね?
PS3薄型と旧型の違い 旧型PS3: Linuxインストール機能内蔵でPS3をPCとして使うことができる。 PPC Linux用の無料のソフトがいっぱい動く。 また、Cellの開発ツールも無料で入手できるので自分でCellのプログラムを作って実行させることができる。 ドルビーTrueHD、DTS-HDMAはリニアPCM変換で対応。 HDD〜80G。実勢価格30000円程度 薄型PS3: Linuxインストール機能は除去された。 ブラビアリンク機能でブラビアと連動した電源のON OFFができる。 ドルビーTrueHD、DTS-HDMAのビットストリーム出力対応。 HDD120G。低騒音・発熱・消費電力。実勢価格29980円
そういえばそんなハードもあったっけ? 公式覗いてみたら読みにくい色彩&必要な情報に辿り着けない構成等、 色々逝かれてるw
Windows7使ってるというが・・・ DirectMusicは64Bit環境サポートしてないがそれじゃないかね? 所詮は見捨てられた技術だよ。
>>669 いつの話してんのか知らんがとっくに使えんぞ
>>673 SDK2008MarchについてるXAudio2系サンプルをSDK入ってない環境だと実行できないのですが、
これってまだエンドユーザーライブラリ側は対応してないってことでは無いのでしょうか?
対応デバイスが無いだけじゃないの?
>>674 DirectXランタイムちゃんと入れてる? COM登録必要だから
d3dx9_xx.dllみたいに実行ファイルの隣に置いておくだけじゃなくて(どのみちやっちゃ駄目だが)
インストーラーもしくはDirectSetup使わんと駄目だぞ
サンプルが古かったようです、SDK無い環境でも再生できました お手数かけて申し訳ないです
678 :
名前は開発中のものです。 :2009/09/09(水) 10:48:25 ID:v7IiPmTs
DirectMusicはバリバリ使ってる もし、初期化できなかったらDirectShowかmciで再生すればいいだけだし それぐらいはプログラムで自動切り替えしなよ
>>678 短調を長調に切り替えるとか、シーンに合わせて動的に音楽を変調している場合
mciでそれをやるのは大変じゃないの。てかそれなら全部mciでやればいいんじゃ……
680 :
名前は開発中のものです。 :2009/09/10(木) 07:26:11 ID:Ui0pocdX
げえっ、新バージョン!
ひいい。
うぇ
684 :
名前は開発中のものです。 :2009/09/13(日) 16:10:48 ID:uy2iXAkI
PCリカバリ後(XPsp3)DirectX更新で DirectX SDK Update 2006で止まってエラーになる 正常にインストール出来ませんでしたと出る
685 :
名前は開発中のものです。 :2009/09/13(日) 16:15:40 ID:uy2iXAkI
DirectXの描画処理をウィンドウプロシージャのWM_PAINTのところに書くのってダメなのかな 真っ白になって何も描画されなくなった上にボタンとかの子ウィンドウも表示がおかしくなった
描画メッセージで無限ループにハマることがある、らしい 詳しくはググれ
ググってみた DirectXで描画しても無効領域のままだからハマッてたんだね 描画処理の後でValidateRectを呼んだらすんなり動いたよ
D3DXSpriteのアルファブレンドの挙動について質問です。 DrawメソッドのColor引数に半透明(0x33FFFFFFなど)を指定すると それより奥に描画されるテクスチャ(不透明)まで半透明に表示されてしまいます。 これは意図された挙動なのでしょうか。 奥に描画されるテクスチャは不透明のまま表示させたい場合、どのような方法があるでしょうか。 環境はWinXPHome SP3/SDK Nov2008です。
690 :
689 :2009/09/17(木) 20:42:50 ID:4awen6sw
追記です。 ID3DXSpriteのインスタンスは複数のテクスチャで同じものを共有して、 Begin, EndメソッドはそれぞれDrawを複数回呼ぶ部分の最初と最後のみ呼んでいます。
画像ウプれよ。わかんねーよ。
692 :
689 :2009/09/17(木) 22:16:54 ID:4awen6sw
画像です。
ttp://dl6.getuploader.com/g/1|toollove/301/WS000000.JPG わかりにくくてすみません。
描画順は、奥から [キャラクター画像]->[カットイン背景(黒一色)]->[もや画像]->[カットイン画像]
[もや画像]のみ半透明(0xC0FFFFFF)にしていますが、
(不透明なはずの)奥の[カットイン背景]や[キャラクター画像]まで半透明になっているせいで
背景(街)が透けて見えています。
(背景のみID3DXSpriteによる描画とは別になっています)
※エンジンが吉里吉里ですが描画はDirectXに丸投げしているので問題とは無関係です。
g_lpd3dSprite->SetWorldViewRH(NULL,NULL); g_lpd3dSprite->Begin(D3DXSPRITE_ALPHABLEND | D3DXSPRITE_SORT_DEPTH_FRONTTOBACK); フラグの詳細はいま分からないけど、これは入れてある?
694 :
689 :2009/09/17(木) 23:06:24 ID:4awen6sw
>>693 ソートのフラグのほうは設定していなかったので追加してみましたが、結果は変化なしでした。
試しにDrawごとにBegin, Endを呼ぶようにしてみても変化なし。
最初から半透明(0xC0FFFFFF)を使わなきゃどうなる? 何かしら不透明で表示されるか?
>>ID3DXSpriteのインスタンスは複数のテクスチャで同じものを共有して ここがあやしい。スプライトのドローは実際、その時点で描画はしなくて、 g_lpd3dSprite->End(); g_lpd3dDevice->EndScene(); } g_lpd3dDevice->Present( NULL, NULL, NULL, NULL ); まできて、ここで描画されるから、インスタンスが共有してるのがくさい。
俺はテクスチャ自体のアルファチャネルを疑ってるよ。 使ったことがないので、確証はないが 元のアルファが半透明だと、問答無用で半透明描画されるように見える。
テクスチャ画像うpはできない? 全体うpがあれならデータの一部だけでも
>>695 不透明(0xFFFFFFFF)の場合
ttp://dl5.getuploader.com/g/1|toollove/302/WS000001.JPG 正しく不透明で表示される。
透明(0x00FFFFFF)の場合
ttp://dl5.getuploader.com/g/1|toollove/303/WS000002.JPG 正しく表示される(カットイン背景の黒も意図通り不透明で表示)。
(アルファ値が0x00のときは最初から描画しない仕様になっているのか?)
>>696 処理の流れを書き出してみました。どこか問題点があるでしょうか?
レンダーターゲットをサーフェスに設定してるのでPresent は呼んでいません。
device_->SetRenderTarget(0, surface_);
device_->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0x00, 0x00, 0x00, 0x00), 0, 0);
device_->BeginScene();
sprite_->SetWorldViewRH(NULL, NULL);
sprite_->Begin(D3DXSPRITE_ALPHABLEND | D3DXSPRITE_SORT_DEPTH_FRONTTOBACK);
//ここでまとめてDraw
BOOST_FOREACH(value_type const& drawer, container_) {
drawer->draw(sprite_); //内部で sprite->SetTransform(...) と sprite_->Draw(...) を呼んでいる。
}
sprite_->End();
device_->EndScene();
//この後、GetRenderTargetData してCPUに転送
700 :
689 :2009/09/18(金) 00:15:40 ID:sY/rjaFg
701 :
689 :2009/09/18(金) 00:18:26 ID:sY/rjaFg
誤記失礼。 × Cutin-fg-Char.png(キャラクター画像) と Char.png(カットイン画像) の二つ ○ Cutin-fg-Char.png(カットイン画像) と Char.png(キャラクター画像) の二つ なんか長々とすみません。
>>device_->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_ARGB(0x00, 0x00, 0x00, 0x00), 0, 0); ここだな。 ->Clear( 0, NULL, D3DCLEAR_TARGET && D3DCLEAR_ZBUFFER && D3DCLEAR_STENCIL, D3DCOLOR_ARGB(0xFF,0x00,0x00,0x00), 1.0f, 0 ); で、ステンシルは無視してくれ。俺はこれで半透明の表示で問題は出てないな。
フラグのBit指定なのに&&はおかしいだろ
そうなんだ。勉強になりました。ども。 ->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER | D3DCLEAR_STENCIL, D3DCOLOR_ARGB(0xFF,0x00,0x00,0x00), 1.0f, 0 ); これでいいよな。
指定の仕方はあってるけどステンシルバッファと Zバッファ作ってセットしてないとエラーで乙るぞソレ。
ステンシルはいらねぇな。 ->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER , D3DCOLOR_ARGB(0xFF,0x00,0x00,0x00), 1.0f, 0 ); これで、>>689も解決だ!直ったか?
つかー画面のクリアとポリゴン描画の半透明はまったく関係ねぇとおもうぞ
そうか。最初から考えよう。 アルファ値付きPNGとアルファ値なしの画像という点で考えると、 最初の意図した描画を実現するには、 もや画像だけアルファ値付きのPNGにする。 他は通常のPNGにする。 ドローでのカラー指定はすべて、D3DCOLOR_ARGB(0xFF,0xFF,0xFF,0xFF)にする。 こうすれば、意図通りになるはず。 抜き色は普通、(0,0,0)だよな。キャラクター矩形で透明にしたいところはこれで塗りつぶしておけばいいんだよね。
709 :
689 :2009/09/19(土) 00:06:43 ID:u6/AjfDD
昨日はありがとうございました。
あれからいろいろ試した結果、
・アルファチャネルのブレンディングを有効にし、
・不透明度が大きい方を結果のアルファ値とする
このように設定すると期待通りの動作になりました。
device_->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, TRUE);
device_->SetRenderState(D3DRS_BLENDOPALPHA, D3DBLENDOP_MAX);
ttp://dl6.getuploader.com/g/1|toollove/308/WS000003.JPG 例のごとくわかりづらいですが、
「不透明なカットイン背景が半透明になって、全体背景の街が透けて見える」
という現象が無くなりました。
>>709 なんか、もやの白が強くなって不透明に見えてるだけだね。>>692の画像と 表示のされ方は変化してないように見える。
711 :
689 :2009/09/19(土) 01:29:44 ID:u6/AjfDD
ではものすごくわかりやすい例を。
旧
ttp://dl3.getuploader.com/g/1|toollove/310/WS000005.JPG 新
ttp://dl3.getuploader.com/g/1|toollove/309/WS000004.JPG どちらもR50%, G50%, B50% の3つのテクスチャ(不透明)をこの順に
color = D3DCOLOR_ARGB(0xFF, 0xFF, 0xFF, 0xFF);
color = D3DCOLOR_ARGB(0xC0, 0xFF, 0xFF, 0xFF);
color = D3DCOLOR_ARGB(0x80, 0xFF, 0xFF, 0xFF);
でそれぞれ重ねたものです。
ソースはSetRenderStateの部分以外差異なしです。
新版では不透明(0xFF)で描画したR50%のテクスチャが
正しく不透明で表示されてるのがわかると思います。
つーか単にステート関連の設定をちゃんと理解してなかっただけじゃねえの
ちゃんと理解してたら質問にこないわな お前本当にコミュニケ−ションとか理解できないじゃねえの
>>711 分かった。意図どおりになってよかったね。謎は残されたままだが。 旧タイプは重ねるごとに透明になってるのか、不思議だね。先に 不透明で描いてるのに後から重ねると透明になっていくという謎。 最終的に合成段階でピクセルの色が決められるから、そういうことも できるのかね。加算合成?減算合成? g_lpd3dDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA); g_lpd3dDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA); こうやって普通の半透明じゃ、旧タイプみたいに不思議状態にはならないよな。 謎だ。
っていうか、ID3DXSpriteの描画の為に レンダーステートをいぢるっておかしくねーか? 何だかなー
素直にD3DXSpriteを捨てるとか
D3DXSpriteなんて使ったこと無い。 あれ、いらないと思う。
すみません。 画像保管専用用のテクスチャから、表示用のテクスチャに一部画像を送りたくて 双方をLockRect()→FillMemory()→1ピクセルずつ転送 としようとしているのですが上手く行きません。 もしかして両方LockRect()する必要なんて無かったりしますか? BMP→テクスチャなら正しく書き込めるんですが、テクスチャ同士の書き込みは初めてなもので・・ orz
なんでFillMemory? システムのサーフェイスからVRAMサーフェイスへDMA転送するメソッドあるだろ。
FillMemory・・pBits Pitchの準備でもする関数と思い込んでた。全域書き込みだったのか・・。(´・ω・`) DMA転送の意味はググっておおよそわかったけど システムのサーフェイス VRAMサーフェイス・・色々理解してない事が多い悪寒。 DirectX勉強続けるならこれくらい読んでおけ 的なWebや書籍あったら何か教えて下さい(・ω・`)
「ウマクイカナイ」という奴は、その言葉を発することで、 どれだけ解決を先送りにしているか理解していないんだろうな。 「ウマクイカナイ」と言えば、どうなってほしいのかという希望と、 現状が具体的にどうなっているのかということを説明した気になっているんだから。
>>722 ありがとうございます。早速読み始めました。
書籍でも一応学んだ部分も有るので、知らないワードはググりながら読み進めて行こうと思います(`・ω・´)
ヘルプは細かい事を調べるにはいいけど、 一連の流れをつかみにくいから DirectX実践プログラミング読みなよ。 事実上、これから始めるのがスタンダードだと思うんだけど。
helpが教科書 googleが先生
Googleは実際はただの仲介業者で、Google含めたWeb全体が先生
いやいや、実際の学校の先生も仲介役だろう 先生を含めた世の中全体が先生って解釈もあるが
>>729 アナログは細かい誤差が出るのである程度遊びをもって入力処理するのが基本。
すみませんテクスチャまわりについて2点の質問なのですが、 SetTexture関数を多用すると処理がどんどん重くなると聞き、 「連続して使う256x256のテクスチャ9枚」を切り替えまわるより 「連続ならば768x768(3個x3個)のテクスチャ1枚にした方が早い」という意味だと思うのですが テクスチャのサイズが上がると切り替えの負担は増えるのでしょうか? (例えば途中で1/9枚だけアクセスしたくて切り替えると無駄に重い など) あと、水面を表現する時は「フレーム毎に別のテクスチャ」を使って表現しようと思っているのですが、 滝など流動的なものを表現する場合、テクスチャは1枚のままで 「UV座標を操作する事で表現する」なんて出来れば負荷も下がり滑らかなアニメーションが出来るかも と思うのですが、UV座標の操作(というか抜き取りと再設定)は非現実的だったりしますでしょうか?
やってみて遅かったら考えろ
ハード次第なとこもあるから全て実測って訳にもいかないのがあれだけどな
昔のイメージだと256x256に出来るだけ収めて それの切り替え回数を出来るだけ少ないようにするってのが速かったと思うんだが 今でも底辺に合わせるならそれなんじゃねーのかな 256x256にして切り替え回数をまったく減らせないのであれば大きい方1枚がいいんじゃね?
キャッシュに入っちゃったときとキャッシュで出し入れしてるかでも違うだろ 単純に切り替えて「ああ、そうか」とか結論を出すのも駄目 つまり、シーン毎にやってみるしかない
>>733-736 色々と知らなかった事情も知れて勉強になりました。
テクスチャを展開する場所も重要な訳ですね。
ありがとうございます。
展開する場所?
>>732 UVを変化させて水流などを表現する方法は、昔から標準的に使われていますよ。
(UVスクロールなどと呼ばれています。)
単純な技法ゆえに、一枚板ポリゴン上でおこなった場合は見た目があまり面白くありません。
しかし、グラフィックデザイナーの手によるポリゴンの繋ぎ合わせ・重ね合わせの妙のおかげで、
かなり見映えのする川や炎の表現になります。
少し疑問があったので質問を。初心者ですいません。 皆さんテクスチャの画像形式は何を使っていますか? 今のところ最初読んだ本に従ってbmpを毎回dds形式に統一して読み込んでいるのですが、容量ばかり多くてメモリを喰うもので。。 ついでにddsファイルの利点も教えていただけるとありがたいです。
多少色の再現度が落ちてもいいテクスチャーはJPGにしてる。
ファイル形式変わっても、メモリを食う量は一緒じゃないの? テクスチャ圧縮とか使うならともかく。
しかも読み込みの時間も延びる(ほんのわずかだけど)
DXT、ミップマップ、キューブマップ、アルファチャンネル このへんの機能を使うならDDSオンリーになるとおもうんだけど。
>740 今のところddsで問題無いからddsでやってる。 まあ、テクスチャ合計で10MBくらいだから大丈夫なんだけど。 でも、圧縮かけてメモリ上に置いておくと、描画の度に展開すると速度が 犠牲になりそう。 シーンごとに必要なテクスチャを分けておいて、シーソ移動ごとに必要なものだけ 展開してメモリに置いとくとかすれば良さそう。面倒になるけど。
っつか普通そうするだろ
そもそも今時のGPUがつんでるメモリ量を考えての発言なのだろうか・・・。
困ったことに「フリゲは非力なマシンで動いて当たり前」と考えてるユーザーは少なく無い。
(JPGはあくまで配布の都合なんで関係ないけど)
WindowsMeで動かないんですけど?
WindowsMEとかサポートするのはただのオナニーだろ
フリゲや同人全般だと非力なスペックで動くゲームが一番人気あるからな、 その層を対象にするから中々スペック上げるのは難しい。 にしてもさすがにVRAM32ぐらいあれば家庭用ゲーには比べ物にならないぐらい潤沢ではあると思う。 よくある新しいPCなのに重いってのはノートだったりオンボだったりするのが原因だが、 これらの場合でもVRAMだけは多く取れると思う。
極限までのメモリ節約を考えないマはただの生ゴミ
すみません D3DXLoadMeshFromX で読み込んだXファイルから 「法線情報」「頂点座標」「UV座標」「マテリアルNo」 にアクセス(読み書き)する方法 を解説しているサイトをどなたかご存知ではないでしょうか?
>>754 節約するのとサポートが打ち切られているようなOSで
動くようにするのは話が違う。
いやお前こそ何の話してるんだといいたい ファイルの容量を上手く扱うための流れから勝手にズラしてるようにしか見えん
あまりに非力なスペックまで相手にするのは不毛だと思う
内容の割に不自然に重いって感じさせなきゃいいんじゃね? たいした事やってないのに、異様に重かったり 異常にハイスペックを要求したり、こういうのこそオナニーだよね。
メッシュの頂点フォーマットを設定して頂点バッファを取得すればいい マテリアルNoはたぶんアトリビュートテーブル
762 :
740 :2009/09/27(日) 19:28:26 ID:V6ttYBA5
なるほど。参考になりました。 やはりメモリ量を増やさないよう地道に努力するほかなさそうですね。。 とりあえずはddsで進めていこうと思います。 メモリ消費量に見合う処理を実現させたいですね。
763 :
名前は開発中のものです。 :2009/09/27(日) 20:05:19 ID:sIMIl1Dj
DirectXがダウンロード出来なくなっちまったが、どうしたの?
DirectXは終了しました。あしからず
DirectXってなかなかインパクトや説得力があってイカす名前だよな 誰が考えたのか知らんけど
Xファイルはドラマだか未知の謎だかで バッドネーミングかと
Directダメ、必ずデバイスドライバを通せってことだよな
マイクロソフトのX好きはMSXの昔の頃かららしいよ
XWindow
XNA使ったらあれほど手が出なかったゲームループが一瞬でできました
Xファイルからメッシュを読み込んでDirectional Lightで照らそうとしているのですが、 なぜかライトが反映されません。 アンビエントライトおよびDirectionLightのAmbient値だけは反映されますが、Diffuseはチュートリアル通りに設定しても適用されません。 ライトの方向が間違っているのかと思い、ためしにライトの方向ベクトルを回してみても変化がありませんでした。 何が悪いんでしょうか。 DXViewerでは正常にグローシェーディングで陰影がつく形で表示されました。
Attenuation とかの値は設定したかい?
>>771 そのxファイルに法線ついてる?
法線無い場合はD3DXComputeNormalsとか使わないと駄目
>>772 >>773 解決しました。
今回DXUTILのDXUTMeshクラスを初めて使ってみましたが、
SetFVFだけでなくSetVertexDeclで頂点データを定義することを知りませんでした。
設定すると無事ライティングが機能しましたが、DXUTMeshを使っていたことを記述するべきでしたね。
すみませんでした。
>>760 ありがとうございます。情報を探してみます。
776 :
名前は開発中のものです。 :2009/09/28(月) 22:45:30 ID:iTnMmDRC
今現在、3Dオブジェクトとスプライトの2つの当たり判定を取りたいと思っています。 そこで3Dオブジェクトのワールド座標をスクリーン座標に変換したいのですが、そういう変換関数ありますか?
D3DXVec3Project
778 :
名前は開発中のものです。 :2009/09/29(火) 00:44:24 ID:dMyVg2nC
>>777 ありがとうございます。
なんとかさっきその関数を見つけることができ、実現することが出来ました。
779 :
755 :2009/09/29(火) 17:40:07 ID:jAN25eYD
すみません。
D3DXLoadMeshFromX関数 から頂点/法線/マテリアル関連 の情報を取り出す為に
「ID3DXMesh インターフェイス」
http://msdn.microsoft.com/ja-jp/library/cc372520.aspx これを利用したいのですが
ID3DXMesh型の変数(?)を宣言しようとすると
>'ID3DXMesh' : 抽象クラスをインスタンス化できません。
とゴッソリエラーと警告が出てしまいます。
D3DXLoadMeshFromX関数の第8引数に渡したLPD3DXMESH型では当然「ID3DXMesh インターフェイス」は
使う事が出来ないのですが・・・どうすれば良いのでしょうか。
私はどこら辺を勉強して来ればこの辺の仕組みが解るのでしょうか orz
インスタンスはポインタのアドレスを生成してくれる関数に渡してもらうんだよ。
781 :
755 :2009/09/30(水) 03:34:42 ID:Bg91gg+z
>>780 ありがとうございました。
すみません、メンバって言葉に反応してピリオドを使ったミスでした orz
すぐ下でOptimize()でアロー演算子使って動いてるのに気付かず;
失礼しました orz
すみません、3D地面とキャラクターの衝突判定についてなのですが、 距離計算(内積)と反映までは出来たのですが、 1.衝突判定の処理軽減(判定対象の絞込み)にはどういうパターンが有るのか? 2.頂点と法線 どちらで判定すべきなのか? 3.内側にめり込む事の回避方法(尖っているポリゴンの境目からや処理落ちで等の) これらの疑問でどう作れば良いかイメージができず困っています。 基本地面を歩きまわる軽いアクションゲーなのですが、 定番の方法などが有れば教えて頂けると幸いです。
どういう地面かによるけど 当たり判定取りたいキャラの真下の高さを取得してそれと当たりを取るのが最低限だろう
>>783 そうですね、今は数段階の判定対象の絞り込みで軽減をしてみようかと思います。
ありがとうございます。
>>784 ありがとうございます。4分木・・今はキツいですが、いずれは勉強して取り込みたいと思います。
>境界球
なるほど。点じゃなくて立体で判定すればめり込み難そうですね。 試してみようと思います。
すみません プレイヤーの数倍のサイズの敵への攻撃の衝突判定をする場合 1.円柱やボックスを大まかに中心座標から置いてそれを判定する 2.頂点数を減らした透明モデルを一緒に動かして、その面から外積(?)で判定する この2つが思いつくのですが、 「低負担でそこそこの衝突判定」をする方法や理論が有れば助言頂けませんでしょうか?
当たり用の小さい球をたくさん敵につける
>>787 なるほど・・低負担でそこそこを楽に実現できそうですね。 ありがとうございましたっ
789 :
名前は開発中のものです。 :2009/10/12(月) 14:26:14 ID:puTlDpxR
WindowsへDirectX 9 と10を両方インストールして 場合に応じて切り替えることはできますか?
790 :
名前は開発中のものです。 :2009/10/12(月) 16:22:18 ID:hQMoF6vn
DirectXには下位互換があるんだから10をインストールすれば9も使える
それを言うなら上位互換
_ASSERT と assertって同じ?別物? 定義を見ると違うっぽいので違うのだろうけど、どう使い分けるの?
>>789 そもそもOSに標準搭載されているのでインストールする必要性が無い。
頂点バッファをD3DPOOL_DEFAULT、 インデックスバッファをD3DPOOL_MANAGEDで描画して 私のビデオカードでは問題ないようですが、このようなバッファの運用は 一般的ですか?
796 :
名前は開発中のものです。 :2009/10/18(日) 19:50:42 ID:lUEbzDrT
普通だよね?
別に変なことじゃないだろ
>>797 thx
frequency設定して別ストリームから合成描画する
2つの頂点バッファを別々の設定でプールしたら
バグッたんで、色々気になっていました。
すみません DirectInputでマウスのボタン操作を取得してるんですが 「マウスボタンが押されっぱなし」の状態を安全(確実)に取得する特別な方法は有るでしょうか? 変数で操作の取得毎にフラグをひっくり返し続けるだけでも 大丈夫なものなんでしょうか?(外部ソフトの負荷で処理落ちして逆さになったりしないか怖くて・・)
マウスを扱うならWin32APIの方が確実
>>800 そうなんですね。ちょっと調べてみます。
ありがとうございました。
>>799 逆さになるって意味が分からんのだが。
ボタンが押されたときと離されたときで、異なる値になるんだが。
男女男男女ですね ちがうわー ってことだろ
嬲嫐か
表示された3Dモデルをクリックやオンマウスする事で 情報を表示できる様にしたいのですけれど、 ・D3DXComputeBoundingBox()でバウンディングボックスを生成 ・その各頂点からD3DXVec3Project()でカメラ(2D)座標にする ↑の方法で合ってるでしょうか? D3DXComputeBoundingBox()が上手く行かず合ってるのか心配に。。
>>805 まあ、それで間違ってはいない。
でも俺なら、ワールド座標系で
レイを飛ばしてボックスと当たり判定をするな。
807 :
805 :2009/10/21(水) 23:26:05 ID:mh4+7PPm
>>806 合ってはいるんですね。ありがとうございます。
>ワールド座標系で
>レイを飛ばしてボックスと当たり判定
レイが何なのかわからず利用法がわかりませんが、
ベクトル計算を省けそうでこちらの方が軽く済みそうな予感がしますね・・。
ちょっと調べてみますが、少しヒントを頂けるとありがたいです。
ヒント?ググレよ
809 :
805 :2009/10/21(水) 23:48:28 ID:mh4+7PPm
あー・・ググっててなんとなくおっしゃってる意味が解りました。 失礼しました。 やはりなるべく今の自分にできる程度の事でやった方が良さそうです; ありがとうございました。
810 :
名前は開発中のものです。 :2009/10/23(金) 16:44:43 ID:IL/cHHNL
ライン描画にもインデクスって使うもん?
好きにするよろし
812 :
名前は開発中のものです。 :2009/10/23(金) 20:20:24 ID:IL/cHHNL
>>811 一般にどっちが高速か知ってる人がいたら押して欲しいっす。
自分の環境だけじゃ何とも言えないからね・・・
いや、マイナーなビデオカード使ってるわけじゃないし、
自分の環境だけでいいのかもう・・
自分の環境だけじゃ何ともいえないというのなら、 自分でテストプログラムを作って、他の人に試してもらえばいいだろう。
ラインで何書くのかしらんが、共有頂点少なくてLINESTRIPで書けるなら インデックスバッファなんぞ逆に無駄になるだろ
>>812 場合によるからその都度測るしかない
これだけ覚えておけ
な?人に聞く要素ないだろ?
816 :
名前は開発中のものです。 :2009/10/24(土) 11:36:54 ID:h8+T+axk
>>813 なるほど・・その時にはよろ
>>814 頂点を共有しないバラバラの線分を多数書きます
>>815 うんまぁ、でも一般的にindex使ったほうが早いみたいだよね。
HELPにもindexがあればデバイスは内部でキャッシュを最適化するので
高速になります・・・みたいな事書いてあったし、ネット上の話題でも
index使っとけばOKみたいな常識があるように感じました。
その常識が線分的にはどうなのか、線分描画に通じている人がいたら
教えて欲しいと・・・
だからごちゃごちゃ書き込んでいる暇があるなら、 自分の条件設定通りのテストプログラムをとっとと作れ。 怠けようとするな。
>>816 だから色々そういう要素がありすぎてわかんねぇの
そういう要素同士がかちあったときにそれのどっちがより
その場面において早くなる要素となりうるのか?
っていうのは人間の脳みそで考えるより絶対にやったほうが早いの
>>816 頂点を共有しないバラバラの線分にindexを使っても意味がないだろう。
何のためにindexがあると思っているんだ。
頂点を再利用しなきゃ負荷が増えるだけだし、その頂点キャッシュも
16頂点分くらいしかないから、考えて並べないと意味がない。
820 :
名前は開発中のものです。 :2009/10/24(土) 17:15:26 ID:h8+T+axk
>>819 >その頂点キャッシュも16頂点分くらいしかないから、考えて並べないと意味がない
なるほど・・indexバッフアァによるキャッシュの効率化って、そういう意味でしたか・・。
確かに重複する頂点がないとキャッシュの存在意義そのものがないですね。
良く分かりました。ありがとうございました。
すみません 複数のメッシュから、オンマウスしたメッシュ情報を表示する仕組みを作っているのですが、 その処理方式をどうすべきか悩んでいます。 1.普通に全対象をチェックして、ヒットした中から距離が最小の物を選ぶ 2.距離順にソートして1つヒットしたら処理を終了する 最初は2でやろうと思ったのですが、下手にソートした方が重い気がして来ました。 対象の数は多くてせいぜい200と言った所です。 1と2、どちらの方が良いでしょうか?
両方試して軽い方を利用すればいい。
>>821 そもそもデカイフィールドなんかで描画する物体を絞り込むときどうしてるの?
ちゃんとクリッピングしないとダメだよね?
その仕組みを使えばいいんだけどどうだろうか?
>>822 なるほど。とりあえずちょっといじって1を完成させるとします。
2はmapを使うか他の方法か・・考えてみます。
>>823 まだ必要な機能が揃ってない状態でして、遠すぎるメッシュの除外に
その絞込み、クリッピングをどうする(作る)か考えていました。
その仕組みによってはそれを利用できるんですね。
絞込みの方法は殆ど何も知らないので思いつく手段が少ないですが・・
ちょっと色々と調べてみようかと思います。
クリッピングというワードを頂けたので検索は捗りそうです。
ありがとうございました。
825 :
名前は開発中のものです。 :2009/10/25(日) 18:45:55 ID:mVDdBrly
ゲームでは無いのですが、DirectX7 や 9 で出来た V-syncを ON にしたプログラムを Acer の Aspire one D250 や Dell の Vostro1400 で走らせると、モニタのリフレッシュレート は60Hzなのに62fpsを示すのですが、これは仕様ですか? このような経験ありますか?
DirectXのVSYNC待ちは基本的には中でtimeGetTime()をまわして同期取ってるはず。 timeBeginPerido(1);とかで精度を上げておくとVSYNCの精度もあがったりするフェイク。
>>826 よくそういう嘘を堂々と書けるなぁ、と感心する。
ふぅ。世界は広いな。
ttp://msdn.microsoft.com/ja-jp/library/bb172585 (VS.85).aspx
解説
全画面モードでも、リフレッシュ レートまたはスワップ エフェクトとは無関係に
D3DPRESENT_INTERVAL_IMMEDIATE をサポートすることにより、
ウィンドウ表示モードと同様な使用法がサポートされます。
D3DPRESENT_INTERVAL_DEFAULT では、
既定のシステム タイマーの分解能が使用されます。
一方、D3DPRESENT_INTERVAL_ONE では timeBeginPeriod を呼び出し、
システム タイマーの分解能を拡張します。
これにより、垂直同期の品質が改善されますが、処理に時間が少し多くかかります。
いずれのパラメーターの場合も、垂直同期が試行されます。
仮にフェイクでも2.78e-4secもずれるだろうか
timeBeginPeriodしないとありえないくらいずれるじぇ。
831 :
825 :2009/10/25(日) 23:52:43 ID:mVDdBrly
お返事ありがとうございます。 timeBeginPeriod(1) は入っていました。 GetRasterStatus で D3DRASTER_STATUS の InVBlank を調べて、 D3DPRESENT_INTERVAL_IMMEDIATE で Flip をしても 62fps (61.5〜62.5fps)になりました・・・。
カザミスのがえげつないイメージ ビューネイのときは上層もやるので露骨な超絶自分勝手コマンドは自粛してるような?
すみません、誤爆しました
なんだか平気で、timeBeginPeriod(1)とか言っているけれど、 timeBeginPeriod は失敗する可能性があるんじゃないか? 環境が分からないなら、1から順番に成功するまで数値を増やして行くべきでは。 それとも昨今では1で必ず成功することが保証されているのかな?
とおもったけど、そういや、最小分解能を取得するメソッドがあったような気がする。 ずっと昔、それ使ってtimeBeginPeriodした覚えがある。
timeGetDevCapsなんとかだった気がする 間違ってたらごめんねッ☆
すみません。3Dゲームで最前面に 下の方法で2D情報を表示させています。 ------------------------------------------ IDirect3DVertexBuffer9* pVertex; を pVertex->Lock() ⇒ memcpy() ⇒ pVertex->Unlock() ------------------------------------------ しかしこれをあまり高頻度で呼び出すと 強制終了をよく起こしてしまいます。 IDirect3DVertexBuffer9* の内部数値に触らず、ポリゴンのように 描画位置を指定して変える方法は有るでしょうか?
>>837 おまえVertexBufferの中に入れてるのが変換済み頂点なんだろ?
変換済みでない頂点バッファに変えてZBufferをOFFにして扱ってみな。それでいける。
ただし、座標軸が3Dの物に変わるから、2Dとの位置合わせ用の行列を作れ。
高頻度っていっても、例えば120FPS程度でも 負荷が原因で落ちるってのは考えにくい。 やっぱ、アンタのバグのせいじゃないの?
>>837 Lock〜Unlockなんて何億回やろうと普通は問題ない。
memcpyの引数に誤りがあってバッファオーバーランしてるか、
他の部分に問題があるんだろう。
>>838-840 ありがとうございます。Lock Unlock頻度は全く問題ではないんですね。
どうやらLockの引数に問題が有る様子なので、
徹底的に調べてみます。ありがとうございました。
それ書いたやつに聞けよ そのサイトに気持ち悪いくらい親切な掲示板あるだろ
そうしまふ
SDKのDirectX End User EULA.txtをよく読め
847 :
845 :2009/11/17(火) 01:41:45 ID:UENLEXbc
>>846 とりあえず勝手に入れて勝手に配布しとけ。
そういう風に読み取りました。
ひさしぶりに来たんだがウインドウズ7が出てDiretXが11になったんだっけ? 去年くらいにはまだ9でいい、10は11の練習の奴だけやってろとか言ってたが 結局みんな11始めたの?
やべー9前提でレスしてたー(棒読み
ビルドする度にソースごとに >(一部略)directx sdk (april 2006)\include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800 この警告が出てどうにかしたいのですが pragma等に頼らず、正しいやり方でこの警告を無くす手段って有りますでしょうか?
触ってる人は既に11も触ってるだろ。 次世代のXBOXやPS4あたりがAPIとしては DirectX11世代のものになる可能性は高いし。
>>850 読めるとおりだろ・・・
#define DIRECTINPUT_VERSION 0x0800
を
#include <dinput.h>
する前に定義するんだ。
同じDirectX9のSDKでさえリリースによって書き直しが必要で、 古いSDKに戻したくらいなのに、11なんてトンでもない! てか完成してもヴァージョンアップが予想されるのに、 複数のDirectXに対応しろだなんて正気の沙汰じゃない。 うん、互換性について調べもせずに妄想でレスしてるw
>>852 再定義の警告が出るのが少し不安ですが、見やすくなりました。
ありがとうございました。
初歩的な質問ですみません。 地形の衝突判定を作ってる最中なのですが、 面法線と頂点法線にはどんな違いが有るのでしょうか?
面に対する法線か、頂点に対する法線かの違い。
なるほどぉ
>>856 さほど違いを気にする必要など無いのですね。
頂点で作ってみます。ありがとうございました。
どういう作りをしてるかによるんだろうけど 当たり判定ってポリゴン面とそれに対する何かで当たりを取るわけだろ それなら法線はその面がどの方向へ傾いてるかって意味になるわけで 当然面法線を使う
>>859 面法線を使うのですね。
実現する為の計算式も見つかり何とか最低限作れそうです。
処理軽減について真剣に勉強しないと不味そうな感が有りますが・・。
ありがとうございました。
DX10のVGAでもWDDM1.1になるとおもったらちがうんだな DX11はなるからWDDMもなるとおもってた
>>861 日本語が不自由だと日常生活も大変そうですね。
単に文語と口語を混同してるんじゃないの。
864 :
名前は開発中のものです。 :2009/11/22(日) 10:58:04 ID:FAevzJuI
ゲームを作りたくて取り掛かったものの、いろいろと分からないことがあるので質問させてください。
アウターワールドという、SFCで出た横スクロールアクションゲームがあるのですが↓
http://www.youtube.com/watch?v=LoOsXCDyASE&feature=related このような立体的でぬるぬるした、大味な表現はどのようにすれば可能なのでしょうか?
ポリゴンを作って動かしたのをあらかじめレンダリングしておいて、それをドンキーコングみたいに、
2Dのアニメーションに置き換えてるのかな?と最初は思っていました。が、Wikiによると、
>
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%A6%E3%82%BF%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%AB%E3%83%89 >本作の特徴である、2Dポリゴングラフィックや滑らかなモーションは、近年において馴染みのある3Dポリゴンやそれを動画化したムービーではなく、座標変換済み頂点設定を使用した頂点フォーマット2Dポリゴンを、リアルタイムで演算し描写させると言う手法
だそうです。
僕もこのやり方をやってみたい(深海を舞台とした横スクロールアクションゲームなので、
いろいろな光の演算をリアルタイムでやりたいのです)のですが、上で言っている原理が
いまいち理解できません。要するに、紙の上に半立体のポリゴンの物体(Z軸が画面垂直
方向(奥行き)を向いてあるものの、本格的な3Dのような大げさなものではなく、
深度値程度の簡単な値しか取らないような)を乗せて、その頂点を動かし、
その移動までの物体形態をコンピューターで補正させてるってことでしょうか?
あと、そのような複雑な計算をC++で可能ですか?さきほどポリゴンの明度・色を計算
するプログラムをテストしてみたところ、ポリゴンを35枚まで動かすのが限界でした。
ただ単に僕の光の演算のプログラムが悪いのでしょうか?
865 :
名前は開発中のものです。 :2009/11/22(日) 11:02:48 ID:FAevzJuI
ちなみにこの方式でやりたい理由は、 ・自分は絵(特に立体的な)を描けないので、大味な切り絵風の表現のほうが向いている ・アウターワールドの独特の表現が、想像力を働かせて単純に好き ・深海を舞台にしたゲームなので、光の演算に凝りたい。 具体的には、基本真っ暗な海の中で、アンコウなどが近寄るとその提灯に近いポリゴン (背景も含む)が鮮やかに浮かび上がる、というような表現をやりたい ・アニメーションを描けないので、ドット絵を一枚ずつ描いてアニメさせるより、 自動的に補完してくれるポリゴンのほうが都合がいい&見た目もやわらかい という感じです。
866 :
名前は開発中のものです。 :2009/11/22(日) 11:07:28 ID:FAevzJuI
>>864 ヌルヌルして見える事自体は、プログラム技術的なものではなく
フレームレートとモーションの問題だと思うよ。
何FPSか分からないけど動画を見たら、中割の数が非常に多いのは
分かるので。
フラットシェーディングじゃないけど、SFC版とか昔のプリンスオブ
ペルシャの動きも見てみれば、共通するものを感じると思うけど
ストレッチ&スクワッシュとかせず中抜きされてない動きなので、
たぶんあれと同じようにロトスコープ技法(実際の人間の動きを
撮影してトレースして絵に起こす)から、アニメパターンを作った
んじゃないかな。この方法だと絵のタッチに関係なく、だいたい
ああいう感じの動きになる。
動きのヌルヌル感に関しては、板ポリゴンの頂点の自由変形による
陰影のない切り絵っぽい表現手法(と言うと間違い?)自体とは直接
関係ないと思う。この手の表現やりたいなら、アニメーション…
というかモーション付けの練習しないといけないとは思うけど
とりあえずコーティングする前に、Flashとかで似たタッチで
動きを作ってみたらいいんじゃないかな。
868 :
864 :2009/11/22(日) 12:29:34 ID:FAevzJuI
>>867 どうもありがとう。
でもWikiには、「3Dポリゴンやそれを動画化したムービーではなく、
座標変換済み頂点設定を使用した頂点フォーマット2Dポリゴンを、リアルタイムで演算し描写」
とあるけど・・・。
この「リアルタイム演算」っていうのが補完処理のことだと思ったんだけど、違うんでしょうか。
確かにロトスコープ手法ならドット絵でもぬるぬるした立体の動きに見せられるだろうけど、
それだとポリゴン表現である意味が無くなっちゃいますよね。
アウターワールドは僕のやりたい光の演算まではやってないようだから、
それ以外に何かポリゴン表現にした理由があるとしたら、頂点の自由変形だけを与えて、
その中間をコンピュータに計算させる、というのではないかなあと。
(ていうか、アウターワールドがどういう処理をやっているか僕も詳しくはわからないのです・・・
すいません)
>>868 youtube見てたら、アウターワールドの開発者インタビューで
ロトスコープ手法で作ってる動画があったよ。フランス語なので
wikiの話とかの詳細は分からないけれど↓
ttp://www.youtube.com/watch?v=fUxunNnFLAA >ポリゴン数と色が少なめ、2D+3D表現なヌルヌルした動き。
動画を撮れるカメラで自分か友人が動いてる様をフィクスで撮って
それをなぞって絵に起こすかデータを取ってみるのもいいかも。
後者はいわゆる2次元モーションキャプチャだけど、3DCGでも
この方法で作品を作る人もたまにいるし、XNA用にシステム自作
している人もいるみたい(ググるとひっかかった)。
技術的な挑戦も重要だけど、ゲーム作るという事であれば
一番大切な事は見た目と動きのはずなので、別に昔の人と同じ
作り方しなくても、中身3Dで作った方が光の表現とかも含めて
多分何かと便利なんじゃないかな。
BVHとかFBXで出力して3Dのポリゴンモデルに適用して、パースなくして
カメラのZ軸方向の動き固定して、キャラ動かせば2Dになるわけだし、
シェーディングなしか自己発光100%にしてローポリ+テクスチャで細部
表現すれば、フラットでカクカクしたレトロなゲームぽい絵にできる。
DirectXとは関係ない話題なのでスレチの気もするけど。
>それだとポリゴン表現である意味が無くなっちゃいますよね。 真実はわからないけど、アニメーションのパターンをベクターデータでなく リアルタイムに作成してるのは、当時のハードでは容量足らないから… とかの理由でもあるのかも。 あと自分はリアルタイムでは知らないけれど、AMIGAのメガデモ文化は なんか凄かったらしいので、その延長での挑戦やパフォーマンス的な 部分もあるのかも。「こんなことできるんだぜ?」みたいな。 …スレチな気もするし100%想像だけど。
871 :
名前は開発中のものです。 :2009/11/22(日) 12:50:17 ID:FAevzJuI
>>869 おお〜!そんな動画があったとは・・・。ゲームプレイの奴ばっかりだと思ってました。
ありがとうございます。確かにロトスコープ手法使ってるんですね。
ちょっと手間はかかるけど、アウターの作者さんを見習って一部のシーンに使ってみたいです。
>技術的な挑戦も重要だけど、ゲーム作るという事であれば一番大切な事は見た目と動きのはず
それは本当そうだよなあって思います。RPGツクールで一時作ってた時期があったのですが、
その頃からどうも自分は「こんな機能の束縛の中でこんな表現してやったぜ!」的な、
製作者同士の技術自慢に陥りがちだったっぽいw
ただ、今回3Dを避けたかったのは、完全な3Dということになると
単純に自分に作れるか不安だったんです。「14歳からはじめるCゲーム教室」みたいな
本を見ながら作ってる20歳ですのでw2Dだけでも大変なのに3Dは・・・みたいなのがあります。
なので2Dポリゴンという言葉の響きにつられちゃったんですねえ。
でも、今からでも3Dを覚えたほうが結局は早道なのであれば、そうしようと思います。
考えたら、リアルタイムの光の表現をやろうと思えば、
結局はゲームに登場するあらゆるモデルを3Dにしなくちゃ始まりませんからね・・・。
ただ心配なのは、自分が使ってるライブラリでは3Dが表現できるか?ってことです。
DXライブラリを苦労して覚えたので、それを使ってやりたいと思うのですが、
それでポリゴンの光表現を試しに演算してみたところ、処理落ちというか25枚くらいしか
描けなかったのでw(DXライブラリというのはDirectXを使うためのライブラリという感じ)
やっぱり3Dを表現しようと思えばDirectXを直接覚える必要があるんでしょうか?
(ていうか、このスレってDXライブラリも含みますよね?別のスレで最初に質問したら、
ここで聞けと言われたのですが)
DXライブラリはDXライブラリのスレで聞けばいい。 ここで聞かれても困る
普通に製作者のサイトで聞けばいいじゃない
874 :
名前は開発中のものです。 :2009/11/22(日) 15:57:40 ID:FAevzJuI
やっぱりそうですよね・・・ 失礼しました
まあ、25枚は異常に少ないと言える。 ソフトでサブピクセルライティングぐらいやらないと 出ないレベル。
六角大王でむりやり3Dにするとか
877 :
名前は開発中のものです。 :2009/12/12(土) 12:37:43 ID:huQYKhfI
878 :
486SX :2009/12/14(月) 00:49:57 ID:GaAU2Cxl
今どうしてもわからないことがあります、環境はVC++6.0で、 DirectX8,DirectDrawをしようしてゲームを作ったんですが、今ファイルは、 マイドキュメント→redo にプロジェクト一式入ってます。ここからプログラムを 実行するには問題ないのですが、ところが、たとえばc:\do にredoまるごとコピー して実行すれば普通は実行できますよね、ところがフリーズして実行できません。 SDKはc:\mmsdkに指定してあるのに。 のろわれた?そんなことがありえるのでしょうか?
データのパスだろ。
略してデーパ
881 :
486SX :2009/12/14(月) 22:50:33 ID:GaAU2Cxl
いやいやそんな単純な問題ならとうにきずいてますよ。 今日いろいろコード消してためしたんですが、症状をもう少しい詳しく言うと。 WIN98だと問題ない。Direct3Dのコードだと平気ここが変なところ。 一番意味が分からんのが、VC++から実行すると平気だが、その生成されたプログラム を実行すると、少し動き→フリーズ→また動く どうもDirectDrawで引っかかっている可能性が強いのだが。 グラボはATI RADEON HD2400 PRO AGP 512MB 同じ症状の人いませんかね。いやな気分だOrz
とりあえずハードウェアアクセラレータ切ったらどうなるよ?
言葉で説明されてもわからんよ プロジェクト一式さらしてみ? だれか見てくれるかもよ
>>881 そのスペックのPCでWindows98って言ってる意味がわからない。
885 :
486SX :2009/12/15(火) 00:11:21 ID:uxRINvAg
>>882 そのやり方はしらない。
>>883 それはありがたいがデータ多いしそこまでやらせるわけには。
すごいコードは消したけどね。
単純にカウンタ表示させるだけのプログラムやってみた、
VC++からDEBUG版実行 1,2,3,4,5....10終了
別の位置に丸ごとコピーしたファイル
単純にENTER実行 1,2,3,4,5, フリーズ約1分かな ,...10終了
DirectSoundも同時に鳴らしてみたが両方とも正常。
計算が行われてないのか?メインループ
while(1)
{
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)){
if(!GetMessage(&msg, NULL, 0, 0))
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else{
if(dwTime>timeGetTime()){
Sleep(1);
continue;
}
dwTime=timeGetTime()+1000/50;
if(ecount<=500) ecount++;////初期時はecount=0
if(ecount>=10) endkey=1;
if(endkey==1) {DestroyWindow(hWnd);break;}
}
}
timeEndPeriod(1);
return msg.wParam;
}
きつねだ、きつねのしわざだ。
GetMessage(&msg, NULL, 0, 0)を消してみ
それはメッセージキューからのメッセージの除去とWM_QUITに反応するためにあるんだべ
DirectX 9.0cの話です。 FragmentShaderのような仕組みをD3DXに頼らずに使いたいのですが D3DXを使わないならば、相当のものは無いという認識で正しいですか?
889 :
486SX :2009/12/15(火) 22:27:27 ID:uxRINvAg
いろいろと、アドバイスありがとうございました、何度かコードを実験してみたり、情報を
模索したところ自己解決しました。
>>884 悪い言い忘れてたサブPCの事。
どうやら、グラボと相性が悪いようで、たんサイトでも同じような症状がでてる人がいました。
ベンチマークでDirectDrawの値が0になったりするそうで。他の古いXPマシンで試したところ、
正常に動くので、その疑いが固まりました。
>
>>888 普通にバイナリからPixelShaderとVertexShader作るだけだろ。
シェーダーはfxcでコンパイルしときゃいい。
DirectSoundについてなのですが、IDirectSound8::GetCaps()がE_INVALIDARGを返してくるのでまいっています。 DirectSoundCreate8()やSetCooperativeLevel()は正常終了しており その直後でGetCaps()を呼んでいるのですが・・・。 ちなみに、SDK付属サンプルのPlaySound内にGetCaps()をねじ込んでも、結果は同様にエラーとなりますが、音は正常になります。 環境は、VC++.NET 2003でSDKのバージョンはNovember 2008、カードはX-Fi XGです。
>>892 エラーの通り、引数に問題があるだけだろう。
本当すいません、構造体のサイズを設定して渡したらうまくいきました。 現在、CreateSoundBuffer()でも同じようにエラーになっているので 全然別のことを疑ってしまってましたが、悪いのは完全に己のようです。
895 :
486SX :2009/12/21(月) 00:03:01 ID:r1yQea3v
Orzまたまた私がやってきましたよと。 SDK:DirectX 8.0 OS:WindowsXP 今度は、DirectDrawを見放して、そっちょくに3Dで2D表示させることにしたんですが。 またまたトラブルにあってしまった、フルスクリーンモードでCTRL+ALT+DEL, または、ALT+TAB など、今実行している、プログラムを非アクティブにして、他の事ができると思いますが、 それが、フルスクリーンモードでCTRL+ALT+DEL,すると、強制終了できてしまいます。 メインループでPeekMessage(&msg,NULL,0,0,PM_NOREMOVE)その下 if(!GetMessage(&msg,NULL,0,0)) break; これがまずいのでしょうか?
デバイスロストでググれ
>制終了できてしまいます。 出来るんなら別にいいだろ。
898 :
486SX :2009/12/21(月) 15:50:06 ID:r1yQea3v
>>896 ええもちろん、認知しているし、その対策はうってあるんだけど、
戻るとDirectInputが使えなくなる、Acquireしても解決できなく、電源を落とすはめに
なってしまう。
>>897 どのゲームでも、一時中断できますよね、ウィルスソフトの定期診断などが
発生してしまうと、急に落とされる可能性がでてきます。
出来ると言っているんだから、自分が意志を持ってやった結果だろ。 いったい何が不満なんだ?
900 :
486SX :2009/12/21(月) 21:23:20 ID:r1yQea3v
>>899 人に聞く前に、俺もがんがらなければいけないんだけどさ、
強制終了できてしまう問題、つまり普通のゲームでは、CTRL+ALT+DELすると、
最初に今のプログラムが最小化されるだけで、終了にはならないOSがXPとか、
今の状態はそれがない状態で強制終了されてしまっていた。
しかし、3時間かけてやっと自己解決できました。問題は、やり方。
フルスクリーンからCTRL+ALT+DEL すると、なぜかループをぬけるか、
へたをすると、画面が真っ暗になってしまいました。
しかし、フルスクリーンから次にウィンドウモードに切り替えて(アクティブかどうか監視も重要)
表示するときにShowWindowを使い最小化することで、CTRL+ALT+DELがよくあるゲーム
と同じように動作するようになりました。
デバイスロストには2種類の動作があってなw 多分、もう一つのほうは解決できてないなw
こいつの日本語はよく分からない。。。。。。。。 統合失調症か何かなのだろうか。。
病気かどうかはともかく、SOVがはっきりしない文章は読み辛いね。
すみません。モーションとモデルを別々に管理したくて アニメーションセット(LPD3DXANIMATIONSET)という存在を知ったのですが、 アニメーションコントローラでもモーションの管理は出来る?のに、 なぜ複数管理などになるとアニメーションセットを同時に利用するのでしょうか? その違いや解説のサイトが有れば教えて頂けませんでしょうか。 よろしくお願いします。orz
D3DXに頼らず、ファイルの読み込みから描画まで自分でやってみれば分かるよ。
906 :
486SX :2009/12/22(火) 23:33:21 ID:etglg5gy
>>901 そうだね多分まだまだ隠れた問題があると思うよ、
>>902 人に何を伝えたいかがうまく説明できないんだよね俺は、
てか最近ウツっぽいんだ、何をするにも、きずくと何か考え込んでいる
時がある、大事な事をすぐ忘れたりさ、これが病気の初期症状につながるのかな〜?
>>905 ふむ・・。ありがとうございました。
今回は何とか疑問点の解説は見つけられました。
すみません。DirectX9(April2006)を使っているのですが、
D3DXLoadMeshHierarchyFromX()で読み込んだモデルを、同一ファイル内の別モーションへ
切り替えるには、どうすれば良いのでしょうか・・ orz
数日前から、
ttp://marupeke296.com/DXG_No37_AnimationController.html ここや
LPD3DXANIMATIONCONTROLLER、LPD3DXANIMATIONSET、SetTrackPosition()、AdvanceTime()
などのワードでググって見つかったページを漁っているのですが、結局答えを見つけきれません。
いっそ1ファイル1モーションにしてしまえば現状でも制作は出来るのですが
メモリを浪費するだけなので、どうにかしたくて困っています。。
同一ファイルに含まれるモーションへ切り替えるだけで良いので
ヒントを頂けませんでしょうか、
どうか、よろしくお願いします・・ orz
>>908 そのページにアニメーションの切り替えってあるけど
それじゃダメなの?
というかそのサイトの掲示板で聞けばいいのでは?
最近、DirectXを始めたのですが、レイを使ったオブジェクトとの衝突判定がいまいちよく理解できません。 どこか詳しく解説されてるサイトなどがあったら教えて下さい。
>>909 そのページの内容は大よそ解ったのですが、
実装しようとすると色々な宣言部分がわからず、局所的に取り込む事も上手く行かずにいます。 orz
そうですね・・そちらで聞いてみる事にします。 ありがとうございました。
>>910 D3DXIntersect()でLPD3DXMESHにレイ飛ばすけど、ローカル座標に飛ぶから
D3DXMatrixInverse()で逆行列を掛けなきゃとかだったはず。
何かググるヒントにでもなれば。
913 :
マサヒロ :2009/12/25(金) 13:38:33 ID:Ei7sl9lE
マサヒロ参上
oi おい今DirectXダウンロードできなくて困ってるんだが 誰かインストーラだけ持ってたらうpしてくだしあ;;;
DirectXならOSに最初から入っている。 インストールする必要はない。
>>912 ワールド座標のレイを作る。
交差判定したいモデルはローカル座標。表示させるときにワールド座標系にしている(GPUが)。
座標系があっていなければ当然交差判定など出来ないから、
1.モデルの全頂点をワールド座標系(CPUが)にして交差判定
2.レイをモデルのローカル座標系にして、交差判定
のどちらか。
1は全頂点をCPUで座標変換しなければいけないのに対し、2ではレイだけ変換すれば済む。
ワールド座標から、ローカル座標に変換するには、モデルを表示させるときのワールド行列の逆行列を作り、それで変換する。
すいません質問です。 グローシェーディング時の滑らかに表示する最大角度を設定するには、どうしたらいいんでしょうか
>>918 サンクス。単純な方法では無理っぽいですね。
やっぱりモデル側で切り離しといておくのが一番手っ取り早いか。。。
directxで点や線を描画するには、いちいちdrawprimitiveup使ってやるの?
>>920 Direct2DまたはDrawPrimitiveUP。
すみません。モーション再生についてなのですが、 初回は SetTrackAnimationSet するだけでモーションが再生されるのですが 途中でモーションを切り替えようと SetTrackAnimationSet で別のモーションをセットしても モーションが切り替わりません。 なにか手続きをしないと変更できないらしい事まではわかったのですが、 上手く行く方法が見つからず・・。自己解決できるよう頑張ってみますが、ご助言を頂けると幸いです。
>>922 トラックのEnableとかSpeedを設定してもダメ?
>>923 ご助言ありがとうございます。
D3DXTRACK_DESCの意味がググってみたものの、Weight以外全く解らず
その2つは未設定のままSetTrackDescしていました。
とりあえずEnableにtrue false Speedに1.0 0.0を入れて試してみましたが
やはり初回起動時のみしか選んだAnimationSetが再生されてくれない様で・・
ミキサーを使ってしまっているのでミキサー関連のコードを外して再度試してみようと思います。
925 :
923 :2010/01/10(日) 01:29:47 ID:fAiZ+KBs
>>924 そうかー。
自分も最近、初めてアニメーションコントローラに触れたんだけど、
TrackDescがどうも思い通りに操れなくて、結局キーイベントを使った方式にしたよ。
これ、すごく便利で、アニメーションの移行とかが、とてもスッキリしたカタチで記述できる。
最初は意味が分からずに戸惑ったけど、今はこれ以外の方式でやる気が起きないw
だから、キーイベント方式もよかったら検討してみて。
参考になるサイトとしては以下がイイと思う。
ttp://ameblo.jp/amayumi/entry-10025850497.html あとはDirectXSDKに付属のMultiAnimationサンプル中にあるTiny.cppの記述も参考になるよ。
>>925 ご助言ありがとうございます。
あれから仰る通りMultiAnimationサンプルのAnimationContorollerを見回したり、頂いたURLを見たりして
AddRef Releaseを使ってないのが悪いのかとあれこれ調べたり、
AnimationContorollerのメンバ全部に目を通したりした結果、
GetAnimationSetを呼ぶ事で、なんとかモーションが切り替わってくれました;
何か私の認識不足、勉強不足な気がヒシヒシとします;
まだコードがごちゃっているので明確な結論は出せませんが、結論が出たら一言だけ報告しようと思います。
ありがとうございました。o(_ _)o
927 :
名前は開発中のものです。 :2010/01/13(水) 12:58:58 ID:b/PQw5gR
質問です。 画像などをロードするとっきって、パスをいつもちまちま指定しないといけないのでしょうか? 例えば、画像をロードする場合、 Load("Data\\img\\hoge.png"); みたいな感じではなく、単に Load("hoge.png"); のようにロードできたら楽なのになぁと思った次第です。 ファイルが増えるに従って、管理がしやすくするためにパスも長くなっていきますし……。 もちろん自分でパスをセットしてくれる関数を組むのもアリなのですが、 VC#みたいに、リソース追加&ファイル名指定でさっくり使えたら楽だなと思ったので……。 リソースからの読み込みができる関数はみつけたのですが、 IDでの指定なので、どのファイルがどのIDなのか覚えるのが面倒となってしまい使いにくいorz
928 :
名前は開発中のものです。 :2010/01/13(水) 13:00:23 ID:b/PQw5gR
誤爆スマソorz
カレントパスを変更しろ
DirectXとOpenGLを同時に使用する事はできますか? 双方を使い、同一ウインドウに描画とか。
なんでそんなことしたいんだろう?
そういうのがカッコイイと思う痛い時期があるんだよ若い子には。
意味がないよな
DirectXならばもちろん同時使用できるよ Direct3Dだとどうだったかな
DirectInputとかDirectSoundとかを言ってることもあり得る
/ ::::::::::/ /:::::::::::::::::::::::::::::::/ '!::::::::::::.. \ /.:/::::::::::::::ケ---i::::::/::::/:::::::::::::/-''' ̄ヽ::i;;:::::::::::. ヽ //:::::::::::://_____|::://!:::::::/:/ 'i:!,ヽ:::::::::::::..i, / |:::::::::/ !:::::::::::::/:::::/::://:/ ___ニ !:| 'i::::::::::::::::i |::::::/ |:::::::::::::::::::::i:::/ !/,.=''"_,,,,,、`' !| '|::::i::::::::::} ヽ::{ .|:::::::::::::::::ミi:/ / /::::::::゚::i i::||:::::i:::| ヾ |:::::::::r-ヾ ..... ヽ::::::::::/ ニ!,|:i::|::::| !:::::::i ) :::::::::::: `''''" /::゚i |!i|/::i!:{ |:::::! ( ''''' !:::ノ !./::i!:| ` !:i:::`ヽ,,_ ' ../:i:::| ` `'丶:::::::ヽ :::!v `' ヽ!i;::::| ,i ヽ| r'フ / <いっばちゅぅ? | `┬...,,,,,,,... - '" r--ン |`' _,ノ `ヽ _ ヽ __ /=-ー 、 ヽ ` - ` y `.,, /" '{!,: : : :丶,、 \ / _,}、 / {|: : : : : : : :`: :-i--X--::'": :.i}ヽ
939 :
名前は開発中のものです。 :2010/01/17(日) 02:33:22 ID:6/wwrOJ+
質問です。 Direct2Dを使って、WPFのドロップシャドーみたいな影を表現する方法ってありますか?
質問です。 XP環境でC#+MDX使って2Dのゲーム作ってるんですが、 vistaの64ビットだとまったく起動せず、 vistaの32ビットだと、マシン(実行環境)によって 1.普通に動作する。 2.ウィンドウモードだと普通に動作、フルスクリーンで処理落ち という2パターンの動作が起きます。 特に2のほうは、自分の頭では理解不能でここは普通逆の現象が起きると思うんですが 誰か詳しい方教えていただけないでしょうか?
起動に関してはデバッガを使って落ちているところをちゃんと調べたのか?
942 :
940 :2010/01/18(月) 13:13:38 ID:rrSRKZvD
vista64のほうは手元に環境がないので動作テスト用に作ったものを渡して試してもらった。 なのでデバッガ使って調べてはいない。出先なのでエラーの詳細は書けない(メモ持ってない)。 「不正なwin32アプリです」的なエラーが出るそうだ。 プロジェクト出力もインストーラもvs2008で作成し vistaなら入ってるだろうとは思いつつも 必須コンポーネントとして.net Frameworkやら何やらも含めてある。 vistaについての理解が乏しいのでたぶんアホなことをしてるんだと思うけれど、 32bitだと動いて64bitだと動かない。32bitエミュの仕様なのかな〜程度の認識。 あとフルスクリーンで処理落ちも、普通逆だろ!?程度の認識。
あーMDXとかのDLLは32bitなので C#で作る時は、AnyCPUじゃなくてx86にしないと64bit環境じゃ動かないよ。 x86は構成マネージャから新規作成で追加できる。 この問題があるからVisualStudio2010からはアプリのデフォルトがx86になった。
あ、ついでにEXEとかができる場所は bin\Release → bin\x86\Release になるからコピーするとき気をつけて
945 :
940 :2010/01/18(月) 14:31:22 ID:rrSRKZvD
ありがとうございます。 戻ったらさっそく変更かけて再テストしてみます。
フルスクリーンで処理落ちするってのは無駄にvsync待ってるんじゃないかな
すみません。3Dキャラクターの2D座標を D3DXVec3Project で生成しているのですが、 カメラの外(特に裏側)のキャラクターの2D座標を作ると異常な値になるので 視野のキャラクターのみに絞込みをしたいのですが、上手く行きません。 今はカメラの向きベクトルと、カメラから対象モンスターへのベクトルから 平面的に角度を計算して・・なんて事をやっていたのですが、 カメラを引くとそれじゃ上手く行く訳が無い事に気づきまして・・orz レンダリング時の視野内かどうかの絞込みを利用できたら簡単かつ確実な気がするのですが、 さすがにこれは簡単には利用できないのでしょうか? 些細な情報で構いませんので、教えて頂けますと幸いです。
>>947 とりあえずカメラの前にいるか後にいるか判定すればよくね?
内積でできるけどそれでうまくいかないって言ってる?
>カメラの前にいるか後にいるか判定 (;・Д・)な、成る程! ちょっと内積の復習してきます。ありがとうございますっ orz
すみません。 3Dゲームで「キャラクターの頭の上」に名札を表示させる場合、 一枚の画面最前面の板ポリゴンに書き込むのではなく 「名札がキャラ同様に、地形にも隠れる」演出をするには、 ポリゴンを頭上に置いて描くしかないのでしょうか? 何か別の方法が有ったりしますでしょうか。
頭の上に普通にポリゴン書けばいいだけじゃん。 地形に隠したりするなら他の方法は激しく面倒だと思うが。
>>951 >地形に隠したりするなら他の方法は激しく面倒だと思うが。
やはりそうなのですね。ありがとうございます。
>>952 ですね。何か他に負荷の低い方法が有れば・・と思いましたが
表示量を絞るなりで対応しようかと思います。ありがとうございました。
ビルボードなんてモデル出すより遥かに負荷低いだろw 1文字ずつDrawPrimitiveしないで、画面全部の文字まとめて1回のDrawPrimitiveで書けよ。
何が負荷だと思ってるのかさっぱりわからないけどなw
>>954 1キャラ単位でDrawPrimitiveする形で作ってました・・
重い処理だとはかねがね見聞きしていましたが、
まとめる方法が有るんですね。 ちょっとやり方を探してみようかと思います。ありがとうございます。
>>956 多分必要になるw
ワールド変換 → ビュー変換 → 射影変換 → ビューポート変換
ワールド変換でワールド座標(ワールド座標)
ビュー変換でカメラ座標(カメラのローカル座標)
射影変換で同次クリップ空間(xyが-1〜1になるzは0〜1)
ビューポート変換でスクリーン座標(スクリーンの座標になる)
>>950 キャラクター位置(より少し上か)の3D座標をスクリーン座標に変換(z値もしっかり非同次化)。
変換後の座標を元に、名札大のポリを作成する。
もちろんスクリーン座標系での話だから、任意の大きさにするのは簡単。
名前を描いたテクスチャ(普通は名札ポリと同じ大きさ)を、名札ポリに貼りつけて、
トランスフォーム・ライティング済みのポリとして描画すればZバッファも反映される(隠れる)と。
これが一番簡単じゃないかな。あちこちで処理も省けるし。
ビルボードだと文字の大きさが変わるか、或いは手間かけた割に読みづらくなるよ。
>>957 ありがとうございます。
>>958 詳細な説明ありがとうございます。
>(z値もしっかり非同次化)
の非同次化とは3D→2D? 0.0fで大丈夫でしょうか。
>トランスフォーム・ライティング済みのポリとして描画すればZバッファも反映される(隠れる)と。
私が唯一知ってる平面ポリゴンの描画方法は、FVFに D3DFVF_XYZRHW を当てる事なのですが、
これだとZ値が0〜1までしか描画されないようで、Zバッファの反映が望めず・・
せっかく答えを書いて下さっているのに、やり方が・・|||llorz
元々の3次元座標を座標変換してWで割ったらZの値は0〜1の範囲になるんだ 問題ない
>>959 0.0fじゃないですよ。960氏の言うとおりにすれば、z値は0〜1に収まるので、
その値を頂点バッファのz値に。あとは大丈夫そうだね。
>>960-961 テストして上手く行きました、ありがとうございます・・!o(_ _)o
D3DXVec3Projectメソッドの第一引数が3次元ベクトルなのは
この為だったのですね・・。ご助言頂いた方々、本当にありがとうございましたっ orz
963 :
名前は開発中のものです。 :2010/02/03(水) 14:24:41 ID:Hfya6LBn
ちょっと質問させてくれ。というか無恥な俺にアドバイスをくれ。 VS2008のC#で組んでるんだが、思うように文字が表示できない。 以下コード private Microsoft.DirectX.Direct3D.Font DisplayFont 〜略〜 private void CreateFont() { FontDescription fd = new FontDescription(); fd.Height = 16; fd.FaceName = "HGP創英角ポップ体"; DisplayFont = new Font(DrawDevice, fd); } 〜略〜 public void TextsSetting() { DisplayFont.DrawText(null, "Hello World", new System.Drawing.Point(16, 16),System.Drawing.Color.White); } という感じで画面にHello Worldを書きたいのだが、 MSゴシックやMSPゴシック、MS明朝みたいな当たり障りのないフォント以外は認識されない HG丸ゴシックや、HGP創英角ポップ体を指定するとPゴシックにされてしまう。 フォント名はWordとかの書式設定の指定コンボボックスからコピペしてるんで、 全/半角が違うとか、そもそもそのフォントが入ってないとかいう問題ではないハズなんだが MSゴシックやMS明朝は正常に表示されるので、 これらに関しては上記コードの指定方法で問題はないんだと思う。
それは.NETのFontクラスの使い方であって、完全にスレ違い。
965 :
名前は開発中のものです。 :2010/02/03(水) 15:05:47 ID:Hfya6LBn
>private Microsoft.DirectX.Direct3D.Font このFontクラスはDirectXのクラスじゃないってことか? >FontDescription こいつもDirectXを追加しないと使えないモノなんだけど・・・ 完全にスレ違い?
ってCharSet指定してみそ。 これで治らなかったらあっちで改めて。
968 :
名前は開発中のものです。 :2010/02/03(水) 15:47:08 ID:Hfya6LBn
>>967 ありがとうございます。
しかし、申し訳ないが理解できません。
CharSetて、dllImport使うときに指定するやつかね?
この場合「fd.FaceName="***"」こいつに使うことになる?
それとも文字のエンコードとかを指定しろってことですかい?
>>963 のコードに
fd.CharSet = CharacterSet.ShiftJIS;
とか入れろって言ってるんだが。
970 :
名前は開発中のものです。 :2010/02/03(水) 15:58:45 ID:Hfya6LBn
これは失礼 FontDescriptionメンバにCharSetがあるのに気がついてなかった。 試してみるよ。ありがとう。
すみません、現在テクスチャは全てBMPで読み込んでいるのですが、 偶に見聞きするDDS TGA HDR?というのはBMPより高速に読み込めるのでしょうか? 結局読み込んだ後の速度は変わらないのだと思うのですが・・ テクスチャにBMPをあまり見かけないのは、これ以外にも理由が有るのでしょうか?
BMPはアルファ値が使えないから 半透明のテクスチャなんかを使う場合に他のフォーマット使う
BMP=圧縮なしだからファイルサイズがでかい ってイメージがある 実際は圧縮とか出来るのかな?
BMPにも簡単な圧縮オプションがあったような・・・ まぁ、でも普通はサイズデカいから使わんわな。 ランタイムでの速度よりも、配布時のサイズの観点からBMPはあまり使われんのだろうね。 あと、アルファは32bitBMPだったら使えるんじゃなかったっけ??
アプリとして公開するときにデータ直置きだとアレなので 独自で圧縮したファイルを読み込んで展開してテクスチャにってやれば データ直置きも避けられるし、読み込む速度にフォーマットによってそれ程大きい差も出なくていいと思うんだが
>>972-975 ありがとうございます。32bitBMPでアルファを使う事は成功してますね。
そして問題はサイズの方っぽいんですね。
アルファ対応で小さめで読み込み対応の形式・・ちょっと調べてみようかと思います。
ありがとうございました。
「DirectInput を使うとレジストリ登録される」は知らんかった 再ビルドする分でものすごい量になってた
>>977 アンタのレスみて俺も確認してみたが・・
ものすごいことになってたww
殺すぞMSww
正確には「DirectInput8Createで初期化すると」だけどな
俺もひどいことになってたw
重複しない方法とかみつけた。
ttp://d.hatena.ne.jp/Niqnem/20080709 DirectInput8Createを使わずに、
CoCreateInstanceを使って生成すればいいって記事もみて、
そのとおりにしてみたら、どうも初期化に失敗してしまった。
簡単に試しただけだからよくわからんが参考までに。
981 :
名前は開発中のものです。 :2010/02/08(月) 14:15:14 ID:4VRGw2Nq
すみません、テクスチャを描くだけの「ただの素材画像」をテクスチャにしておくのって、無駄でしょうか? 一々両方LockRect〜UnlockRectしてると余計な負担が有りそうな疑問がふとよぎったのですが・・。
下げ忘れ失礼しました orz
ところで、 CoInitializeEx(NULL, COINIT_MULTITHREADED); …でCOMの初期化をしたDirectXアプリをPIXで動かすと、CoInitializeExがRPC_E_CHANGED_MODEを返してうまく動作しないようなんだが、これ仕様なのかね。 CoInitializeだと問題ないようなんだけど…
CoUninitializeもよろしく
COMだのOLEだのActiveXだの 反吐が出るほど嫌いなんで 出来れば使いたくない
DirectInput以外でマウスホイールの回転を直接取得する方法ってありますか? WM_MOUSEWHEEL経由して取るしかない?
>>986 Raw Input
ホイールに限らず、マウスの生のデータが欲しいときはこれを使う。