DirectX再入門5
キーフレームアニメーション
パラメータとして、以下のものを指定する。
- 移動先の座標を指定する
- 移動時間を指定する
この2つのパラメータに、「経過時間」を加え、移動している間の座標を計算する。
これにより、中間の座標のパラメータを省略することができる。
また、フレーム数ではなく「経過時間」で座標を求めるため、
処理落ちによる、移動先の座標への到達時間誤差が発生しない。
パラメータの複数指定
移動先の座標を複数指定できるようにする。
ex. A(0,0)→B(10,15)→C(0,50)
中間状態の計算
前後の座標から傾きを求め、経過時間を掛ける。
それに直前の座標を足すことで、現在座標が求められる。
キーフレームアニメーションクラス
メンバ変数
- キーの総数
- キーの移動時間の割合(0.0f〜1.0f<%>)
- キーの移動量
- アニメーションループフラグ
- アニメーション開始時間(timeGetTime()をそのまま設定)
- アニメーションの継続時間(ミリ秒)
クォータニオン
回転マトリクスの欠点
- 特定の姿勢(角度)から別の姿勢(角度)への角度の計算が大変
- 数学的に表現できない姿勢がある(ジンバルロック)
クォータニオンとは
物体の姿勢(回転状態)を表す数学的表現。
アルファブレンディングの有効化
IDirect3DDevice9::SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE)
ブレンディング係数の設定
ブレンディング係数 | 説明 |
---|---|
D3DBLEND_ONE | 1.0 |
D3DBLEND_SRCALPHA | SRCのアルファ値 |
D3DBLEND_INVSRCALPHA | (1-SRCのアルファ値) |
D3DBLEND_DESTALPHA | DESTのアルファ値 |
IDirect3DDevice9::SetRenderState(D3DRS_SCRBLEND, D3DBLEND_SRCALPHA); IDirect3DDevice9::SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
例2)重なり部分が強調
IDirect3DDevice9::SetRenderState(D3DRS_SCRBLEND, D3DBLEND_SRCALPHA); IDirect3DDevice9::SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
例3)加算合成
IDirect3DDevice9::SetRenderState(D3DRS_SCRBLEND, D3DBLEND_ONE); IDirect3DDevice9::SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
テクスチャブレンディング
「テクスチャのアルファ値」と「ポリゴンのアルファ値」を混ぜ合わせ、
「ピクセルごとのアルファ値」を決定するもの