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

鬱だ氏のう DirectX (Part 3)

■ このスレッドは過去ログ倉庫に格納されています
0001 ◆WMpzjIm. 01/11/07 16:56ID:???
DirectXについてマターリと技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

■旧スレ(プログラム板)
http://piza.2ch.net/tech/kako/966/966655286.html  (Part 1)
http://pc.2ch.net/test/read.cgi/tech/997101556/   (Part 2)
0289名前は開発中のものです。02/01/03 23:05ID:???
どうしよう…突っ込んでいいのかな?
多分>>288も狙ってるんだと思うし…言ってみるかな。

>>288
オマエモナー
0290名前は開発中のものです。02/01/04 00:15ID:???
>289
いや、正直、>288はマジだと思うが。
漏れもプログラム板の方が雰囲気良かったと思うし。
0291 02/01/04 01:09ID:wSRhf7+N
プログラム板だと異端扱いだけどな〜。明らかに浮いてた
現状はあまりよくないね。いつ消されるか心配だ

プロは語りたがらないので、素人が多いのが原因かなぁ
0292プロですが何か?02/01/04 01:44ID:0kuW71i1
だって、こんなところで気を吐く暇があったら
勉強するし、仕事するよ…

同業がいるんじゃないかと見に来てみたんだが。


…鬱だ働こう。
0293名前は開発中のものです。02/01/04 01:49ID:???
ていうか、ム板のほうがゲーム製作に役立つしw
ム板からゲーム作りたい厨(ワナビー厨)を隔離する
ために作ったんでしょ?この板。
0294 02/01/04 01:57ID:wSRhf7+N
そうそう、設立一時期は人集まったけど、みんな見限った感じだよね
0295名前は開発中のものです。02/01/04 02:24ID:???
・・・変に煽るとム板が荒れるぜ。
「ゲーサク板は嫌だったので、こっちにスレ立てちゃいました〜♪」
てなもんさ。
0296名前は開発中のものです。02/01/04 07:37ID:???
クソだな。この板自体が。糞板だ。
ん、やけに汚い単語だな・・・
0297名前は開発中のものです。02/01/04 07:52ID:???
 ま、冬休みが終われば少しは。
 先生方よ、次からは2ch覗くヒマがないぐらいの量の
宿題を出してやってくれ(特にDQN中学校は)
0298名前は開発中のものです。02/01/04 11:04ID:???
訂正
×おまえらゲーヲタ連中は。
○おれらゲーヲタ連中は。
029902/01/04 23:27ID:0N5UWmUc
マトリックス行列にあるw値って座標に変換すると何になるんですか?
つまり座標xyzwのwって何を意味していてその他xyzとどうイウ関係なんですか?
マトリックス内のw値はxyzに変換するとき定数項になるっていうのは
分かるんですけど、出てきたものが4っつになっててどうしたものか・・・と
悩んでますw。ズバリ説明してるHPとかあったら教えて下さーい。
030002/01/04 23:50ID:0N5UWmUc
・・・すげー意味不明な文になってるっぽい・・?
平行移動で書くと
X’=|X| |1,0,0,0|
Y’=|Y|*|0,1,0,0|
Z’=|Z| |0,0,1,0|
W’=|W| |x,y,z,1|

これ!このW'が3次元座標の中で何になるのかがわかりません。
上のX’Y’Z’はそのまま使ってよろしいでしょうか?
0301 02/01/05 00:13ID:???
>>300
上式でx,y,zは平行移動成分なのでTx,Ty,Tzと表現した方が(・∀・)イイ。

Wは次元を増やすためのものであり、重要性はあまりありません。
本来は3D座標に変換する際、X,Y,Zの各成分をWで各々割る必要性があります。
つまり 4次元座標(x、y、z、w) −> 3次元座標(x/w、y/w、z/w)
でも基本的にwは1ですのでwを無視して、そのまま変換後のx、y、zの値を使えば(・∀・)イイです。
0302 02/01/05 00:18ID:???
>>301
誤解を招きそうな表現なので修正。
wは1ですので −> wは1にして扱うので

