トップページgamedev
987コメント302KB

DirectX総合スレ (Part9)

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。2009/02/11(水) 05:00:58ID:viN0kzG2
言語はC++

■過去スレ

DirectX総合スレ
Part 8: http://pc11.2ch.net/test/read.cgi/gamedev/1205306118/
Part 7: http://pc11.2ch.net/test/read.cgi/gamedev/1179516297/
Part 6: http://pc11.2ch.net/test/read.cgi/gamedev/1163691532/
Part 5: http://pc8.2ch.net/test/read.cgi/gamedev/1157727402/
Part 4: http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
Part 3: http://pc5.2ch.net/test/read.cgi/gamedev/1105333209/
Part 2: http://pc5.2ch.net/test/read.cgi/gamedev/1095863432/
Part 1: http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
0861名前は開発中のものです。2009/11/21(土) 11:46:45ID:1bI6/PMK
DX10のVGAでもWDDM1.1になるとおもったらちがうんだな
DX11はなるからWDDMもなるとおもってた
0862名前は開発中のものです。2009/11/21(土) 11:52:26ID:RlrDVb4A
>>861
日本語が不自由だと日常生活も大変そうですね。
0863名前は開発中のものです。2009/11/21(土) 23:02:30ID:L8AUPNFH
単に文語と口語を混同してるんじゃないの。
0864名前は開発中のものです。2009/11/22(日) 10:58:04ID:FAevzJuI
ゲームを作りたくて取り掛かったものの、いろいろと分からないことがあるので質問させてください。
アウターワールドという、SFCで出た横スクロールアクションゲームがあるのですが↓
http://www.youtube.com/watch?v=LoOsXCDyASE&feature=related
このような立体的でぬるぬるした、大味な表現はどのようにすれば可能なのでしょうか?
ポリゴンを作って動かしたのをあらかじめレンダリングしておいて、それをドンキーコングみたいに、
2Dのアニメーションに置き換えてるのかな?と最初は思っていました。が、Wikiによると、

http://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%A6%E3%82%BF%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%AB%E3%83%89
>本作の特徴である、2Dポリゴングラフィックや滑らかなモーションは、近年において馴染みのある3Dポリゴンやそれを動画化したムービーではなく、座標変換済み頂点設定を使用した頂点フォーマット2Dポリゴンを、リアルタイムで演算し描写させると言う手法

だそうです。
僕もこのやり方をやってみたい(深海を舞台とした横スクロールアクションゲームなので、
いろいろな光の演算をリアルタイムでやりたいのです)のですが、上で言っている原理が
いまいち理解できません。要するに、紙の上に半立体のポリゴンの物体(Z軸が画面垂直
方向(奥行き)を向いてあるものの、本格的な3Dのような大げさなものではなく、
深度値程度の簡単な値しか取らないような)を乗せて、その頂点を動かし、
その移動までの物体形態をコンピューターで補正させてるってことでしょうか?
あと、そのような複雑な計算をC++で可能ですか?さきほどポリゴンの明度・色を計算
するプログラムをテストしてみたところ、ポリゴンを35枚まで動かすのが限界でした。
ただ単に僕の光の演算のプログラムが悪いのでしょうか?
0865名前は開発中のものです。2009/11/22(日) 11:02:48ID:FAevzJuI
ちなみにこの方式でやりたい理由は、

・自分は絵(特に立体的な)を描けないので、大味な切り絵風の表現のほうが向いている
・アウターワールドの独特の表現が、想像力を働かせて単純に好き
・深海を舞台にしたゲームなので、光の演算に凝りたい。
具体的には、基本真っ暗な海の中で、アンコウなどが近寄るとその提灯に近いポリゴン
(背景も含む)が鮮やかに浮かび上がる、というような表現をやりたい
・アニメーションを描けないので、ドット絵を一枚ずつ描いてアニメさせるより、
自動的に補完してくれるポリゴンのほうが都合がいい&見た目もやわらかい

という感じです。
0866名前は開発中のものです。2009/11/22(日) 11:07:28ID:FAevzJuI
>>864
すみません、YOUTUBEの動画は
http://www.youtube.com/watch?v=Zgkf6wooDmw&feature=related
のほうが適切でした。>>864の奴は後年になってハイデフ化された物のようです。
僕がやりたい表現は、より簡潔な↑のようなものなので・・・。
特徴としては、
・ポリゴン数が少なめ
・色も少なめ
・フラットシェーディング
・3Dのような2Dのような
という感じです
0867名前は開発中のものです。2009/11/22(日) 11:50:52ID:DlchF+JQ
>>864
ヌルヌルして見える事自体は、プログラム技術的なものではなく
フレームレートとモーションの問題だと思うよ。
何FPSか分からないけど動画を見たら、中割の数が非常に多いのは
分かるので。

フラットシェーディングじゃないけど、SFC版とか昔のプリンスオブ
ペルシャの動きも見てみれば、共通するものを感じると思うけど
ストレッチ&スクワッシュとかせず中抜きされてない動きなので、
たぶんあれと同じようにロトスコープ技法(実際の人間の動きを
撮影してトレースして絵に起こす)から、アニメパターンを作った
んじゃないかな。この方法だと絵のタッチに関係なく、だいたい
ああいう感じの動きになる。

