【C++】 DirectX初心者質問スレ Part32 【C】at TECH
【C++】 DirectX初心者質問スレ Part32 【C】 - 暇つぶし2ch811:デフォルトの名無しさん
10/12/12 08:36:01
>>809
ofxKinect と opencv でもググれ。それで得られた値を使って、DirectXで何かしたいような場合
またこのスレに来るといいぜ

812:デフォルトの名無しさん
10/12/12 11:43:01
SDKにエンドユーザ向けランタイムをつくる方法があったと記憶していますが、どうやればいいのでしょうか?

813:デフォルトの名無しさん
10/12/12 12:30:16
プログラム板にキネクトスレ立てようぜ

814:デフォルトの名無しさん
10/12/12 17:08:11
>>812
SDKのライセンスの文章に書いてある。

815:デフォルトの名無しさん
10/12/12 21:16:17
スレチ厨うざいな

816:デフォルトの名無しさん
10/12/12 21:43:52
いやでもスレチだし

817:デフォルトの名無しさん
10/12/12 22:59:46
フレームレートを変更したいのですが以下で実行しても30FPSに設定されてしまいます。

// VIDEOINFOHEADERの取得
hr=pC->GetFormat(&pmtConfig);
VIDEOINFOHEADER *pVih = (VIDEOINFOHEADER *)(pmtConfig->pbFormat);
pVih->AvgTimePerFrame = 500000; // 20FPSに設定
// キャストして代入
pmtConfig->pbFormat=(BYTE*)pVih;

//SetFormatでpbFormatの変更を適用
pC->SetFormat(pmtConfig);

設定方法が間違っているのでしょうか?

818:デフォルトの名無しさん
10/12/13 03:04:01
DirectShowじゃねーか。
pCとか意味わからんし。
DirectShowと戦うスレ Part 4
スレリンク(tech板)

819:デフォルトの名無しさん
10/12/13 03:47:49
ランタイムって勝手にゲームと同封して再配布してもいいの?

820:デフォルトの名無しさん
10/12/13 06:00:17
>>819
DirectX 再頒布パッケージのことを言っているのなら、話は逆だ。

DirectX を使用しているプログラムを配布するときは、
使用しているDirectXのバージョンに合わせた再頒布パッケージを
「必ず」同梱しないといけない。

821:デフォルトの名無しさん
10/12/13 10:13:23
-1.#IND00
これなんですか?

angle = acos(D3DXVec3Dot(&now_vec,&eye_vec));
っていう計算をしたら、angleに入ってきます。

ちなみに、now_vecとeye_vecは小数第3位あたりまでほぼ同じ数値が入っていて
この場合、0が入ってきてほしいんですが…
if(angle == -1.#IND00) angle = 0;
とかしてみようとしましたが、数値ではないらしいのでエラー吐きます

822:デフォルトの名無しさん
10/12/13 10:26:51
計算が成り立ってないんだろう。

823:デフォルトの名無しさん
10/12/13 10:29:23
>>821
少なくとも 「if(angle == -1.#IND00)」 は通るはずが無いとまず思って欲しいが、
とりあえずその値は 「数値計算上、ありえない状態」 って意味。 要はエラー、INF みたいな物


824:デフォルトの名無しさん
10/12/13 10:31:10
あ、なんか誤解招く言い方したかも
「INF みたいな物」 ってのは、つまり数値表現の中の特殊な状態って意味で、みたいな物ってこと

825:デフォルトの名無しさん
10/12/13 10:31:28
>>821
三角関数について勉強しなおせ。
浮動小数点演算で例外が発生してるのでそれ以上計算しても無駄。

対策としては、そもそもそのような値が出てこない用に呼び出し前に場合分けをする。

826:821
10/12/13 11:22:56
float dot;
dot = D3DXVec3Dot(&now_vec,&eye_vec);
angle = acos(dot);

とすると、今のところ問題なく動くようになりました(・_・
ちなみに、dotには1.000000が入ってきていました

827:821
10/12/13 11:43:03
すみません、とりあえず>>826はウソでした

828:821
10/12/13 12:15:00
1.0000001が入ってくる場合があって、そのときに問題が発生しました。
桁落ちしていたようです

回りくどい対策をするのはいやなので、とりあえずfloatをdoubleに変えて対策してみます

829:デフォルトの名無しさん
10/12/13 12:17:54
>>826-828
そんな場当たり的な対応をしてないで、ちゃんと場合分けしなさい。

830:821
10/12/13 13:16:19
if(D3DXVec3Length(&(now_vec-eye_vec)) < 0.0001f)
angledot = 0;
else
angledot = D3DXVec3Dot(&now_vec,&eye_vec);

とりあえず、こんな感じにしてみました...

831:821
10/12/13 13:27:48
angledot = 0

angledot = 1.0 でした


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch