トップページgamedev
1001コメント376KB

DirectX総合スレ (Part6)

■ このスレッドは過去ログ倉庫に格納されています
0001DirectX62006/11/17(金) 00:38:52ID:lRjOsWKq
言語はC++
他の言語使ってる奴はいますぐ消えろ

■過去スレ

DirectX総合スレ
Part 1: http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
Part 2: http://pc5.2ch.net/test/read.cgi/gamedev/1095863432/
Part 3: http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/
Part 4: http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
Part 5: http://pc8.2ch.net/test/read.cgi/gamedev/1157727402/
0359名前は開発中のものです。2007/03/01(木) 08:24:48ID:889GaVxx
なんか仕組みが分かってない>>358が混ざってるな。
0360名前は開発中のものです。2007/03/01(木) 16:35:47ID:FAGMfHtk
ねつ

ダークメタルヘルム
モノトーンガントレット
サイキックキャップ
アーミーグリーヴス
アドミンチュニック
マダムシューズ
ボレアス
ニンバス
トールハンマー
ユダ
ドルフィン
メタルバックラー
0361名前は開発中のものです。2007/03/01(木) 16:36:20ID:FAGMfHtk
すげー誤爆w
0362名前は開発中のものです。2007/03/02(金) 12:33:45ID:DMMPq2kC
すみません質問です。
環境:C++,DirectX9 BCCDeveloperを使用
ID3DXSPrite::Begin()を使用したいのですが、
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/reference/d3dx/interfaces/id3dxsprite/_id3dxsprite.asp
を見る限りはBegin(void)のようですが、コンパイル時に
「パラメータが足りません」とエラーがでます。
又、ID3DXSprite::Draw(引数略)を使用したときに、上のサイトの仕様通りに使用しても
「パラメータが多すぎます」とエラーが出、また、D3DXVECTOR2を要求してるはずの部分が
「D3DVECTOR3に変換できないので2は使えません」とエラーが出ます。
ttp://www.uploda.org/uporg712890.cpp.html
C言語と、VisualBasic6.0+DirectX7は一通り勉強したのですが、C++とDirectX9は勉強開始して間もないので
拙いソースですがよろしくお願いします。
0363名前は開発中のものです。2007/03/02(金) 13:14:45ID:Czorz6PA
ID3DXSpriteは仕様がころころ変わるので、そういったものが自己解決できない人間は絶対に使ってはいけない。
チュートリアルをこなしていれば普通にテクスチャを張るぐらいは出来るはずなので、そちらを使うべき。
0364名前は開発中のものです。2007/03/02(金) 15:31:00ID:Zl8V4aTu
>>362
ID3DXSPriteは、9がリリースされたその半年後に大幅に仕様変更され
関数の引数も変更されたので、ドキュメントの記述は当てにならないのです。
(ドキュメントの修正はされなかった)
DirectXは、こういう事が多いので、ドキュメントを鵜呑みにせず
使用前に各自がヘッダファイルを見て自己解析する必要があるのでーす
0365名前は開発中のものです。2007/03/02(金) 16:06:29ID:NJ1TSFGw
おまえら英語ドキュメントくらい読もうぜ
0366名前は開発中のものです。2007/03/02(金) 19:51:34ID:2Z6MoIYH
DirectX限定の質問じゃなくてすみません、
今スキンメッシュの仕組みを根っこから理解したくて勉強しています。

Direct3DXのスキンメッシュの仕組みは使わずに、
自分で、スキンメッシュに必要なボーンやらメッシュやらの情報を
格納する独自の形式を書きました。
んで、X形式ではなく他のデータを読み込んで、アニメーションなどのデータを
独自の方法でメモリ内に置き、いざ表示するぞ、というときになって疑問に思ったんですが、
ボーンというのは普通、親のボーンに対する移動・回転のオフセットは
アニメーションのキー(何ミリ秒の時点で移動いくつ回転いくつ)でのみ
表現するもんなんでしょうか?