動きのヌルヌル感に関しては、板ポリゴンの頂点の自由変形による
陰影のない切り絵っぽい表現手法(と言うと間違い?)自体とは直接
関係ないと思う。この手の表現やりたいなら、アニメーション…
というかモーション付けの練習しないといけないとは思うけど
とりあえずコーティングする前に、Flashとかで似たタッチで
動きを作ってみたらいいんじゃないかな。
08688642009/11/22(日) 12:29:34ID:FAevzJuI
>>867
どうもありがとう。
でもWikiには、「3Dポリゴンやそれを動画化したムービーではなく、
座標変換済み頂点設定を使用した頂点フォーマット2Dポリゴンを、リアルタイムで演算し描写」
とあるけど・・・。
この「リアルタイム演算」っていうのが補完処理のことだと思ったんだけど、違うんでしょうか。
確かにロトスコープ手法ならドット絵でもぬるぬるした立体の動きに見せられるだろうけど、
それだとポリゴン表現である意味が無くなっちゃいますよね。
アウターワールドは僕のやりたい光の演算まではやってないようだから、
それ以外に何かポリゴン表現にした理由があるとしたら、頂点の自由変形だけを与えて、
その中間をコンピュータに計算させる、というのではないかなあと。
(ていうか、アウターワールドがどういう処理をやっているか僕も詳しくはわからないのです・・・
すいません)
0869名前は開発中のものです。2009/11/22(日) 12:36:50ID:DlchF+JQ
>>868
youtube見てたら、アウターワールドの開発者インタビューで
ロトスコープ手法で作ってる動画があったよ。フランス語なので
wikiの話とかの詳細は分からないけれど↓
ttp://www.youtube.com/watch?v=fUxunNnFLAA

>ポリゴン数と色が少なめ、2D+3D表現なヌルヌルした動き。
動画を撮れるカメラで自分か友人が動いてる様をフィクスで撮って
それをなぞって絵に起こすかデータを取ってみるのもいいかも。
後者はいわゆる2次元モーションキャプチャだけど、3DCGでも
この方法で作品を作る人もたまにいるし、XNA用にシステム自作
している人もいるみたい(ググるとひっかかった)。

技術的な挑戦も重要だけど、ゲーム作るという事であれば
一番大切な事は見た目と動きのはずなので、別に昔の人と同じ
作り方しなくても、中身3Dで作った方が光の表現とかも含めて
多分何かと便利なんじゃないかな。
BVHとかFBXで出力して3Dのポリゴンモデルに適用して、パースなくして
カメラのZ軸方向の動き固定して、キャラ動かせば2Dになるわけだし、
シェーディングなしか自己発光100%にしてローポリ+テクスチャで細部
表現すれば、フラットでカクカクしたレトロなゲームぽい絵にできる。
DirectXとは関係ない話題なのでスレチの気もするけど。
0870名前は開発中のものです。2009/11/22(日) 12:49:59ID:DlchF+JQ
>それだとポリゴン表現である意味が無くなっちゃいますよね。
真実はわからないけど、アニメーションのパターンをベクターデータでなく
リアルタイムに作成してるのは、当時のハードでは容量足らないから…
とかの理由でもあるのかも。

あと自分はリアルタイムでは知らないけれど、AMIGAのメガデモ文化は
なんか凄かったらしいので、その延長での挑戦やパフォーマンス的な
部分もあるのかも。「こんなことできるんだぜ?」みたいな。

…スレチな気もするし100%想像だけど。
0871名前は開発中のものです。2009/11/22(日) 12:50:17ID:FAevzJuI
>>869
おお〜!そんな動画があったとは・・・。ゲームプレイの奴ばっかりだと思ってました。
ありがとうございます。確かにロトスコープ手法使ってるんですね。
ちょっと手間はかかるけど、アウターの作者さんを見習って一部のシーンに使ってみたいです。

>技術的な挑戦も重要だけど、ゲーム作るという事であれば一番大切な事は見た目と動きのはず

それは本当そうだよなあって思います。RPGツクールで一時作ってた時期があったのですが、
その頃からどうも自分は「こんな機能の束縛の中でこんな表現してやったぜ!」的な、
製作者同士の技術自慢に陥りがちだったっぽいw
ただ、今回3Dを避けたかったのは、完全な3Dということになると
単純に自分に作れるか不安だったんです。「14歳からはじめるCゲーム教室」みたいな
本を見ながら作ってる20歳ですのでw2Dだけでも大変なのに3Dは・・・みたいなのがあります。
なので2Dポリゴンという言葉の響きにつられちゃったんですねえ。
でも、今からでも3Dを覚えたほうが結局は早道なのであれば、そうしようと思います。
考えたら、リアルタイムの光の表現をやろうと思えば、
結局はゲームに登場するあらゆるモデルを3Dにしなくちゃ始まりませんからね・・・。

