DirectX勉強会 第3回
内容
•ポリゴンの回転
•ポリゴンの移動
•カメラの視点
ポリゴンの回転
•回転行列を作り、その回転行列をワールド行列に指
定することでポリゴンを回転させることができる
•D3DXMatrixRotationX, D3DXMatrixRotationY,
D3DXMatrixRotationZ関数を使って回転行列を作
る
–第1引数で回転行列へのポインタを指定する
–第2引数で回転角を指定する
•lpD3DDEV->SetTransform関数で第1引数を
D3DTS_WORLD、第2引数を作った回転行列への
ポインタにすると、ワールド行列に指定したことにな
りポリゴンを回転させることができる
ポリゴンの移動
•平行移動行列を作り、その平行移動行列をワールド
行列に指定することでポリゴンを移動させることがで
きる
•D3DXMatrixTranslation関数を使って回転行列を
作る
–第1引数で平行移動行列へのポインタを指定する
–第2引数で移動先の座標を指定する
•lpD3DDEV->SetTransform関数で第1引数を
D3DTS_WORLD、第2引数を作った平行移動行列
へのポインタにすると、ワールド行列に指定したこと
になりポリゴンを移動させることができる
ワールド行列
•ワールド行列を設定することでポリゴンの回転、移動をする
ことができる
•複数の回転行列、平行移動行列を掛け合わせることによっ
て回転移動を一緒に行うことができる
–X軸回転の行列を&matRotateX,Y軸回転の行列を&matRotateY,平
行移動の行列を&matTransとするとmatRotateX* matRotateY*
matTransでX軸回転、Y軸回転、平行移動をする行列となる
–この際に左にある行列の動きを先に行う
–上の例では平行移動、Y軸回転、X軸回転の順に行われる
•lpD3DDEV->SetTransform関数で第1引数を
D3DTS_WORLD、第2引数を作ったワールド行列へのポイ
ンタにすると、ポリゴンの回転、移動を行うことができる
サンプルプログラム(Poly3D)
元のまま(移動先は(0,0,5))移動先を(3,0,5)に変える
カメラの視点1
•ビュー行列を設定することでカメラの視点を指定す
ることができる
•lpD3DDEV->SetTransform関数で設定する
–第1引数をD3DTS_VIEWにする
–第2引数を作ったビュー行列へのポインタを指定する
•プロジェクション行列を設定することで視界の角度、
見える範囲の近くの限界、遠くの限界を指定するこ
とができる
•lpD3DDEV->SetTransform関数で設定する
–第1引数をD3DTS_PROJECTIONにする
–第2引数を作ったプロジェクション行列へのポインタを指
定する
カメラの視点2
•D3DXMatrixLookAtLH関数でビュー行列を設定す
る
–第1引数はビュー行列へのポインタを指定する
–第2引数は視点の位置を指定する
–第3引数は方向を指定する
–第4引数はカメラの上の方向を指定する
•D3DXMatrixPerspectiveFovLH関数でプロジェク
ション行列を設定する
–第1引数はプロジェクション行列へのポインタを指定する
–第2引数は視界の角度を指定する
–第4引数は近くの限界を指定する
–第5引数は遠くの限界を指定する
サンプルプログラム(Poly3D)
元のまま((0,0,1)の方を
向いている) (0,1,2)の方を向くように変える