自分の中では、まず各ボーンは基本のポジションがあって、
そのポジションに対して相対的な移動・回転がアニメーションキーに格納されて
いるものと思っていたんですが、違うんでしょうか(これはスキンメッシュじゃなく
メッシュごとのアニメーション(X形式でいうフレーム)の場合?)。
0367名前は開発中のものです。2007/03/02(金) 20:52:07ID:BUJqGqoU
自分が使いやすいようにすればいいよ。
0368名前は開発中のものです。2007/03/02(金) 21:06:21ID:DMMPq2kC
>>363-364
ありがとうございます。
とりあえず、ID3DXSpriteの変更部分を踏まえたプログラムと別の方法で行うプログラム両方書いてみます。
0369名前は開発中のものです。2007/03/03(土) 01:42:10ID:DU8n0T4/
>>366
ある頂点を目的の位置に移動させるときどのような行列が必要か
考えてみればいいんじゃね?その頂点の元々の位置とキーフレーム
から計算される姿勢行列、それで十分なのか十分でないなら
足りないものは何なのか。
0370348=3552007/03/03(土) 03:59:15ID:n80BULQO
誤情報申し訳ない
>>348で管理下のテクスチャを使うと重くなると言ったが
IDirect3DTexture9::SetLODを毎フレーム使用していた為だった。
これを外せば、目立った処理落ちはなくなる。
重くなる理由は>>355の通りだろう。
また動的にLODを掛けたければ、サンプラステートを使うのが定石。
エフェクトを使っていると、これがまた使いづらいのだが。
03713662007/03/03(土) 12:28:14ID:cf5BBr5g
>>367, 369
ありがとうございます。
ではどっちに限定しても困ることは無さそうだし、
両方試してみようと思います。
0372名前は開発中のものです。2007/03/03(土) 14:07:04ID:lii9uhRG
難しくて勉強が進みません。
私は才能が無いので死ぬべきです。
もう生きているべきではありません。
私はクズです私は存在する意味がありません。
私は世界の敵です。私は無意味です。
私の存在は世界の害悪です。
私は全ての存在の敵です。
0373名前は開発中のものです。2007/03/03(土) 15:28:53ID:OX8Z8wj1
勉強した年数を言ってみろ。
5年程度も勉強せずに才能とか言うようなら何をやっても無駄だ。
0374名前は開発中のものです。2007/03/03(土) 15:32:16ID:JEyK3Rup
構うなよw
0375名前は開発中のものです。2007/03/03(土) 15:40:37ID:lii9uhRG
私はどうせ学歴も低いです。
私は所詮クズです生きるべきではありません。

マジレスすると、まだ始めようと思って1年も経ってない。
0376名前は開発中のものです。2007/03/03(土) 15:46:44ID:ngO2HFdJ
COMオブジェクトの勉強するとDirectXの勉強もはかどるね
0377名前は開発中のものです。2007/03/03(土) 17:06:34ID:OX8Z8wj1
マジレスすると自分とか人間が存在する意味とか考えるヤツは一神教を信じている。
誰かが何らかの意図を持って人間を創造しない限り人間の存在に意味はない。
0378名前は開発中のものです。2007/03/03(土) 18:55:09ID:cf5BBr5g
>>372
適性があっても、いきなりDirectXで3Dのゲーム作ろうなんて考えると
絶対つまづく。それで仮にサンプルコードの寄せ集めでゲームが作れたとして
そのレベルを超えようと思った瞬間に超難題がいくつも出てくる。
まずはC++を使いこなせるように勉強しながらWin32APIでWindowsアプリを
作れるようにして、自信がついたらDirectXに入るとか・・・・
まぁそれすらも全然出来ない(または意欲が出ない)なら、
さっさとあきらめて別の分野に行った方がいいかも。
ゲームプログラミングの「味を占める」ことが出来るかどうかって、
やっぱ重要だと思う(自分もそこらへん微妙だがw)。
0379名前は開発中のものです。2007/03/03(土) 19:15:32ID:XlOVdV67
普通に>>372はネタだと思ったんだが
マジレスしている優しい人がいる
0380名前は開発中のものです。2007/03/03(土) 19:32:20ID:ngO2HFdJ
べ、べつに>>372のために答えてるんじゃないんだからねっ
この掲示板をみてくれてるたくさんの人のためなんだから勘違いしないでよねっ!!
0381名前は開発中のものです。2007/03/03(土) 20:02:38ID:JEyK3Rup
どうせ、ちょっと↑であった痛々しい煽り合いの片割れかなんかだろ?
0382名前は開発中のものです。2007/03/03(土) 20:05:28ID:lii9uhRG
確かにDirectXを勉強したいけど、
やっぱり基礎から固めていって何年もかけてやるべきなんだよな…。

