メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.621) DX7 カメラの設定  2005/12/09


/*========================================================*/
    <<<あゆしゃの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

ブラウザの閉じるボタンで閉じてください。