
高校の授業で習った「アイツ」がVR開発に早速役立った件
目標は「VRで自由に会って話せるサービス」を作ることです!
環境構築が終わり、UE4の映像制作コンテストも終わったので、いよいよVR開発に本腰で取り掛かっていきます!
今日の開発テーマ
さて、今日の開発では「VR空間内で自由に歩き回れる」ようにしました!「話す」ためのアプリといっても、やっぱり動き回れるほうが面白いですよね。
今日の成果
百聞は一見に如かず。今日の開発は上手くいったので、結果を3秒の動画にまとめてみました。
VR内で歩き回れるようになったよ~ pic.twitter.com/iJMtuWaC5V
— アユタヤ (@ayutaya_chan) January 14, 2022
こんな感じの仕上がりです。Quest 2には、ハンドコントローラーが2つあるので、そのコントローラーのスティックを倒すと進みたい方向に進めます。
「アイツ」の実力
さて、「アイツ」とはズバリおなじみの高校数学です!高校で習う数学って何かに応用することってありますか??ちなみに僕は理系ですが授業とテスト以外で「コイツ」が役に立ったことをほとんど覚えていません💦
そんな「コイツ」ですが、実は今日の成果は「コイツ」なしでは到底完成しませんでした。もう少し詳しく触れると、「行列」の回転運動の項目に助けられました。
ちょっとマニアックな話
ここからは勝手にマニアックな話をするので、ここまでで「あ~高校数学も役に立つんだな~」と思っていただけたらこの項目は飛ばしちゃってください笑
まず、一番の問題だったのは「プレイヤー目線での『前後』『左右』の方向を求める事」でした。この方向が分かりさえすれば、その方向にキャラを動かすのは実は造作もありません。ちなみに「方向」とは二次元のベクトル(x方向とy方向のみ)の事です。
では方向をどうやって決めるか。もう少し踏み込むと、実は『前』と『右』の方向だけ分かれば十分です。(『前』に"+2"のスピードで進むと前に進み、『前』に"-2"のスピードで進むと後ろに進みます)
で、『前』の方向はすぐにわかりました。(UE4にはそういう便利な機能が備わってる)
問題は『右』です。んなああんと、UE4の機能には『右』を求めるものはありません!!(見つけてないだけだったらすみません)
ということで自力で『右』方向を求めるしかありません💦💦
ここで授業で少しだけ習った「行列」が役に立ちます。今回使った知識は、「行列」の中でも「ある行列に特定の行列を掛け算すると、元の行列を回転させることができる」というものです。
…つまりは、「『前』方向を表す数になんか掛け算すれば『右』方向が分かる!!!」ってことです。
そして、計算の結果、x座標とy座標の値を入れ替えてx座標の値を-1倍するだけで『右』を求められることが分かりました!!
これで晴れてプレイヤーは自由に歩けるようになりました。
まとめ
数学ってたま~に意外なところで役に立つことあるよね。