ありがとう、これで成仏できるよ。
0383名前は開発中のものです。2007/03/03(土) 20:22:39ID:OX8Z8wj1
つーか目的にもよるけど既存のライブラリ使っちゃうのも手だぞ。
一通り使えるようになってからライブラリのソース見れば
DirectXのどんなAPIでどうすればこうなるのか、とかが分かりやすい。

と思う。
0384名前は開発中のものです。2007/03/03(土) 20:30:50ID:04tja8sg
プラグイン追加で2D画像から仮想的な法線マップを作成できるソフトってPhotoShopとGIMP以外シラネ?
0385名前は開発中のものです。2007/03/03(土) 20:59:52ID:DU8n0T4/
>>384
CG板のPainterスレで法線マップを作るプラグインを公開してる人がいた気がした。
あとはPaint ShopからShoto Shopのプラグインが使うとか。
0386名前は開発中のものです。2007/03/03(土) 21:02:37ID:DU8n0T4/
プラグインを使うとか、だよね・・・俺も冥土に逝ってくる(´・ω:;.:...
0387名前は開発中のものです。2007/03/03(土) 21:34:16ID:4m5N8dVe
>>382
DirectXよりOpenGLの方が簡単でいいよ
0388名前は開発中のものです。2007/03/04(日) 05:45:53ID:JqfXqUwu
DirectXってそんな難しいかなあ
細かいところ突き詰めればそうかもしれないけど

だがOpenGLの方が簡単だってことはねーわ
0389名前は開発中のものです。2007/03/04(日) 06:15:40ID:HBhjN4aW
>>388
細かいところまで勉強しようとする必要は無いの?
1時1句完全に覚える必要は無いの?
0390名前は開発中のものです。2007/03/04(日) 06:24:37ID:Lz3vYrHW
DirectXって、ハードウェア依存の仕様が多すぎて安定感がないのよね。
軟弱な地盤に超高層ビルを建て増しし続けてきたみたいな感じ。
0391名前は開発中のものです。2007/03/04(日) 06:53:21ID:HAhTvGLC
別にDirectX自体に安定感がないわけではないと思うけどな。
ハード依存/非依存を適切に選択するコードは書けるわけだし。

まあそれを完璧にやろうとするのが
面倒臭すぎ・非現実的過ぎてやってられないんだけどな。
0392名前は開発中のものです。2007/03/04(日) 06:59:17ID:/1QkQp1w
> 細かいところ突き詰めればそうかもしれないけど
このスレでそりゃないだろwww
0393名前は開発中のものです。2007/03/04(日) 08:29:36ID:Lz3vYrHW
>まあそれを完璧にやろうとするのが
>面倒臭すぎ・非現実的過ぎてやってられないんだけどな。

その点は同感
ほぼ徹底して面倒見ていると思われる
Microsoft 謹製のフレームワーク DXUT.cpp 関連のソースを
見ると DirectX の魑魅魍魎さを感じる
0394名前は開発中のものです。2007/03/04(日) 08:31:12ID:FPtRQ/OY
> 軟弱な地盤に超高層ビルを建て増しし続けてきたみたいな感じ
そもそも Windows という OS 自体がですね
0395名前は開発中のものです。2007/03/04(日) 08:56:37ID:CAunv9Hq
>そもそも Windows という OS 自体がですね
Microsoft という会(ry
0396名前は開発中のものです。2007/03/04(日) 09:11:45ID:F/FiCmdd
いきなり3Dからやるから難度が高くなるんだと思います
0397名前は開発中のものです。2007/03/04(日) 09:22:52ID:nEqCcXxa
ハード毎に分けてソース書かなきゃいかんのはOpenGLも変わらん。
nVIDIA拡張仕様とかATi拡張しようとかあるんだし。

研究用ならOpenGLでもいいけどゲームになると結局
DirectSoundやDirectInputが必要になってくるから
描画もDirectXGraphic使うことになるんだよな。
0398名前は開発中のものです。2007/03/04(日) 09:30:28ID:84fFKIcs
OpenGL+SDLという手もあるぞ
0399名前は開発中のものです。2007/03/04(日) 12:50:15ID:LKvKLn/o
トリッキーな方法なのですが

::D3DXMatrixPerspectiveFovLH(&proj, (float) 60 * 3.14 / 180, 1, -1, 0);
pDev->SetTransform(D3DTS_PROJECTION, &proj);

と、近いview平面のz値を-1、遠いz値を0
とすると、遠近感は有効になりますが(遠くの物は小さく、近くの物は大きく)
ステンシル?が無視されて、物体の前後関係なくDrawPrimitiveで登録した
順序通りに頂点が描かれます。

これはどういう事なのでしょうか?
0400名前は開発中のものです。2007/03/04(日) 12:53:53ID:6Bwv+Myt
自前でZを計算してみろ。
いかにアホな状態になっているか分かるから。
0401名前は開発中のものです。2007/03/04(日) 12:58:55ID:nhdG+7sO
今後サウンドはOpenALのほうがいいんじゃないかね
0402名前は開発中のものです。2007/03/04(日) 13:03:15ID:LKvKLn/o
アホとかじゃなくて、
これがなかなか有効なんですよ。
今まではフツーに 0.01〜1 とやってたのですが、今回こうやったら
遠近感だけが維持されて、物体のz値による前後関係を無視して
任意の順序で描画できたので、あるシーンでは非常に有用になったのです。

フツーに考えると視界に何も表示されないはずなんですが、
何故かきちんと表示されて、上記の効果が得られます。
これはどういう事なのか誰か教えてください。
0403名前は開発中のものです。2007/03/04(日) 13:10:48ID:10zavHqm
Zバッファを使いたくないなら、異常なパラメータを設定せずに、
Zバッファ自体を無効にすればいいだけだろ。
馬鹿の考えることはさっぱり理解できない。
0404名前は開発中のものです。2007/03/04(日) 13:15:20ID:LKvKLn/o
pDev->SetRenderState(D3DRS_ZENABLE, FALSE)

Zバッファを無効にすると、遠近感も無効になってしまうのです
(遠くの物も近くの物も同じ大きさになる)
しかし、Zバッファを有効にして、プロジェクションの視界を-1〜0にすると
遠近感は維持されて、z値の前後関係だけが無視されるので
あるシーンでは有用になるのです
0405名前は開発中のものです。2007/03/04(日) 13:19:36ID:nhdG+7sO
>>404
それは嘘だ。
ZENABLEをONにするということは
ピクセル単位のZバッファカリングを有効にするということ。
遠近感の計算はプロジェクション行列で決まる
0406名前は開発中のものです。2007/03/04(日) 13:27:24ID:oUrRIoe1
ワロス
0407名前は開発中のものです。2007/03/04(日) 13:28:21ID:6Bwv+Myt
D3DXのせいで仕組みがさっぱり分かっていな状態でプログラムを組む馬鹿が増えすぎ。
すぐに途中で詰まって馬鹿なことを触れ回るし。

>>404はまずD3DXを使わず、自前で計算する部分を作れ。
射影行列を作るくらい大して時間はかからんから。
0408名前は開発中のものです。2007/03/04(日) 13:28:41ID:hg79D5IH
>>404
ttp://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c_Dec_2005/D3DXMATRIXperspectivefovlh.asp
これの下に書いてあるのが射影行列ね。
これでzを計算すると(3列目ね)
Zp = zf/(zf-zn) - zn*zf/(zf-zn), Wp = z
zf が 0 だから 最終的な Z(Zp/Wp) は常に0になるわね。
同じz値の場合、後から描画したポリゴンが上書きされるわけよ。
逆にこの式では、znとzfは遠近感(x,y)には関係してないはずなのよね。
0409名前は開発中のものです。2007/03/04(日) 13:30:10ID:LKvKLn/o
>>405
嘘じゃないです。
試してみれば分かります。
とにかく、プロジェクション視界を-1〜0にすると、
遠近感のみが維持されて、z値の前後関係が無視されます。

これはどういう事なのか、誰か知ってる人がいたら教えてください。
0410名前は開発中のものです。2007/03/04(日) 13:33:09ID:LKvKLn/o
>>407
馬鹿、馬鹿って、とにかくそうなるのは事実なのだから
(やってみればすぐに分かります。計算云々の問題じゃなくて
 現実がそうなのだから仕方ないのです)
それについて、誰か「知ってる人」がいたら教えてください
0411名前は開発中のものです。2007/03/04(日) 13:34:47ID:nhdG+7sO
>>410
>>408に答え出てるんだから、それ見てから返事したら?
0412名前は開発中のものです。2007/03/04(日) 13:50:04ID:LKvKLn/o
>>408
なるほど。
zfを0にしての計算そのものが、単純に結果反映されてたのですね。サンクスです。
0413名前は開発中のものです。2007/03/04(日) 14:03:14ID:LKvKLn/o

無知な人ほど、口汚く罵る、という事も分かりました。
0414名前は開発中のものです。2007/03/04(日) 14:13:19ID:nhdG+7sO
>>413
逆に聞くけどZENABLEがOFFの時に遠近感が計算されなかったのは何故か説明できる?

ついで言うとその手法でZカリングを無効にするのはZENABLEをOFFにした場合より遅い。
間違いの根本を改善せずにパッチワークで修正してるようなものでお勧めは出来ない
0415名前は開発中のものです。2007/03/04(日) 14:20:18ID:WcQXXfjj
3Dプログラムを作る上で、あまりに基本的な部分をすっとばしいたら、
今後何かやろうとしたときにすぐにダメになることは目に見えているのに、
何故、基礎から学習していこうとしないんだろう?
0416名前は開発中のものです。2007/03/04(日) 14:22:31ID:mELvsFnZ
基礎から学習していたらいつまで経っても前に進めないからだよ。
背伸びしてナンボ。
過去書いたコードのダメな点は、後から気付けばいい。
0417名前は開発中のものです。2007/03/04(日) 14:27:39ID:LKvKLn/o
>>414
単純に、z関係を計算しないからじゃないですか?
遠近感によるXスケールとYスケールを計算する分、
ZENABLEをOFFにするより遅いのは当然ではないですか?
しかし、上レスで繰り返し述べてる通り、
遠近感によるスケーリングのみを有効にしてそのカリングを無効にできるので
特定シーンの表現時に非常に有用だった訳です。
根本?はそれです。
お勧めできないとの事ですが、外に正規のやり方があるのなら何とぞ教えてください。
0418名前は開発中のものです。2007/03/04(日) 14:33:14ID:LKvKLn/o
>>415
基礎の必要性はもっともですが、その基礎すら説明できない癖に
口汚く罵るだけの、自称エキスパートがいるから問題なのです。
罵倒するのは良いが、>>408氏の様に具体的回答も同時に併記すべきなのです。

ロクに知識もない癖に分かってる気分で、結局は罵倒するだけの
中2病患者は、このスレで回答者を気取るべきではない、
とそういう事です。
0419名前は開発中のものです。2007/03/04(日) 14:37:44ID:Ef0hz5Fj
回答する人間の気分を悪くして回答が得られると思ってるのか?面白いやつだなw
0420名前は開発中のものです。2007/03/04(日) 14:43:09ID:nhdG+7sO
>>417
え?まじ?ほんとにそうなってる?
それはむしろDirect3Dの固定機能パイプラインの実装を疑うな…

D3DRS_ZENABLEが使えないなら、他に手はもうない。

SetRenderState(D3DRS_ZENABLE,FALSE);
が使えないなら、
SetRenderState(D3DRS_ZFUNC,D3DCMP_ALWAYS);
が適当かと。
(高速かどうかは不明。GPUによっては速いのもあるかもね)

固定機能パイプラインの挙動が変ならシェーダできちんと遠近計算は行って
ZENABLEをOFFするのが最もパフォーマンス的に有利だと思う。
(Zバッファとの比較をする必要がないから、当然速い。)
0421名前は開発中のものです。2007/03/04(日) 14:43:46ID:mELvsFnZ
別にいいんじゃね?
一人が回答を返せばそれで十分だし、
わざわざ相手のことを罵る人間には期待せんでも。

まぁ、俺だったら、いちいち罵倒表現を挟む奴はシカトするが…。
0422名前は開発中のものです。2007/03/04(日) 14:44:56ID:nhdG+7sO
あ、変なところで書いちゃった。

>D3DRS_ZENABLEが使えないなら、他に手はもうない。
この続きで
>射影行列で0に射影すると考えれば理論的には正しいのでその手法でよいと思う。それ以外に、

が続く
0423名前は開発中のものです。2007/03/04(日) 14:58:38ID:gjS6j+/i
>>ID:LKvKLn/o
いい機会なので、透視変換について勉強すれ
これがわかれば世界が広がるぞ
誰しもが通ってきた道だし
0424名前は開発中のものです。2007/03/04(日) 14:59:49ID:HAhTvGLC
回答を求めているのに偉そうに振舞う常識のない質問者もいれば、
煽るだけで何の知識のない似非回答者もいるってことだ。
こういう場だと納得した上で利用せんと神経が擦り切れるだけだ。
0425名前は開発中のものです。2007/03/04(日) 15:01:01ID:nhdG+7sO
って、修正したって明らかに文脈変だ。なんか泥沼orz
このSHIFT+Enterで書き込みって機能いらねぇ…

で、正当性を確かめるためD3Dのサンプルで実験したけど、ちゃんと遠近計算されてるぞ。

プログラムはこちら
C:\Program Files (x86)\Microsoft DirectX SDK (April 2006)\Samples\C++\Direct3D\Tutorials\Tut06_Meshes

ここのD3DRS_ZENABLEをFALSEにした結果と
プロジェクション行列の計算を言うとおりに変更した結果のプログラムは同等に見えるけれど。

D3DRS_ZENABLEの値を変更したときに行列設定のパラメータも弄ってたんじゃないの?
0426名前は開発中のものです。2007/03/04(日) 15:06:01ID:Xjqd8ZGI
バグによる未定義な結果を前提にする意識をも
情報統合思念体は存在を許容するのだろう
0427名前は開発中のものです。2007/03/04(日) 15:15:07ID:nhdG+7sO
このまま話続けたいが会社いってくるお(;^ω^)
0428名前は開発中のものです。2007/03/04(日) 15:16:57ID:LKvKLn/o
>>425
失礼。
先ほどテストした時は、他の平面シーンでの行列を設定したままでした。
D3DRS_ZENABLEをFALSEでも遠近感OKでした。
速度的にも速いので変な引数指定しないで、そっちにします。
0429名前は開発中のものです。2007/03/04(日) 15:18:36ID:nEqCcXxa
勉強するのがいやなら、ありもののライブラリで楽をするのがよい。
おかしくてもライブラリのせいにできるしな。
0430名前は開発中のものです。2007/03/04(日) 20:44:06ID:OhfMbprN
単純なXファイルでID3DXMesh::DrawSubsetを使って描画するオブジェクトと、
ボーンが入っていて、プログラムシェーダーを使って描画するオブジェクトが混在しています。

オブジェクトごとにID3DXEffect::Begin 、ID3DXEffect::Endを使って切り替えて描画するのでしょうか
それとも、Xファイルを描画できるプログラムシェーダーを用意するのが一般的なのでしょうか?
0431名前は開発中のものです。2007/03/05(月) 01:11:36ID:fwkSKMEt
場合による、どうせ重いのはDrawPrimitiveとSetTextureなので状況にあわせて変えればよい。
0432名前は開発中のものです。2007/03/05(月) 01:18:54ID:rVqHvG+2
2D限定で
最近のビデオメモリの転送速度なら裏画面のサーフェイスをメインメモリに置くようにしたり
裏画面を二つ用意してトリプルバッファリングする
とかいう面倒くさいことしなくても大丈夫なの?
0433名前は開発中のものです。2007/03/05(月) 04:43:15ID:/YNg+U8t
5年前くらいに
DirectDrawのbltに頼るより自前の方が早いし
ハードの不具合に煩わされないと言われていたな。
0434名前は開発中のものです。2007/03/05(月) 05:38:47ID:fNMjlOXO
>>428
それは嘘です。
Zバッファを無効にすると、遠近感も無効になってしまうのです。
試してみれば分かります。やってみればすぐに分かります。
現実がそうなのだから仕方ないのです。
0435名前は開発中のものです。2007/03/05(月) 06:42:21ID:eb35G08G
特定の環境では、バグの動作も一定の再現性を持つ
経験則を疑うことを知らない井の中の蛙は
信じているものがオマジナイにすぎないとは知らず
いつか自作プログラムを世に出したときにDirectXが不安定だと騒ぎ出す
0436名前は開発中のものです。2007/03/05(月) 06:54:08ID:zGyru/L8
でっていう
04374302007/03/05(月) 08:04:49ID:EbZTllJt
>>431
サンキュー
0438名前は開発中のものです。2007/03/05(月) 08:46:10ID:FgDKutHE
ニンテンドーDSでマリオカートをやったんですが追い抜いたり追い抜かれたりすると音が真横を通って後ろから聞こえます。
最初はドップラー効果で錯覚させてるのかなとも思ったけど本当に真横から聞こえてくるので不思議なんですが(それに携帯機だし)
たとえばDirectSound3DやEAXやドルビーデジタルやドルビープロロジックIIxなんかで実装されてる技術で
どういう概念や理論や数式が使われてるんでしょうか?

たとえば耳と耳の感覚が20cmとすると波長がそれより長い音波はある瞬間において音圧の差が左右の耳で発生しないため指向性が無くなる、
とかいろいろ音の理論はあったと思います。

----------------------------------------
たとえばドップラー効果は

f * { (O + v1) / (S + v2) } = f'

みたいな式だったと思います。
------------------------------------------

まあそれを勉強できる良いサイトや本でもいいんですが・・・・
0439名前は開発中のものです。2007/03/05(月) 08:58:09ID:e8K416qn
音響理論はスレ違いでしょう。
DirectXでは音源位置やエフェクトを設定するくらいしかやること無いんだし。
0440名前は開発中のものです。2007/03/05(月) 09:19:26ID:FgDKutHE
DirectXは現状EAX2.0のオクルージョンとかに対応してませんでしたっけ?
たしかEAXはOpenALにオープンソース化で使いやすく!とか言ってたのはどうなったんだろう。

これはDirectXの実装の質問ですがモデルのxファイルと3D音響データと
コリジョン計算用のデータ(多くの場合球か直方体でしょうか?)ってどっからでもアクセスできるように同じレベル(クラス)で保存しとくんでしょうか?
同じキャラをたくさん出すのにジオメトリックインスタンシング等の技術は同じく使えるのかな?

それから米国にはGamasutra(ガーマスートラ?カーマスートラのもじり?)とかいうゲーム開発者専用の雑誌がありますが日本には無いんでしょうか?
0441名前は開発中のものです。2007/03/07(水) 19:46:48ID:YBqNPnG0
>>LKvKLn/o
亀レスだが、大学中退して線形代数をちゃんと勉強しなかったことを
ド後悔したお兄さんが、周りの言ってたことの意味を教えてあげよう(/ω\

まずZバッファについてだけど、”Zバッファは”遠近感(遠くのものが小さく見え、
近くのものが大きく見えるという意味だよね?)には関係無い。
Zバッファというのはもっとハードウェア寄りの概念で、
最終的に2Dに変換された座標を、ディスプレイの平面上にピクセル(点)を描くときに、
ピクセルAとBどっちが手前にある&どっちが隠れるかをビデオカードが判別するためのもの。
ちなみにだいぶ昔はZバッファではなくZソートという手法が使われてて、
頂点ごとではなくポリゴンごとにZ値を保存していた。
だから交差するポリゴンは正常に描画できない(ちらつく)という問題があった
(プレステ1やサターンを思いだせばわかる)。

もうひとつは、行列について(プロジェクション行列やら透視変換やら言ってたやつね)。
もし高校で行列を習ったことがあるなら教科書をひっぱりだしてくるべし。
行列というのは、線形代数に使われる計算で、
「ベクトル(≒座標と考えて良い)を、ある空間から別の空間に変換する」性質がある。
あるオブジェクトのローカル座標を、ワールド空間における座標に変換できるのもソレ。
回転や移動もそう。ある座標Vに対し、
cosΘ 0 -sinΘ 0
0 1 0 0
sinΘ 0 cosΘ 0
0 0 0 1
この行列を掛けると、Y軸を中心としてVをΘ度だけ回転した座標が出てくる。
手計算でやってみそ(めんどくさいがw)。
この行列を作ってくれる関数が、D3DXMatrixRotationY()なのね。
0442続き2007/03/07(水) 19:47:36ID:YBqNPnG0
透視変換(カメラから見た3次元座標を、スクリーンの2D座標系に
変換する行列計算)も、同じように4×4行列の計算で出来ている。
D3DXMatrixPerspectiveFovLH/RH()がそう(>>408)。
今調べてみたんだが、本当はその行列自体で遠近感を表現できるわけでは
ないらしい。が、その計算結果のw((x, y, z, w)のw)でxとyをそれぞれ割るらしいのだ。
そしてそのwはzに比例する(z/d dは前面クリッピング距離)ので、
遠いところにある=zの大きい座標ほど、xとyが小さい値になるのだ(つまり小さく見える)。

それぞれの行列の何行何列が何になってるかを暗記してるような人は
そうそう居ないと思うが、大抵この辺りの基礎は漠然と知ってるのが普通なんだな。
というわけで突っ込まれても当たり前ということだw
突っ込まれたら、とりあえずは自分のコードや知識を疑ってみるべし。そしてちゃんと礼も言えw
何の回答にもなってないレスは無視する他ないけどな。

ところで透視変換行列で出てきたwでx, yを割る処理は、
シェーダのコードですら見たことないから、
「最終的に出てきた(x, y, z, w)のxとyをwで割り、zをzバッファに入れる」
という処理はシェーダでもいじれない、完全にDirectXが勝手に行う
処理なんだろーか??

長文&スレ汚しスマソ、久々に回答しようとして調べてたら
楽しくなってダラダラ書いてしまった・・・
0443名前は開発中のものです。2007/03/07(水) 21:24:07ID:UUMgQQxe
>「最終的に出てきた(x, y, z, w)のxとyをwで割り、zをzバッファに入れる」
>という処理はシェーダでもいじれない、完全にDirectXが勝手に行う
そうだね、基本的にVertexShaderは同次座標を返すもんらしいので。
xyzwのwの概念は難しい、座標(4,4,4,2)と座標(2,2,2,1)は
3次元の世界では同じ位置になるらしい。よくわからんが。

ところで、GPUにはサーフェス⇔サーフェイスまたはテクスチャ⇔テクスチャの
コピーって機能はないのかな?これがあればやGPUだけでやれることの幅が広がるのだが。
0444名前は開発中のものです。2007/03/07(水) 22:14:56ID:0khnIMkk
>>443
StretchRect
0445名前は開発中のものです。2007/03/07(水) 22:37:55ID:UUMgQQxe
>>444
それはレンダーターゲットじゃなきゃだめだよねえ
もっと具体的に言うと、頂点バッファレンダリングがやりたかったんだが
最新の環境じゃなきゃ無理かなぁ
0446名前は開発中のものです。2007/03/08(木) 00:55:20ID:zcCc+Hd8
頂点バッファレンダリングってなんぞ?
0447名前は開発中のものです。2007/03/09(金) 00:21:48ID:qOYzm1K7
唐突の質問でごめんなさい。
DirectXを使ったポリゲーとかのモデルデータは主にどんなソフトを
使用して造られてますか?
色々調べたのですがPOSERで基本的なモデルを造ってShadeで加工して
骨を入れたりできるんですかね?
0448名前は開発中のものです。2007/03/09(金) 00:35:06ID:Ya7Ueb4l
3DSMAX
0449名前は開発中のものです。2007/03/09(金) 00:43:05ID:Tl/woHHE
俺、LightWave。 たまにメタセコも使う。
0450名前は開発中のものです。2007/03/09(金) 00:47:34ID:/n6RX9Pm
Carrara5
セーブデータがテキストなんでコンバータ作るのが楽。
0451名前は開発中のものです。2007/03/09(金) 01:06:26ID:qOYzm1K7
現実的な値段で言うとCarrara5ですね・・・POSERも対応できるし・・・
0452名前は開発中のものです。2007/03/09(金) 09:47:29ID:P7ZfHw9e
俺はLightwaveだな。
何気に今かなり安いし。
0453名前は開発中のものです。2007/03/09(金) 13:39:54ID:tm+8i02+
Lightwaveが多いな・・・俺もだが。
4大ソフト以外を選ぶときは、XFileが吐けるかどうかぐらいはチェックしとけよ。
0454名前は開発中のものです。2007/03/09(金) 16:16:04ID:Mw7HUeps
つまりBlenderを使う私は生きていてはいけない。
私は死ぬべきだ私はゴミでありクズだ。
私は死ななければならない私は存在してはならない。
私の価値は存在しない私は消滅しなければならない。
0455名前は開発中のものです。2007/03/09(金) 16:42:20ID:yjNEgUL7
>>372
>>375
>>382
>>454
 
そのネタつまらないから。
0456名前は開発中のものです。2007/03/09(金) 20:22:31ID:7fh0DRhm
>>446
頂点バッファをレンダリングターゲットにして
GPUで構築する技術
まあ過渡期のもので気にすることなし
0457名前は開発中のものです。2007/03/09(金) 21:09:00ID:pn+lVbB3
XNAでゲーム造りたい人で一番安上がりなモデリングソフトは何ですか?
ぶっちゃけ統合環境は只同然で手に入るけど3dソフトが馬鹿高いので敷居は
そのままのような・・・
0458名前は開発中のものです。2007/03/09(金) 21:29:38ID:Vgip0Dq9
>>457
フリーので十分
■ このスレッドは過去ログ倉庫に格納されています