■過去ログ置き場に戻る■ 1- 前250 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

鬱だ氏のう DirectX (Part 10)
501 名前:デフォルトの名無しさん :03/09/18 01:04
>>500
ホント理解してないな…おまえは、
一回モデラー触ってみろ

502 名前:デフォルトの名無しさん :03/09/18 01:08
どうでもいいけど2平面の2頂点共有までなら数学的にも
2つの4角形の平面性を保つことができるぞ

503 名前:デフォルトの名無しさん :03/09/18 01:08
>>500
LW3Dの正規ユーザーですし、モデルは数値入力とプラグインで殆ど作りますが?

504 名前:デフォルトの名無しさん :03/09/18 01:10
>>503
4角形の平面性維持ってどうやってる?

505 名前:デフォルトの名無しさん :03/09/18 01:16
>>504
計算と数値入力。
つーか自分でDirextXで作る時は結局分割描画になるから
4ポリなんて殆ど使わないけど。
ともかく平面を形成したいなら平面の方程式。
それから、生物ではまず使わない。

506 名前:デフォルトの名無しさん :03/09/18 01:18
自前計算とは恐れ入る

507 名前:デフォルトの名無しさん :03/09/18 01:29
>>506
モデラーより3Dプログラム歴の方が長いからね。
プログラムじゃポリゴン上を数値出して歩かせるとかやってるからね。
それと会社のモデラー教わった人もプログラマだったし。
プラグインの作り方やLWの処理理論とかも教わったし。

508 名前:デフォルトの名無しさん :03/09/18 01:30
すげー、ちょっと尊敬。


自前計算を自動化することを考えたら


1つ
3点のX,Y,Z座標ともう1点のX,Y,Zのうち2つの座標を入れたらのこりのひとつの値を
返すようなプログラムを書く

2つ
平面1と平面2を入力したら交差する部分の直線の関数を返すような
プログラムを書く

ぐらいしかおもいつかんのだけど、これってどう?


509 名前:デフォルトの名無しさん :03/09/18 01:47
>>508
それが平面の方程式。
三点のxyzから外積により法線(正規化する)を求める。
その法線とxyzのどれか一つの頂点を使い、求めたい頂点の未知成分と連立。
求めたい頂点の法線は同じなのは分るでしょ?
数分で求まるよ。
でパネル開いて数値入れれば終わり。
プログラムだとハイトマップとかで使うよ。

510 名前:デフォルトの名無しさん :03/09/18 01:54
http://pc2.2ch.net/test/read.cgi/gamedev/1005582865/-100
煽ってる奴少しここ読んで頭冷やせ。

511 名前:ちゃちゃ :03/09/18 02:01
「騙された」系でないことを確認。

512 名前:444 :03/09/18 02:03
とりあえずめっちゃ参考になりました、
どうもアリガd。特に505氏、やっぱ現場の人はちがうねぇ

513 名前:デフォルトの名無しさん :03/09/18 02:47
458 名前:本物の444 投稿日:03/09/17 21:54
 つーかホント450ムカつくんだけど、オマエ最低。

 ってえらそうでスマンけど…

459 名前:デフォルトの名無しさん 投稿日:03/09/17 21:57
 >>本物の444
 夏休みはもう終わったよ…?

460 名前:本物の444 投稿日:03/09/17 21:58
 >>459
 なにか気に入らんことでもあった?
 質問が厨房くさいなら指摘してくれ

晒しage

514 名前:デフォルトの名無しさん :03/09/18 04:18
このスレってレスが多い日は、大抵しょうもない話してるな。

515 名前:デフォルトの名無しさん :03/09/18 08:34
>>439
今、思い出したんだけどほとんどのエミュレータはフルスクリーンでメニューが出るよ

516 名前:デフォルトの名無しさん :03/09/18 10:49
このスレみてモデリングツール触ってみたけど、
意外と平面を保ったまま動かすことってできないのな。
立方体作って頂点1つつまんで動かすとボコボコにひしゃげる。
はじめて知ったよ。

517 名前:デフォルトの名無しさん :03/09/18 11:03
まあ、全部三角形化して問題ないようにしてから
プログラマにデータよこして下さいってだけだけどな。

518 名前:デフォルトの名無しさん :03/09/18 11:10
>>517
プラグイン作れって言われたら逃げられないけどね。

519 名前:デフォルトの名無しさん :03/09/18 14:18
安いモデリングツールって使ったこと無いから苦労がわからん
頂点を引っ張って平面が崩れないなんて当たり前だと思っていた

520 名前:デフォルトの名無しさん :03/09/18 14:42
俺はメタセコしか使ったことがないから3dsとかMayaとかの世界はサッパリ分からんな

521 名前:デフォルトの名無しさん :03/09/18 16:31
(・∀・)ツマラン...

522 名前:デフォルトの名無しさん :03/09/18 19:09
>>519
上ではLightWave使ってるやつでもそういう症状出てるって書いてるガ…

523 名前:デフォルトの名無しさん :03/09/18 20:08
つーか結局ポリ数ケチんなよウンコって話じゃね。

524 名前::03/09/18 20:18
全く話を理解してない人ww

525 名前:デフォルトの名無しさん :03/09/18 20:35
>>524
いや、結果はそうだろ。
自分の考える理想の形にしたいならとりあえずポリ数を増やすのが楽。
(俺のレベルだと、プラグインとかがどうなってるのかは知らない。
 こだわったこと無いしこんなところ。)
どうしても平面にしたいときは膨らませてブーリアン演算でも使ってきっちまえば
これでスッパリ平面にならないときって要はポリ数が足りないんでしょ。
メタセコでこれができるかどうかは知らないけど。

526 名前:デフォルトの名無しさん :03/09/18 20:50
>>522
それ安物

527 名前:デフォルトの名無しさん :03/09/18 21:16
>>525
閑散としているローポリスレへの燃料投下お願いします

528 名前:デフォルトの名無しさん :03/09/19 02:24
>>525はほっとくとして、三角形化できないモデリングソフトってそんなに多いのん?
メタセコは簡単にできるようだが。

Lightwaveも昔使ったときあったやうな気が。

529 名前:デフォルトの名無しさん :03/09/19 02:39
皆さん本当にDirextX使いなのですか?
3Dプログラムやってる奴のレベルじゃないな。

530 名前:デフォルトの名無しさん :03/09/19 02:39
みんな弾幕STG作ってるから

531 名前:デフォルトの名無しさん :03/09/19 03:40
三角化できたとしても4角形平面(3角形2つ)はふつうに平面にそろえる必要があるから
何の問題解決にもならないし

532 名前:デフォルトの名無しさん :03/09/19 04:09
ちょっと分かってないやつが多すぎるから書いとくけど444がいいたかったのは
[4角形]、[3角形2つ]
どっちの場合でも同じで4頂点を同一平面上に乗せる方法が知りたいってことだろ、

だから3角化云々は全く関係ない。

533 名前:デフォルトの名無しさん :03/09/19 05:41
何言ってるんだかわからん。
そもそも>>444の問題についてはもう妥当な結論が出てるように見えるが。

534 名前:533 :03/09/19 05:50
つーか、こうしてみると単なるディスコミュニケーションの嵐のように見えるな。

最近ゲ製系のスレみんなこんな感じになる気がしないか。
誰か犯人がいるだろ。

535 名前:デフォルトの名無しさん :03/09/19 06:02
そうそう、スレ違いの挙句
自分の3Dへの理解不足、モデラーとしての低レベル度等々を棚に上げて
ギャーギャー騒いでたんだろ。

様は共有してるか、同一座標上にある頂点で形成される多数の平面を
それぞれの平面を保ちつつ、一つ頂点を動かし
尚且つ頂点同士のズレも無くしたいって事だろ。

完全に設計ミスだろ。その部分を丸ごと削除して作り直せ。
考え方が間違ってる。

536 名前:デフォルトの名無しさん :03/09/19 06:08
犯人もなにも
房な質問や考え方を、房とも思わず
その指摘に逆切れしてればスムーズに行くはずがない。

537 名前:デフォルトの名無しさん :03/09/19 08:09
>>535
はぁ?ホントにわかってないな