ただ心配なのは、自分が使ってるライブラリでは3Dが表現できるか?ってことです。
DXライブラリを苦労して覚えたので、それを使ってやりたいと思うのですが、
それでポリゴンの光表現を試しに演算してみたところ、処理落ちというか25枚くらいしか
描けなかったのでw(DXライブラリというのはDirectXを使うためのライブラリという感じ)
やっぱり3Dを表現しようと思えばDirectXを直接覚える必要があるんでしょうか?
(ていうか、このスレってDXライブラリも含みますよね?別のスレで最初に質問したら、
ここで聞けと言われたのですが)
0872名前は開発中のものです。2009/11/22(日) 13:52:42ID:Ot9WFCG5
DXライブラリはDXライブラリのスレで聞けばいい。
ここで聞かれても困る
0873名前は開発中のものです。2009/11/22(日) 14:06:12ID:RBvfykA7
普通に製作者のサイトで聞けばいいじゃない
0874名前は開発中のものです。2009/11/22(日) 15:57:40ID:FAevzJuI
やっぱりそうですよね・・・
失礼しました
0875名前は開発中のものです。2009/11/22(日) 16:31:28ID:O9i06zwI
まあ、25枚は異常に少ないと言える。
ソフトでサブピクセルライティングぐらいやらないと
出ないレベル。
0876名前は開発中のものです。2009/11/23(月) 01:56:12ID:ByJ4a23u
六角大王でむりやり3Dにするとか
0877名前は開発中のものです。2009/12/12(土) 12:37:43ID:huQYKhfI
 
0878486SX2009/12/14(月) 00:49:57ID:GaAU2Cxl
今どうしてもわからないことがあります、環境はVC++6.0で、
DirectX8,DirectDrawをしようしてゲームを作ったんですが、今ファイルは、
マイドキュメント→redo にプロジェクト一式入ってます。ここからプログラムを
実行するには問題ないのですが、ところが、たとえばc:\do にredoまるごとコピー
して実行すれば普通は実行できますよね、ところがフリーズして実行できません。
SDKはc:\mmsdkに指定してあるのに。 のろわれた?そんなことがありえるのでしょうか?
0879名前は開発中のものです。2009/12/14(月) 01:08:43ID:ykEqyb3s
データのパスだろ。
0880名前は開発中のものです。2009/12/14(月) 21:20:12ID:5sYVRGAl
略してデーパ
0881486SX2009/12/14(月) 22:50:33ID:GaAU2Cxl
いやいやそんな単純な問題ならとうにきずいてますよ。
今日いろいろコード消してためしたんですが、症状をもう少しい詳しく言うと。
WIN98だと問題ない。Direct3Dのコードだと平気ここが変なところ。
一番意味が分からんのが、VC++から実行すると平気だが、その生成されたプログラム
を実行すると、少し動き→フリーズ→また動く どうもDirectDrawで引っかかっている可能性が強いのだが。
グラボはATI RADEON HD2400 PRO AGP 512MB 同じ症状の人いませんかね。いやな気分だOrz
0882名前は開発中のものです。2009/12/14(月) 23:00:49ID:NE/8LVLx
とりあえずハードウェアアクセラレータ切ったらどうなるよ?
0883名前は開発中のものです。2009/12/14(月) 23:01:14ID:IMDF/Slf
言葉で説明されてもわからんよ
プロジェクト一式さらしてみ?

だれか見てくれるかもよ
0884名前は開発中のものです。2009/12/15(火) 00:10:43ID:a9hcntXk
>>881
そのスペックのPCでWindows98って言ってる意味がわからない。
0885486SX2009/12/15(火) 00:11:21ID:uxRINvAg
>>882 そのやり方はしらない。
>>883 それはありがたいがデータ多いしそこまでやらせるわけには。
すごいコードは消したけどね。
単純にカウンタ表示させるだけのプログラムやってみた、
VC++からDEBUG版実行 1,2,3,4,5....10終了
別の位置に丸ごとコピーしたファイル
単純にENTER実行 1,2,3,4,5, フリーズ約1分かな ,...10終了
DirectSoundも同時に鳴らしてみたが両方とも正常。
計算が行われてないのか?メインループ
while(1)
{
if(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)){
if(!GetMessage(&msg, NULL, 0, 0))
break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else{
if(dwTime>timeGetTime()){
Sleep(1);
continue;
}
dwTime=timeGetTime()+1000/50;
if(ecount<=500) ecount++;////初期時はecount=0
if(ecount>=10) endkey=1;
if(endkey==1) {DestroyWindow(hWnd);break;}
}
}
timeEndPeriod(1);
return msg.wParam;
}
きつねだ、きつねのしわざだ。
0886名前は開発中のものです。2009/12/15(火) 02:08:49ID:vkVZ3Qh0
GetMessage(&msg, NULL, 0, 0)を消してみ
0887名前は開発中のものです。2009/12/15(火) 10:17:02ID:c2b2dESz
それはメッセージキューからのメッセージの除去とWM_QUITに反応するためにあるんだべ
0888名前は開発中のものです。2009/12/15(火) 14:35:57ID:Vu9tfGhT
DirectX 9.0cの話です。
FragmentShaderのような仕組みをD3DXに頼らずに使いたいのですが
D3DXを使わないならば、相当のものは無いという認識で正しいですか?
0889486SX2009/12/15(火) 22:27:27ID:uxRINvAg
いろいろと、アドバイスありがとうございました、何度かコードを実験してみたり、情報を
模索したところ自己解決しました。>>884 悪い言い忘れてたサブPCの事。
どうやら、グラボと相性が悪いようで、たんサイトでも同じような症状がでてる人がいました。
ベンチマークでDirectDrawの値が0になったりするそうで。他の古いXPマシンで試したところ、
正常に動くので、その疑いが固まりました。
0890名前は開発中のものです。2009/12/15(火) 23:34:41ID:a9hcntXk
>>>888
普通にバイナリからPixelShaderとVertexShader作るだけだろ。
シェーダーはfxcでコンパイルしときゃいい。
0891名前は開発中のものです。2009/12/15(火) 23:38:38ID:Vu9tfGhT
>>890
了解です。
0892名前は開発中のものです。2009/12/17(木) 11:35:13ID:wMflxrMl
DirectSoundについてなのですが、IDirectSound8::GetCaps()がE_INVALIDARGを返してくるのでまいっています。
DirectSoundCreate8()やSetCooperativeLevel()は正常終了しており
その直後でGetCaps()を呼んでいるのですが・・・。

