VS2017+Unity2017.2.0b8でWinMR開発
AcerのWindows Mixed Realityヘッドセットが届いたので、Unityから使えるようにセットアップした。 冗長なところがあるかもしれないけれど、環境や手順を記録しておく。
環境
- Unity: 2017.2.0b8
- Visual Studio Community 2017: Version 15.2 (26430.16)
- OS: Windows10 Home Insider Preview Version 1703 (16275.1000)
- Universal Windows Platform SDK (10.0.16267.0)
- PC本体:ドスパラ GALLERIA VR WEAR HG (今は売り切れだけど、持ち運びもできてスペックも良いので気に入ってる)
- mini Display Port - VGA変換アダプタ (miyoshi DPA-2KDS/WH) (メインディスプレイ用。これが無いと、ヘッドセットのセットアップがうまくいかなかった)
手順
OS設定
下記のMicrosoftの公式手順に従って Immersive Headset の開発環境を構築する。
ただし「Unity Mixed Reality Technical Preview」の項目と、下の方の「For DirectX development:」と「Update graphics drivers」はパスした。 Windows Insiderの設定は、「次のバージョンのWindows」と「ファースト」を選択した。
後は、公式通りアップデートして、Windowsの開発者モードを有効にした。
Visual Studio 2017を設定
Visual Studio 2017をインストールして起動し、ファイル→新規作成→プロジェクトを選ぶ。
「Visual Studio インストーラーを開く」をクリックする。
「ユニバーサルWindowsプラットフォーム開発」を選択する。 右下の「オプション」の「Windows 10 SDK」もチェックした。「VRエンジニア養成読本」のHololens入門の記事に書いてあったため、念のため入れた。 ここでは「C++によるデスクトップ開発」は選択しなかったけれど、私の場合は、後で結局入れることになった。
下の方にスクロールして、「Unityによるゲーム開発」もチェックする。
「続行」を押してしばし待つ。
Unityを設定
適当なプロジェクトを開く。私の場合は、ドットインストールのUnity入門を一通り終えて、BallGameを作るところまでやっていたので、これを流用した。
http://dotinstall.com/lessons/basic_unity
「File」→「Build Settings…」を開く。「Universal Windows Platform」を選択して「Switch Platform」を実行する。 以下の設定をする。
Target device: any device Build Type: D3D SDK: Latest Installed Build and Run on: Local Machine Development Build: (check)
「Player Settings」を開く。
「XR Settings」の「Virtual Reality Supported」をチェックする。
「Stereo Rendering Method」を「Single Pass Instanced (Preview)」にする。
IL2CPPをインストール
私の場合は、このときUnityの「Build Settings」画面に、「Currently selected scripting backend (IL2CPP) is not installed.」という警告が出て、ビルドができなかった。
後で気が付いたのだが、scripting backendは、「Player Settings」ボタンをクリックして、「Inspector」ビューの「Other Settings」タブの中で設定できるようで、ここに「IL2CPP」が指定されていたため、出ていたメッセージだったようだ。ここで「IL2CPP」の代わりに「.NET」を選べば「IL2CPP」は入れなくて済んだかもしれないが、私は「IL2CPP」を入れることを選んだ。ちなみにIL2CPPはC#をC++に変換する仕組みらしい。
Unityのインストーラを再度起動して、「Windows Store IL2CPP Scripting Backend」にチェックを入れて、しばし待つ。
Unityプロジェクトのビルド
ようやくビルドできるようになったので「Build」を押す。ビルドディレクトリが聞かれるので適当に「Build」などのディレクトリを作ってビルドする。
ビルドされたプロジェクトをVS2017で開く
「見つからない機能のインストール」ダイアログが開き、「C++ユニバーサルWindowsプラットフォームツール」と「C++によるデスクトップ開発」のインストールを促されるので、素直に従う。
ソリューション操作の再ターゲットをする
以下のようなエラーが出る。
C:\Users\sunas\Documents\BallGame\Build\BallGame\BallGame.vcxproj : warning : Visual Studio 2015 (v140) のビルド ツールが見つかりません。Visual Studio 2017 (v141) ビルド ツールを使用してビルドするには、[プロジェクト] メニューをクリックするかソリューションを右クリックし、[ソリューションの再ターゲット] を選択します。Visual Studio 2015 (v140) ビルド ツールを使用してビルドするには、Visual Studio 2015 (v140) をインストールします。 C:\Users\sunas\Documents\BallGame\Build\Il2CppOutputProject\Il2CppOutputProject.vcxproj : warning : Visual Studio 2015 (v140) のビルド ツールが見つかりません。Visual Studio 2015 (v140) ビルド ツールを使用し、Visual Studio 2015 (v140) をインストールしてビルドします。
エラーメッセージに従って「プロジェクト」メニューから「ソリューションの再ターゲット」を選択する。この後、Ctrl+F5を押してビルド・実行したらPCの全画面が白くなって操作不能になった。ctrl+alt+delを押すとかWinキーを押すなどして何とか復帰した。
再度Unityを開き、ビルドして、Unityの再生ボタンを押す。
Windows Immersive Headsetが反応してVRでアプリがプレビューできた。
参考
・MSの公式手順
・MSのMixed Reality開発情報ページ
https://developer.microsoft.com/en-us/windows/mixed-reality/development
・詳細な解説記事。こちらは、Scripting Backendに「.NET」を指定している。
・VRエンジニア開発読本
Hololens関連の記事を参考にした。