538 名前:537 :03/09/19 08:13
現れた偽者といい頓珍漢な回答の連発といい
質問の意図をわからずに意味不明な答えをしたやつが
「質問が厨房だ」と流してるようにしか見えない。

535も536も思いっきり初期の段階で意味不明発言連発してたやつの書き込みだろ…

539 名前:デフォルトの名無しさん :03/09/19 08:59
まぁ、変な煽りを入れている奴はそもそも質問に答えられるような能力はないと

540 名前:デフォルトの名無しさん :03/09/19 10:54
>>537
>462
>4角形を描いたとき、既存の頂点を使って描いた場合や
>後で頂点を動かしてしまった場合は4角形の平面性がうまく維持されない

>465
>頂点の値を確認ってx,y,zのこと?それは調べてもどうしようもないような。
>それとも自分で残りの3点から平面方程式を導き出してその上にくるようにもう1点をおけということかな?
>あまり現実的じゃないし実際には近隣の4角形ポリゴンとの兼ね合いもあってむりぽい。

これは444の発言ですが、既存の頂点、近隣の4角形ポリゴン、などと発言してますが?

541 名前:デフォルトの名無しさん :03/09/19 10:57
>>534

>>535

犯人が自ら名乗り出ててワラタw。しかも自覚がないしw

542 名前:デフォルトの名無しさん :03/09/19 11:00
わかってない発言連発の奴の方が何にも答えてない。
しかも、誰も444なんて名乗ってないのに偽者発言。
おまえ、444だろ?自分の思った通りにならないと
はぁ?って書くしか能がないのか?
因みに俺は509で数値を出す方法を提示してるが
分ってるお前はどうなんだよ?

543 名前:デフォルトの名無しさん :03/09/19 11:03
理解しようと頑張る奴には教える気も出るが
努力もしない奴の世話なんかやってられん

544 名前:デフォルトの名無しさん :03/09/19 11:03
>>450
>>457

545 名前:533 :03/09/19 11:04
しかし、俺は>>533で初めてこの話題に口出したんだがな。(苦笑)
とんでもねえ低級エスパーがいるよな。まあ、みんな頑張ってくれ。

546 名前:デフォルトの名無しさん :03/09/19 11:06
>>545
ん、何か文意を間違ってとってないか?533がアレだとは誰もいってないぞ

547 名前:デフォルトの名無しさん :03/09/19 11:09
>>542
505=509?だとしたら444はそれで納得してお礼いってるじゃん

548 名前:533 :03/09/19 11:10
>>546
そうなのか。俺自身がいきなりディスコミュニケーションに巻き込まれてるかも。_| ̄|○

とりあえず皆マターリと卓球でもしよう。
( ´ー)ρ┳┻┳°σ(ー` )

549 名前:デフォルトの名無しさん :03/09/19 11:12
(´・ω・`) 何事も無かったかのようにマターリ次の話題どうぞ↓

550 名前:デフォルトの名無しさん :03/09/19 11:13
>>547
その444は偽者なんだろ?
537様がおっしゃっている。

551 名前:デフォルトの名無しさん :03/09/19 12:12
目算でもかなり近いところまでは作れるだろうし、
あとは本当に微妙な調整だけを、ツールなりプラグインで
仕上げにやれば良いだけじゃないの?そんな簡単な話じゃないか。

今作ってるツールでは、平面の操作と、平面上の点の
操作を分ける仕様になっております。モデリングツールじゃないけど。

552 名前:デフォルトの名無しさん :03/09/19 15:13
DirectX 9 は3D専用ですか?

553 名前:デフォルトの名無しさん :03/09/19 15:40
専用ではありません
ネットワークからサウンドまで、さまざまなリソースが扱えます

554 名前:デフォルトの名無しさん :03/09/19 17:10
専用 では ありません
ネットワーク から サウンド まで 、
さまざまな リソース が 扱えます

555 名前:433 :03/09/19 18:10
なかなか返事が書けませんでした。

>>443
そうです、そうです。
これは、DirectX9のSetDialogBoxMode()を使ってるんですかね?

これで、表示画面が縦に潰れないで、
メニューで表示画面が隠れるようになれば、
期待通りです。

ttp://www.earthwell.net/mitodoke/
の体験版では、DirectX8できているので、
DirectX8でもやりかたはあると思うのですが。

>>515
DirectX8のDirect3Dを使っていてメニューの出るエミュレータで、
ソースが公開されているものがあれば是非教えて下さい。


556 名前:デフォルトの名無しさん :03/09/19 18:46
前にC#でDirectX8上から、
フルスクリーンで標準コントロールを貼り付けていたソースがあったけど、
今行ったらページ作り直しとかで消されてた

557 名前:443 :03/09/19 20:18
>>555
そうです、DirectX9のSetDialogBoxMode()を使っています。

これをやるのは物凄く簡単で、WM_SETCURSORのハンドラでLOWORD(lParam)が
HTMENUかHTCAPTIONだったらSetDialogBoxMode(TRUE)を呼び出した後に
DrawMenuBar(hWnd)。
それ以外の値だったら、SetDialogBoxMode(FALSE)を呼ぶだけ。

縦に潰れるのはSetDialogBoxMode()が勝手にやってしまうので、DirectX9で
潰れないようにするのは面倒です。

X8の場合はD3DPRESENT_PARAMETERSのSwapEffectにD3DSWAPEFFECT_COPY、
FullScreen_PresentationIntervalにD3DPRESENT_INTERVAL_IMMEDIATEを
指定すればなんとかなるかも。
WM_SETCURSORのハンドラではDrawMenuBarを呼ぶだけ。
ただし、X9のようにメニューを開いた状態で描画を続けることは無理なんで、
メニューを開いたら描画を止める必要があります。
(っていうか普通にやると処理が戻らないんで自然と描画が止まる)

X7の場合は、SetDialogBoxMode(TRUE)の代わりにFlipToGDISurface()で
同じようにできます。

558 名前:デフォルトの名無しさん :03/09/19 20:43
>>554
2Dのプログラムもこれで作るものでしょうか?

559 名前:デフォルトの名無しさん :03/09/19 20:58
作るかどうかは本人が決めることであって、
他人が口を挟むべきことではありません

560 名前:デフォルトの名無しさん :03/09/19 21:00
>>558
Direct3Dのジオメトリ演算をさっくりパスすれば
あら不思議、お手軽2Dライブラリですよ?

561 名前:558 :03/09/19 21:13
Direct3D使ってできるんですね。ありがとうございました。

562 名前:デフォルトの名無しさん :03/09/19 21:46
というか「DirectX入門」みたいなページで8以降を扱っている場合、
ほとんどは2Dから入ってると思うんだが…

563 名前:デフォルトの名無しさん :03/09/19 21:56
DirectX以前に2Dをやるなら、DIBでのイメージ操作くらいは
やってからにすべきだと思うのだが

564 名前:デフォルトの名無しさん :03/09/19 22:49
いまさらDIBなんて、旧型ノートに足引っ張られてる
エロゲ屋だけが弄ってればいいのさ。
いきなりDirect3Dでオーケィ。
できる奴はなにやらせてもすぐに腕が上がる。
この俺様のようにな!

565 名前:デフォルトの名無しさん :03/09/19 22:52
DIBすら使えないせいで、テクスチャの書き換え程度も出来ない馬鹿が、
フォントフォントってうるさいんだが、あんたが全部面倒見てくれ

566 名前:デフォルトの名無しさん :03/09/19 22:54
きっぱりと御免こうむる!

567 名前:デフォルトの名無しさん :03/09/19 23:01
DirectX 9の本はほとんど3Dばっかりだったので、3D専用と思ってました。

568 名前:デフォルトの名無しさん :03/09/19 23:08
そういやテクスチャはD3DXのビットマップから直接読み込むAPI使って
終わらせてる本が多いよなぁ

569 名前:デフォルトの名無しさん :03/09/19 23:35
>>568
敢えて語る事も無いだろ。

570 名前:デフォルトの名無しさん :03/09/19 23:35
静的テクスチャならそれだけで用足りるからのぅ。
そこらの入門書だったらそんなもんでいいんじゃねーの。

571 名前:433 :03/09/20 00:08
>>557
作者様でしたか。お答えありがとうございます。