>>300(この式間違ってますけど、細かいことはケアレスミスとして無視します)
の式をW=1にして通常扱います。
030302/01/05 00:20ID:???
>301
ありがとうございますー!
うわー!そうだったんですか!W=1なんすね。
次元が変わってるということは全く知りませんでした・・・(ぉぃ
ほんとありがとうございましたー!!
030402/01/05 00:24ID:???
>302
あ、Wは1なんですね。スンマセン・・。
0305 02/01/05 00:47ID:PQrQjQiJ
必ずw=1とは限らない。それが問題だ
0306名前は開発中のものです。02/01/05 01:02ID:???
299はベクトルのことをマトリックスと呼んでいるに1000ペリカ
0307_02/01/07 02:34ID:BpbIQZ5i
質問です。
今 DirectXを使って3Dのレースゲーム作っていて、
描画するオブジェクト(コースや車)の可視判定がうまくできません。
 オブジェクトには、それぞれバウンディングボックスを作成して
オブジェクトを囲む8個の頂点をそれぞれスクリーン座標に変換
し画面内であるかどうか判定しています。

変換した8個の頂点のうちのどれかが 画面内で有れば描画対象という
判定はできるのですが、

描画するオブジェクトがカメラにたいしてアップの状態で、8頂点を変換したスクリーン座標が
すべて画面外のときの可視判定がわかりません どういう条件で判定できるのでしょうか?
0308 02/01/07 02:38ID:JNjsuZE7
カメラがBOX内に入ってるか調べれば?
030930702/01/07 02:48ID:BpbIQZ5i
>>308
スイマセン。ちょっと書き方がまずかったみたいです。
ようするに
カメラの正面に大きな立方体があるイメージです。
0310名前は開発中のものです。02/01/07 03:12ID:???
リアル工房なので自信はないのですが
つまり、四角錐と立方体が交差してるかどうかを調べる
ということですよね。
0311名前は開発中のものです。02/01/07 03:23ID:???
>>307

上手く説明できないが、
スクリーン座標に変換した最小の点<スクリーンの最小<スクリーンの最大<スクリーン座標に変換した最大
になるとおもうから、それで判定ってのは?
0312名前は開発中のものです。02/01/07 03:30ID:???
座標変換前に調べると計算量を抑えられる。
031330702/01/07 03:49ID:BpbIQZ5i
>>310 おっしゃるとうりです。

>>311 スクリーンの最小<スクリーンの最大 とはどういうことなんでしょうか?

>>312
座標変換前に調べるというのは、オブジェクトのワールド座標がカメラの
視野角内であるか判定するということですよね。
0314名前は開発中のものです。02/01/07 18:29ID:???
このスレ馬鹿にしてる割には、こんな問題すら解けないんだな(藁)
031531402/01/07 18:31ID:???
>>314 to ム板連中
0316名前は開発中のものです。02/01/07 18:35ID:???
・・・終了?
0317名前は開発中のものです。02/01/07 20:16ID:???
うん、終了・・・
0318名前は開発中のものです。02/01/07 20:44ID:ejFgkT1W
あけおめage
0319名前は開発中のものです。02/01/07 20:58ID:???
まともな答えが欲しいなら2chなんかで聞くのは間違ってると思うんだが。
2chで聞いても馬鹿にされるだけだぞ。
0320名前は開発中のものです。02/01/07 23:38ID:???
>>314-317は彼女いるか?
0321名前は開発中のものです。02/01/08 12:19ID:???
そんな、この世に存在しないものがいるかと聞かれても……
032232002/01/08 17:46ID:???
そうか・・・、すまなかった。
0323名前は開発中のものです。02/01/08 17:50ID:aXMf05yU
あのー、モデルの大きさってどのぐらいが適切なんですか?
プレイヤーの機体を基準としてなんですけど、数値の大小で悪影響とか出ることはあるんで
しょうか?それともどうでもいい?
0324名前は開発中のものです。02/01/08 18:09ID:???
floatで表現できる範囲ならどうでもいい。
単位も何でもいい。インチでもメートルでもキロメートルでもセンチメートルでも
ウサマビンラディンでも何でもいい。
0325名前は開発中のものです。02/01/08 18:13ID:???
>324
サンクスです。ウサマで逝きます。
0326名前は開発中のものです。02/01/08 19:38ID:???
値でかすぎると、Zクリップするときにギザギザにならない?
有効桁6桁だから、あんまでかすぎると良くないと思うよ。
0327名前は開発中のものです。02/01/08 20:17ID:???
>326
なってます。。ビデオカードの能力不足かと思ってました。
サンクスです。
0328名前は開発中のものです。02/01/08 22:08ID:???
>>324
どうせならオングストロームとかパーセクとか
0329名前は開発中のものです。02/01/09 00:04ID:???
・・・。
0330名前は開発中のものです。02/01/10 15:50ID:???
それは値がでかすぎるのがいけないんじゃなくて、far/nearの比の問題かと。
0331名前は開発中のものです。02/01/10 17:27ID:???
DX8のポイントスプライト(のサイズ調整)ってDrawPrimitibUPでは使えないんですか?
0332名前は開発中のものです。02/01/10 17:35ID:VwnKgT/a
age
0333祭り報告02/01/10 17:53ID:mnz5oev8
今ペット大嫌い板http://tmp.2ch.net/cat/index.htmlで( ● )_( ● )が大暴れしています。
みなさんも是非( ● )_( ● )を付けてスレ立ててください。
みんなであの最悪板を制圧して潰しましょう!
そしてあそこを消滅させましょう!!
今こそ団結の時じゃないでしょうか。特にペット好きの皆さんは。
033433102/01/11 00:54ID:8pSNS9M0
すいません。ポイントスプライトの表示されるサイズが変なんです。
何をやっても横に1.5倍ほど伸びてしまいます。サンプルにある
パーティクルと同じ画像をたくさん表示してるんですけど・・・
解決策を教えて下さい!
0335名前は開発中のものです。02/01/11 01:09ID:???
サンプルのほうも同じ現象が出てるということか?
もしサンプルが正常に動いてるならそのソースを見たほうが早いかもよ。
画面全体の縦横比がおかしいなら、プロジェクションマトリクスとか
ビューポートの設定を疑ってみてはどうか?
0336_02/01/11 01:30ID:???
>>334,335
俺もそう思う。
てか、ポイントスプライトって、サイズは1つしかないから、
正方形しか描画できん筈。
033733102/01/11 02:33ID:8pSNS9M0
>335、>336
すいません・・。どうやら画面の縦横比の問題みたいでした。
バックバッファの設定を1120:480にしたら直りました。
ありがとうございます。
0338名前は開発中のものです。02/01/11 05:32ID:???
誰か DIK_DOWN が宣言されている enum 名を教えて下さい。
033933802/01/11 05:33ID:???
いや、焦ってただけだった。
CONST_DIKEYFLAGS でした。スミマセン。
0340名前は開発中のものです。02/01/11 05:42ID:???
>>338>>339
DIK_DOWNだったら %mssdk%include\dinput.h の2000行目あたり。
ただし defineされているだけで、enumされてないんじゃねーのか?。
何に使うのかは知らんが、がんばれ。

それと、grepの使い方は覚えとけ。便利だから。ていうか基本。
034133102/01/11 21:28ID:8pSNS9M0
うぐ、何度もすいません。
直ったように見えていただけでした・・・
ポイントスプライトの表示領域が真っ白に表示されるように
してみたら、なんと横長の長方形でした。比率は2:1ぐらいだと思います。
で、その長方形はバックバッファに常に平行に描画されていて、他の
オブジェクト、ポリゴンに張ったテクスチャ、ビューポートの設定、
等は全て正常でした。(ビューポートのどこの設定を変えてもこの2:1は
変化しないです。)バックバッファのサイズ比を変更しない限り変化できないのですが、
これを変えると画面の縦ラインが妙な感じになったり、フルスクリーンに
できなくなったりします。似たような症状を知っているという方、教えて下さい。
0342名前は開発中のものです。02/01/11 21:46ID:???
>341
よく分からんが、
>1120:480
この比のせいじゃない?
4:3になるようにしてみれば?
034333102/01/11 21:51ID:???
>342
その比だとスプライト以外の画像がおかしくなるんです。
ウィンドウサイズ640:480で、バックバッファも
640:480にするとスプライトは2:1ですけど他は全て
正常です。フルスクリーンもできます。
034433102/01/11 21:54ID:???
あ、文章へんでした・・m(_ _)m。
4:3(ウインドウサイズと同じ比)でスプライトがおかしく
なるといことです。
0345名前は開発中のものです。02/01/11 22:49ID:???
>>344

で、肝心のサンプルのほうはどうなの。
そっちは問題なく動いてるんだろう?
034633102/01/11 22:52ID:???
>345
動いてます。ウィンドウのサイズを変えても大丈夫です。
0347名前は開発中のものです。02/01/11 23:32ID:???
たんにアスペクト比の計算を間違えてるだけじゃないの?
034833102/01/11 23:43ID:???
>347
アスペクト比は1.2です。変更するとスプライトの表示位置は
変わりますがサイズ(2:1)は変化無しでした・・・。
スプライトのサイズ変更処理をしても比率にはやはり変化無しです。
(D3DRS_POINTSCALEENABLE)
D3DRS_POINTSPRITEENABLE のみ、又、併用どちらもダメでした。
034933102/01/12 00:44ID:???
どなたかポイントスプライトの表示サイズ縦横比率を変更できる
方法教えて下さい・・・色々探しましたが見つかりませんでした。
お願いします。
0350名前は開発中のものです。02/01/12 01:16ID:???
まさか変換済み頂点使ってるとか
035133102/01/12 08:28ID:kqWL79i1
皆さんありがとうございます。
ようやく見つけました・・・。初期化の際、マルチサンプリングタイプを、
D3DMULTISAMPLE_2_SAMPLES にするとこの現象が起きるようです。
D3DMULTISAMPLE_NONE にしたらあっさり直りました。
でも理由が分かりません。
D3DMULTISAMPLE_2_SAMPLES はフルスクリーン・エッジアンチエイリアスを
使うために設定が必要だったんですが、もし分かる方いたら説明して頂きたいです。
共存はできないんでしょうか。
0352名前は開発中のものです。02/01/13 00:38ID:ssMqoitn
>>351
よくわからんが、ドライバがお亡くなりになってるんじゃ?
0353名前は開発中のものです。02/01/13 00:48ID:???
>>351
ビデオチップは何を使ってる?
もしHALドライバが怪しいと思ったら
リファレンスラスタライザの出力と比較するといい。

結果が異なるならビデオチップメーカーを呪うしかない。
0354名前は開発中のものです。02/01/13 01:06ID:lenemCyg
>>349
出来ないと思われ。
あれの根っこは、テクスチャの加工は拡縮比だけで転送、これに尽きる。
パラメータそのものが存在しないので、自前でシェーダ書け。
0355名前は開発中のものです。02/01/13 04:14ID:???
>>353
呪う前にバグ報告しろって
0356名前は開発中のものです。02/01/13 17:35ID:???
今DirectXの勉強中です。
DirectXの初期化の方法と使い方が分かったところで、さぁ何か作ってみるかと
思っているんですが、クラスを一切つくらずに一枚のファイルに書き続けていたら
すぐにコードが破綻しそうです。

そこで、クラス設計を考えはじめたのですが、みなさんはどのように設計しますか?
例えば、Winodwを作成表示するクラス、描画を担当するクラス、入力を担当するクラス
って感じですか?
0357 02/01/13 17:44ID:aHq0GIhg
クラス化するなら継承を考えないと面白くない
サンプルみたいに d3dapplicationクラスを作って
その派生で d3dgame とかクラスを作るといいかも〜

後、DXのバージョンが上がった時に最小限の変更でいいようにしたりして
Txture管理なんかも別クラスにしておく
0358 02/01/13 18:15ID:aHq0GIhg
なんか目からウロコな設計ないかねぇ〜

ViewPortも描画クラスの外にだして、簡単にマルチスクリーン、マルチアングルとか出来るようにしておきたい予感
0359親切な人02/01/13 18:46ID:???

1通のメールを読むだけで、毎月 1250 円
貰えます!!!

下記を観て下さい↓
http://www.guruguru.net/auction/item.php3?itemid=21703

■経験談■
私も、この広報文を観て、すぐ加入しました。
そして訪問するサイトに、このメモを 10 箇所位
残しました。
先月、家に USA から小切手が送金されました。

これを、地元の富士銀行で円に変えたみたら、
驚くことに、83500 円になりました。

それで、このサイトに入って、私の会員数を
確認してみたら、私の直接会員が 23 人で、
その会員が集めた会員が、65 人だったん
です。

まさか、こんなに早く会員が増えるとは思いも
しませんでした。(ちゃんと確認できるところが
安心します。)

■会員募集方法■
http://www.mintmail.com/?m=1940638
後の ID(番号)部分をミントメールより付与された
自分の ID に変換して広報すれば、本人が自動
的に抽選されます。
0360名前は開発中のものです。02/01/13 20:24ID:???
>>359
親切な人だかなんだか知らんが、激しく板違い。
どこの板が適切かって言われても困るけど。sage
0361名前は開発中のものです。02/01/13 20:40ID:IFrfU7io
BITMAP bmp;
RECT rc;
GetClientRect( g_hWndMain, &rc );
HDC hDCWindow = GetDC( g_hWndMain );
HDC hDCImage = CreateCompatibleDC( NULL );
SelectObject( hDCImage, g_hSplashBitmap );
GetObject( g_hSplashBitmap, sizeof(bmp), &bmp );
StretchBlt( hDCWindow, 0, 0, rc.right, rc.bottom,
hDCImage, 0, 0,
bmp.bmWidth, bmp.bmHeight, SRCCOPY );

画面サイズ可変でもBMPを表示するには
どのように改良すれば良いでしょうか?
0362名前は開発中のものです。02/01/13 21:00ID:???
>>360

その手の宣伝カキコは大抵は自動書き込みソフト使ってるから。
ま、放置で。
0363名前は開発中のものです。02/01/14 02:50ID:???
>>361
そのコードだと、どのへんがマズイんでしょうか?
0364名前は開発中のものです。02/01/14 02:55ID:???
>>363
SelectObjectしっぱなしとかそういうの?
0365名前は開発中のものです。02/01/14 05:55ID:???
>>363
ReleaseDC()も無いな
0366名前は開発中のものです。02/01/14 08:23ID:INEqxwAS
>>363-365 windowsモードでは正常動作ですが、フルスクリーンモ−ド
にするとBMP描画しない時があったので・・。
あと、ReleaseDC()はコピペしてませんが書いてあります。
コピペしてないコードに問題があるかもしれませんが。
0367名前は開発中のものです。02/01/14 11:03ID:???
古くスクリーンがパレット依存のモードなら、
パレットを設定してやらないとエライことになりますが、
そういうことじゃないよな
0368 02/01/14 18:06ID:wYdz4NZ6
ポリゴンの秘密について語るページ発見

http://www.masahicom.com/click/polinky.swf
0369名前は開発中のものです。02/01/14 19:27ID:???
↑ブラクラ
0370名前は開発中のものです。02/01/14 20:17ID:???
CEのDirectXへの対応ってどうなってるの?
0371名前は開発中のものです。02/01/14 20:58ID:???
グラフィックの左右反転ってどうやるんすか?
Bitでできますか?
0372名前は開発中のものです。02/01/14 21:23ID:???
>371
Bitは知らないけど、Bltで出来る。
037337102/01/14 23:10ID:???
>>372
Bltでした 逝ってきます
0374名前は開発中のものです。02/01/15 22:20ID:???
あれってどんなブラクラ?
0375名前は開発中のものです。02/01/15 23:07ID:AZ3fTKY/
>367さん >古くスクリーンがパレット依存のモードなら
SDK、DIRECTDRAWのswitchscreenにpaletteという単語で
検索すると約20引っかかるのですけどパレット設定って面倒な
処理なのでしょうか?
0376名前は開発中のものです。02/01/16 08:12ID:???
パレット依存の色数ならパレット使わないと駄目だけど、
そうでないならいらないよ。

面倒かどうかといわれるとそんなに面倒じゃない。
256色なら最初と最後のパレットがなぜか、黒と白に固定されてしまうとか、
細かい注意が必要(他に何かあったっけ?
0377名前は開発中のものです。02/01/18 22:22ID:SzoxuvrK
StretchBltは色々試したけどできなかったので
テクスチャに貼ったBMPで描画します。
>376さん手間かけました。
0378名前は開発中のものです。02/01/18 22:52ID:NTzxnp4w
Xファイルの読みこみをやってるのですが、
DirectXFileCreate

RegisterTemplates(D3DRMのテンプレートを登録)

CreateEnumObject(.xファイルから読みこみ)

GetNextDataObject

データオブジェクト->GetName

D3DXLoadMeshFromXof(レンダリングに必要なデータを取得)<<失敗する

(レンダリング用変数に振り分け)
、というふうにやってるのですが「D3DXLoadMeshFromXof」
のところで止まって(失敗して)しまいます。必要なデータは揃ってる
とおもうんですが、、、コンパイラは通ってます。何が足りないんでしょうか?
教えて下さい!
0379名前は開発中のものです。02/01/18 23:02ID:???
>>378
戻り値調べてどのエラーなのかわかれば自ずと解決すると思うが。
038037802/01/18 23:04ID:???
IDirectXFileData::GetType 、IDirectXFileData::GetData 、
IDirectXFileData::GetNextObject はよく分からないので使っていません。
最初のXFileDataobjectを取得(GetNextDataObject)してすぐにD3DXLoadMeshFromXof
を使っています。お願いします。
0381   02/01/18 23:47ID:???
>>378-380
ところで、お前のコンパイラは金出して買った物なのか?
038237802/01/19 00:02ID:???
>>381
VC++ SEアカデミックバージョンです。
お金を払って買いました。
0383名前は開発中のものです。02/01/19 00:03ID:o6fJC5Lk
>>378
>コンパイラは通ってます。何が足りないんでしょうか?
Ditrect XのSDKが足りない
0384名前は開発中のものです。02/01/19 00:04ID:o6fJC5Lk
>>382
ところでSEって何だ?
0385   02/01/19 00:12ID:???
>>384
スタンダードエディションだろ。きっと

>>382
とりあえず、379の言う通り各関数のリターンコードを調べろよ
VC++だったらステップ実行とか出来るだろ?
038637802/01/19 00:24ID:???
D3DXLoadMeshFromXofの戻り値はこの4つの内のどれかのはずなんですが、
なぜかどれにもひっかかりません。
・D3DERR_INVALIDCALL
・D3DXERR_INVALIDDATA
・E_OUTOFMEMORY
・D3D_OK

マニュアルに載ってないものがあるんでしょうか?
ほかの関数の戻り値はすべてD3D_OKです。
0387名前は開発中のものです。02/01/19 01:39ID:???
>386
もう、16進数の直値でいいよ。
038837802/01/19 02:34ID:???
>>387
16進数ってこれですか?_ltoaで出しました。

 80004005

色々やりましたがだめででした。分かりません。
■ このスレッドは過去ログ倉庫に格納されています