C#でDirectX9 初心者の館
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGGDIと違ってドキュメントも難解で何をすれば描画できるのかさっぱりさっぱりなライブラリです。
その上知っている人はレベルが高すぎて聞いても宇宙語でしす(泣
そんなDirectX9を将来に備えて勉強してみようというスレです。
Microsoftの掲示板
http://www.gdncom.jp/general/bbs/ShowForum.aspx?ForumID=29
SDKをダウンロードできるところ
http://www.microsoft.com/japan/msdn/directx/downloads.asp#CDasp#CD
0611デフォルトの名無しさん
NGNGどっか立ち読みで確認できる本屋の情報きぼん
0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNG気になるなら、amazon.comのほうのレビューを読んでみたらどうかな。
0615デフォルトの名無しさん
NGNG技術情報を得るのにケチるなよ。
0616デフォルトの名無しさん
NGNGデータをヴュー変換後のモノとして扱えばそれで2Dな訳だ。
Object Space
↓
World Space
↓ ← Model-View/World 変換
Camera Space
↓ ← Projection 変換
Homogeneous Space
↓ ← Viewport 変換
Window Clipping Space
(これが実際のウィンドウでの座標になる)
Managed DirectX では
CustomVertex . TransformedXXX となっているのがヴュー変換後の座標値。
CustomVertex.Transformed
CustomVertex.TransformedColored
CustomVertex.TransformedColoredTextured
CustomVertex.TransformedTextured
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNG>ヴュー
ワラタ(失礼)
0619508
NGNG0620デフォルトの名無しさん
NGNG2003年10月号?
ほかにもあるなら教えてけれ
0621デフォルトの名無しさん
NGNGここの管理者が書いてる。
何度か特集があったんで立ち読みしてきたが、
これのために買うくらいなら、ヘルプ、サンプルを眺めたほうがよっぽどまし、なレベルだ。
0622デフォルトの名無しさん
NGNG2004/03 学校の図書館でコピーしたのを持ってるから間違いない。
0623618
NGNG結構前だった気がする。ということで検索したら2001年10月号だった。
ttp://www.cmagazine.jp/contents/200110.html
当時はEnter the 3D Programmingなんかも連載していて参考になった。
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNGそろそろ和書も多くなっていいと思うけどなぁ。
0626デフォルトの名無しさん
NGNGvs.netのDirectXウィザードで作られたアプリがビルドできなくなった。
名前空間がないとかどうたら言われて・・・
0627デフォルトの名無しさん
NGNGリリースノートくらい読めよ・・・
マルチくらい自覚しろよ・・・
0628デフォルトの名無しさん
NGNGやり方知ってる方います? スクリーン座標と地面座標の合せ方がちょと
わからないんですけど・・・。
0629デフォルトの名無しさん
NGNGあと地面は平坦か?
ぐらいは書けよ…
0630デフォルトの名無しさん
NGNG0631デフォルトの名無しさん
NGNG0632デフォルトの名無しさん
NGNGこっちのほうが正しくねえか?
説明の文章をまともに書けない奴は、プログラムもまともに書けない。
0633610
NGNG本当に助けてください・・・。
あれからずっとプロジェクトのところにDirectXという項目を追加させるための設定をいろいろ見ていましたが
やはりいまだにできません・・・。
ttp://www.plustarnet.com/aspil/Programming/
ttp://www.wander.jp/dotnet/index.html
を見ても解決できませんでした・・・・。
これ以上打つ手がなくて困っております・・・。
本当はあるんでしょうが、私の実力だともう限界です。
設定でなにやってんだ?って感じでしょうが
教えていただきたく存じます。
0634デフォルトの名無しさん
NGNG0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNGどちらも可である可逆式ですか・・?
例えばあるメッシュが表示されてたとして
スクリーン座標(X,Y)にはそのメッシュが表示されているか調べるメソとかないんでしょうか
あるいはあるメッシュのスクリーン座標(X,Y)を返すメソとか
0637デフォルトの名無しさん
NGNG0638デフォルトの名無しさん
NGNGあれ?ウィザードには追加されないんですか?
そうだったら・・・・なんて無駄な努力を・・・・。
申し訳ありません・・・・。
その参照の設定というのを教えてもらえませんでしょうか?
0639デフォルトの名無しさん
NGNG0640デフォルトの名無しさん
NGNGプ
0641デフォルトの名無しさん
NGNG>>480-481
とかじゃ駄目?
0642デフォルトの名無しさん
NGNG0643デフォルトの名無しさん
NGNG最新版のSDKじゃなくて
一つ前のやつ(summer2003update)を入れればウィザードが出ますぜ。
購入した本がウィザードがあることを前提にして解説してたもんで
summer2003で学習してますが・・・
いつか最新のSDKに切り替えないとまずいんでしょうね。
0644デフォルトの名無しさん
NGNGどこをどうやったら半透明になるのかサッパリわかりません。
半透明の設定はどこを設定すればいいのでしょうか?ご教授をお願いします。
0645デフォルトの名無しさん
NGNGマテリアルのアルファ値をさげればよろし
RenderState.AlphaBlendEnableもかえる
0646デフォルトの名無しさん
NGNGデバイス.RenderState.DestinationBlend=Microsoft.DirectX.Direct3D.Blend.InvSourceAlpha;
デバイス.TextureState[0].AlphaOperation= Microsoft.DirectX.Direct3D.TextureOperation.Modulate;
ブレンド設定とか αオペレーションの設定も必要〜
と追加してみるてすと
0647デフォルトの名無しさん
NGNG0648641
NGNGおお!
これは気が付きませんでした・・。
できました!!
ありがとうございます。
でもなぜ2004だとウィザードに追加されないのでしょうね。
やはり最新バージョンの2004で勉強していったほうがよいのでしょうか?
2004はどこか変わっていたりするんでしょうが、どっちの方がいいのかなと・・・。
0649644
NGNG645
> マテリアルのアルファ値をさげればよろし
マテリアルのメソットにアルファの値を入力できるような項目がないのですが・・・。
0650645
NGNGmaterial.Diffuse = System.Drawing.Color.FromArgb(128, 255, 0, 0)
とか
>>646をやればアルファ下げる必要はない気もする
だめならとか
device.RenderState.SourceBlend = Blend.SourceColor;
device.RenderState.DestinationBlend = Blend.InvSourceColor;
0651644
NGNGできました!!
おかげさまで助かりました。ありがとうございます。
0652デフォルトの名無しさん
NGNG>でもなぜ2004だとウィザードに追加されないのでしょうね。
メンテが大変だからウィザードはもう作らない、サンプルexeからプロジェクトをインストールしてくださいな、
みたいなことがリリースノートに書いてあった気がしますが。
うろ覚え。
0653デフォルトの名無しさん
NGNG線形代数と微分積分位でしょうか?
空間図形は役に立ちますかね・・・。
0654デフォルトの名無しさん
NGNGttp://yaneu.com/yaneurao/3dcg/
0655デフォルトの名無しさん
NGNGとりあえず線形代数だけわかっていれば問題ない。
微分積分はまじめに計算することはめったにない。
たいていコンピュータ向けの解法をつかう。
たとえば微分だと極小区間の単純な差分で求めたり
積分でもモンテカルロ積分をつかったり。
0656デフォルトの名無しさん
NGNGレスどうもです。
とりあえず、線形代数から学んでみようと思います。
0657デフォルトの名無しさん
NGNGが工学社からでるらしい。
0658デフォルトの名無しさん
NGNGhttp://www.esbooks.co.jp/books/detail?accd=31431355
これですね。
本屋さんでみかけたら覗いてみます。
0659デフォルトの名無しさん
NGNGDirectX9 3Dゲームプログラミングって本、アマゾンで
買っちゃったんだけど、インキネ技を上下巻にわけて
延々と解説してる。もうちょっと書く事あるんじゃないかと・・・・・・。
ステップ・バイ・ステップなのはいいんだけどさぁ。
俺はEric Lengyelの数学本だけでよいや。
シンプルにまとまってるし、そこそこ内容も詰め込まれてる。
ttp://www.amazon.co.jp/exec/obidos/ASIN/1584502770/qid=1095931465/sr=1-2/ref=sr_1_2_2/249-9283699-1129136
0660デフォルトの名無しさん
NGNG0661デフォルトの名無しさん
NGNGその本、和訳版でてるよね。
ゲームプログラミングのための3Dグラフィックス数学
ってやつ。
ある程度数学わかってないと、初心者には難しい。
0662デフォルトの名無しさん
NGNGだよね。本屋でDirectXのコーナーを見てると鬱になる。
「俺がもっとましなヤツ書いてやるぜーっ!」って思う。
0663デフォルトの名無しさん
NGNG確かに、その人の本はどれもおすすめできないね。
特にこの本の第一章は、読んでると腹の底からモーレツにムカついてくる。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4875934998
0664デフォルトの名無しさん
NGNG和訳版は一応でているが、
値段がべらぼうに高いのに、それに見合うだけの内容が全然ない。
紙面のマージンをべらぼうに取りすぎ。
0665デフォルトの名無しさん
NGNG洋書のおすすめの書籍って何かありますかね?
Game Programming Gemシリーズが有名みたいですが。
0666デフォルトの名無しさん
NGNG純粋にアルゴリズムについて調べたければ、ゲームの枠に虎割れてはいけない。
数学とかソフトウェア工学とか、学会の論文を当たってみても、
金を斯けずともおいしいものはゴロゴロと転がっている。
0667デフォルトの名無しさん
NGNGレンダ毎に
Device.RenderState.ZBufferEnable=true;
としてやっているのですが、
後から描画したオブジェクトがZ-Bufferを無視して
前面に描画されてしまいます。
考えられる問題点としてどのようなことが挙げられるのでしょうか。
宜しくお願いします。
0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNGDevice.Clear()でZBufferをクリアしてない。ってのは?
0670デフォルトの名無しさん
NGNG0671667
NGNG>668
マトリクスと使っていないというのは、
具体的にどういう状況を指しているのでしょうか。
>669
レンダ毎に
Device.Clear(ClearFlags.Target|ClearFlags.ZBuffer, Color.DarkBlue, 1, 0);
とやっております。引数に何らかの問題点が…?
>670
ポリゴン数が多すぎるのも原因になるのでしょうか。
およそ、400,000ポリゴン使っております。
0672デフォルトの名無しさん
NGNGその設定だったら問題なさそうなんだが
そいうときはもっと簡単な手法で確認すれ
例えばチュートリアルの三角形やら虎メッシュを2つ表示してみるとか
それでOKなら おまいさんのコードかグラボのどっちかがダメってことで
0673667
NGNGDevice.Transform.Projection
に設定するMatrix
Matrix.PerspectiveFovLH(fieldOfViewY, aspectRatio, znearPlane, zfarPlane)
の第3引数であるznearPlaneの値に問題があったようです。
問題解決以前はznearPlaneの値を0に設定していました。
この値を適度な正の数値に変更をしたら、
とりあえず見た目の問題は解決しました。
但し、この数値が小さいと、
局所的にZバッファが無視されるという現象が発生しました。
改めてこのあたりの数学的な意味を勉強し直す必要があるようです。
ご指示を頂きありがとうございました。
0674デフォルトの名無しさん
NGNGなるほど、プロジェクション変換で間違ってたんですね。
解決して良かった、良かった。
プロジェクション・マトリックスはワールド座標系を同次座標系に
変換するマトリックスです。
0675デフォルトの名無しさん
NGNG>変換するマトリックスです。
なに言ってんのあんた。
「ワールド座標系」と「同次座標系」は言葉のカテゴリが全然違うでしょ。
プロジェクション行列は、ビュー座標からプロジェクション座標への変換。
DirectXでは、どっちの座標も同次座標で表される。
0676デフォルトの名無しさん
NGNG0677デフォルトの名無しさん
NGNGワールド座標をベクトル(x,y,z,1)とするとこれに(ビュー行列x射影行列)
を掛けて求まったベクトル(x',y',z',w')の各成分をw'で割ると
スクリーン座標が求まる。っつーかこれがわかってないと
3Dプログラミングができないと思うんだけどどうしてんの?
0678デフォルトの名無しさん
NGNGc:\Windows\media\start.wavで再生の練習しようとしたんだけど、
うまくいかなくてどーにもこうにもおかしいと思ったんです。
自分のコードが駄目かもと思ったがサンプルのbinにあるcsPlaySoundでも再生不可能。
ほかのファイルなら自分のもcsPlaySoundもOK。
調べていくとBufferTooSmallExceptionってのが発生してるらしい。
ということは極度に小さい長さのファイルは再生できないってこと???
そんなあほな…。C++じゃこんなことなかったのに。
というわけで折角C#に移行しようとしたのにいきなり出鼻を挫かれたという感じ。
0679デフォルトの名無しさん
NGNGセットアップ中の承諾したあとにコンポーネントをダウンロードしますってところから
進みません
漏れには何が何だかわからないんです(´・ω・`)
どうしたらいいのですか。・゚・(ノД`)・゚・。
0680デフォルトの名無しさん
NGNG視点固定でマウスで操作しないタイプならなんとかなるポ
その説明でも分からない漏れは死んできまつ
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/DirectX9_c/directx/graphics/programmingguide/fixedfunction/transforms/transforms.asp
これでも読めれ。
多分、同次座標系が解らんと意味がわからんと思うので解説。
3DCG用途では透視変換や平行移動を4行4列の行列で扱える
ようにするため同次座標系というのをつかう。同次座標系では通常の
3次元ベクトル(x,y,z)に等質wを加えた(x,y,z,w)で表現される。
通常の3次元ベクトル(これをユークリッド座標系という)と
同次座標系との相互変換は以下のとおり。
・3次元ユークリッド座標系でx,y,z)で表されるベクトルを同次座標系(x',y',z',w')に変換
w=1とし、x,y,zはそのままつかう。(x',y',z',w')=(x,y,z,1)となる。
・同次座標系(x,y,z,w)を3次元ユークリッド座標系(x',y',z')で表されるベクトルに変換
同次座標系の各成分をwで割る。(x',y',z')=(x/w,y/w,z/w)となる。
以上から例を挙げれば同次座標系(x,y,z,w)と(2x,2y,2z,2w)は3次元ユークリッド
座標系上では同一のベクトルとなる。
ビュー行列と射影行列はネットでも検索して勉強してくれ。
昔(DirectX5とか6とかの時代)はSDKの解説はもうちょっと詳しかったし
もっぱら話題の中心がこんなことばっかりだったからもっと解説している
サイトが多かった(宇治社中とかが親切だった)けど、今はあまりこんなの
だれも解説しないからな。初心者には厳しいかも。もし手に入るようだったら
昔のDirectXのSDKのリファレンスでも読んでくれ。
0683682
NGNG書籍で情報を得るなら以下の2冊がいいと思ったけど初心者には
必要なところを抜き出して読むのが難しいかもしれない。
・コンピュータグラフィックス 理論と実践
http://www.amazon.co.jp/exec/obidos/ASIN/4939007375/qid%3D1096460418/249-2167903-6130707
・ゲームプログラミングのための3Dグラフィックス数学
http://www.amazon.co.jp/exec/obidos/ASIN/4274064050/qid%3D1096460363/249-2167903-6130707
たしかどちらかといえば「ゲームプログラミングのための3Dグラフィックス数学」
のほうが数学としてはわかりやすくまとまっていたように記憶している。
(手元に本がないし長らく読んでいないので詳細がわからない)
0684デフォルトの名無しさん
NGNGVector3.Projectつかえばいい
ここにサンプルあるから
ttp://www.interq.or.jp/black/minami-m/
C++だけどね。まあわかるよ。
0685デフォルトの名無しさん
NGNGstart.wavなのに始められない、ってなんか笑えるな。w
いや笑っちゃいけないのかもしれないけれど…
0686デフォルトの名無しさん
NGNG俺はYouTooFoolExceptionが発生して半分あきらめてる
0687デフォルトの名無しさん
NGNG俺に対してTooFoolってこと?
それにしても短い音は駄目っぽ…
音の後半を無音にすれば行けるがスッキリしないな
あとDuplicateに対応するのってManagedだとCloneなんだろか。
0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNGハンドルされていない例外 ThreadAbonedException が発生したため、このスレは
0690デフォルトの名無しさん
NGNG0691デフォルトの名無しさん
NGNGYouIsBigFoolManException
だろw
0692デフォルトの名無しさん
NGNG0693デフォルトの名無しさん
NGNG有名なネタだ
0694在日外国人参政権反対
NGNG0695デフォルトの名無しさん
NGNG0696デフォルトの名無しさん
NGNGアリガトン ・ゲームプログラミングのための3Dグラフィックス数学 は手にとってみたけど
公式ばっかりならんでてウザかったんで挫折してしまいますた
>>684
ミラクル トンクス。
やっぱり便利なメソがあったんでつね
自分で計算しろとかいうウザイやつばかりだったんで感激でつ
0697デフォルトの名無しさん
NGNGウザイウザイ言う君が一番ウザイ。
0698デフォルトの名無しさん
NGNG0699デフォルトの名無しさん
NGNGAudioVideoPlaybackを使ってMP3を複数同時に再生するにはどうしたらいいのですか?
最終的には2つ以上の音が合成されて出力させたいのです。
0700デフォルトの名無しさん
NGNGnew Audio("2.mp3").Play();
じゃだめなのん?いや全然試してないんだけどね。
0701デフォルトの名無しさん
NGNG0702デフォルトの名無しさん
NGNGnew Vorbis.OggAudio("1.ogg").Play();
でいいような気が。
0703デフォルトの名無しさん
NGNGWAVEファイルに見せかければSecondaryBufferにStream食わせて簡単に再生できるからねぇ。
だけど実際はストリーミングしないでワンショットとして扱うらしく、長いファイルの演奏に向いてなさげ。
結局ストリーム再生しようとしたら今まで通りその辺を自力で書かないと駄目かもなあ。
0704デフォルトの名無しさん
NGNGいや規則は分かるが、なんでこんな変な付け方なんだ?
だれか解説きぼん
0705デフォルトの名無しさん
NGNGDirectX 9.0 SDK Update - (October 2004)
リリースsage。
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNG一生待ってろ
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG気分は夏でも暦は10月なんだなこれが
0710デフォルトの名無しさん
NGNGつーか、October入れるのにSummerをアンインストールする必要はない、
というかアンインストール「してはいけない」。
だから君は正しい手順を踏んでるよ。
■ このスレッドは過去ログ倉庫に格納されています