Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!

log

2012.06.27 C++:視点をずらすお話

ファイル 402-1.jpg

今回はちょっと豆知識的な話を書こうかと思います。カメラと視点に関する話です。
3Dで普通に射影行列(知識の無い方は、まぁカメラの画角を設定するものだと思って
下さい)を作成した場合、あまり意識する人は少ないかと思いますが視点の位置はスク
リーンのちょうど中心になります。つまり真っ直ぐな道路の向こう側を見ている場合、
道路のパースの先は画面の中心に来るということです。

視点が中心に来ないと不自然な印象になるので、視点の位置をずらすなんてことは
普通はやらないですが、ムービー等で写真や画の一部をトリミングした風に見せたい
こともあったりします。そこで、そんな場合は射影行列をD3DXMatrixPerspectiveOff
CenterLHやD3DXMatrixOrthoOffCenterLHで作成します。今までこの関数一体何
なんだろうと思っていましたが、つまりはこの関数は射影変換した後にスクリーン位置を
オフセット移動させるような行列を作成するという訳です(カメラの位置をずらすという訳
ではなくスクリーン変換した2D画面をずらすというやつです)。

ただ、実をいうとこんな関数を使わなくても今まで通りの射影行列のパラメータを以下
のように少しいじるだけでオフセット移動をさせることが出来ます。
・透視投影の場合:_31,_32の値を調節する。
・正射投影の場合:_41,_42の値を調節する。
ちなみに、とっても分かりにくいですが…画像は以下のように透視投影の_31に1を設定
してスクリーンを半分だけ左にずらしたものです。ただの変な画像ではありません苦笑;
D3DXMatrixPerspectiveFovLH( &ProjMatrix,Fov,Aspect,Near,Far );
ProjMatrix._31 = 1.0f;
とっても簡単です。画面をずらしたいという方は是非お試しあれ。

comment

post your comment

投稿フォーム
name
mail
url
comment
icon
アイコン一覧
del key