アドバイスにしたがって、
今のプログラム(DirectX8)を少しいじってみました。
頑張ればできそうな感じです。
ただ、場合によってはメニューバーがちらついたり、
ダイアログボックスを出すとダイアログが欠けたりと、
少し面倒な感じです。

時間のある時に、もっと小さいコードを用意して、
試してみたいと思います。
それか、とっととDirectX9に移行するかします。

ありがとうございました。


572 名前:げいつ :03/09/20 12:54
作者は私です。

573 名前:デフォルトの名無しさん :03/09/21 00:12
ゲイシは一行も関わってないだろうなぁ

574 名前:デフォルトの名無しさん :03/09/21 00:29
ゲイツの書いたコードが入っていることの
どこが嬉しいのか分からない


575 名前:デフォルトの名無しさん :03/09/21 00:48
むしろ>>574がなぜそんな疑問を持つのかわからない
誰もうれしがってないよ

576 名前:デフォルトの名無しさん :03/09/21 08:11
YU SUZUKIはプログラマじゃないのに
VF3でPROGRAM YU SUZUKIとなっている (EXEの中に書いてある)

577 名前:デフォルトの名無しさん :03/09/22 00:04
質問なんですが VC6のDirectX9 AppWizardにあたるものが
.netには見当たらないのですが、同じようなものはあるのでしょうか?


578 名前:デフォルトの名無しさん :03/09/22 00:37
>>577
ないよ。
ファイルコピーと一部テキスト書き換えでVC6のやつを持ってこられるけど。
すでに.NETに入ってる他のAppWizardを参考にしてやってみれ。
あと、その質問は死ぬほどFAQなので、
せめて現行スレくらいは検索しろコンチクショウ。

579 名前:577 :03/09/22 00:49
>>578
どうもありがとうございました

580 名前:デフォルトの名無しさん :03/09/22 07:26
よく知らんが、.NET用のはあって2003用のがないんじゃなかったっけ?

581 名前:578 :03/09/22 07:57
>>580
あ、そうだっけ。
勘違いして申し訳なかった。>>577

582 名前:578 :03/09/22 08:13
ついでに訂正。

>>578
>ファイルコピーと一部テキスト書き換えでVC6のやつを持ってこられる

>ファイルコピーと一部テキスト書き換えで.NET2002のやつを持ってこられる
が正解。

.NET2002用のウィザードはSDKに入ってる。

583 名前:デフォルトの名無しさん :03/09/22 23:01
directX8.1つかってます。
ELECOMのPSコントローラを2本させるUSBコンバーターを買ってきまして
こちらはコントロールパネルを見ても正常に動作しているのですが、
どうやれば両方認識させるようにできるのかがわかりません。

とりあえず、LPDIRECTINPUT8 g_pDInput、LPDIRECTINPUTDEVICE8配列 g_gInputDev[2]
と宣言して、
g_pDInput->EnumDevices(......,コールバック関数,.....)
は一回呼だし、このコールバック関数の中でなにかをうまくわりふらなければならないとは
おもうのですが、どうすればいいのかわかりません。

584 名前:デフォルトの名無しさん :03/09/22 23:39
VS.NET2003用のWizardは、もうじき出る DirectX9 SDK Updateに
含まれるらしい。

これでFAQとおさらばか?

585 名前:デフォルトの名無しさん :03/09/22 23:50
これでFAQとおさらバカ?

586 名前:デフォルトの名無しさん :03/09/23 00:57
>>583
DIENUM_STOPを返さずにDIENUM_CONTINUEを返すだけじゃねーの?

587 名前:デフォルトの名無しさん :03/09/23 19:20
DirectDraw7のswitcherを弄っているんですが
最小化ボタン等が不要だったのでウィンドウ生成時 WS_OVERLAPPEDWINDOW を
WS_CAPTION | WS_SYSMENU に変更したところウィンドウ表示の時だけ
画面が描画されなくなってしまいました

どこをなおしたらWS_CAPTION | WS_SYSMENU でも正常に動くようになるでしょうか?

588 名前:デフォルトの名無しさん :03/09/23 21:05
VS.NET2003用のWizardっていつでるの?

589 名前:デフォルトの名無しさん :03/09/23 21:19
>>588
出てるよ。MSのサイトへ行って、DX9 SDK Updateを落としてくるべし。
これをインストールすると、VS.NET2003 にWizardが登録される。

590 名前:デフォルトの名無しさん :03/09/23 23:09
>>587
WS_THICKFRAME を追加してみたら?


591 名前:デフォルトの名無しさん :03/09/26 19:03
保守らねばならないようだ

592 名前:337 :03/09/28 10:53
複数の円状に切り抜きマスクをつけたいのですが、
何かいい方法無いでしょうか?

単純に減算合成で抜くと、
後から重なった部分は抜けないですし・・・。

593 名前:デフォルトの名無しさん :03/09/28 14:17
意味分からん

594 名前:デフォルトの名無しさん :03/09/28 14:34
>>592
テクスチャLockしてアルファ成分いじって直接穴あける

595 名前:デフォルトの名無しさん :03/09/28 23:34
テクスチャ全体の大きさを取得することって出来ますか?

596 名前:デフォルトの名無しさん :03/09/29 01:16
できます。以上。

597 名前:595 :03/09/29 01:22
やり方を教えてください。


598 名前:デフォルトの名無しさん :03/09/29 06:57
自分で調べろ。以上。

599 名前:デフォルトの名無しさん :03/09/29 07:54
とにかく最近の子はヘルプも読まないしSDKのサンプルも見ない。
おまけに他人のソースを盗用してゲーム会社に入ってくる始末。
結局自分一人では組めないので2chとBBXが必要。

600 名前:デフォルトの名無しさん :03/09/30 02:00
Meltdownの内容が公開されていた。
ttp://microsoft.com/japan/msdn/directx/meltdown2003/default.asp

601 名前:デフォルトの名無しさん :03/09/30 04:52
DirectX3のヘルプを探してます
何か入手方法ありませんか?

602 名前:デフォルトの名無しさん :03/09/30 05:43
DirectX5以前てヘルプあったっけ?
なんだか初期の頃、ヘルプ見た記憶無い

603 名前:デフォルトの名無しさん :03/09/30 08:23
日本語のドキュメントはなかったと思う

604 名前:デフォルトの名無しさん :03/09/30 13:04
InsideWindowsとかの付属CDにSDKは入ってたと思うが、
ヘルプも一緒に入ってるのかな。

605 名前:デフォルトの名無しさん :03/09/30 15:21
DirectX3の英語版ヘルプはSDKと同時に配布されてるよ。
日本語版ヘルプは翻訳が遅れたため、
DirectX5 SDKと同時に配布されている。


606 名前:デフォルトの名無しさん :03/09/30 16:11
>>601
・Cマガなどのバックナンバーをあたる
・DX3を使ったCD付き解説本をさがす
・MSに日本語HELPのCDを配布してもらう

607 名前:デフォルトの名無しさん :03/10/01 00:50
版元品切れらしいが、これを探してみるとか
http://www.ascii.co.jp/books/detail/4-7561/4-7561-1728-7.html

608 名前:デフォルトの名無しさん :03/10/01 15:33
質問です、
マウスカーソルがちらつくので
ソフトウェアマウスカーソルでちらつかないようにしたいのですが

windowモードでマウスカーソルがwindowからはみだす時に、

デスクトップのCDC取得してそこに描画かけるか、
猫でもわかるプログラミングにあるような透明のウィンドウ作ってマウス描画
とか考えてるのですが、
こんな感じでいいのでしょうか、それとももっと楽な方法あるのでしょうか。
宜しくお願いします。

609 名前:デフォルトの名無しさん :03/10/02 11:52
3Dの表示ですが
DrawIndexPrimitiveを実行した順番に描画されてしまいます
つまり奥にあるはずの物体が手前に表示されてしまうというわけです。

現在はどのようにし描画しているかというと
Direct3Dの初期化(Zバッファ有効)
ワールド、ビュー、プレジェクション行列の設定
インデックスバッファ、頂点バッファの作成
BeginScan();
表示したい位置に表示されるように頂点バッファの内容をいじる
DrawIndexPrimitive();
EndScan();

