行列(マトリックス)とは

ここで行列(マトリックス)の解説をします。
ここで言う行列というのはお店の前に人がいっぱい並んでいる事ではありません。
数学で使う行列の事です。
行列(マトリックス)とは数字を行と列に並べて括弧でくくったものです。
3×3行列は

4×2行列は

2×5行列は

のような感じです。ちなみに数字は適当です。
あくまでも、こういう物だという事だけ解ればなんとかなります。
3×3行列は3つの行と3つの列、4×2行列は4つの行と2つの列といった感じです。
行と列に分かれているイメージです。
そして、DirectX や OpenGL のような 3Dの座標変換には 4×4行列を用います。
今まで使用してきた glLoadIdentity(); や glTranslatef(x,y,z); や glRotatef(angle,x,y,z);
とか glScalef(x,y,z); 等も実は内部で行列を使用して、それを適用しているのです。

何故、今、そんな事を知らなければならないのか?
glLoadIdentity(); や glTranslatef(x,y,z); や glRotatef(angle,x,y,z);
とか glScalef(x,y,z); を使っていれば行列など知らなくても良いのではないか?
と、お思いでしょう。

確かに、今のPCはとてつもなく高性能になり、そしてこれからも進化していくのは間違いないですが
毎回毎回、glTranslatef(x,y,z); や glRotatef(angle,x,y,z); とか glScalef(x,y,z); を、
使っていては、かなりの無駄が生じ、処理落ちするのは避けられません。
glTranslatef(x,y,z); で平行移動して、glRotatef(angle,x,y,z); で回転して、glScalef(x,y,z);で拡大縮小する場合、
3回も行列を適用している事になります。
平行移動成分と回転成分、拡大縮小成分を合成して出来た行列を適用すれば1回で済みます。

クォータニオンを使わないアニメーションでは、それほど必要ありませんが『スキンメッシュアニメーション』では
必須の知識です。後のためにもここで理解しておくべきです。
全てを理解する必要はありません。良く使うものだけで充分です。
では、次回、単位行列から解説します。

 

 

 

最終更新:2014年04月16日 17:56
添付ファイル