ちなみに、SDK付属サンプルのPlaySound内にGetCaps()をねじ込んでも、結果は同様にエラーとなりますが、音は正常になります。
環境は、VC++.NET 2003でSDKのバージョンはNovember 2008、カードはX-Fi XGです。
0893名前は開発中のものです。2009/12/17(木) 11:45:59ID:eR+Yy1vD
>>892
エラーの通り、引数に問題があるだけだろう。
0894名前は開発中のものです。2009/12/17(木) 12:00:33ID:wMflxrMl
本当すいません、構造体のサイズを設定して渡したらうまくいきました。
現在、CreateSoundBuffer()でも同じようにエラーになっているので
全然別のことを疑ってしまってましたが、悪いのは完全に己のようです。
0895486SX2009/12/21(月) 00:03:01ID:r1yQea3v
Orzまたまた私がやってきましたよと。
SDK:DirectX 8.0 OS:WindowsXP
今度は、DirectDrawを見放して、そっちょくに3Dで2D表示させることにしたんですが。
またまたトラブルにあってしまった、フルスクリーンモードでCTRL+ALT+DEL,
または、ALT+TAB など、今実行している、プログラムを非アクティブにして、他の事ができると思いますが、
それが、フルスクリーンモードでCTRL+ALT+DEL,すると、強制終了できてしまいます。
メインループでPeekMessage(&msg,NULL,0,0,PM_NOREMOVE)その下
   if(!GetMessage(&msg,NULL,0,0)) break;
これがまずいのでしょうか?
0896名前は開発中のものです。2009/12/21(月) 03:11:54ID:YD/qkR2E
デバイスロストでググれ
0897名前は開発中のものです。2009/12/21(月) 07:11:59ID:vr2JW1xB
>制終了できてしまいます。
出来るんなら別にいいだろ。
0898486SX2009/12/21(月) 15:50:06ID:r1yQea3v
>>896 ええもちろん、認知しているし、その対策はうってあるんだけど、
戻るとDirectInputが使えなくなる、Acquireしても解決できなく、電源を落とすはめに
なってしまう。
>>897 どのゲームでも、一時中断できますよね、ウィルスソフトの定期診断などが
発生してしまうと、急に落とされる可能性がでてきます。
0899名前は開発中のものです。2009/12/21(月) 17:41:43ID:vr2JW1xB
出来ると言っているんだから、自分が意志を持ってやった結果だろ。
いったい何が不満なんだ?
0900486SX2009/12/21(月) 21:23:20ID:r1yQea3v
>>899 人に聞く前に、俺もがんがらなければいけないんだけどさ、
強制終了できてしまう問題、つまり普通のゲームでは、CTRL+ALT+DELすると、
最初に今のプログラムが最小化されるだけで、終了にはならないOSがXPとか、
今の状態はそれがない状態で強制終了されてしまっていた。
しかし、3時間かけてやっと自己解決できました。問題は、やり方。
フルスクリーンからCTRL+ALT+DEL すると、なぜかループをぬけるか、
へたをすると、画面が真っ暗になってしまいました。
しかし、フルスクリーンから次にウィンドウモードに切り替えて(アクティブかどうか監視も重要)
表示するときにShowWindowを使い最小化することで、CTRL+ALT+DELがよくあるゲーム
と同じように動作するようになりました。
0901名前は開発中のものです。2009/12/22(火) 00:15:39ID:tZOsD+Sp
デバイスロストには2種類の動作があってなw
多分、もう一つのほうは解決できてないなw
0902名前は開発中のものです。2009/12/22(火) 03:45:18ID:FhVG+ySP
こいつの日本語はよく分からない。。。。。。。。
統合失調症か何かなのだろうか。。
0903名前は開発中のものです。2009/12/22(火) 03:58:10ID:x+5olQJc
病気かどうかはともかく、SOVがはっきりしない文章は読み辛いね。
0904名前は開発中のものです。2009/12/22(火) 05:01:13ID:pWVjIJ9t
すみません。モーションとモデルを別々に管理したくて
アニメーションセット(LPD3DXANIMATIONSET)という存在を知ったのですが、

アニメーションコントローラでもモーションの管理は出来る?のに、
なぜ複数管理などになるとアニメーションセットを同時に利用するのでしょうか?