610 名前:デフォルトの名無しさん :03/10/02 16:16
>>609
>表示したい位置に表示されるように頂点バッファの内容をいじる
↑これが失敗してるとか。
ZバッファがFALSEのままとか。
奥にあるつもりが実は手前にあったとか。

611 名前:デフォルトの名無しさん :03/10/02 16:23
DirectInputのアクション・マッピングを利用してるのですが、
if(od.uAppData == SHOOT) // 処理
とやると、ボタンを押した時、離した時の両方で反応してしまいます。
何かうまい方法はないでしょうか?

612 名前:デフォルトの名無しさん :03/10/02 16:59
普通に一般的な押し下げ処理すりゃ良いんじゃないの。

613 名前:デフォルトの名無しさん :03/10/02 17:08
一般的な押し下げ処理とはどういうことでしょう?

614 名前:デフォルトの名無しさん :03/10/02 17:18
ごめん、想像してたのと違った。

アクションマップての使った事無いけど、 dwDataには何入ってんの?
あなろぐすちっくや感圧用に0〜255とかが入ってるなら、離された時は
0なんじゃないの。

615 名前:デフォルトの名無しさん :03/10/02 17:30
ヘルプに
〜下位バイトの上位ビットはボタンが押されたときに設定され、離された時に消去される
ってしっかり書いてんじゃん。 例もあるし。

616 名前:デフォルトの名無しさん :03/10/02 18:18
アクションマップの話がでてるので便乗です。
バッファリングデータを2個以上取得した時の話なのですが、
その時は
for(i=0;i<取得した数;i++)
{
 if(didod.uAppData == BUTTON1)
  // 処理
}
とやる以外にスマートな方法というのはありますか?

617 名前:デフォルトの名無しさん :03/10/02 18:19
アクションマップの話がでてるので便乗です。
バッファリングデータを2個以上取得した時の話なのですが、
その時は
for(i=0;i<取得した数;i++)
{
 if(didod.uAppData == BUTTON1)
  // 処理
}
とやる以外にスマートな方法というのはありますか?

618 名前:デフォルトの名無しさん :03/10/02 18:19
2重投稿すいません(;´Д`)

619 名前:デフォルトの名無しさん :03/10/02 19:03
DirectX9で、特定の線やポリゴンを
ライトとか関係無く常に同じ色で表示したいのですが、うまくいきません。

色の種類があまりに多いので、その都度マテリアルを指定するのではなく
できれば線毎に色指定したいんです。

チュートリアルの様に(FVFがD3DFVF_XYZRHWとD3DFVF_DIFFUSEで頂点毎に色指定)
出来れば理想なのですが、あれを未トランスフォームの座標やる方法はないでしょうか?

620 名前:デフォルトの名無しさん :03/10/02 21:59
それかマテリアルとライト等を適用しないようにして頂点に色もたせろ。
つか頂点シェーダ組んでみろ。マテリアルてのが内部でやってることを想像できればこんなことで悩まん。

621 名前:デフォルトの名無しさん :03/10/02 22:15
立体交差がある非定型のマップでの当たり判定を行いたいのですが、
上手い方法が思いつきません。
どういう方法が一般的なんでしょうか?

具体的には螺旋上の物でも判定できるような…。
F−ZEROとかはどうやってるのかな…?

622 名前:デフォルトの名無しさん :03/10/02 22:34
>>619
ライティング済み頂点フォーマットを使えばいいだけじゃん
古い言い方するとLVertex

623 名前:デフォルトの名無しさん :03/10/02 22:40
>>621
まずは普通に汎用的なの作れば?
もしかしてハイトマップしか作ったこと無かったり・・・・



624 名前:デフォルトの名無しさん :03/10/02 23:05
>>621
素直に実装すれば、立体交差不可のような制限など生まれないはず。
何の解決にもなってないが。

625 名前:!621 :03/10/03 02:20
>>623-624
621じゃないですが、
普通に・・・って普通ってどういうのをいうのでしょうか?
とりあえず自分が考えた方法は

方法
@ハイトマップに階層を持たせる。
A三角形を床にならべて三角形ごとに判定。
B幾何学図形を上手く並べて判定。
Cハイトマップをつなぎ合わせる。

考えられる問題点
@データを作る為のツールが鬼。
A三角形同士の繋ぎ目の判定がおそらく鬼。
B設定する人の手間が鬼。Aと同じく繋ぎ目の判定が鬼。
C上手くつなぐのが鬼。Aと同じく繋ぎ目の判定が鬼。

ですがあまりスマートな方法は考えられませんでした。

626 名前:デフォルトの名無しさん :03/10/03 02:29

( ゚д゚)ポカーン …

627 名前:625 :03/10/03 02:52
>>626(´・д・`)ダメナノー?

628 名前:デフォルトの名無しさん :03/10/03 03:11
ポリゴン(三角ポリ)単位で判定すれば良いだろうに。
そうすればそのポリゴンがどのような傾きや大きさや形をしてようが
そのポリゴンとの当り判定なんて楽だろ。
で、最初にポリゴン同士のつながり情報(頂点含む)を
データ読んでノードでもなんでも作っとけば
後は位置さえ解っていれば数ポリのコストで判定が出来るだろ
(綱渡り処理だが高速だ)

後さ、ツールとか設定なんていらんだろ。
データ構造決めて、そのデータをモデル読んで構築する
アルゴリズムさえ組めば良いんだよ。
ま、三角ポリ以外は不可とかの仕様程度必要か。

629 名前:デフォルトの名無しさん :03/10/03 04:00
>>628
じゃあ、625の方法Aってことですね。
頂点を共有する三角形を全て判定に使うんですね。
おおっ!なんかよさそうですね。
ありがとうございます。

630 名前:デフォルトの名無しさん :03/10/03 05:37
>>620 >>622
よ、ようやくできました。ライティングは明示的に
falseにしなきゃなんですね。これで夜明けまで・・・。

しかしおかげでFVFと頂点シェーダへの理解が深まりました。
お二人ともレスありがとうございました。

631 名前:デフォルトの名無しさん :03/10/03 05:46
最近こういう質問見るたびに固定機能が悪の元凶じゃないかと感じてきた

632 名前:630 :03/10/03 06:15
>>631
いえ、D3DRS_LIGHTINGがデフォルトでTRUEな事を知らなかった
私がバカなだけで、固定機能(とそれへの依存症)は関係ないです…。

「ライト使ってないのに…」と思いこみ、ずっと悩んでました。

633 名前:630 :03/10/03 06:17
あ、うちへのレスじゃないのか…大恥
電車で寝てきまつ

634 名前:631 :03/10/03 07:58
630へのレスなんだけど、別に630が悪いと言ってるわけじゃない。
要するに固定機能があるせいで余計にややこしくなってるのではと思う次第で。
初めから数学的に頂点変換なりライティングなりの仕組みとか勉強した上で、
自分でシェーダを書いていったほうが、直感的で分かりやすいんでないかなと。

635 名前:デフォルトの名無しさん :03/10/03 08:30
df

636 名前:デフォルトの名無しさん :03/10/03 11:19
マテリアルってシェーダを使うときに何に使われているのでしょうか?

637 名前:デフォルトの名無しさん :03/10/03 17:30
いっそのこと、かつてのIM,RMみたいに固定機能とシェーダを完全に
切り離してしまった方が分かりやすいかもしれないな。

>>636
頂点シェーダではマテリアルは使わない。っていうか使えない。

638 名前:デフォルトの名無しさん :03/10/03 20:30
  ∧⊂ヽ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (゚Д゚)ノ <  シェーダ
  | ⊃|   \__________
  |  |
  ⊂ノ〜
  ∪


639 名前:636 :03/10/03 20:53
>>637
サンクス!

640 名前:デフォルトの名無しさん :03/10/03 21:44
DirectXというかVC++6.0での質問かもしれませんがよろしくお願いします。
VC++でのエディタの入力支援機能でLPDIRECT3D、LPDIRECTSOUNDは表示されるのですが
LPDIRECT3D9、LPDIRECTSOUND8が表示されません。(数字が最後につくもの)
必要なヘッダと思われるd3d9.hやdsound.hはインクルードしています。
DXSDKのInclude,Libのディレクトリも最上位にしています。
なにが原因なのでしょうか?

環境
VC++&DirectX9.0b

