bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

カメラ2

カメラにトラックとクレーンを追加。
track(トラック):視線を固定して左右に移動
crane(クレーン):視線を固定して上下に移動

回り込みとかのカメラ用語を調べたが出てこないが・・・

前のカメラ制御クラスに追加する形。
実装部分だけ、

void cCameraController::track(float dist)
{
	XMVECTOR eye = m_pCamera->getPosition();
	XMVECTOR up = m_pCamera->getUp();
	XMVECTOR at = m_pCamera->getLookAt();

	XMVECTOR pos = at - eye;
	XMVECTOR dir = XMVector3Normalize(pos);
	XMVECTOR right = XMVector3Normalize(XMVector3Cross(dir,up));
	dir = dist * right;
	eye += dir;
	at += dir;
	m_pCamera->setLookAtLH( eye, at, up );
}

void cCameraController::crane(float dist)
{
	XMVECTOR eye = m_pCamera->getPosition();
	XMVECTOR up = m_pCamera->getUp();
	XMVECTOR at = m_pCamera->getLookAt();

	XMVECTOR pos = at - eye;
	XMVECTOR dir = XMVector3Normalize(pos);
	XMVECTOR right = XMVector3Cross(dir,up);
	up = XMVector3Normalize(XMVector3Cross(right, dir));
	dir = dist * up;
	eye += dir;
	at += dir;
	m_pCamera->setLookAtLH( eye, at, up );
}