3次元空間での回転軸について、備忘録程度にさらっと書きます。間違っている部分もあるかもしれないので悪しからず。
経緯
会社の研修で「three.js」を触る機会があり、3次元空間での物体の回転について触れたのですが、「どの軸をもとに回転するのか」というのがいまいちぱっとしませんでした。
しかし、講師の方が最近やっていたゲームで例えてくれたので、すんなり理解できた、というのが今回のお話。
先に言っておくと、小難しい行列計算や回転行列云々には触れません。あくまで「ロール・ピッチ・ヨー」がそれぞれ何軸なのか、実際のゲームではどう使われているのかを軽く触れるだけの軽い内容です。
ロール・ピッチ・ヨー
2次元では基本的に俯瞰視点のようになるため、回転といっても右回りか左回りかぐらいしかありませんでした。
しかし、3次元空間での回転を表現するには、X軸(幅)、Y軸(高さ)、Z軸(奥行き)それぞれの軸をもとに回転をする必要があります。そして、回転を適応する順番によって、結果が変わってきます。
ここで、fig1に示した通り、X軸の回転を「ロール」、Y軸の回転を「ピッチ」、Z軸の回転を「ヨー」と呼び、「ロール→ピッチ→ヨー」の順(つまりX軸→Y軸→Z軸の順)で回転を適応する作法があります。
ここでは、行列の話はしないといったので、とりあえず、それぞれが何軸の回転なのかを覚えるとこまでですね。
各軸の回転がどのようにゲームで使われるか
さて本題です。各軸の回転がどのようにゲームで使われるかという話ですが、
表題の通り、今回は「ガンダムVS.シリーズ」で例えることとします。
ロール(X軸に回転)
X軸の回転は、実際に立ってみて、腕を伸ばして目の前を指差ししてみるとわかりやすいです。
指差しした腕を上にあげ、斜め上をさす。これでX軸に回転している感覚が何となくわかります。
「ガンダムVS.シリーズ」で言えば自機が地上にいて、敵機が真上にいる時の攻撃などが使われている場所としてあげられるでしょうか。
ピッチ(Y軸に回転)
y軸の回転はその場に立って、そのままくるくる回るといった感覚でしょうか。
「ガンダムVS.シリーズ」で言えばロックオン変更などが使われている場所としてあげられるでしょうか。
ヨー(Z軸に回転)
z軸の回転は立っている状態からそのまま寝転ぶのがイメージしやすい?(具体的なイメージが思いつかない…)
「ガンダムVS.シリーズ」で言えば変形時の姿勢などが使われている場所としてあげられるでしょうか。
さいごに
何事も、どこで使われているかを知ると俄然興味が湧いてくるものですが、やはり自分の興味のある「ゲーム」においての使い道を知ると面白みが増しますね。
とは言え、書いてて「これゲームで例える必要あったのかな…」と思いました……。
3次元のあれこれを学ぶに当たって、「わからなかったら現実世界に置き換えてみる」という方が重要な気がしました。
目の前のスマホをくるくる回した方が、わかりやすい気もする……。
「three.js」は回転行列云々を考えなくとも、rotationを使えば簡単に回転できちゃうっていうのがすごいですね〜。
3Dの基礎についてはこちら
eveydayanime-9rakura.hatenablog.com