|
/*========================================================*/ <<<あゆしゃのC言語プログラミング>>> /*========================================================*/ 第621回 DX7 カメラの設定 発行 2005年12月9日(金曜日) 発行数 約2500 {magclick} /*========================================================*/ はじめに ( 決り文句 ) /*========================================================*/ ・このメールマガジンは、主にまぐまぐさんから発行しています。 ・ジャンルは、マルチメディアのプログラム、C言語です。 ・横60文字で作成し、インデントは大抵半角スペース4つです。 ・ここで扱うプログラムは、C言語と半光年以内のものです。 ・登録解除は、メルマガのホームページでお願いします。 ・過去ログはバックナンバー(下欄参照)を活用して下さい。 ・内容は私が感じたもので、最新の技術も、へたれもあります。 ・わかりやすさを優先させる為、たまに嘘があるかもしれません。 /*========================================================*/ ご挨拶 /*========================================================*/ こんにちは。あゆしゃです。 先日、とんでもない事件がおきました。 ★ビデオが壊れました。 10年ほどつかったので、大往生といったところでしょうか。 というわけで、新しい(感じの)ビデオを購入しました。 ビデオといっても、ハードディスクです。新しい感じですね。 そして何より、 ★番組の放送時間を自動調整! この機能が大変便利で、深夜番組も特別番組も手間いらずです。 {magclick} /*========================================================*/ 今回のお題 << DX7 カメラの設定 >> /*========================================================*/ サンプルソースです。 http://ayusya.hp.infoseek.co.jp/Source/DX9Sample_051205.cpp その実行結果です。 http://ayusya.hp.infoseek.co.jp/Image/DirectXSample_051205.png /*========================================================*/ 今回はメッシュの次の、カメラの設定です。 // カメラの位置を設定 D3DXVECTOR3 ViewFrom( 0, 100, -20 ); // カメラの位置 D3DXVECTOR3 ViewTo( 0, 0, 0 ); // カメラの向いている位置 D3DXVECTOR3 ViewUp( 0, 1, 0 ); // カメラの何だろう? D3DXMatrixLookAtLH( &ViewMat, &ViewFrom, &ViewTo, &ViewUp ); pDev->SetTransform( D3DTS_VIEW, &ViewMat ); こんな感じですね。 /*========================================================*/ 最終的にデバイスに SetTransform で登録します。 属性は D3DTS_VIEW、その内容が ViewMat です。 ViewMat は、マトリックスでおなじみの、3次元データです。 マトリックスは平行移動演算と回転演算を表しています。 つまり ViewMat は、カメラがどの位置にあってどの方向に むいているか、ということをあらわしています。 /*========================================================*/ その難しいマトリックスを作成するのが、D3DXMatrixLookAtLH です。 第1引き数に指定した、D3DXMATRIX structure に、作成された マトリックスが設定されます。 後の3つの引き数は、 ・カメラがどの位置にあるか、 ・カメラがどの位置を見ているか、 ・カメラがどの方向に傾いているか、 となります。 つまり、キャラクターの位置を第2引き数に、 キャラクターの向いているちょっと先を第3引き数に、 キャラクターの頭の傾きを第4引き数に、 それぞれ指定すると普通の設定の完了です。 サンプルのカメラは、かなり上ちょい手前から、原点 (ポリゴンの下辺の中央部分)を傾き無しで見下ろしています。 /*========================================================*/ 第4引き数は、カメラを構える方向です。 カメラの天井がどこを向いているかを指定します。 0,1,0 とすれば、普通に正面を向きます。 単純に向きを示すので、値を大きくしても結果は変わりません。 http://ayusya.hp.infoseek.co.jp/Image/DirectXSample_051205.png 0,−1,0 とすれば、カメラを下に構えるので、上下が逆転します。 http://ayusya.hp.infoseek.co.jp/Image/DirectXSample_051209_0M0.png 1,0,0 とすれば、カメラを右に倒してものを見ている感じになります。 http://ayusya.hp.infoseek.co.jp/Image/DirectXSample_051209_100.png 1,1,0 とすれば、右斜めに傾きます。 http://ayusya.hp.infoseek.co.jp/Image/DirectXSample_051209_110.png /*========================================================*/ Z座標の情報は、説明が難しいのですが、 ・値を大きくすればするほど、X座標とY座標の回転が元に戻る ・値を負の値にすると、向きが逆転する という感じです。 0,1、−1 とすれば、結果的にY座標をマイナスにしたときと同じです。 http://ayusya.hp.infoseek.co.jp/Image/DirectXSample_051209_0M0.png 説明が難しいのですが、 というか判らないのですが。。 {magclick} /*========================================================*/ さいごに /*========================================================*/ インターネットに接続するのかと思いきや、放送の電波に 番組情報を載せているとか。 なるほど、受信するだけですから双方向である必要がないわけ ですね。 あったまいぃ〜 {magclick} /*========================================================*/ 次回予告 /*========================================================*/ 次回は12月12日(月曜日)に、第622回をお送りします。 お題は「DX8 プロジェクションの設定」 お楽しみに! /*========================================================*/ 最後の決り文句 /*========================================================*/ このメールマガジンは、まぐまぐさんから発行しています。 このメールマガジンを解除したい場合は、まぐまぐさんをご利用 ください。このメルマガのまぐまぐアイディーは最後にあります。 このメールマガジンには広告が挿入されていますか? このメールマガジンの内容に文面の引用はありませんか? めーらっくすの場合はめーらっくすの利用方に従ってください。 このメールマガジンの内容の、転用、流用、宣伝、リンク、 出てくるゾンビが皆HG なんて大歓迎です。 {magclick} /*========================================================*/ /*========================================================*/ 発行者 あゆしゃ ホームページ::あゆしゃの世界 http://ayusya.hp.infoseek.co.jp/ ご意見・ご感想・ご質問メール mailto:ayusya@flamenco.plala.or.jp まぐまぐ::アイディー 0000020674 まぐまぐ::登録と解除 http://www.mag2.com/m/0000020674.htm まぐまぐ::バックナンバー http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674 めーらっくす::アイディー MM3E1AEE285AB4F めーらっくす::登録と解除 http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F めーらっくす::バックナンバー★最近のものならこちらが便利★ http://www.mailux.com/mm_bno_list.php?mm_id=MM3E1AEE285AB4F |