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)の方を向くように変える