0からのゲームプログラミング > カメラ

Back Next
更新日 2004.04.19
カメラ

 モデラーでは、視点と注視点を自由に変更し、モデリングすることが出来ましたね。それと同じように、プログラムでも視点と注視点を変更してみましょう。


 どこを変更するのかと言うと、InitRender メンバ関数に以下のコードがありました。


ScreenStage.cpp

// 描画の初期設定等
// 引数、戻値なし。
void CScreenStage::InitRender(void)
{
	m_vec3Eye = D3DXVECTOR3(-200, 400, 400);	// カメラ位置(座標)
	m_vec3At = D3DXVECTOR3(0, 0, 0);		// カメラの注視位置(座標)

	m_Camera.Init(g_hWnd, g_pD3DDevice);
	m_Camera.View(&m_vec3Eye, &m_vec3At);
	m_Camera.Projection(45, 10, 10000);

	・
	・
	・
}


 上のコードのカメラ位置とカメラの注視位置を変更すると、見るところが違ってきます。例えば、以下の表のように注視点は固定にして、視点を時計回り [ 右回り ] に変更していくと、以下のようになります。

 
番号 視点 注視点
x座標 y座標 z座標 x座標 y座標 z座標
0 -200 400 400 0 0 0
1 -300 300 100 0 0 0
2 -250 200 -50 0 0 0
3 -150 100 -200 0 0 0

 
0.
0

2.
2
1.
1

3.
3


 イメージが湧きますでしょうか。このカメラの操作は、CCamera クラス にまとめています。カメラの操作と書きましたが、単に座標変換をしているだけです。


参考 < CCamera クラス >

・メンバ関数 View では、ビュー・トランスフォームワールド座標ビュー座標 ) を行っています。D3DXMatrixLookAtRH を呼び出し、SetTransform しています。

・メンバ関数 Projection では、射影・トランスフォームビュー座標射影座標 ) を行っています。D3DXMatrixPerspectiveFovRH を呼び出し、SetTransform しています。

※詳しくは、ヘッダのソースと、DirectX のヘルプを参照のこと。

【スポンサード リンク】


Back Next

0からのゲームプログラミング > カメラ