641 名前:デフォルトの名無しさん :03/10/03 22:18
>>640
プロジェクトのあるディレクトリに「プロジェクト名.ncb」ってファイル無い?
これが入力補完のデータベースだから
VisualStudioを一旦終了して、そいつを削除する。
で、もう一回VisualStudio立ち上げてクラスビューを出すとそいつが再編成される。
VisualStudio6.0でコード補完が効かなくなった時に良くやってた。
VisualStudio.net以降は上手く行くか微妙・・・


642 名前:デフォルトの名無しさん :03/10/03 22:43
DirectX8からDirectX9に移行しようとしてるのですが
D3DXAssembleShaderFromFileからエラーが返ってくるようになりました。
もしかして、シェーダアセンブラってそのまんまじゃ駄目ですか?

643 名前:642 :03/10/03 22:52
すいません解決しました。
「頂点宣言」なるものが必要なようです。

#なんためのバージョン宣言なんだろう・・・。

644 名前:640 :03/10/03 22:54
>>641
レスどうもです。
試してみましたがダメでした。
OS再起動しても変わらずです。
d3d9.hなどにtypedefされている「〜9」がだめっぽなので
なんとか調べてみます。

645 名前:デフォルトの名無しさん :03/10/03 23:25
なんともレベル低いのですがDrawIndexedPrimitiveの引数、
BaseVertexIndexとMinIndexの違いについて教えて下さい。

例えば6つのVBに対し、IndexBuffer = { 0,1, 2,3, 4,5, 0,1 }のLINELISTで
後ろの4つ(4,5 0,1の部分)だけ2線で表示させたいのですが、
DrawIndexedPrimitive( D3DPT_LINELIST, 0, 0, 4, 4, 2 )では違うようで・・・。

646 名前:デフォルトの名無しさん :03/10/03 23:27
>>644
外部依存関係のとこにあるd3d9.hやらをプロジェクトに参加させて(Header Filesとかにドラッグ)ビルドすれば
DX9の物もIntelliSenseが働きます。一度ビルドすれば消しても大丈夫です。

647 名前:デフォルトの名無しさん :03/10/03 23:30
>>642
頂点宣言とシェーダーのバージョン宣言は全然意味が違う。
シェーダーを少しでも理解してれば、そんなアホな発言はしないはず。
サンプルコピペ君ですか?
つーか、”「頂点宣言」なるものが”って存在を知らないのか?
DirectX8からDirectX9に移行じゃなくて、移行しなくても理解出来てないんだろ。


648 名前:640,644 :03/10/03 23:36
>>646
ばっちり表示されました。
スレ違いの質問に答えていただきありがとうございました。

649 名前:デフォルトの名無しさん :03/10/03 23:55
>>645
DrawIndexedPrimitive( D3DPT_LINELIST, 4, 0, 4, 4, 2 )

650 名前:デフォルトの名無しさん :03/10/04 00:41
>>647

いやDirectX8のときも

dcl_position
dcl_normal0
dcl_texcoord0
dcl_texcoord1
dcl_tangent
dcl_binormal

↑コレってあったんですか?
少なくともDirectX8のときはなくても動きました。

651 名前:デフォルトの名無しさん :03/10/04 01:36
>>650
だから馬鹿の上塗りは止めろ。
バージョンが違うから必要になったんだろ。
>#なんためのバージョン宣言なんだろう・・・。
お前の発言だ。
バージョン宣言さえすれば要らないがの如く考えを突っ込んでるだよ。

しかも、それは頂点宣言じゃないぞレジスタの設定だろ。

652 名前:デフォルトの名無しさん :03/10/04 02:00
>>651
>頂点宣言じゃないぞレジスタの設定
すみません_| ̄|○

>バージョンが違うから必要になったんだろ。
DirectX8でdcl云々がなくてもたまたま動いてただけかもしれないとか
考えてたわけですよ。

653 名前:デフォルトの名無しさん :03/10/04 11:21
>>649
レスありがとうございます。しかし表示されない・・・他が駄目なのか。

IndexBufferの6番目の値までなら、どんな組み合わせでも表示されるのですが
7番目と8番目が絡むと、なんか途端に駄目でして・・・出直してきます。

654 名前:デフォルトの名無しさん :03/10/04 22:20
>>651
>だから馬鹿の上塗りは止めろ。
それを言うなら恥の上塗り

