- 1 名前:デフォルトの名無しさん mailto:sage [2009/06/22(月) 22:06:29 ]
- ※回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。 1.C/C++は多少理解している。 2.最近DirectXを始めたばかり 3.SDKを見ても、Googleで検索しても、いまいち理解できない人 4.余計な雑談は不要ですよ 【 回答してくださる方 】 ・ できるだけ優しく質問に答えてあげてください。 ・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 「ググれ」「SDK見れ」以外の回答でおながいします。 ・ 神ですら理解不能な質問は無視して下さい。 【 質問する方 】 ・ どんな事で躓いているのか明確にしよう。 ・ 長くならないなら躓いている部分のコードを晒してみれ。 ・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。 ・ 回答して貰ったら、出来るだけお礼もしよう。 【C++】 DirectX初心者質問スレ Part23 【C】 pc12.2ch.net/test/read.cgi/tech/1242977486/
- 488 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 07:03:23 ]
- >>487
どう考えても自分が原因なのにうるさい
- 489 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 09:40:02 ]
- Xファイルを自前の形式に変換してゲーム中に表示させたいので質問です。
AnimationKeyの番号が0で回転を表しているのですが floatが四つ並んでいます。 どうやら調べるとクオータニオンを使って変換するらしいのですが xyzwでクオータニオンってDirectXの関数で作れますか? 幾ら調べても見逃しているのか見つかりません。 また他にもframeに番号1(拡縮)と2(移動)があるのですが これ 拡縮行列x回転行列x移動行列の結果を影響のある頂点にかければいいのでしょうか?
- 490 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 09:43:24 ]
- d3dxのクオータニオン構造体あるだろ
あれの要素がxyzwだからそのまま放り込めばおk
- 491 名前:489 mailto:sage [2009/07/17(金) 09:50:27 ]
- 盲点でした…。
クオータニオンってもっと複雑な物かと思ったいたら 中身はxyzwしかなかったのですね…。 ありがとうございます。
- 492 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 10:50:30 ]
- 盲点でもなんでもねえ
- 493 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 11:02:59 ]
- >>483
StretchRectはさまざまな制限があるけど、MSDNは確認した? めくら撃ちしたって時間の無駄だよ。 拡大・縮小がダメな場合もあるから領域指定がNULLなのも怪しい。 ちゃんと動くまではちゃんと指定してあげること。
- 494 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 15:02:08 ]
- DirectX関係ないな
- 495 名前:デフォルトの名無しさん mailto:sage [2009/07/17(金) 15:03:10 ]
- あ、ごめん、リロードしてなかった
- 496 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 16:33:32 ]
- スキンメッシュで手とか足のボーンの位置とか傾きを取得するにはどうしたらいいですか?
- 497 名前:デフォルトの名無しさん mailto:sage [2009/07/18(土) 16:37:24 ]
- 該当フレームの行列を確認すればいい
- 498 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 14:09:51 ]
- 頂点データを取得したいんですが
D3DXLoadMeshFromXでLPD3DXMESH *ppMeshを取得して DWORD FVFSIZE; LPDIRECT3DVERTEXBUFFER9 ppVB; BYTE *pointVec; ppMesh->GetVertexBuffer(&ppVB); FVFSIZE=D3DXGetFVFVertexSize(ppMesh->GetFVF()); ppVB->Lock(0,0,(void**)&pointVec,0); とやってこのあとどうすれば頂点データを一つずつ取得できますか? FVFSIZEの分だけpointVecに足してやればいいんでしょうか?
- 499 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 19:02:25 ]
- フォーマット通りに並んでいるだけなんだから、
順番に取り出していけばいいだけ。
- 500 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 20:02:19 ]
- DirectX9のSDKで最新はどれですか?
- 501 名前:デフォルトの名無しさん mailto:sage [2009/07/19(日) 23:39:52 ]
- ぼくしょうがくせいだけど
それはDirectXデベロッパーセンターにいけばわかることくらいわかるよ
- 502 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 01:14:33 ]
- Xファイルのデータでボーンアニメーションって出来ますか?
- 503 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 01:51:32 ]
- うん
- 504 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 03:25:35 ]
- Xファイルをサービス関数を使わず独自の形式で読み取りたいです。
そこでモーションつきのモデルを読み込みたいのですがうまくいきません。 まずメッシュの頂点データと法線データとUVデータは全て読み込みました。 ちなみにメッシュは1メッシュです。マテリアル等は無視しています。 質問@ 「SkinWeights」の項目にそのフレームが影響する頂点とそのウエイトが定義されているのですが その一番最後に4x4行列があるんですがこれがよくわかりません。 これは親子関係を考慮しつつ各頂点にかければいいのですよね? 質問A 入れ子によって親子関係を定義している部分がありますが そこにあるFrameTransformMatrixはボーンアニメーションする場合は 一切無視していいのでしょうか? 調べてみるとアニメーションの概念ができる前から存在すると聞きました。 質問B 最後に「AnimationSet」の項目に ローテーション・スケール・トランスレーションが各フレーム毎にデータがあるんですが スケール行列xローテーション行列xトランスレーション行列で1つにまとめたあとに 影響する頂点にかければいいのですよね? 質問C これらの事をしてもときちんと動かないのですが何か抜けている点はあるでしょうか?
- 505 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 08:26:28 ]
- 質問@
いいえ ボーンの行列 = ボーンのオフセット行列 * 親子関係によって積算した後のフレーム行列 質問A はい アニメーションとそれは相互排他 質問B はい 質問C わかりません
- 506 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 08:29:55 ]
- まずは、スキンメッシュじゃなくて
普通のアニメーションするメッシュが 正しく動作するか確認して
- 507 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 09:41:17 ]
- 質問A
相互排他ではありません。 たとえばアニメーションに位置の情報が無い場合は そこから位置だけを抽出する必要があります。 当然アニメーションに回転が無い場合も回転だけ そこから抽出する必要があります。
- 508 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 10:33:35 ]
- >>507
その発想はなかった。確かにアニメーションデータに位置の情報がなければ(そんなXファイルつくるなw)引用する必要がでてくるな。 俺は、AのFrameTransformMatrixは「デフォルトポーズ」だと認識してるぜ
- 509 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 11:49:57 ]
- 回転と移動と伸縮を別に管理してるとどれか情報がないって事はよくあるけどな
D3DXのはマトリックスしか持ってないんだっけ
- 510 名前:505 mailto:sage [2009/07/21(火) 14:46:52 ]
- >>507
FrameTransformMatrixが相互排他であるかないかは 多分ドキュメント類には記述はなく、未定義だろうから、 DXSDK関連のソースでもみて結論付ける必要があるだろう。 個人的には、>>507は十分わかるんだが Xfileでアニメーションする際には、必ずFrameTransformMatrixの 分解が必要になる訳で、ちょっとナンセンスかなと思うな。 例えば、フレームの移動が必要ないなら、アニメキーは無しに、 全編を通して固定位置にしたいなら、キーを1つだけ用意する。 これで対応出来るし、こっちの方がスマートだと思う。
- 511 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 16:55:23 ]
- GDIかなんかで5頂点ポリゴン描画すると
www.traum-projekt.com/forum/attachments/3748d1027598908-corel-draw-polygon-stern.jpg 真ん中がくりぬかれて描画されますが、 DirectXのDrawPrimitiveで 同じ5頂点を利用してこのような描画って できますか?
- 512 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 17:37:42 ]
- ステンシルバッファ使えば出来なくもない
- 513 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:08:08 ]
- >>511
>真ん中がくりぬかれて描画されますが は?
- 514 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:17:03 ]
- ROPなんてゲーム作るうえで誰も必要としてないから
- 515 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:19:08 ]
- XORな描画ステータスあったらいけそう
- 516 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 19:24:00 ]
- わざわざ5頂点でやる意味がわからない
- 517 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 20:18:54 ]
- 出来るかどうか聞いてるのに
文句言ってるやつって何なの?
- 518 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 20:29:30 ]
- まぁ文句出る気持ちも分かるけど
>>511 DrawPrimitiveでやるなら、まずテセレーション(面倒だけどネットに情報あり)して三角形に分解後、 それぞれの三角形を塗るかどうか判定(三角形内部から適当に線を延ばし、他の辺と交わる回数が奇数なら描画) していくしかないね。 しっかしXファイルのことなんてレスつかないだろうから、帰ったらレスしようと思ったら、意外に皆詳しいなw
- 519 名前:504 mailto:sage [2009/07/21(火) 20:58:41 ]
- 皆さんありがとうございます
505さんの言うボーンの行列 = ボーンのオフセット行列 * 親子関係によって積算した後のフレーム行列 が何をさすかピンときませんががんばって見ます
- 520 名前:デフォルトの名無しさん mailto:sage [2009/07/21(火) 21:06:07 ]
- >>517
明らかに馬鹿でウザイから まず具体的にやりたいことから言えって感じ 詳しく聞くとそんな仕様まったく必要ないのにくだらないもの探してるってオチだと思う
- 521 名前:483 mailto:sage [2009/07/21(火) 23:43:40 ]
- >>493
レスありがとうございます、ですが領域はNULLでもいいみたいです。 CreateOffscreenPlainSurfaceとGetRenderTargetを使ったコードを そのままCreateRenderTargetとStretchRectを使ったコードにしたら動きました! しかしこれが最も速く画像を取得する方法なんでしょうか。 GetRenderTargetData→転送先サーフェイスからGetDC、BitBlt StretchRect→転送先サーフェイスからGetDC、BitBlt GetRenderTargetDataは遅いそうですが、StretchRectはそれより速いのか分かりません。
- 522 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 08:55:23 ]
- >>512 が早々に適格なこと言ってると思うんだが
まあ実際、面倒ならやらないわ―ってレベルだろ
- 523 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 12:57:58 ]
- D3DXMatrixPerspectiveFovLHのfovyは
msdn.microsoft.com/ja-jp/library/cc324601.aspx このページのfov/2の値をのことでしょうか? 私のプログラムでは,fovyを90度ににすると歪んで見え, 45度にすると普通に見えます.また,SDK付属のサンプル も45〜60度で設定しているようです. しかし検索すると www.gamedev.net/community/forums/topic.asp?topic_id=512105 のページのように,fovyはfov/2ではなく,fovを設定すると書かれているページ に多く出会います.もしfovを設定するのだとすれば,fovyを45度に設定 することは視線から上側の視錐台の角度がたったの22.5度しかないことになって しまいます. 真相はどうなっているのでしょうか?
- 524 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 13:29:37 ]
- 自分の目からディスプレイの上端までと目から下端までの間の角度を測ってみ
90度もある? (あるとしたら、どれだけディスプレイに目を近づけてるんだ) 不自然だから歪んで見えるのでは?
- 525 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 13:32:37 ]
- ちゃんとラジアン角度にしてるか?
D3DXToRadian(90);
- 526 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 13:42:41 ]
- >>525
もちろんしてます. SDKのサンプルも90度に設定して動かすとやはり歪んで見えます
- 527 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 15:18:44 ]
- >>526
>>524
- 528 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 21:51:21 ]
- 質問です。
Xfileを表示してキーボードでそれを動かし、当たりがあったら文字を表示するというプログラムを作ったのですが。 普通に起動させると動作が遅いのですが、メディアプレイヤーを起動している時だけはなぜか動作が速くなります。 なぜこんなことが起こるのか教えてください
- 529 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:07:34 ]
- cpplover.blogspot.com/2008/09/google-chrome_10.html
これだろ
- 530 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 22:09:26 ]
- timeBeginPeriod メディアプレイヤー
でぐぐってみれば、理由を考察してるサイトがいくつか見つかる
- 531 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:00:12 ]
- 一応解決しました。貴重な情報ありがとうございました
- 532 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:56:22 ]
- 3Dモデルを表示するソフトウェアを開発しています。
描画エンジンとしてDirectX9.0のDirect3Dを使おうと考え、 色々調査しているのですが、PCの画面色数が24Bitの場合、正常に動作しません。 Googleで調べた所、いくつかのソフトでは24Bitでは動作不可との記述が見つかりました。 ttp://postpet.jp/support/v3/manual/win/html/2_32.html ttp://mxengine.net-dimension.com/jpn/sub/faq.htm しかし、MSDNには24Bit動作不可との記述が見当たりません。 質問ですが、 DirectX9.0のDirect3Dウィンドウモードでは、16Bit/32Bit以外の動作は不可でしょうか? 24Bitで動作させる方法(コーディング例)がありましたら、ご教授お願いします。
- 533 名前:デフォルトの名無しさん mailto:sage [2009/07/22(水) 23:58:58 ]
- ねーよ。
そもそも24Bitの画面モードが選べるような ビデオカードが現存してた事に驚いた。
- 534 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:00:08 ]
- 24ってマイナーじゃないの?存在を初めて知った
- 535 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:06:37 ]
- >>533
>>534 早速のレスありがとうございます。 実は配布先PCは特殊な環境で16Bit/24Bitのみ選択可、 通常は24Bitで動作しております。 すでに客先で動作しているPCであり、 客先は全国にある為、 インストールの為、画面設定を変更するのは難しいです。 やはり24Bitで動作させるのは難しいのですね。 最悪、DirectXではなく、他の描画ルーチンを使用することも考えています。
- 536 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:13:26 ]
- 24はVRAMが少量しかなかった時代に
少ないメモリでフルカラー表現するために存在した。 VRAMが豊富になって32Bitが使えるようになったら滅んだ。 24Bitって3Byte単位のアクセスだから速度がすげー遅かったし。 >>535 DirectX7か8のどっちかならいけるはず。 無論速度は度外視な。
- 537 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:14:40 ]
- どうせならOpenGLってどうかな?(いや、よくしらんけどw)
- 538 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:43:53 ]
- その前にビデオカードの具体的な製品名を明らかにしろよ。
なんでいちいち情報を小出しにするんだ?
- 539 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:46:31 ]
- それ大事か?
しかし24なんて使ったことがないから可とも不可ともいいようがない・・・
- 540 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:48:12 ]
- D3D9は確かにディスプレイフォーマット24bitは
サポートしてないみたいだけど、 それってFullScreenだけじゃなく Windowモードもそうなの?
- 541 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:49:54 ]
- MatroxのG200とかは24Bitモードあったぜ
- 542 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:51:14 ]
- >>540
デバイスの初期化が通らないよ。
- 543 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 00:53:58 ]
- どうやらVoodoo Bansheeあたりも24bitあったみたい。
しかし、Bansheeは良いカードだったw
- 544 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 01:05:03 ]
- ディスプレイモードの列挙が通らなくて強制終了だな
完全にサポートしてないと動かない
- 545 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 10:02:17 ]
- GF2MX400とかも普通に24bitモードあったぞ。
てか、24bitがマイナーだと初めて知ったw 当時、32bitこそ「無駄遣いだなぁ。24bitでフルカラー表現できるのに、なんだこの糞異端ボード」とか思ってた。
- 546 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 11:25:14 ]
- Direct3Dを使わないのが前提なら24bit対応のビデオカードは多い
- 547 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 11:30:19 ]
- でもわざわざ24bitを使う理由ってなに?
- 548 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 11:35:13 ]
- 質問者は、個人制作で自宅の24bit環境が普通だと思った
メーカーがどうして用意したかは、上に散々かいてある 昔のPCI
- 549 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 12:51:38 ]
- 815あたりの内蔵グラフィック機能だと、32bppが無いんじゃなかったっけ?
16/24しか選択できなくて、3D機能が使えるのは16だけみたいな感じ。
- 550 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 14:53:47 ]
- スパロボのようなゲームを作っているのですが、
マウスで入力するために入力関係に特化したようなサイトとかありますか?
- 551 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 17:39:07 ]
- >>550
言いたいことはわからんでもないけどとりあえず日本語で(ry
- 552 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 17:42:04 ]
- たぶん碁盤の目のようなフィールド上でクリックしたら
コマンドが出るようにとかしたいんだろうけど DirectXの要素はマウスの座標取得ぐらいしかねえじゃん
- 553 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 20:33:35 ]
- >>551
すいません、要するにスパロボのフィールド画面を作りたいんです >>552 そうです、まさにそんな感じです セルの上にマウスを置いたらセルを囲み、右クリック等でコマンドが出る・・等の構成にしたいのです ゲームのサイト色々見てるのですが、なかなか目的のものが見つからないのですよ とりあえずマウスの座標取得から始めてみますね
- 554 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 01:45:36 ]
- 作ったゲームのテストたのんだ友人の中の一人だけがエラーで止まるので
いったい何が悪いんだと調べてみたらフォント描画が原因だった \r\nを含んだ文字列描画すると原因不明のエラー警告で落ちる \r\nを\nにしたらエラーでなくなったが、一体なにが悪いのかよくわかりませんでつた OSもDirectXランタイムバージョンも他の正常に動作してるPCと同じでつ
- 555 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 03:42:55 ]
- >>554
DirectXとOSのバージョンと描画方法は何ですか?
- 556 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 07:06:17 ]
- プログラム中の文字列の改行コードにCRLFって使った事無いなw
テキストに落とす時は別だけど
- 557 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 08:30:56 ]
- >>554
落ちた1台が例外なんじゃなくて、 他のPCではたまたま動いたってだけの話だろうたぶん
- 558 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 13:50:58 ]
- 555は偉いなぁ…真似できん
- 559 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 17:36:51 ]
- 質問です
DIRECTXで作られた質の高いフリーゲームってありますか?
- 560 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 17:47:19 ]
- ここはプログラムを作ることに関しての板ですゲームサロンにでもいってください
- 561 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 17:55:50 ]
- プログラマブルシェーダでのSetTextureについて質問です。
D3DXEffect effects[100]; for(int i = 0; i < 100; ++i) { effects[i].SetTexture("DecaleTex", textures[i]); } と、それぞれのエフェクトにそれぞれ別のテクスチャーをセットするとします。 これで、すべてのエフェクトが予想通りに動いているのは確認済みです。 このときに疑問が湧いたのですが、d3ddevice->SetTexture相当のことはいつ行われているのでしょうか? 1)effect[0]を使って描画 2)effect[0]を使って描画 3)effect[1]を使って描画 4)effect[1]を使って描画 とやった場合、2→3のところで内部的に行われているのでしょうか? となると 1)effect[0]を使って描画 2)effect[1]を使って描画 3)effect[0]を使って描画 4)effect[1]を使って描画 とやると、d3ddevice->SetTextureのコストという面では2倍コストがかかってしまっているのでしょうか? そもそも全てのエフェクトにテクスチャをあらかじめセットしてまわっておく。というのは正しいやり方なのでしょうか? 「d3ddevice->SetTextureはなるべく減らすように」と昔教えられたもので (実際に、パーティクルなどの表示で切り替えまくると遅かったし) かなり気になっています。 アドバイスいただければと思います。よろしくお願いします。
- 562 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:22:42 ]
- DX9ならBeginPassとCommitChanges
DX10ならApply それ以外に公開情報あったっけ
- 563 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:23:32 ]
- 質問です。
d3d9.hの読み込みより前に #define D3D_DEBUG_INFO を設定することで、デバッグウインドウ上で情報が表示されるということで実践してみたのですが、 どう考えてもおかしな数値が入っているように表示されます。 これは皆さんの環境でそうなのでしょうか? 単なるD3Dの初期化>D3Dデバイスの中身をデバッグウインドウで見る>数値とかがぐちゃぐちゃ なのですが…。 環境はVS2008Express Microsoft DirectX SDK (March 2008) を使っています。
- 564 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:36:20 ]
- 君のプログラムの文字セットの設定は何だろう?
ちなみにIDirect3DTexture9::NameはLPCWSTRだ。
- 565 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:40:51 ]
- マウスをクリックしたとき、どのオブジェクトをクリックしたかというのはどういうコードを書けばよいんでしょうか
それとも、マウスをクリックした時にその地点にオブジェクトがあるかないかを総当りで調べるものなのでしょうか?
- 566 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:55:37 ]
- スクリーン座標をsx,syとする。
スクリーン座標の手前(sx,sy,0) 奥(sx,sy,1) を3D空間の座標に変換する (=3D空間の座標をスクリーン座標にする変換の逆) 2点を結ぶ直線と最初に交差したオブジェクトを選択。 総当りで問題なくOKなら総当り。 総当りでは重いならばケースバイケースで効率的な方法を考える。
- 567 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 21:57:32 ]
- >>566
うおおおおありがとうございます
- 568 名前:デフォルトの名無しさん mailto:sage [2009/07/24(金) 22:12:08 ]
- >>566
直線だけだと漏れが出ないか? 四角錐じゃないと。
- 569 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 00:05:32 ]
- >>563について自己解決です
注 オブジェクトのプロパティ名が表示されますが、この値はデバッグのランタイムが有効な場合のみ正確です。リテール ランタイムに対して実行するときは、値は無効です。 とありました。 DirectX Control PanelからUseDebugVersionOfDirect3D9 を選んだところきちんと値が見られるようになりました
- 570 名前:デフォルトの名無しさん [2009/07/25(土) 13:52:15 ]
- D3DXIntersectを使って当たり判定をしてる人がいましたらご教授願います。
表示した3dモデルに対して現在一体にしか当たり判定が有効になっていません。 複数のモデルに対して当たり判定を有効にするには何か特別な仕掛けをしていますか?
- 571 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 18:12:35 ]
- 自分で組め
- 572 名前:デフォルトの名無しさん mailto:sage [2009/07/25(土) 20:11:23 ]
- まともなゲームならほとんどすべて、
詳細な当たり判定より先におおざっぱで高速な判定をして 比較するオブジェクトの数を減らす。 最終的には、D3DXIntersectだろうが自作だろうが 当たり判定の必要な回数だけ繰り返す。
- 573 名前:デフォルトの名無しさん [2009/07/25(土) 21:14:18 ]
- レスありがとうございます!
- 574 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 00:22:28 ]
- このスレの70%はゲー専生で構成されているとかいないとか
- 575 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 01:14:25 ]
- そんなことはない。
大学にも行かず浪人にもなれず就職もしない人は実社会では多数派でもないし ゲーム業界内でも少ないだろう。2流3流大卒がほとんど。
- 576 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 01:51:48 ]
- 数学とかそこらは、中学レベルだと感じるな。
- 577 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 09:42:08 ]
- というかそんな高度な知識がなくても組めるし
まあ効率とかを考えるといろいろむずかしくなるけれども
- 578 名前:デフォルトの名無しさん [2009/07/28(火) 07:57:06 ]
- 今、線分とメッシュとの当たり判定を作っています。
中身は線分と三角形との当たり判定を行っているのですが、 そのために必要な三角ポリゴンデータを、 DirectXのメッシュデータから取得する方法がわかりません。 頂点バッファのロックメソッドから、頂点データへの先頭アドレスを取得し そのアドレスから12byteずつずらしながら、無理やり三角ポリゴン(と仮定したデータ)を取得し 当たり判定させてみましたが、途中から頂点のデータが「3.587e-043#DEN」などと壊れるようです。 ご存じの方がいらっしゃれば、ご教授よろしくお願いします。
- 579 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 08:08:47 ]
- >>578
空間上の特定の点がポリゴンの内包する閉空間状に存在するか(要するに当たり判定)は 計算幾何学の分野で、一応n log nのオーダーで出ることは知られているけど 計算が死ねるのでよしたほうがいい。 大学の研究レベルでやるならともかく、ゲームでやるなら質点同士の運動と考えれば十分なはず。
- 580 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 08:22:50 ]
- ttp://sukima.vip2ch.com/up/sukima026731.jpg
江戸時代の人々はこれで抜けるんなら ある意味聖人だな
- 581 名前:デフォルトの名無しさん [2009/07/28(火) 08:28:13 ]
- >>579
レスありがとうございます。 線分と三角形の当たり判定は、テストデータで計算出来ていることは確認しています。 ですので、知りたいのはポリゴンデータの取得なのです。 わざわざレスくださったのに申し訳ないです。
- 582 名前:デフォルトの名無しさん [2009/07/28(火) 08:31:38 ]
- >>579
すいません、読み違えてました。 Xファイルで入力してるので、問題ないと思っているのですが 無理でしょうか?
- 583 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:25:04 ]
- >>578
12byteの根拠は? 頂点データにはxyz以外も含まれていると思うので、12byteではないと思うが。 ID3DXBaseMesh::GetFVFでメッシュのFVFを取得してD3DXGetFVFVertexSizeで 頂点データのサイズを取得するか、ID3DXBaseMesh::CloneMeshFVFを使って 都合のいい頂点フォーマットに変換してから扱うのがいいかと。
- 584 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:59:33 ]
- 最近DirectXを勉強しはじめました。
初心者丸出しですが、質問させてください。 DirectXで2Dを扱う場合、Spriteを使用する方法と 座標変換済み頂点を使用する方法があると知りました。 また、座標変換済み頂点を使う方が処理が早いという書き込みも チラっとみたのですが詳しく書かれておらず、把握している程度です。 質問は @Spriteか座標変換済み頂点のどちらを使用すれば処理が早いか。 ASpriteと座標変換済み頂点の両方の利点・欠点。 よろしくお願いします。
- 585 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:21:14 ]
- スプライトというのは、本来のDirectXの姿を隠して
ユーザが扱いやすいようにラップしているだけで、 最終的に頂点を組み立てて描画するのは同じ ラップしているオーバーヘッドのぶん、処理が遅いかもね
- 586 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:22:42 ]
- >>584
D3DXSprite自身が、内部的に座標変換済頂点(rhw)を使ってるんだが、どうよ? 単体の画像を何枚か扱う程度ならこのままでもいいが、小さなチップを大量に描画するようなら 通常の頂点バッファ(Position)を使うことを考えた方がいい。
- 587 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:22:55 ]
- DirectXにSpriteなど無い
- 588 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:24:51 ]
- D3DXSPRITEなら定数として存在するが、D3DXSpriteなど無い
|

|