その違いや解説のサイトが有れば教えて頂けませんでしょうか。
よろしくお願いします。orz
0905名前は開発中のものです。2009/12/22(火) 14:37:47ID:hFovd5oO
D3DXに頼らず、ファイルの読み込みから描画まで自分でやってみれば分かるよ。
0906486SX2009/12/22(火) 23:33:21ID:etglg5gy
>>901 そうだね多分まだまだ隠れた問題があると思うよ、
>>902 人に何を伝えたいかがうまく説明できないんだよね俺は、
  てか最近ウツっぽいんだ、何をするにも、きずくと何か考え込んでいる
  時がある、大事な事をすぐ忘れたりさ、これが病気の初期症状につながるのかな〜?
0907名前は開発中のものです。2009/12/24(木) 02:07:09ID:JyTp5Wic
>>905
ふむ・・。ありがとうございました。
今回は何とか疑問点の解説は見つけられました。
0908名前は開発中のものです。2009/12/24(木) 11:34:30ID:HOJ4DwNQ
すみません。DirectX9(April2006)を使っているのですが、
D3DXLoadMeshHierarchyFromX()で読み込んだモデルを、同一ファイル内の別モーションへ
切り替えるには、どうすれば良いのでしょうか・・ orz

数日前から、ttp://marupeke296.com/DXG_No37_AnimationController.html ここや
LPD3DXANIMATIONCONTROLLER、LPD3DXANIMATIONSET、SetTrackPosition()、AdvanceTime()
などのワードでググって見つかったページを漁っているのですが、結局答えを見つけきれません。

いっそ1ファイル1モーションにしてしまえば現状でも制作は出来るのですが
メモリを浪費するだけなので、どうにかしたくて困っています。。
同一ファイルに含まれるモーションへ切り替えるだけで良いので
ヒントを頂けませんでしょうか、
どうか、よろしくお願いします・・ orz
0909名前は開発中のものです。2009/12/24(木) 23:32:21ID:CR6Kk1My
>>908
そのページにアニメーションの切り替えってあるけど
それじゃダメなの?
というかそのサイトの掲示板で聞けばいいのでは?
0910名前は開発中のものです。2009/12/25(金) 00:42:20ID:cKuaGFme
最近、DirectXを始めたのですが、レイを使ったオブジェクトとの衝突判定がいまいちよく理解できません。
どこか詳しく解説されてるサイトなどがあったら教えて下さい。
0911名前は開発中のものです。2009/12/25(金) 01:12:43ID:xCKRzoTs
DirectXとは関係ないので、ほかで探しなさい。


ttp://marupeke296.com/COL_main.html
0912名前は開発中のものです。2009/12/25(金) 04:14:22ID:QxCygoee
>>909
そのページの内容は大よそ解ったのですが、
実装しようとすると色々な宣言部分がわからず、局所的に取り込む事も上手く行かずにいます。 orz
そうですね・・そちらで聞いてみる事にします。 ありがとうございました。

>>910
D3DXIntersect()でLPD3DXMESHにレイ飛ばすけど、ローカル座標に飛ぶから
D3DXMatrixInverse()で逆行列を掛けなきゃとかだったはず。
何かググるヒントにでもなれば。
0913マサヒロ2009/12/25(金) 13:38:33ID:Ei7sl9lE
マサヒロ参上
0914名前は開発中のものです。2009/12/25(金) 17:07:07ID:mvnTWXvF
oi
おい今DirectXダウンロードできなくて困ってるんだが
誰かインストーラだけ持ってたらうpしてくだしあ;;;
0915名前は開発中のものです。2009/12/25(金) 18:05:30ID:U5Feh8Re
DirectXならOSに最初から入っている。
インストールする必要はない。
0916名前は開発中のものです。2009/12/27(日) 16:12:44ID:fecJyUhE
>>912
ワールド座標のレイを作る。
交差判定したいモデルはローカル座標。表示させるときにワールド座標系にしている(GPUが)。

座標系があっていなければ当然交差判定など出来ないから、

1.モデルの全頂点をワールド座標系(CPUが)にして交差判定
2.レイをモデルのローカル座標系にして、交差判定

のどちらか。
1は全頂点をCPUで座標変換しなければいけないのに対し、2ではレイだけ変換すれば済む。
ワールド座標から、ローカル座標に変換するには、モデルを表示させるときのワールド行列の逆行列を作り、それで変換する。
0917名前は開発中のものです。2009/12/29(火) 11:59:20ID:6ez+Boqo
すいません質問です。
グローシェーディング時の滑らかに表示する最大角度を設定するには、どうしたらいいんでしょうか
0918名前は開発中のものです。2009/12/29(火) 12:41:14ID:RokfBydo
>>917
ttp://msdn.microsoft.com/ja-jp/library/bb173380(VS.85).aspx
0919名前は開発中のものです。2009/12/29(火) 15:48:27ID:6ez+Boqo
>>918
サンクス。単純な方法では無理っぽいですね。
やっぱりモデル側で切り離しといておくのが一番手っ取り早いか。。。
0920名前は開発中のものです。2010/01/08(金) 00:02:43ID:K/6b4gvi
directxで点や線を描画するには、いちいちdrawprimitiveup使ってやるの?
0921名前は開発中のものです。2010/01/08(金) 00:19:58ID:WDJvkGi5
>>920
Direct2DまたはDrawPrimitiveUP。
0922名前は開発中のものです。2010/01/09(土) 19:59:11ID:GQ4ROEqB
すみません。モーション再生についてなのですが、
初回は SetTrackAnimationSet するだけでモーションが再生されるのですが
途中でモーションを切り替えようと SetTrackAnimationSet で別のモーションをセットしても
モーションが切り替わりません。

