なんかいろいろしてみます

Jun 2, 2019 - 2 minute read - HoloLens

UnrealEngine4でHoloLens 2サンプルプロジェクトを動かしてみる

UnrealEngineは次期バージョンからHoloLens 2のサポートを行うようになります. その次期エンジンとサンプルプロジェクトが公開されたのでエミュレータ―上で実行するところまでを行います.

6/11 追記 UnrealEngineの dev-vr-hololens2 が正常に利用できるようになったので追記しました.

HoloLens 2とUnrealEngine4の関係

Windows開発環境構築

  • 実行環境

    • Windows 10 Pro Insider Preview
    • VisualStudio2017
    • Windows Insider Preview SDK
  • Windows 10 Pro Insider Previewはプロジェクトパッケージ時のコマンドを実行するために必要なようです.

  • 開発環境に関しては以下のUnrealEngineのエンジンのGitHubページに説明があります.(要ログイン)

HoloLens 2 Emulator導入

UnrealEngineのエンジンビルド

  • HoloLens 2をサポートしているUnrealEngineは公式からダウンロードできるランチャーからではなく,GitHubのリポジトリを利用します.
  • UnrealEngineのリポジトリはPrivateとなっているため,登録が必要になります.
  • UnrealEngineリポジトリにアクセスできたらプロジェクトをCloneまたはzipファイルをダウンロードします.

  • Branchは dev-vr を選択し,エンジンビルドを行います.(問題が解消したので追記しました.6/11)

  • エンジンのプロジェクトは非常に大きいため,保存容量が100GB以上でフォルダ階層が浅い部分(フォルダパスが短い位置)に展開してください.

  • 6/11追記 dev-vr-hololens2ブランチで正常にダウンロード,ビルド実行が行えるようになりました.こちらを利用してください.

エンジンビルド前修正

  • UnrealEngineのエンジンビルドは英語環境を想定して作られているため,日本語環境のVisualStudioの場合文字コードに関するエラーが発生する場合があります.
  • (保存フォルダ)\Engine\Source\Runtime\Core\Public\Misc\Char.hのコードの以下のコメントを削除しエラーを回避しておきます.
 1 2 3 4 5 6 7 8 910111213141516171819
 	static bool IsUnderscore(CharType Char)
	{
		return Char == LITERAL(CharType, '_');
	}

// ここから
	/**
	* Avoid sign extension problems with signed characters smaller than int
	*
	* E.g. 'Ö' - 'A' is negative since the char 'Ö' (0xD6) is negative and gets
	* sign-extended to the 32-bit int 0xFFFFFFD6 before subtraction happens.
	*
	* Mainly needed for subtraction and addition.
	*/
// ここまで削除
	static uint32 ToUnsigned(CharType Char)
	{
		return (typename TUnsignedIntType<sizeof(CharType)>::Type)Char;
	}

エンジンビルド実行

  • readmeに合わせてエンジンビルドを行います.

    1. Setup.batを実行して必要なデータをダウンロード
    2. GenerateProjectFiles.batを実行してVisualStudio2017でエンジンビルドを行うプロジェクトを生成
    3. UE4.slnをVisualStudioで開きソリューションエクスプローラーのUE4を右クリックしてビルドを実行
    4. ソリューションプロパティを開きシングルスタートアッププロジェクトでUE4を選択して実行
  • 成功するとバージョン4.23.0のUnrealEngineが起動します.

    • リポジトリのClone先のパスが長いとビルド時にエラーが出る可能性があるので,できるだけパスの短い場所にCloneすることをお勧めします.

HoloLens 2 Sampleの実行

サンプルの追加設定

  • 展開後にWindowsMixdeReality関連のエラーが出るので,プラグインのウィンドウのVirtual Reality項目からMicrosoft Windows Mixed Realityのチェックを入れてUnrealEngineを再起動します.

  • 再起動後,HoloLens 2で実行できるパッケージ化の処理を行います.

HoloLens 2 Emulator設定

  • HoloLens 2実機用パッケージでは動作確認できないため,HoloLens 2 Emulator上でも実行できるように設定変更も行います.
  • プロジェクト設定を開き以下の項目を設定します.

    • プラットフォームの項目からHoloLensを選択
    • HoloLens項目からBuild for HoloLens Emulationにチェックを追加
  • 次にHoloLens用のパッケージ化のために証明書の設定を行います.

    • Packaging項目からLocalized ResourcesSigning CertificateからGenerate newボタンをクリックして証明書を生成します.
    • この時証明書が正常に生成されない場合には以下のページを参考にコマンドライン上で証明書を作成します.
    • UE4 HoloLens上でUE4のUWPアプリを実行するまで
    • 生成された証明書の以下の画像中を情報をプロジェクト項目の説明PublisherCompany NameCompany Distinguished Nameにコピーします.

パッケージ化

  • ファイルのプロジェクトのパッケージ化からHoloLensを選択しパッケージ化を行います.
  • パッケージ化が成功すれば以下の画像のようなパッケージファイルとフレームワークパッケージが生成されます.

Emulatorで実行

  • 動作可能なHololens 2 Emulatorを実行し,Device PortalのAppからアプリパッケージをインストールします.

  • Emulatorの実行環境はx64環境のため,インストールするパッケージファイルは以下になります.

    • HoloLens2Example.appxbundle
    • Microsoft.VCLibs.x64.14.00.appx
  • 以下がエミュレータ―での実行動画になります.

Tips

  • Emulator用にはx64でビルドされているためHoloLens 1では実行できない
  • \Engine\Binaries\ThirdParty\Windows\HoloLens\ARM64にHoloLens 2用のQRCodesTrackerPlugin.dllが配置されている.
  • 自作のプロジェクトだとDevelopment,Shippingビルド共にエラーで実行できなかった.(サンプルプロジェクトとの差異を調査中)
  • サンプルのエミュレータ実行時にコンテンツの操作ができない

まとめ

  • UnrealEngine4でHoloLens 2対応の確認とサンプルプロジェクトの実行ができた.
  • HoloLens 2が欲しい
  • x86でのビルドさせてほしい(HoloLens 1でも動かしたい)
  • 正常に実行できない(動いた6/11)
  • dev-vr-hololens2ブランチが正常にダウンロードできれば解決するかも(解決した6/11)
  • 早くHoloLens 2の実機が欲しい