655 名前:デフォルトの名無しさん :03/10/05 15:25
>>654
だから馬鹿の上塗りは止めろって(ゲラ

656 名前:デフォルトの名無しさん :03/10/05 15:55
恥の上塗りの典型的な例が>>655

657 名前:デフォルトの名無しさん :03/10/05 16:08
>>601

その本 もってる。
ほしきゃあげるけど、どうやってれんらくとりあえばいいんだ


658 名前:デフォルトの名無しさん :03/10/05 16:12
>>656
恥部の上澄みハァハァ

659 名前:デフォルトの名無しさん :03/10/05 16:48
>>658
ごっくんしますた(;´Д`)ハァハァ

660 名前:デフォルトの名無しさん :03/10/05 17:55
>>658
先走りですか?

>>659
あなたがごっくんしたのはカウp(ry

661 名前:デフォルトの名無しさん :03/10/05 18:02
>>660はグロ

662 名前:デフォルトの名無しさん :03/10/06 15:47
初カキコで少し質問させてもらいます。
現在directx8を使ってプログラミングしているのですが
directx8には線分を描画する機能はあるのでしょうか
よろしくお願いします

663 名前:(^^) :03/10/06 15:53
ありますよ(^^)

DrawPrimitiveで(^^)
D3DPT_LINESTRIP(^^)またはD3DPT_LINELIST(^^)を使えば
線になります(^^)

664 名前:デフォルトの名無しさん :03/10/06 17:23
山崎っぽいな

665 名前:デフォルトの名無しさん :03/10/07 16:27
VC6.0のWin32 Console Application環境下で、ジョイスティックのフォースフィードバック機能を使用することって可能ですか?
DirectX8SDKのサンプルプログラムのようなwinMainを使った方法ではなく、main関数を使用するオールドタイプなプログラムでフォースをかけてみたいと思ってます。
皆様の手ほどきをお願いします。。。



666 名前:デフォルトの名無しさん :03/10/07 17:19
可能です

667 名前:デフォルトの名無しさん :03/10/07 17:20
>>666
そうですか残念です。

668 名前:デフォルトの名無しさん :03/10/07 17:21
そうですね

669 名前:デフォルトの名無しさん :03/10/07 18:29
>>665
何か問題あるの? わけ解らん。

670 名前:667 :03/10/07 20:27
>>669
問題は私が665ではないところではないでしょうか。

671 名前:デフォルトの名無しさん :03/10/07 21:20
>>665
もうちょいメッセージの勉強汁
おないがわかってないのはDirectXto関係ない

672 名前:デフォルトの名無しさん :03/10/08 04:25
質問です。
描画の順番で、
始めに、αで無い物の描画を行い(この描画は手前の物から描画)
最後に、α物の描画を行う(この描画は奥のものから描画)
という理由は、わかるのですが、
そもそもα物ってどうやって知るのでしょうか?

もしかして、
テクスチャにα情報が入っているかどうか。
頂点情報にα情報が入っているかどうか。
を調べなきゃ駄目ですか?

673 名前:デフォルトの名無しさん :03/10/08 08:36
すみません、質問です
この度GeForce4TiからRadeon9600proに替えましたところ、
DrawIndexedPrimitiveにて正常に表示がされなくなりました。
DrawIndexedPrimitiveUPでも同じです。
Index16とIndex32も試しました。
D3DPT_TRIANGLELISTで、vertexはvector、normal、texUVです。
index数、vertex数ともに処理できる最大値は超えていません
インデックスバッファを展開しDrawPrimitive(UP)での表示はうまくいきます。
Win2ksp4にVC++6.0sp6、DirectXSDKは8と9を試しました
DirectXランタイムは9.0bです
どんな原因が考えられるでしょうか?

674 名前:デフォルトの名無しさん :03/10/08 09:56
>>673
とりあえず、ドライバは最新?

675 名前:デフォルトの名無しさん :03/10/08 10:38
>>674
ドライバは最新から3個前までと付属のものカタ3.2を試しましたが駄目でした

676 名前:デフォルトの名無しさん :03/10/08 11:15
DirectXコンパネのデバッグレベル最大にするとどうなる?


677 名前:デフォルトの名無しさん :03/10/08 11:48
9.0bRuntimeのリリース版が入ってますが(汗
ナローでがんばって9.0bSDK落とします・・・

678 名前:デフォルトの名無しさん :03/10/08 21:17
>>672
事前に分かっているはず

679 名前:デフォルトの名無しさん :03/10/09 01:00
・作る前に仕様を決めておく。
・ある程度デザイナー任せにする場合。まともなゲームならばXファイルなんか使わずに個々のゲームに相応しい
独自形式に変換するのが常識。変換のときにフォーマットも調べるはず。


680 名前:デフォルトの名無しさん :03/10/09 13:16
>どんな原因が考えられるでしょうか?
・部分的に最適化されたモジュールをつなぎあわせただけのドライバ
・RADEON
・ATI

681 名前:デフォルトの名無しさん :03/10/09 20:10
さがりすぎてみつけにくいですよこのスレage。

682 名前:673 :03/10/10 03:39
>>673です
コンパネのOutputLevelをあげたところ
Direct3D8: (INFO) :Failed to create driver indexbuffer
Direct3D8: (ERROR) :Driver not handled in DrawPrimitives2
とのことです。

頂点数を減らして調べたところ
vertex78個 index168個で正常に表示
vertex81個 index171個で上のエラーがでて、表示おかしい

d3dcaps8では
MaxPrimitiveCount :1048575
MaxVertexIndex :16777215
となっているので明らかに少なすぎると思うのですが・・・

Radeon使ってる方はいませんでしょうか?

683 名前:デフォルトの名無しさん :03/10/10 03:40
あげます

684 名前:673 :03/10/10 04:30
3dMark03のCPUTESTにてこんなものがでました
ドライバのバグか?
ttp://sylphys.ddo.jp/upld2nd/pc/img-box/img20031010042856.jpg

685 名前:673 :03/10/10 06:03
>>684はデバッグバージョンのランタイムで出るようです
リリースバージョンでは実行できました。
いいの?

686 名前:673 :03/10/10 06:38
すみません自己解決しました
DrawIndexedPrimitive(UP)のNumVerticesにindex数を突っ込んでました(汗
Geforceはこれで動いちゃうんだからすごい適当だわ



687 名前:デフォルトの名無しさん :03/10/10 06:44
>>685
ああ、そういえばこれ↓まぎらわしいですよね?
スタート->Microsoft DirectX 9.0 SDK
->Install DirectX Runtime->Install Debug DirectX or Install Retail DirectX

Install Retail DirectXの存在を知らないとハマリ確定ですし。

あと、
SDKのインストールのときのDebugとRetailの設定と
コントロールパネルのDebugとRetailの設定と
Install DirectX Runtimeってどういう関係になってるんでしょうね。

688 名前:デフォルトの名無しさん :03/10/10 06:46
>>686
おめでとうございます。

689 名前:デフォルトの名無しさん :03/10/10 14:50
Windowサイズに合わせて、バックバッファの大きさを変更したく
サンプルをひいこら読んでいるのですが、うまくいきません。

他のバッファはそのままで、バックバッファの
サイズだけ変える方法は無いのでしょうか?

690 名前:デフォルトの名無しさん :03/10/10 17:40
フロントバッファのサイズを変えずに、バックバッファのサイズだけ変えるの?

691 名前:689 :03/10/10 18:38
>>690
すいません、両方です。
VertexBufferとか以外と言う感じでお願いします。

どんなウィンドウサイズになっても、クライアント領域のxy座標と、
射影後の座標が一致するようにしたいんですが…なかなか出来なくて。

とりあえず、バック(フロント)バッファと、クライアント領域の
大きさがぴったり同じだと、調整・計算無しで一対一にて対応できるので、
できれば両方を常に同じ大きさで合わせたく思ってます。

692 名前:689 :03/10/10 18:41
どうも説明が下手ですいません。
クライアント領域のxy座標というのは、WM_LBUTTONDOWNの
lParamで来るようなPOINT値のことのつもりです。

693 名前:デフォルトの名無しさん :03/10/10 19:46
新しいD3DPRESENT_PARAMETERS作ってリセットするといいと思うにょ。

694 名前:689 :03/10/10 20:38
>>693
レスありがとうございます。お礼が遅くなってすいません。
上手くいってから…と思ったのですが、未だ苦戦中でして…。

でもやり方が合ってるようでホッとしました。凄い力づけられます。
どうも「VertexBufferまだあるやんけ〜」みたいなエラーが出ちゃうんすよね…。

695 名前:デフォルトの名無しさん :03/10/15 12:18
DirectXのヘルプについて質問お願いします。
関数などのパラメータ説明に使われいる[in]や[out]の意味は何なのでしょうか。

さすがに何となく意味は分かるのですが、
例えばD3DXMatrixLookAtLHの演算結果を返す
D3DXMATRIX* pOutが、[in, out]指定なのが疑問で…。

この内部でも出力にしか使われて無さそうな
パラメータに、なぜ[in]もついているのでしょうか。


696 名前:デフォルトの名無しさん :03/10/15 13:32
>>695
あんま意味ないんじゃね?
だって引数全部にinってついてない?

697 名前:695 :03/10/15 13:47
>>696
レスありがとうございます。なはは、そうかも知れませんね。

一応ポインタへのポインタ(D3DXCreateMatrixStackなどに)には
[out]のみのがあるのですが、「ポインタへのポインタだからoutのみ」では
ちょっと直接的というか納得できなくて…。

自分のコメント書くとき、参考にしようと思っていただけなので、
適当にやってみます。お付き合い感謝です。

698 名前:デフォルトの名無しさん :03/10/15 21:04
当該関数から見てinとかoutってことだぞ?
たしかCOMでの表記法だったと思われ

699 名前:デフォルトの名無しさん :03/10/16 21:46
線(LINELIST)を描画する前に
device->SetRenderState( D3DRS_DEPTHBIAS, 16 );
面(TRIANGLELIST)を描画する前に
Device->SetRenderState( D3DRS_DEPTHBIAS, 0 );

なんてしておけば、例え面の上に線があっても、
線の方がくっきり見えると思っていたのですが、全くそんな気配がありません。

使い方が間違っているか、または線にはZバイアスが適用されないのでしょうか?
ビデオカードは一応、Zバイアスをサポートしてます。

700 名前:デフォルトの名無しさん :03/10/17 02:05
>>699
ヘルプ読んだ?
ラインとポイントのプリミティブには適応されないよ。
因みに俺も知らなかったが、君のレス読んで1分後にはヘルプで答え見つけたぞ…

701 名前:デフォルトの名無しさん :03/10/17 03:02
D3DRS_DEPTHBIASは使い物にならないだろ。
デカール用に調整した射影行列の方が良くないか。


702 名前:デフォルトの名無しさん :03/10/17 04:09
>>700
お恥ずかしい、スカっと見落としてました。言い訳のしようもありません…。

>>701
おかげ様でであっさりと、何のコストもなく綺麗に実現できてしまいました。
この時間まで試行錯誤してたのが嘘みたいです。

お二人ともレス感謝、ありがとうございました。

703 名前:デフォルトの名無しさん :03/10/19 05:09
xfileをたくさん落とせるサイトないですかね・・?

特に公開目的じゃないので著作権とかは適当でいいです。

704 名前:デフォルトの名無しさん :03/10/19 06:13
>>703
D3DXCreateTeapotでいいやん(w

まあ、何をそんなに欲しがってるのか分からんが、
別にxfileでなくてもLWとか3dsとかのモデルデータを手に入れてメタセコでxfile出力とか。
LWとかのモデルデータならどっかで手に入るかもしれない。
ぶっちゃけ自分でモデルをメタセコで作ってxfileで放出なんてのでもいい。
2,3日触ってればあのモデラーは結構つかえるようになるよ。

705 名前:デフォルトの名無しさん :03/10/19 13:41
>>704
まだDirectX始めたばっかで、
いろいろなオブジェクトがどう表示されるかとかちょっと興味あったもんで、、、

自分でxfileそれなりに作れた方がいいだろうし、試しにメタセコイア触ってみることにします(´-`)ノ

レスありがとうございました。

706 名前:デフォルトの名無しさん :03/10/19 17:57
DX9.0Update(Summer 2003)のD3DXCreateFontが使い物にならない予感。
フォント幅を自動調整してくれない時点で終わってる。
問題なく使いこなせている方いらっしゃいますか?

707 名前:デフォルトの名無しさん :03/10/19 18:01
3Dゲーム作るには必須ですか?

708 名前:デフォルトの名無しさん :03/10/19 18:20
>>706
テクスチャをロックして自分で好きなように設定すればいいだけの話

709 名前:706 :03/10/19 18:48
>>707
>>708
ありがd
Summer 2003の前バージョンで作った描画ライブラリの中で使っているD3DXCreateFont部の
Summer 2003への移植で困っています。前のバージョンだとD3DXCreateFontはGDIのHFONTを
引数に渡すだけでGDIと同様の描画結果(しかもアルファ付)だったのでとても使い勝手がよかったです。
>テクスチャをロックして
GDIではアルファ属性テクスチャーに書き込めない罠。ロックしたりアルファビットを設定
したりするのは処理時間が掛かりすぎるような予感がしまつ。
Summer 2003のドキュメントのD3DXFONT_DESC Structureのメンバに嘘書いてるし、
D3DXCreateFontは後で改修される予感。(結局待ちまつ。)

710 名前:デフォルトの名無しさん :03/10/19 19:43
>>706
自分もそいつに手こずっている。フルスクリーンモーで描画されない。
Text3Dサンプルでも同じ症状だから、根本的にバグっている悪寒。

711 名前:デフォルトの名無しさん :03/10/19 20:13
>>709
処理負荷ってそれじゃあD3DXは魔法でも使っているというのか?
インタフェイスを呼び出す条件は自前だろうがD3DXだろうが変わらんのだが

712 名前:デフォルトの名無しさん :03/10/19 20:13
>自分もそいつに手こずっている。フルスクリーンモーで描画されない。
>Text3Dサンプルでも同じ症状だから、根本的にバグっている悪寒。

フルスクリーンモードではバグってます。
ちなみに、ドライバを更新すると、突然、正しくフォントが
描画されるようになったケースが個人的な実験で検証したことが
あります。

つまりドライバの実装が、DirectXのそれに合致してないケースが
あるのです。


713 名前:デフォルトの名無しさん :03/10/20 19:41
ポータルシステムって知ってます?

俺が持ってる本「3Dグラフィックス数学」に書いてあるんだが、なんのことだか
よく分かんない。

カリングのための視錘台を"小さく"して、より多くの不可視オブジェクトを
取り除こうというものですか?

714 名前:デフォルトの名無しさん :03/10/20 19:48
>>713
少し気合い入れて数学勉強してみ。
そうすれば本に書いてある事も理解できるはず。

てか、あの本
基礎数学を本気で知ってる事を前提に書かれてるな。

715 名前:デフォルトの名無しさん :03/10/20 20:27
>>713
まずportalという単語の意味を調べなさい。

716 名前:デフォルトの名無しさん :03/10/20 22:08
>>714>>715
どうもー。

portal=入り口、門かな。挿絵を見てみると、そんな感じはある。

数学か・・・。あんまり厳密に理解できなくても、ある程度試行錯誤したら、
一応動くプログラムは作れて、そんな感じでやってきたので、基本的な
ところがおろそかになってます。まぁ、本をよく見て追ってみます。

717 名前:デフォルトの名無しさん :03/10/20 22:09
>>714
最初の線形代数とかは復習ですな。
簡潔に書いてあるから好きだけど

718 名前:デフォルトの名無しさん :03/10/21 21:45
3dグラ数は買って1年ほど経つけど読んでないや
数学ちんぷんかんぷんな俺には難しい・・・
ああ、でもそろそろやらないと・・・
来年の今頃はDirect3Dプログラムちょちょいのちょいと組めるようにならないと・・・(涙

719 名前:デフォルトの名無しさん :03/10/22 00:58
DirectX初心者です。質問させてください(いろいろ調べてみたのですが・・汗)
シェーダでテクスチャuvをピクセル単位で同次除算させようと、
mov oT0.xyzw, r0.xyzw
と、変換済みのxyzwをテクスチャ座標に設定しています。
しかし、ピクセル単位で/wされていないようなのですが、どうしてでしょう?
(oT0.wに適当な数値を入れても描画結果に変化はありません)
さらに不思議な事に、
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT3 | D3DTTFF_PROJECTED )
をステージに設定すると、ピクセル単位で/wされ綺麗に描画されるのですが、
D3Dエラーがでまくっています。
Direct3D8: (ERROR) :Stage 0 - Count in D3DTSS_TEXTURETRANSFORMFLAGS must be 0 when programmable pipeline is used
(シェーダの時には0にしなさい!って事だと思うのですが・・・)
シェーダで同次除算させる時にTEXTURETRANSFORMFLAGSなどの設定は必要なのでしょうか?
環境はDX8.1/vs1.1です。

720 名前:デフォルトの名無しさん :03/10/22 04:54
ピクセルシェーダが自前ならtex3Dprojとかで事が済むんだがのぅ。
最近HLSLしかやってないから固定機能のほうは忘れた('A`)

とりあえず、言われた通りにD3DTFF_DISABLEを使ってみては…
(全く自信が無い、つーか動いたらそれもそれで理由不明w)

721 名前:デフォルトの名無しさん :03/10/22 04:55
併用した結果は仕様外の環境依存で、
D3DTSS_TEXTURETRANSFORMFLAGSと併用せずに
全部PixelShaderでやれってことじゃないの?



722 名前:デフォルトの名無しさん :03/10/22 04:55
あ、VertexShaderか

723 名前:デフォルトの名無しさん :03/10/22 14:49
>720
>721
レスありがとうございます。
やはりVertexShaderだけでは無理という事なのかなぁ・・・。
使用しているグラフィックボードは、PixelShaderが使えない奴なので、
なんとかVertexShaderだけで出来ないかと悩んでました。

D3DTSS_TEXTURETRANSFORMFLAGSを立てると、うまく/wされて
綺麗に出ているだけに、諦め切れないと言うか・・w



724 名前:デフォルトの名無しさん :03/10/22 17:42
SSVと四角形の板との当たり判定の処理を作っています。SSVがキャラクター、
四角形の板の組み合わせが地形と想定しています。

単体同士のテストでは、どうやら大丈夫のようですが、いくつかの四角形の
板の組み合わせと当たり判定をとると、2つ以上の板と衝突する場合に、
条件によってはすり抜けてしまいます。

おそらくは、壁擦りのための処理で、衝突した場合に押し出したときに、当たり
判定の処理が終わった壁に再び衝突してしまうのが原因のようです。

すり抜けの現象が起こりにくい処理の仕方とは、どういったものでしょうか?

725 名前:デフォルトの名無しさん :03/10/22 18:48
>>724
「1つ前の座標をとっての当たり判定をやっているならそれをやめる。」
っていうのが私の出した結論ですが、どうでしょうか?

726 名前:デフォルトの名無しさん :03/10/22 18:50
ごめんSSVって何ですか

727 名前:デフォルトの名無しさん :03/10/22 19:06
>724
>判定の処理が終わった壁に再び衝突してしまうのが原因のようです。

その衝突が検出できているのであれば、
衝突しなくなるまで判定とる。

とかじゃ、ダメ?

728 名前:デフォルトの名無しさん :03/10/22 19:21
>>727
やめたほうが無難。
あっさり無限ループに入る。
判定回数に制限を入れても結局解決には至らないし。

729 名前:デフォルトの名無しさん :03/10/22 19:45
すいません。SSVはSphere Sweep Volumeのつもりです。

>>725
その通りの手法です。一つ前の位置と現在の位置をとって当たり判定を
とれば、速い速度で壁にぶつかったときにもすり抜けることがないので、
この手法でやっていますが、あんまり勧められない方法なんですか?

>>727
その方法ならできそうな感じがあります。ちょっとテストしてみます。

730 名前:デフォルトの名無しさん :03/10/22 19:57
>>729
>あんまり勧められない方法なんですか?
はい、その方法でやっている限りこの問題の解決は難しいと思われます。
なんとか正常に動いているように見えるようにするぐらいが精一杯ではないでしょうか。
とはいっても市販のゲームもかなりこれに近い方法でやっているのではないかと
思われるゲームが多々ありますのでそれでいいと思えばそれでいいのではないでしょうか。

731 名前:デフォルトの名無しさん :03/10/22 20:09
Q 壁をすり抜けるのですが?
A それは仕様です。

732 名前:デフォルトの名無しさん :03/10/22 20:35
>728
無限ループになるかな?
前回の位置が保証されていれば(壁に入っていない)、
必ず解は出ると思うけど。。。

>730さんお勧めの方法は?


733 名前:デフォルトの名無しさん :03/10/22 21:01
>>732
>前回の位置が保証されていれば(壁に入っていない)、
前回の位置なんて保障されてないでしょ?
もう他の物体があるかもしれないし。

>お勧めの方法は?
当たり判定をする空間をしっかりと限定する
(こうすることで壁の向こうの壁の存在を気にしなくてよくなる。
 説明するの面倒臭いから限定方法は自分で考えて(できるっしょ?))
その後は普通に当たり判定をして、めり込んでいれば戻す。
もちろん一つ前の座標が必要になるときもありますが
しっかり当たり判定をする空間をきっちり定めてあれば
抜けが問題になることはないと思います。

でどんなもんでしょ?

734 名前:デフォルトの名無しさん :03/10/22 21:18
そもそも接触というのを瞬間的な座標修正用に考えるから問題が出る
座標ではなくベクトルで考えればいい

ビリヤードを例えにするが、壁際のボールAにボールBを当てたとすると、
ボールBはボールAに力を伝える
ボールAは壁によって進行方向であるベクトルを曲げる
ボールBはボールAの反作用を受けて進行方向を変える
この進行方向は次フレームに繰り越して座標を決定する
接触判定はあくまでベクトルの変化に使うのであって瞬間の座標決定には使わない

壁ずりは反作用によるベクトル変化で自然に出来る
この場合はビリヤードの玉のような動きではなく、自分で推進力を発生させる必要がある

735 名前:デフォルトの名無しさん :03/10/22 21:28
>>734
( ´∀`)いいたいことはわかるんだけど、なんかすごくバグりそうだよ。

736 名前:デフォルトの名無しさん :03/10/22 23:07
>>733
点P(x1, y1, z1)を考えて、x1*x1+y1*y1+z1*z1<1、こういうので判定するって
こと?これだと原点を中心とした半径1の球の中にしか点Pは存在しないって
ことになるけど、複雑な地形は表せないしなぁ。違うのか。

737 名前:デフォルトの名無しさん :03/10/22 23:15
>>736
逆に聞くけど
どうして1つ前の座標を知らなくちゃいけないの?

738 名前:デフォルトの名無しさん :03/10/22 23:51
VMR-9を使ってテクスチャに動画をレンダリングさせて
それを表示してるんだけど、はまってしまいました。

ウインドウのサイズが変わったときに
バックバッファの大きさを変更するために
IDirect3DDevice9::Reset() を呼び出したいんだけど、
この呼び出しが 失敗してしまいます。

いったいどうやってサイズが変更したことを
VMRに伝えればいいんでしょうか?

どなたかご存知でしたらご教授お願いいたしますです。

739 名前:738 :03/10/23 03:33
ちなみに Reset() は CreateDevice() したのと
同じスレッドで呼び出しています。

もしかして デバイス作り直すんでしょうか?
だったら・・・めんどいなあ。


740 名前:デフォルトの名無しさん :03/10/23 04:41
Texture とか全て破棄してからじゃないと reset できなかったような気が。
というか初期化&もろもろ用意処理、破棄処理ってすでにあるだろうから、
安直にそれ呼べばいいんじゃない?

741 名前:デフォルトの名無しさん :03/10/23 04:53
D3DPOOL_DEFAULT系で宣言した奴は全て解放しないとだめです。
D3DXEFFECTみたいのにもOnResetDeviceだとかいう関数あるのでちゃんと呼び出してあげてね。

742 名前:デフォルトの名無しさん :03/10/23 14:55
>>737
一つ前の座標が無くても判定はできると思いますが、この場合どうしても、
速い速度で衝突したときに抜けてしまうと思います。たとえば球同士で
判定する場合、現在の原点の位置同士の距離を測って、その距離を
2つの球の半径の合計と比較するといったほうがあると思いますが、
これは速い速度での衝突が判定できない場合があると思います。

点P(x1, y1, z1)を考えて、この点が存在できうる範囲を
0<=x1<=1, 0<=y1<=1, 0<=z1<=1とすると各辺の長さが1で点(0.5, 0.5, 0.5)を
中心とした軸に合わされた箱になる。これで当たり判定をとると、確かに
速い速度で衝突したとしても抜けない。が、箱の一辺が空いていて外に
出られるとする、箱は部屋のようなイメージで、空いている一辺はドアとする。
このときは箱それぞれについて判定しても、今いる部屋については意図した
結果が得られるが、そうではない部屋については意図した結果が得られない。

もしかして、空間を限定するというのは、今いる部屋だけに限定するという
ことなのかな。ただ、今いる部屋を限定するには1つ前の位置がいるような
気がする。

743 名前:デフォルトの名無しさん :03/10/23 15:08
離散的に判定してる限り、条件次第で壁抜けするのは仕方ないんぢゃない?

連続的に判定するか、壁を十分に厚くするか、あるいは時間刻みを十分に細かくするか。
その程度しか思い浮かばないけど。

744 名前:デフォルトの名無しさん :03/10/23 18:18
思うに、壁の法線ベクトル計算に入れれば解決するんでない?
法線があれば裏抜け解るはずでしょ?

745 名前:デフォルトの名無しさん :03/10/23 19:05
>>742
そうなんですけど、それじゃ駄目なのでしょうか?

「今いる部屋」から出るための判定をパスしない限り
「そうでない部屋」へはいけないようにして。
「今いる部屋」から出るための判定をパスして
「そうでない部屋」へいったら、その部屋が「今いる部屋」になる。

とかやるわけです。

で抜けてしまう場合の判定には1つ前の座標を使えばいいと思います。
ただそれは大きく距離を移動したときの判定や、
判定後の位置補正にだけに絞って使ってはどうでしょうか?

>>744
抜けるのは微妙な誤差で抜けてしまうのでそれだけだと
何かと問題が多いみたいです。

746 名前:745 :03/10/23 19:07
×抜けてしまう場合の判定には
○すれ違ってしまう場合の判定には

スマンです。

747 名前:デフォルトの名無しさん :03/10/23 21:22
DirectXで深度バッファの値を参照したいのですが、
どうやって見るんですか?

単純にLockできないようだし・・・。


748 名前:デフォルトの名無しさん :03/10/23 21:32
>>738
 IDirect3DDeviece9で作成した関連するデバイスを全部解放しろ。
そうすればリセットで成功するはず。

ビデオボードが2枚以上刺さっている場合はIDirect3DDeviece9も
 作り直せ

749 名前:デフォルトの名無しさん :03/10/23 22:27
当たり判定のことを聞いた者です。

みなさんどうもありがとうございました。みなさんとのやりとりでだいぶ
つかめました。

>>744
見えないオブジェクトのカリングに似た処理は、当たり判定にも必要である
のでその手法でだいぶ理想の形に近づけました。

750 名前:738 :03/10/24 01:06
みなさん、ご回答ありがとうございます。

PixelShader/Texture/Font すべてResetの前に
解放してみましたが、やはり駄目でした。

ダミーのデバイスを作っておいて、
IVMRSurfaceAllocatorNotify9::ChangeD3DDevice()を使って
1 .正規 -> ダミーに切り替え
2 .正規デバイスを Reset
3. ダミー -> 正規
と切り替えればもしかしたら楽にいくのかと思ってやってみましたが
やはり駄目でした。

というか ChangeD3DDevice を呼び出すスレッドは
DirectShow内部のスレッドなのでしょうか?
それともデバイスを作ったスレッドなのでしょうか?

それにしても DirectShow 難しい・・・


■過去ログ置き場に戻る■ 1- 前250 次250 最新50
DAT2HTML 0.33f Converted.