プロジェクト演習 インタラクティブゲーム制作

プロジェクト演習III,V
<インタラクティブ・ゲーム制作>
プログラミングコース
第9回
ゲームで使える行列演算
今日の資料構成
• いつにもましてバラバラです
– 行列の演算ルールについてはVector.pdf
– 「変換」の扱いについてはCG基礎の資料
– プログラミングでの扱いはお手製PDF
• まとめろよ!って話ですよね
– ごめんね、先生へっぽこでごめんね
今日の知識でできること
• 空間全体中における位置関係と、
各モデルの位置や向きを基準にした
計算が自由に行き来できるようになる
– グローバル座標とローカル座標
• 親子関係の真髄が言葉と感覚と数式で
理解できる
• 行列とベクトルのマリアージュに嫉妬
東西南北と前後左右
• 絶対的な方角はコロコロ変わらない
– 変わったら困るよね
• だが、自分の向いている向きに対して
「前後左右」の方向を考える事が多い
– 道案内の全てが東西南北で書かれていたら、
コンパスとかGPS付きケータイなしでは
大都会を生き延びることはできないぞ!
• どっちも大事、3DCGでも大事
グローバル座標系と
ローカル座標系
• グローバル座標の一例
– 世界の中心を(0,0,0)とし、東西方向をX軸、
南北方向をZ軸、天地(高さ)方向をY軸とする
• ローカル座標系の一例
– 空間中のモデルが居る位置を(0,0,0)とし、
向いている方向に対しての左右方向をX軸、
前後方向をZ軸、上下方向をY軸とする
• これらを使い分ける必要がある
例えばこんな時どうする?
• あるモデルのローカル座標系の座標Pを、
グローバル座標系に持って行くとどんな座標
値になるだろうか?
– 例:あるキャラモデルが剣を持っていて、
その剣がグローバル座標系のどこに位置すること
になるのかを知りたい
• グローバル座標系のある座標Pは、あるモデ
ルのローカル座標系ではどんな座標値になる
だろうか?
– 例:マップ上のあるシンボルが、キャラから見て
どのような方向、距離に見えることになるのかを
知りたい
座標系から座標系への変換
• それを実現するのが「行列」
• 行列にベクトルを掛けると、
座標変換したベクトルが得られる
• 行列に行列を掛けると、
それぞれの行列による座標変換を
合成した行列が得られる
行列演算のルール
• Vector.pdfを参照
– これだけではどう役立つか分からないので、
続きは他の資料で
• 押さえて欲しいポイント
– 主に使うのは”行列×行列”と”行列×ベクトル”
– 単位行列の存在
– 逆行列の存在
変換行列の成分
• 拡大縮小行列
– ベクトルのx,y,zをそれぞれ実数倍したものが
得られる
• 回転行列
– 回転角θに基づいてベクトルx,y,zを回転した
ベクトルが得られる
• 平行移動行列
– ベクトルx,y,zにそれぞれの平行移動成分を
足し合わせたベクトルが得られる
後は別添えの資料を参照
• なんでもパワポは難しい
• なんでもPDFは大変…
(でも個人的には好き)
今日の課題
• 資料「モデル座標系と行列による変換 」
の最後に載っている課題