UnityでVRゲーム製作!XR Interaction Toolkit セットアップ編
どうも皆様 Hello world!
Unityでゲームを作っております、天野スズランと申します。
今回、念願だったVRゲームの開発に成功しましたので、備忘録代わりにその時の様子を思い出しつつ記事にしてみます。
VR開発なんもわからんという人にも分かりやすく説明していくつもりですので、よろしければ見て行ってください。
今回やること
今回は、VRを開発していくためのセットアップをやっていきます。
Unityのアセット「XR Interaction Toolkit」を使用してVRゲームを開発していきますので、初回である今回は、その「XR Interaction Toolkit」を使用するための設定をやっていきたいと思います。
もうちょっと具体的に言うと、Unityのインストールから、実際にVR機器で実行できるまでの範囲ですね。
Unityのインストール
Unityをインストールしましょう。
……ただし、最初の最初からやっているとそれだけで記事一つ書けますので、ここではUnityのアカウントやUnity Hubはインストール済みであると考えて進めていきます。
まだUnity Hubやらはインストールしてないよという人は、先にそちらをやっておいてください。検索すれば出てきます。
VRゲームを作る際の注意点として、Android向けにビルドが出来るようにしておきましょう。
Unity Hub からインストールを選択し、エディターをインストールを選びましょう。
長期サポートバージョンである2020.3.28f1を選び、インストール。
2020.3以上なら多分他のバージョンでも大丈夫です。しらんけど。
モジュール選択画面が出て来るので、「Android Build Support」と「Android SDK & NDK Tools」及び「OpenJDK」にチェックを入れてインストール。
Oculus Quest 2などはAndroidベースのOSを積んでいるので、Android向けにビルドできないとVR機器で動いてくれません。
これで、Unityのインストールは完了しました。
……めちゃんこ長いインストール時間が終わればですが。
なお、すでにインストールしてあるUnityにモジュールを追加するには、インストールから歯車のマークをクリックして、アンインストールで行けます。嘘です。モジュールを加えるです。
Oculus 開発者設定
さてさて、インストールの進行具合はどうですか?
インストール中は暇だから、先の方を見て予習しとこうと思ったそこのあなた、素晴らしい。Oculus側で設定しなきゃならないこともあるので、それをやりましょう。
え?のんびり動画見てたからインストール終わってる?素晴らしい、自分のペースで無理なくやれるのは良いことです。
私の使っている Oculus Quest 2 ですと、開発者モードにしないといけないらしいんですね。
やり方は簡単、自分のスマホにOculusアプリを導入しましょう。
そして、アプリを開いて、画面下の「デバイス」から「開発者モード」→「開発者モード」をONにしましょう。
なお、私は Oculus Quest 2 以外の事は良く知りません。が、多分似たような設定があるんじゃないかなと思うので、Oculus Quest 2 じゃない人は、各自調べてみてください。
新規プロジェクトの作成
次は、VR用のプロジェクトファイルを作りましょう。
Unity Hub → プロジェクト → 新しいプロジェクトと押すと新規作成画面(下図)が出て来るので、
1・エディターバージョンをさっきインストールしたやつに変える
2・テンプレートに3Dを選択する
3・適当に名前を付ける
をやった後、プロジェクトを作成を選びましょう。
なお、テンプレートに「VR」というものがありますが、これは XR Interaction Toolkit とは関係のないものですので、選ばない方が無難です。
XR Interaction Toolkit のインストール
次は、いよいよ大本命、XR Interaction Toolkit を入れましょう。
試用版を使えるようにする
ただし、この XR Interaction Toolkit はまだ試用版ですので、Package Managerには表示されません。表示される設定に変えましょう。
まず、Project Settings タブを開きます。
画面上部のメニューバー、「Edit」→「Project Settings...」から開けます。
Project Settingsタブ内の「Package Manager」から、「Advanced Settings」→「Enable Preview Packages」のチェックを付けます。
そうすると、なにやらウィンドウが出てきて「試用版だからバグとかあるかもしれんけどええか?」と聞いてきますので、「I understand」を選びます。「わかっとるわい」って意味です。
Packageをインストール
試用版を表示する設定にしたところで、実際にそのパッケージをUnityに入れていきましょう。
画面上部のメニューバーから、「Window」→「Package Manager」を選択します。
すると Package Manager タブが出てきますので、タブの左上「Packages:○○」と書いてある所を押して「Packages:Unity Registry」へ変更しましょう。
また、タブの右上に「XR」と入力すると検索がかけられます。
今回必要なのは、「XR Interaction Toolkit」と「XR Plugin Management」です。両方ともインストールしてしまいましょう。「Install」を押してください。
なお、「XR Interaction Toolkit」をインストールしようとすると、変なポップアップが出てきますが、「Yes」で大丈夫です。
XR Interaction Toolkit 君は、Unityの新しい入力システムを使っているのですが、今作っているプロジェクトが古い入力システムを使っていると「新しいのに変えていいか?」と聞かれるんだと思います。多分。未確認ですが。
Yesを押すとまたポップアップが。「I Made a Backup, Go Ahead!」を押しましょう。
バックアップ?まあ要らないんじゃないでしょうか。
Go Ahead! を押すとUnityが一旦落ちますが慌てない慌てない。開きなおせばOKです。
これで XR Interaction Toolkit のインストールは完了です。
ビルドターゲットの設定
次は、ビルドターゲットの設定です。
なんぞそれって思った人、大丈夫です。単純に、VR機器用にゲームを作るよって設定にするだけです。
「Project Manager」→「XR Plug-in Management」を選びます。
すると、Androidのマークがありますので、そこを押します。なんか円柱が組み合わさったロボのような奴です。
すると、Plug-in Providersという表示が出てきますので、お使いのVR機器にあったものを選んでください。
私は「Oculus Quest 2」を使用していますので、そこにチェックを入れました。
ビルド設定
いよいよ大詰めです。最後に、ビルド設定を変えましょう。
画面上部のメニューバーから、「File」→「Build Settings…」を選び、Build Settingsタブを開きます。
Platformを「Android」へ変更。
「RunDevice」をお使いのVR機器の物へ変更します。私の場合は「Oculus Quest 2」ですね。
なお、VR機器が表示されない場合、VR機器とPCとを優先でつないだ後、「Refresh」を押すと表示されます。多分。
それから、「Development Build」にもチェックを入れたほうがいい的なことも聞きますが、正直効果は良く分かってないです。
変更できたら「Switch Platform」をクリック。少々待つと、セッティング完了です。
確認
これで設定変更は完了です。お疲れ様ぁ!解散!……と行く前に、本当に変更できているか確認してみましょう。
なに、あとちょっとです。もう5分、気力を振り絞りましょう。いや、10分かな?15分かも……
今のままでは、VR機器で実行は出来ても、ヘッドセットの回転に合わせて視点が変更されません。
ですので、それ用の変更だけしちゃいます。
Hierarchy上で右クリックするとメニューが出てきますので「XR」→「XR Origin」とクリック。
「Main Camera」が消えて「XR Origin」が生成されていたら成功です。
それから、床や机の代りも置いておきましょう。
じゃないと、せっかく実行しても何もない空間に放り出されて、正常なんだかバグってるんだかわからなくなります。
Hierarchy上を右クリックして「3D Object」→「Cube」及び「Plane」を配置してみます。
この辺はぶっちゃけなんでもいいのですが、あえて言うなら、床代わりのPlaneはPosition0,0,0に、机代わりのCubeは0,0,0からちょっとずれた所に配置してみましょう。
配置すると、大体こんな感じになりました。
中央のカメラのマークがあるところが主人公の初期の立ち位置です。
さあいよいよ実験です。
画面上部のメニューバー「File」→「Build And Run」を押して、実行してみましょう。
なおこの時、私の環境だと Oculus Quest 2 をスリープモードにしたままだとビルドが終わった後にQuest側へのデータ転送が失敗してUnity君がウンともスンとも言わなくなりましたので注意してください。
なお、Unity強制終了からのPC再起動で直りました。
……いかがでしたか?うまく行きましたか?
うまく行きましたか、おめでとう、お疲れ様です。
え?うまく行かなかった?ご愁傷様です。冗談です。
私の方だとうまく行っているので、私の方で何か設定を忘れているか、あなたの環境独自の問題か、それとも単純に記述を見逃しているか、それ以外か……どれかは分かりませんが、もう少しのはずです。頑張って調べてみてください。
最後に
続きもそのうち上げていきたいですね。
それから、一応Vtuberやってますので、気が向いたらフォローしてやってください。
たまーにつぶやいて、ごく稀に配信してます。
Twitter:@Suzuran_Amano
Youtubeちゃんねる:スズランちゃんねる - YouTube
この記事が、あなたの開発の助けになることを祈っています。