なにか手続きをしないと変更できないらしい事まではわかったのですが、
上手く行く方法が見つからず・・。自己解決できるよう頑張ってみますが、ご助言を頂けると幸いです。
0923名前は開発中のものです。2010/01/09(土) 23:57:01ID:Hg149oid
>>922
トラックのEnableとかSpeedを設定してもダメ?
0924名前は開発中のものです。2010/01/10(日) 01:14:31ID:538f4k3R
>>923
ご助言ありがとうございます。
D3DXTRACK_DESCの意味がググってみたものの、Weight以外全く解らず
その2つは未設定のままSetTrackDescしていました。

とりあえずEnableにtrue false  Speedに1.0 0.0を入れて試してみましたが
やはり初回起動時のみしか選んだAnimationSetが再生されてくれない様で・・
ミキサーを使ってしまっているのでミキサー関連のコードを外して再度試してみようと思います。
09259232010/01/10(日) 01:29:47ID:fAiZ+KBs
>>924
そうかー。
自分も最近、初めてアニメーションコントローラに触れたんだけど、
TrackDescがどうも思い通りに操れなくて、結局キーイベントを使った方式にしたよ。
これ、すごく便利で、アニメーションの移行とかが、とてもスッキリしたカタチで記述できる。
最初は意味が分からずに戸惑ったけど、今はこれ以外の方式でやる気が起きないw
だから、キーイベント方式もよかったら検討してみて。

参考になるサイトとしては以下がイイと思う。
ttp://ameblo.jp/amayumi/entry-10025850497.html

あとはDirectXSDKに付属のMultiAnimationサンプル中にあるTiny.cppの記述も参考になるよ。
0926名前は開発中のものです。2010/01/10(日) 10:32:41ID:fqiIjkBI
>>925
ご助言ありがとうございます。
あれから仰る通りMultiAnimationサンプルのAnimationContorollerを見回したり、頂いたURLを見たりして
AddRef Releaseを使ってないのが悪いのかとあれこれ調べたり、
AnimationContorollerのメンバ全部に目を通したりした結果、
GetAnimationSetを呼ぶ事で、なんとかモーションが切り替わってくれました;

何か私の認識不足、勉強不足な気がヒシヒシとします;
まだコードがごちゃっているので明確な結論は出せませんが、結論が出たら一言だけ報告しようと思います。
ありがとうございました。o(_ _)o
0927名前は開発中のものです。2010/01/13(水) 12:58:58ID:b/PQw5gR
質問です。
画像などをロードするとっきって、パスをいつもちまちま指定しないといけないのでしょうか?

例えば、画像をロードする場合、
Load("Data\\img\\hoge.png");
みたいな感じではなく、単に
Load("hoge.png");
のようにロードできたら楽なのになぁと思った次第です。
ファイルが増えるに従って、管理がしやすくするためにパスも長くなっていきますし……。

もちろん自分でパスをセットしてくれる関数を組むのもアリなのですが、
VC#みたいに、リソース追加&ファイル名指定でさっくり使えたら楽だなと思ったので……。

