【C++】 DirectX初心者質問スレ Part33 【C】
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2010/12/22(水) 20:11:01これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前スレ
【C++】 DirectX初心者質問スレ Part32 【C】
http://hibari.2ch.net/test/read.cgi/tech/1288282082/
0934デフォルトの名無しさん
2011/02/15(火) 19:33:33御返事ありがとうございます。
コンパイルは通るのですがXPではサウンドが流れているのにもかかわらずに
7のほうでは、流れないので、 FAILEDでエラーがでた場合にはMessageBoxを表示するようにしたら表示されたので
ロードの問題だとおもうのですが
あと書き忘れてしまいましたが、プロジェクトの設定はマルチバイト文字を使用にしています。
とりあえず、↑のようになおしてやってみます
0935デフォルトの名無しさん
2011/02/15(火) 19:48:11LPCSTRに直してみてやってみたのですが、やはり再生がされません。
0936デフォルトの名無しさん
2011/02/15(火) 19:58:55ファイル読み込みじゃなくて自作波形なので、当然ヘッダは含んでないです。
>>925
既知のバグかなにかでDirectSoundでは常に起こるってことですか?
個人的に解決しないまま投げ捨てて、なんとなく乗り換えるってやり方が好きじゃないんで。
>>930
データ量が不足して無音部分がある、と言うのでしたらそれは一切ありません。
試験的にバッファをあらかじめ波形データを満たしてから鳴らしても、2〜3ms程度の無音が挿入されます。
なぜか440Hz、880Hzとかの基本音に限り、途切れは一切はないんです。
0937デフォルトの名無しさん
2011/02/15(火) 20:42:53それは興味深い現象だなぁ、ソースを晒す勇気はないですかね
0938デフォルトの名無しさん
2011/02/15(火) 21:08:40波形がちゃんと満たされてるなら、波形の急激な変化によってギャップを聞き手が感じてるって感じにならんかなー?
うまいことMIXしたらどうだろう??
0939デフォルトの名無しさん
2011/02/15(火) 21:15:25だったらさっさとトレースでもしろよ
0940デフォルトの名無しさん
2011/02/15(火) 21:21:08波形の周波数によってはバッファにキレイに収まらないから、末尾の半端な山の部分が
頭に戻って形状がリセットされた時に無音に感じる、という事でしょうか?
でもそれだと無音というよりプチノイズが出る気がしますが・・・
とはいえアドバイスはありがとうございます。
波形の合成はなんとか考えてやってみるようにします・・・が
みんなそうやって波形のつなぎ目のタイミングを高度に考慮してストリームをやってるんでしょうか?
ネット見る限り、イベンで通過信号受け取ったりタイマーで書き込んだりする程度のことに思えたんですが。
もっと簡単に出来ると考えていたので肩透かしをくらった気分です。
0941デフォルトの名無しさん
2011/02/15(火) 21:23:47うまくいってるソースなんて知りません。他人のゲームは大丈夫ってだけです。
他人の作ったオープンソースなんて持ってませんから。
1つだけありますけど、セカンダリバッファを使わずにプライマリバッファ使ってたので参考にしてません。
0942デフォルトの名無しさん
2011/02/15(火) 21:34:33google「DirectSound ストリーミング再生」あたりで調べてみればいいんじゃね?
こんな感じでやってくしかないんじゃね?
http://marupeke296.com/cgi-bin/cbbs/cbbs.cgi?mode=res&namber=2954&page=10&no=0&P=R
0943デフォルトの名無しさん
2011/02/15(火) 21:53:26そのワードもそのサイトもさんざん見ましたw
みんなプチノイズの話がメインで、無音についてはヘッダの読み間違いとか、データサイズ間違い、
メモリスワップが発生しているとか、フォーマットがおかしいんじゃないかとか・・・
上のほうで誰か言ってくれた事象と解決法ばっかりしか見つからないんです。
ソースを晒す勇気はありませんが、コード的におかしい事はしてない自信はあるんです。
こんだけ探して見つからないってことは、自分のサウンドカードだけの固有バグなのかとも・・・
DirectSoundはカードによっては不具合だらけとも見つかったので。
Vista以降はHALが廃止されたから他のAPIを推奨とも確かに書いてあるし
まあとりあえず波形の合成に工夫がいる、との方法を信じてやっていきます。時間がかかりますが。
だからこのハナシは忘れてください。作ってみてダメだったらまた来ます。
失礼しました。
0945デフォルトの名無しさん
2011/02/15(火) 23:28:42意味わかんね
再生時のデータを全部ファイルで吐き出してみるとかしたらいいんじゃないの?
っていってるんだけど
0946デフォルトの名無しさん
2011/02/16(水) 01:49:30解決しました。
えっとファイルで出力してというか、PC上で録音して波形の確認をしたら、やはり無音になっていたのですが
矩形波なのにその前後で波形が小さく丸くなっていたことから、何かでフィルタされてると考えて
PCの設定を見直したら、デバイス側で自動ノイズフィルタがかかっていました。
それをOFFにして、再度聴いてみたらノイズが走っていました・・・
やはり繋ぎ目の波形の整合がとれていませんでした。
それがノイズになって、うちのカードが律儀にフィルタリングして無音になってただけでした。
んで基本音の場合はたまたま波形の形状がバッファサイズぴったりで継ぎ目の整合がとれていたので
フィルタされずにキレイに鳴ってたみたいです。いろいろすいませんでした。
0947デフォルトの名無しさん
2011/02/16(水) 11:57:51よく調べると、HLSLエフェクトファイルを読み込むときにヒープ領域が...というメッセージでブレークポイントが作られていました。
D3DCREATE_HARDWARE_VERTEXPROCESSINGだと問題ありません。どうしてでしょう?
0948デフォルトの名無しさん
2011/02/16(水) 14:12:04HARD+HARD → HARD+SOFT → SOFT+SOFT の順番でエラーキャッチして作成し
全て失敗したらエラーメッセージを出す処理を行うのが一般的。
ウィンドウがすぐ閉じるのは強制終了されているから。自分で正しくエラーメッセージ処理しないとそうなる。
0949デフォルトの名無しさん
2011/02/16(水) 21:14:48今回スケルトンとして(SOFTWAREで)まとめた後に、どれくらいの負荷がかかるのかテストしてみようとHARDWAREからSOFTWAREに切り替えたら動かなくなりました。
0950949
2011/02/16(水) 21:16:02○ 今回スケルトンとして(HARDWAREで)まとめた後に
0951デフォルトの名無しさん
2011/02/16(水) 22:14:39メソッドの戻り値をちゃんと調べてるのかどうか
その文面からは判断できないわ
0952デフォルトの名無しさん
2011/02/16(水) 22:24:30その下の行で「この行まで実行」でエフェクトファイルの読み込みで止まります。
そこまでのプロセスは全て正常な戻り値です。
0953デフォルトの名無しさん
2011/02/16(水) 22:34:27デバッグランタイムでも何も言わずしぬの?
0954デフォルトの名無しさん
2011/02/16(水) 23:18:06デバッグでやってます。
0955デフォルトの名無しさん
2011/02/16(水) 23:23:49これは大丈夫?
0956デフォルトの名無しさん
2011/02/16(水) 23:39:51D3DXVec3Unprojectの結果の第一引数をレイにして、D3DXIntersectで距離やHitポリゴンの頂点から計算できないかと
あれこれやってるのですが、上手く行かない上に意味がよく解らず・・。
SDKやWeb上に、このサンプルって有ったりするでしょうか? ※DirectX9です
0957デフォルトの名無しさん
2011/02/16(水) 23:55:13ttp://marupeke296.com/DXG_No48_PointGroundInScreen.html
0958デフォルトの名無しさん
2011/02/16(水) 23:55:410959デフォルトの名無しさん
2011/02/17(木) 00:20:15リファレンスモードと勘違いしてるのかな。
HARDWAREはもちろん、SOFTWAREだって全部の機能を持ってるわけじゃないよ?
本来は持っているべきなんだけどメーカ次第だし、そのために混在モードもあるよね。
とりあえず使用する機能がSOFTWAREモードできっちり対応しているか、CAPS見たらいんじゃないかな。
「ヒープ領域が・・・」の続きも知りたいけど、重要なヒントは省略しなくていいと思うよ。
てか、そのメッセージにそのまま答えが書いてあるんじゃないのかな。
0960956
2011/02/17(木) 01:03:16>>958 やはりサンプルが有ったのですね。いじって色々と知識を増やそうと思います。
ありがとうございました。
0961949
2011/02/17(木) 09:23:34タイトルを変えると上手く行ったり行かなかったり・・・原因はよくわかりません。
ちなみに>>955はD3DUSAGE_WRITEONLYでも作動しました。やはりどこかおかしいのでしょうか・・・?
0962デフォルトの名無しさん
2011/02/17(木) 09:42:130963デフォルトの名無しさん
2011/02/17(木) 12:17:33君って虚言癖があるよね。
0964デフォルトの名無しさん
2011/02/17(木) 19:36:35D3DRS_FOGENABLE でフォグを有効にしたら
D3DFVF_XYZRHW で描いてる2Dスプライトが真っ黒になるんですけど
これは仕様ですか?
だとするとスプライト描く時だけ D3DRS_FOGENABLE をFALSEにして
終わったら復元するのが定石という事ですか?
0965964
2011/02/17(木) 19:53:47仕様っぽいですね。
レス消費すまそ。
余談ですが、真っ黒と書きましたが正確にはフォグ色でした。
0966デフォルトの名無しさん
2011/02/17(木) 21:31:44こんなとこで質問する前に、フォグの設定に関係する要素を全部調べるんだ。
D3DFVF_XYZRHWでもフォグは使えるから、そのための設定をちゃんとしないから
そんなことになってるだけだよ。
0967デフォルトの名無しさん
2011/02/17(木) 22:35:280968デフォルトの名無しさん
2011/02/17(木) 22:49:170969デフォルトの名無しさん
2011/02/17(木) 22:53:19ありがとうございます
てっきり他にプロセス動いてるのかと思っていました
0970デフォルトの名無しさん
2011/02/17(木) 22:59:060972デフォルトの名無しさん
2011/02/18(金) 08:12:02モーションを上半身(行動)と下半身(移動)を別々に動かしたいのですが、
これは普通どう実現するものなのでしょうか? ※モーション再生はSDKサンプルの加工品です。
現在「下半身と上半身それぞれに対して、アニメーションのセットとミックス完了後、
それぞれの不要部分のマトリクス更新をカットしあってみよう。」
と思って試行錯誤しているのですが、これは正しいor間違っているでしょうか?
また、何か読めば勉強になりそうな書籍やサイトが有れば教えて頂けますと助かります;
0973デフォルトの名無しさん
2011/02/18(金) 08:17:341つのファイルから複数のインスタンスを生成するでもいいけど
0974972
2011/02/18(金) 08:23:27(゚Д゚) ・・・そんな手が・・。
元が同じモデルで同じモーションで再生時刻が同じなら綺麗にくっ付いて見えるんですよね;
ありがとうございます! orz
0975デフォルトの名無しさん
2011/02/18(金) 08:24:17普通、どう実現するかって言い方があれだけど >>973 も言う方法か、
あるいは予め指定してある頂点のグループ部分だけを動かせるような管理構造で、
単純に自前で持つように俺はしてるってか、全部書いてる
0976972
2011/02/18(金) 08:25:040977デフォルトの名無しさん
2011/02/18(金) 08:28:15当たり前だけど
0978972
2011/02/18(金) 09:24:20ありがとうございます。実現方法は色々有るんですね。頂点変換に至りさえすれば。
>>977
プログラム以前の話でしたね; 綺麗にくっつけるには何かしら頂点を触らないとですし、手間が増えそうですね;
あまり複雑な事をしたい訳でもないですし、
いっそ全て全身モーションで作り、移行タイミングで誤魔化すのも手かな・・と。
色々勉強になりました。 ありがとうございました。
0979デフォルトの名無しさん
2011/02/18(金) 10:39:53http://www.tar.hu/gamealgorithms/ch15lev1sec3.html
0980972
2011/02/19(土) 02:12:58ありがとうございます。そういう手も有るんですね。
そこで、早速その方法に合わせてモデルを分割し、下半身の上に上半身を上に乗せようとしたのですが、
「乗せるボーンの合成済みマトリクス」を取ってきて描画すると
上半身が「形状は綺麗に保ちアニメーションも正常」「ただしやたら離れた位置で、下半身(腰)の回転と同期して大きく振り回されている」
という症状になってしまいました。
何となく、拡大縮小→回転→移動 の順番を間違えた時のような症状にも見えるのですが・・。
乗せる位置のマトリクスをどうにか分解し、順番に合成しなおせば正常になると思えますでしょうか?(分解方法を模索中です;)
0981972
2011/02/19(土) 07:03:54マトリクスの掛け合わせの理解が根本的に間違っている様で。
先にボーンのマトリクスを掛け合わせ、胴の境目の2ボーンの結果で上半身下半身を描画したら、ほぼズレずに上手く行きました。
お騒がせしました;
0982デフォルトの名無しさん
2011/02/19(土) 08:47:25【C++】 DirectX初心者質問スレ Part34 【C】
http://hibari.2ch.net/test/read.cgi/tech/1298067098/
0983デフォルトの名無しさん
2011/02/19(土) 17:38:080984デフォルトの名無しさん
2011/02/19(土) 22:22:48.67レス数が950を超えています。1000を超えると書き込みができなくなります。