はじめに
前回の記事の続き。
[Unity] #13 : VR 実験で踏み抜いた Prefab 地獄と Git 復旧失敗の記録
Unity(URP)で SimpleWater の最小実装を進める過程で、XR/Project Settings の変更を引き金に PlayerArmature(VRM)と Prefab/Scene のリンクが破綻。Overrides → Revert All …
https://humanxai.info/posts/unity-13-prefab-overrides-git-rollback-failure-simplewater/翌朝、再度Unityを立ち上げ、起動するとパッケージマネージャーで大量のエラー…。
昨日、大元のUnityの設定やpackageなどを消したせいかと思い、レジストリをすべて削除したり、環境変数を作成したり、.upmconfig.tomlを作成したりとあらゆる手度つくしましたが解決せず。
何をやっても解決しないので再インストール、それでも解決せず…。
どうも、Unityのサーバで最新バージョンで署名データが切れる不具合が出てる?ようで、どうしようもなし。
それを踏まえて、AIの提案で 「安定している 2022.03を使ってはどうか?」 という意見を聞いて、Uinityエディターをダウングレード。
その結果、嘘のようにpackage関係のエラーは消え、VRの実装テストまであっという間に終わりました。
最新の方がいいと思い、6000を使い続けてましたが、今後は安定してる2022.03の方を使うかもしれません。
とりあえず、駆け足で実装した、VR情報をメモとしてまとめてみます。
5時間のデバッグ、数分の実装
日曜日の午前中、私は「最新」という名の地雷原にいました。Unity 6(6000シリーズ)で起きた、本社側の証明書期限切れに伴う署名エラー。OSの深部まで潜り、環境変数やレジストリを書き換えても解決しない絶望。
しかし、答えはシンプルでした。「枯れた技術(安定版)」に頼ること。
Unity 2022.3.62f3 LTSに切り替えた瞬間、あれほど私を苦しめた赤い「!」は消え、おとなしい羊のようなエディタが戻ってきました。「当たり前のことが、嬉しい」。そんな宇宙の始まりのような、最小構成からのVRセットアップ手順を記録します。
1. 安定の土台:Unity 2022.3 LTS の選択
「最新こそが最強である」——開発者なら誰もが陥るこの信仰が、今回最大の罠でした。
私が日曜日の午前中の5時間を費やして学んだのは、「動かない最新」よりも「確実に動くクラシック」の方が、創造性を100倍加速させるという事実です。
Unity 6(6000シリーズ)という地雷原
当初、私はリリースされたばかりの Unity 6 (6000.3.5f1) を選択しました。 しかし、そこで待っていたのは、コードを書く以前の「環境の崩壊」でした。
- 不可避の署名エラー (UUM-133005): Unity 6から導入された厳格なパッケージ検証システムが、Unity本社の期限切れ証明書を「不正」と誤認。
- 絶望のPackage Manager: 何をしても赤い「!」が消えず、VR開発に必須のプラグインすらインストールできない状態に。
- 5時間の徒労: レジストリを削り、環境変数を操り、OSの深部まで潜りましたが、本社側のミスという「ユーザーにはどうしようもない壁」に阻まれました。
2022.3 LTS という「安住の地」への帰還
死闘の末、 Unity 2022.3.62f3 LTS へのダウングレードを決断。
- 枯れた技術の強み: 2022.3は数え切れないほどのアップデートを経て、バグが徹底的に取り除かれた「完成形」です。
- 過剰な検証の不在: 最新版のような「自爆気味な検証システム」に依存していないため、今回の世界同時多発エラーの呪いを受けずに済みます。
- VR開発のデファクトスタンダード: Meta Quest 2向けのプラグインやアセットの多くは、この2022.3で最も安定して動作するように設計されています。
「最新」を捨てる勇気が、世界を創る
インストールが完了し、エディタを開いた瞬間。 Package Manager に並ぶ「平和なリスト」を見た時、ようやく私の日曜日は始まりました。
もしあなたが「原因不明のパッケージエラー」で貴重な休日を溶かしているなら、迷わず 2022.3.62f3 を選んでください。 最新版の派手なロゴはありませんが、あなたの意図を裏切らない「実直な相棒」になってくれるはずです。
2. XR Plugin Management の導入:VRの「心臓」を動かす
プロジェクトが立ち上がったら、まず最初に行うべき儀式があります。それは、Unityという汎用エンジンに「VRという魂」を吹き込むためのゲートウェイ、XR Plugin Management の導入です。
なぜこれが「心臓」なのか
Unity単体では、PCのモニターに映像を映すことしかできません。VRゴーグルのレンズ越しに広がる3D空間、そして頭の動きに追従する視界。これらを実現するための低レイヤーな制御を一手に引き受けるのが、このプラグインです。
午前中の Unity 6 環境では、この「心臓」をインストールしようとした瞬間に**「署名が正しくない」という致命的な拒絶反応**(エラー)が発生し、一歩も前に進めませんでした。しかし、安定版の 2022.3 では、驚くほど静かに、そして確実に応えてくれます。
導入の手順
- Project Settings を開く:
メニューの
Edit>Project Settingsを選択します。 - XR Plugin Management を選択:
左側のメニューリストの一番下にひっそりと佇む
XR Plugin Managementをクリックします。 - インストールの実行:
画面中央に表示される
Install XR Plugin Managementボタンをクリックしてください。
ボタンを押すと、数秒から数十秒のロードが走ります。 Unity 6 であれば、ここでコンソールに真っ赤な文字が並び、「パッケージが検証できませんでした」という冷たい宣告が下されていました。
ですが、2022.3 では違います。ロードが終われば、そこにはエラー一つない、真っ新なチェックボックスのリストが現れます。
3. 業界標準「OpenXR」のセットアップ:デバイスの垣根を超える
心臓が動き出したら、次は「どの言語でデバイスと会話するか」を決めます。かつては各メーカー独自のプラグイン(Oculus用、SteamVR用など)が乱立していましたが、現在はOpenXRという共通言語を選択するのが世界標準です。
「Oculus」ではなく「OpenXR」を選ぶ理由
以前のプロジェクトでは「Oculus」プラグインを選んでいた方も多いかもしれません。しかし、最新の Unity 2022.3 環境では OpenXR が推奨されています。これにより、特定のデバイスに縛られず、Meta Quest 2 でも Valve Index でも、同じコードで動く「ユニバーサルな VR 空間」の土台が手に入ります。
セットアップの手順:警告を「Fix」する快感
- OpenXR にチェックを入れる:
XR Plug-in Management の画面で、PCマークのタブにある OpenXR にチェックを入れます。
-
黄色い警告(Warning)への対処: チェックを入れると、OpenXR の横に黄色い警告アイコンが表示されます。これはエラー(赤)ではなく、「設定が足りないよ」という Unity からの親切なアドバイスです。
-
Project Validation の魔法: 左メニューの
Project Validationを開きます。そこには「Input System を有効にする必要がある」といった項目が並んでいますが、心配はいりません。
Fix Allボタンを迷わずクリックしてください。- Unity が自動で必要なパッケージを入れ、再起動の確認ダイアログを出してくれます。この「勝手に直してくれる感」は、午前中の手動デバッグ地獄とは正反対の快適さです。
最後の仕上げ:手に「形」を与える
すべてを Fix しても、最後の一つだけ警告が残ります。それは「どのコントローラーを使うか決まっていない」という警告です。
- 左メニューの
OpenXR設定画面を開きます。 Enabled Interaction Profilesという空のリストの右下にある+ボタンを押します。Oculus Touch Controller Profileを選択します。
これで、Unity は「あ、Meta Quest のあのコントローラーを使うんだな」と完全に理解します。
忌まわしき「赤」から、希望の「なし」へ
設定が終わると、あんなに騒がしかった Project Validation の画面からすべてのアイコンが消え、静寂が訪れます。
「エラーのない、平和な設定画面」。
4. 身体と魂:XR Interaction Toolkit ― 相互作用の自動化
OpenXRで「通信の規格」が決まったら、次はその規格をどう「体験」に変えるかを定義します。ここで登場するのが、XR Interaction Toolkit (XRI) です。これが、VR空間におけるあなたの「身体」と、物体に触れるための「知能」を司ります。
パッケージのインストール
まずは、Unity公式が提供しているこの強力なツールキットを導入します。
- Package Manager を開く:
メニューの
Window>Package Managerを開きます。 - Unity Registry から検索:
Packages の項目を
Unity Registryに切り替え、検索窓に「interaction」と入力します。 - インストール:
最新の安定版(今回は 2.6.5)を選択し、
Installボタンをクリックします。
の画面のように、右側に説明が表示されれば準備完了です。
「Starter Assets」:ボタン設定の地獄を回避する
XRIをインストールしただけでは、まだ「身体」は空っぽです。本来なら、「コントローラーのAボタンを押した時に何が起きるか」という定義(Input Actions)を一つずつ手動で行わなければなりませんが、これこそがVR開発初心者が挫折する最大の「地雷」です。
これを一瞬で解決するのが、Starter Assets です。
- Samples タブを開く:
Package Manager の XRI の説明画面にある
Samplesタブをクリックします。 - Starter Assets をインポート:
一番上にある
Starter Assetsの横のImportボタンを押します。
のボタンをクリックすると、Projectフォルダ内に標準的なVR操作の設定ファイルがどっさりと展開されます。
なぜこれが「魂」なのか
この Starter Assets を入れることで、テレポート移動、物をつかむ、視点回転といった「VRで当たり前にできること」の設定がすべて手に入ります。
午前中に5時間をかけて環境と戦った私にとって、この「インポートボタン一つで設定が完了する」という事実は、まさに救済でした。もしこれを手動でやろうとすれば、さらに数時間が「ボタン名のタイピング」だけで消えていたことでしょう。
これで、「身体」と、それを動かすための「魂(初期設定)」が揃いました。次は、いよいよこれらを組み合わせて、ヒエラルキー上にあなたの分身を召喚します。
5. シーンの構築:XR Origin の召喚 ― 仮想世界への「肉体」の受肉
土台と魂(設定)が揃ったら、いよいよこの宇宙に「あなた自身」を召喚する番です。UnityにおけるVRの身体、それが XR Origin です。
ステップ1:旧世界のカメラを破棄する
Hierarchy(ヒエラルキー)に最初から存在する Main Camera は、モニターという「平面」を映すための古い時代の遺物です。VRの視点と衝突して不具合の原因になるため、右クリックで Delete して、潔く別れを告げましょう。
ステップ2:XR Origin (VR) の召喚
空になったヒエラルキーで右クリックし、 **XR > XR Origin (VR)** を選択します。
- なぜ「(VR)」なのか?: Unity 2022.3(XRI 2.6.5)では、これが最新の Action-based(ボタン設定を自由に変えられる方式)を内包した「全部入りお買い得パック」の名称です。
- 自動生成される知能: これを作成すると、身体(XR Origin)だけでなく、VR空間のルールを司る
XR Interaction Managerも自動的に配置されます。
ステップ3:左右の手に「魂」を吹き込む(プリセット適用)
召喚されたばかりの XR Origin は、まだ「腕」があるだけで「指の動かし方」を知りません。ここで、先ほどインポートした Starter Assets を紐付けます。
- Hierarchy で
LeftHand Controllerを選択します。 - Inspector(インスペクター)の
XR Controller (Action-based)コンポーネントのタイトル右端にある、「二本の横線(プリセット)」アイコンをクリックします。 - リストから
XRI Default Leftを選んでダブルクリックします。 RightHand Controllerも同様に、XRI Default Rightを適用します。
これで、あなたの左右の手は Meta Quest 2 のコントローラー入力を正しく受け取れるようになりました。インスペクターにズラリと並んだ「Action」の項目が埋まっていく様子は、まさにロボットにOSをインストールするような快感があります。
午前中の Unity 6 環境では、この「Action」の一つ一つが署名エラーで真っ赤に染まっていました。しかし、今の 2022.3 環境では、すべてが青く(正常に)輝いています。
6.(Cube)を作る ― 実体と物理法則の付与
身体(XR Origin)が完成し、周囲を見渡せるようになったら、最後はこの世界に「触れられる実体」を誕生させます。ターゲットは、開発者の永遠の友、ただの Cube です。
今のままでは、Cubeはただそこにあるだけの「幽霊」のような存在ですが、コンポーネントを一つ足すだけで、あなたの手で掴み、投げられる「物理的な実体」へと進化します。
ステップ1:掴める機能の追加
- Hierarchy で、最初に配置した
Cubeを選択します。 - Inspector の一番下にある
Add Componentボタンを押し、検索窓に「grab」と入力します。 - 表示された候補から
XR Grab Interactableを選択して追加してください。
ステップ2:自動で宿る「物理法則」
ここが Unity の賢いところです。XR Grab Interactable を追加すると、Unity は「掴めるなら、当然重力も必要だよね」と判断し、自動的に Rigidbody(剛体) コンポーネントを一緒に付けてくれます。
- Rigidbody: これにより、Cubeに「質量」と「重力」が備わります。投げれば放物線を描いて落ち、地面(Plane)に当たれば止まる。当たり前の物理現象が、ここでようやく成立します。
- XR Grab Interactable: これがあなたの手(コントローラー)とCubeの橋渡し役になります。
動作確認
Air Link(無線)でPCと繋ぎ、再生ボタンを押す。 視界に広がるのは、白いPlaneと、一つのCube。
おわりに
Quest2 + Air Link(無線)でデスクトップを起動後、プレイボタンを押すことで、VRアプリがたちががります。
ただ、移動が出来ないです。
6000で作成したサンドボックスを、2022にどう移植するかというのが今後の課題ですね…。
果たしてできるのか。
💬 コメント