リソースからの読み込みができる関数はみつけたのですが、
IDでの指定なので、どのファイルがどのIDなのか覚えるのが面倒となってしまい使いにくいorz
0928名前は開発中のものです。2010/01/13(水) 13:00:23ID:b/PQw5gR
誤爆スマソorz
0929名前は開発中のものです。2010/01/13(水) 13:00:37ID:NchRBWGw
カレントパスを変更しろ
0930名前は開発中のものです。2010/01/13(水) 22:41:36ID:TKm9/Pii
DirectXとOpenGLを同時に使用する事はできますか?
双方を使い、同一ウインドウに描画とか。
0931名前は開発中のものです。2010/01/13(水) 22:56:54ID:8TADX84H
なんでそんなことしたいんだろう?
0932名前は開発中のものです。2010/01/13(水) 23:03:12ID:MkslEXoe
そういうのがカッコイイと思う痛い時期があるんだよ若い子には。
0933名前は開発中のものです。2010/01/13(水) 23:05:48ID:HeuRpvUD
意味がないよな
0934名前は開発中のものです。2010/01/13(水) 23:11:05ID:3hcnk1pH
DirectXならばもちろん同時使用できるよ
Direct3Dだとどうだったかな
0935名前は開発中のものです。2010/01/13(水) 23:32:05ID:5g+53QAn
DirectInputとかDirectSoundとかを言ってることもあり得る
0936名前は開発中のものです。2010/01/15(金) 20:53:45ID:5cPXsDJb
何だこれ
ダウンロードの詳細 : 第 1 回プロジェクトファイル(VB用)
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=728ebd9e-c028-46dd-acf4-03b9e0fbb8a7&DisplayLang=ja
ダウンロードの詳細 : 第 1 回プロジェクトファイル(VB用)
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=649117f4-11a1-43ec-aa24-1242c03f9a1e&DisplayLang=ja
ダウンロードの詳細 : 第 1 回プロジェクトファイル(C#用)
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=e4d3bb04-102e-4ce7-8019-8fb4e7640903&DisplayLang=ja

多分どこかに解説記事があるんだろうけど、どこだ?
0937名前は開発中のものです。2010/01/16(土) 01:31:49ID:DczvJ3xK
いや、ググれば一発だが
http://www.microsoft.com/japan/academic/learning/default.mspx
0938名前は開発中のものです。2010/01/16(土) 01:44:31ID:s5EX4Xay
   /  ::::::::::/ /:::::::::::::::::::::::::::::::/ '!::::::::::::.. \
  /.:/::::::::::::::ケ---i::::::/::::/:::::::::::::/-''' ̄ヽ::i;;:::::::::::. ヽ
  //:::::::::::://_____|::://!:::::::/:/      'i:!,ヽ:::::::::::::..i,
 / |:::::::::/  !:::::::::::::/:::::/::://:/  ___ニ  !:| 'i::::::::::::::::i
  |::::::/  |:::::::::::::::::::::i:::/  !/,.=''"_,,,,,、`'  !|  '|::::i::::::::::}
  ヽ::{   .|:::::::::::::::::ミi:/  /  /::::::::゚::i       i::||:::::i:::|
   ヾ    |:::::::::r-ヾ   .....  ヽ::::::::::/      ニ!,|:i::|::::|
       !:::::::i  )  ::::::::::::  `''''"     /::゚i |!i|/::i!:{
        |:::::!  (   '''''          !:::ノ !./::i!:| `
        !:i:::`ヽ,,_              '  ../:i:::| `
        `'丶:::::::ヽ              :::!v `'
          ヽ!i;::::|                  ,i
            ヽ|         r'フ    /  <いっばちゅぅ?
             |     `┬...,,,,,,,... - '"
          r--ン        |`'
        _,ノ    `ヽ  _   ヽ  __
       /=-ー 、    ヽ `  - ` y `.,,
      /" '{!,: : : :丶,、   \  /  _,}、
     /   {|: : : : : : : :`: :-i--X--::'": :.i}ヽ
0939名前は開発中のものです。2010/01/17(日) 02:33:22ID:6/wwrOJ+
質問です。
Direct2Dを使って、WPFのドロップシャドーみたいな影を表現する方法ってありますか?
0940名前は開発中のものです。2010/01/18(月) 10:53:52ID:y3rroBcl
質問です。
XP環境でC#+MDX使って2Dのゲーム作ってるんですが、
vistaの64ビットだとまったく起動せず、
vistaの32ビットだと、マシン(実行環境)によって
1.普通に動作する。
2.ウィンドウモードだと普通に動作、フルスクリーンで処理落ち
という2パターンの動作が起きます。
特に2のほうは、自分の頭では理解不能でここは普通逆の現象が起きると思うんですが
誰か詳しい方教えていただけないでしょうか?
0941名前は開発中のものです。2010/01/18(月) 11:51:02ID:kytFWZ6a
起動に関してはデバッガを使って落ちているところをちゃんと調べたのか?
09429402010/01/18(月) 13:13:38ID:rrSRKZvD
vista64のほうは手元に環境がないので動作テスト用に作ったものを渡して試してもらった。
なのでデバッガ使って調べてはいない。出先なのでエラーの詳細は書けない(メモ持ってない)。
「不正なwin32アプリです」的なエラーが出るそうだ。
プロジェクト出力もインストーラもvs2008で作成し
vistaなら入ってるだろうとは思いつつも
必須コンポーネントとして.net Frameworkやら何やらも含めてある。
vistaについての理解が乏しいのでたぶんアホなことをしてるんだと思うけれど、
32bitだと動いて64bitだと動かない。32bitエミュの仕様なのかな〜程度の認識。
あとフルスクリーンで処理落ちも、普通逆だろ!?程度の認識。
0943名前は開発中のものです。2010/01/18(月) 13:43:50ID:blXr6LgG
あーMDXとかのDLLは32bitなので
C#で作る時は、AnyCPUじゃなくてx86にしないと64bit環境じゃ動かないよ。
x86は構成マネージャから新規作成で追加できる。

この問題があるからVisualStudio2010からはアプリのデフォルトがx86になった。
0944名前は開発中のものです。2010/01/18(月) 13:47:29ID:blXr6LgG
あ、ついでにEXEとかができる場所は
bin\Release → bin\x86\Release になるからコピーするとき気をつけて
09459402010/01/18(月) 14:31:22ID:rrSRKZvD
ありがとうございます。
戻ったらさっそく変更かけて再テストしてみます。
0946名前は開発中のものです。2010/01/18(月) 15:55:43ID:k/sr1Lvb
フルスクリーンで処理落ちするってのは無駄にvsync待ってるんじゃないかな
0947名前は開発中のものです。2010/01/23(土) 04:49:13ID:3OPcPbrR
すみません。3Dキャラクターの2D座標を D3DXVec3Project で生成しているのですが、
カメラの外(特に裏側)のキャラクターの2D座標を作ると異常な値になるので
視野のキャラクターのみに絞込みをしたいのですが、上手く行きません。

今はカメラの向きベクトルと、カメラから対象モンスターへのベクトルから
平面的に角度を計算して・・なんて事をやっていたのですが、
カメラを引くとそれじゃ上手く行く訳が無い事に気づきまして・・orz

レンダリング時の視野内かどうかの絞込みを利用できたら簡単かつ確実な気がするのですが、
さすがにこれは簡単には利用できないのでしょうか?
些細な情報で構いませんので、教えて頂けますと幸いです。
0948名前は開発中のものです。2010/01/23(土) 07:53:21ID:XTmZvqha
>>947
とりあえずカメラの前にいるか後にいるか判定すればよくね?
内積でできるけどそれでうまくいかないって言ってる?
0949名前は開発中のものです。2010/01/23(土) 14:07:28ID:o3xuuS/Q
>カメラの前にいるか後にいるか判定
(;・Д・)な、成る程!
ちょっと内積の復習してきます。ありがとうございますっ orz
0950名前は開発中のものです。2010/01/24(日) 00:22:38ID:bva3IbZK
すみません。
3Dゲームで「キャラクターの頭の上」に名札を表示させる場合、
一枚の画面最前面の板ポリゴンに書き込むのではなく
「名札がキャラ同様に、地形にも隠れる」演出をするには、
ポリゴンを頭上に置いて描くしかないのでしょうか?
何か別の方法が有ったりしますでしょうか。
0951名前は開発中のものです。2010/01/24(日) 00:54:04ID:UdZPpZV2
頭の上に普通にポリゴン書けばいいだけじゃん。
地形に隠したりするなら他の方法は激しく面倒だと思うが。
0952名前は開発中のものです。2010/01/24(日) 02:08:01ID:j566ynkR
>>950
ビルボードで調べればそれじゃね?
0953名前は開発中のものです。2010/01/24(日) 11:44:09ID:FIbykN/e
>>951
>地形に隠したりするなら他の方法は激しく面倒だと思うが。
やはりそうなのですね。ありがとうございます。

>>952
ですね。何か他に負荷の低い方法が有れば・・と思いましたが
表示量を絞るなりで対応しようかと思います。ありがとうございました。
0954名前は開発中のものです。2010/01/24(日) 22:25:29ID:UdZPpZV2
ビルボードなんてモデル出すより遥かに負荷低いだろw
1文字ずつDrawPrimitiveしないで、画面全部の文字まとめて1回のDrawPrimitiveで書けよ。
0955名前は開発中のものです。2010/01/25(月) 01:13:41ID:VSiYVhth
何が負荷だと思ってるのかさっぱりわからないけどなw
0956名前は開発中のものです。2010/01/25(月) 02:03:32ID:HeaS+vGp
>>954
1キャラ単位でDrawPrimitiveする形で作ってました・・
重い処理だとはかねがね見聞きしていましたが、
まとめる方法が有るんですね。 ちょっとやり方を探してみようかと思います。ありがとうございます。
0957名前は開発中のものです。2010/01/25(月) 02:32:12ID:VSiYVhth
>>956
多分必要になるw

ワールド変換 → ビュー変換 → 射影変換 → ビューポート変換

ワールド変換でワールド座標(ワールド座標)
ビュー変換でカメラ座標(カメラのローカル座標)
射影変換で同次クリップ空間(xyが-1〜1になるzは0〜1)
ビューポート変換でスクリーン座標(スクリーンの座標になる)
0958名前は開発中のものです。2010/01/26(火) 00:11:22ID:GHBlcTDW
>>950
キャラクター位置(より少し上か)の3D座標をスクリーン座標に変換(z値もしっかり非同次化)。

変換後の座標を元に、名札大のポリを作成する。
もちろんスクリーン座標系での話だから、任意の大きさにするのは簡単。

名前を描いたテクスチャ(普通は名札ポリと同じ大きさ)を、名札ポリに貼りつけて、
トランスフォーム・ライティング済みのポリとして描画すればZバッファも反映される(隠れる)と。

これが一番簡単じゃないかな。あちこちで処理も省けるし。
ビルボードだと文字の大きさが変わるか、或いは手間かけた割に読みづらくなるよ。
0959名前は開発中のものです。2010/01/26(火) 19:06:38ID:Cnd2uXTE
>>957
ありがとうございます。

>>958
詳細な説明ありがとうございます。
>(z値もしっかり非同次化)
の非同次化とは3D→2D? 0.0fで大丈夫でしょうか。
>トランスフォーム・ライティング済みのポリとして描画すればZバッファも反映される(隠れる)と。
私が唯一知ってる平面ポリゴンの描画方法は、FVFに D3DFVF_XYZRHW を当てる事なのですが、
これだとZ値が0〜1までしか描画されないようで、Zバッファの反映が望めず・・
せっかく答えを書いて下さっているのに、やり方が・・|||llorz
0960名前は開発中のものです。2010/01/26(火) 20:01:04ID:APLpgQP8
元々の3次元座標を座標変換してWで割ったらZの値は0〜1の範囲になるんだ
問題ない
レス数が950を超えています。1000を超えると書き込みができなくなります。