Unity+Windows Mixed Realityヘッドセット開発メモ

最終更新日:2018年02月04日

UnityでWindows Mixed Realityヘッドセット対応ソフトを開発する方法やTipsをまとめる予定の場所です。

更新履歴

(2018年2月4日)位置トラッキングのモードについての記述を「Unity標準のVR機能(UnityEngine.XR)メモ」に分離
(2018年1月2日)「不具合について」に「リニアカラーにするとヘッドセット内の表示が暗くなる」「Stationaryでシーンを切り替えるとRecenterがかかる」を追加
(2017年12月3日)開発環境についてアップデート
(2017年9月8日)記述をいろいろ修正
(2017年9月3日)とりあえずビルド通した


Windows Mixed Realityヘッドセットの接続について

Windows Mixed RealityヘッドセットはWindows 10 Fall Creators Updateからサポートされています。Fall Creators Update(システムのWindowsのバージョン表示が1709)になっていない場合はWindows Updateで更新してください。基本的には、何も考えずヘッドセットをPCに接続するだけで使用できるようになっています。

ヘッドセットはPCにHDMI端子とUSB 3.0端子で接続します(USB 2.0端子では認識されません)。ヘッドセットが認識されると、「デバイス マネージャー」の「Mixed Reality デバイス」のところに表示されます。ドライバのバージョンが、Windowsの「システム」で表示されるOSのビルド番号におおむね対応しています。上手く認識されない場合は、ドライバを更新したり、一度アンインストールしてみてください。

あわせて、GPUのドライバも新しいものにしたほうがいいでしょう。

Windows Mixed Realityのセットアップや使用上のトラブルについては以下のページにまとめられています。

プレビュー版のWindows 10を使用するには

もしWindows Mixed Realityの実験的なアップデートを試したい場合は、Windows Insider Programに登録して、プレビュー版のWindows 10を使用します。

Windows 10 Insider Preview BuildのMixed Reality関連のアップデート内容は以下のページにまとまっています。不具合や機能変更はこのページをチェックするとよさそうです。

Unityで対応ソフトを開発するには

Windowsの「設定>更新とセキュリティ>開発者向け>開発者向け機能を使う」で「開発者モード」を選択します。

UnityはUnity 2017.2以降でWindows Mixed Realityヘッドセットに対応しています。インストール時にWindows Store .NET Scripting Backendのチェックを入れます。

また、Visual Studio 2017をインストールする際に「ユニバーサル Windows プラットフォーム環境」をインストールします。Visual Studioをすでにインストールしている場合は、メニューの「ツール>ツールと機能」で追加インストールできます。

Windows Mixed Realityヘッドセットの開発・実行環境はまだ不安定です。以下の組み合わせが主に重要になります。

  • Windowsのバージョン・OSビルド番号
  • Unityのバージョン(パッチリリース、ベータ版プログラム含め)
  • Visual Studioのバージョン
  • ビルド時に使用するWindows 10 SDK(「ユニバーサル Windows プラットフォーム環境」に含まれる)のバージョン

実行やビルドが上手くいかない場合はこれらを確認してみてください。

Unityの新規プロジェクトを作成して以下のように設定を行います。

  • File > Build Settings…でPlatformをUniversal Windows Platformにする
  • Player Settings > Other SettingsでScripting Backendを.NETにする(IL2CPPは未対応のため)
  • Player Settings > XR SettingsでVirtual Reality Supportedをオンにする(SDKにWindows Mixed Realityが表示されていることを確認します)

再生ボタンを押すとエディタで再生され、ヘッドセットで覗くことができます。現状、再生が不安定なため、上手くいかない場合はWindowsを再起動したりしてみてください。

アプリケーションをビルドするには

アプリとしてビルドするには、Build Settings…で「Build And Run」ボタンを押して、適当なフォルダを作成して選択し(Visual Studioのソリューションが生成されます)、ビルドが終了したら、ヘッドセットをかぶって起動すれば成功です。以後、Mixed Realityポータルのスタートメニューからアプリを起動できるようになります。

アプリごとに特殊な機能を使用する場合は、Player Settings > Publishing SettingsのCapabilitiesを個別にチェックします。

位置トラッキングについて

Unity標準のVR機能(UnityEngine.XR)メモ」ページを参照してください。

なお、位置トラッキングのモードについて、Unity 2017.2.1より前はステーショナリーに対応していません。また、Windows Mixed Realityヘッドセットのデフォルトはルームスケールになっています。

また、おそらく不具合と思われるのですが、ステーショナリーモードについて、SceneManager.LoadLevelでシーンを切り替えるたびにRecenterがかかるので注意してください(Unity 2017.3.0f3で確認)。

モーションコントローラーについて

モーションコントローラーをペアリングするには

タスクバーのBluetoothアイコンから「Bluetoothデバイスを追加」で「Bluetooth またはその他のデバイスを追加する」をクリック、Bluetoohを選択します。

モーションコントローラーの電源ボタンを長押しして電源を入れ、電池ケースの蓋を開け、下のスイッチを押し続けるとペアリングが開始されます。「Motion controller - Left」「Motion controller - Right」が表示されたらクリックします。

モーションコントローラーの入力を取得するには

以下φ(..)メモメモ中

不具合について

リニアカラーにするとヘッドセット内の表示が暗くなる

(Unity 2017.3.0f3、2017.2.1f1で確認)UWPビルドでカラースペースをlinearにすると、ヘッドセット内のみ描画が暗くなる現象が起きています。2017.2.0f3では発生しないようです。

なお、Windows Mixed Reality for SteamVRでは本問題は発生しません。

Stationaryでシーンを切り替えるとRecenterがかかる

(Unity 2017.3.0f3、2017.2.1f1で確認)UWPビルドでトラッキングモードをStationaryにすると、シーンを切り替えるときに勝手にRecenterがかかるようです。HTC ViveやOculus Riftではかからないため、不具合と思われます。複数のシーンを使用するプロジェクトの移植では注意が必要です。

なお、Windows Mixed Reality for SteamVRでは本問題は発生しません。


参考リンク

書いた人:こりん(@k0rin
VR開発メモトップ