🔥

【HoloLens2】UnityエンジニアがUE4.26でHoloLens2に豆腐(Cube)ビルドする

2021/01/04に公開

完成系

今回はみんな大好き豆腐(Cube)のみのアプリをUE4.26からHoloLens2にビルドします。

cube

私はUnity歴こそ5年ですが、Unreal Engine(以下Unreal)は触り始めてまだ半年で、これから慣れていく段階です。
なので、この記事は「Unityはよく触っているが、Unrealはあまり触っていない人」が読みやすいように書く努力をしています。

以前こちらの記事を書きました。これからUnrealを触り始める人向けの記事です。
https://qiita.com/iwaken71/items/fe6c56b7ebf68e670cb8

書いていないこと

  • 必要なツールのインストール
  • オプションにHoloLens2を設定

参考: https://docs.microsoft.com/ja-jp/windows/mixed-reality/develop/unreal/tutorials/unreal-uxt-ch1

参考記事

https://docs.microsoft.com/ja-jp/windows/mixed-reality/develop/unreal/tutorials/unreal-uxt-ch2

開発環境

  • Windows10 Pro
  • Unreal Engine4.26 (以下Unreal)
  • Visual Studio2019
  • HoloLens2

手順目次

  • Unrealプロジェクトを作成
  • 必要なプラグインの有効化
  • 新しいレベルの作成
  • 豆腐(Cube)をレベルに配置
  • Mixed Reality用の設定
  • Package化の設定

Unrealプロジェクトを作成

  • [Epic Games]を起動し、[ライブラリ]から[4.26.XX]を選択し[起動]を選択
  • [Blank Project]を選択 [Next]を選択
  • [Black]を選択 [Next]を選択
  • Project Settingsの設定
    • [C++],[Scalable 3D or 2D],[Raytracing Disabled],[Mobile/Tablet],[No Starter Content]を選択
    • FolderとNameを指定し[Create Project]

[Epic Games]を起動し、[ライブラリ]から[4.26.XX]を選択し[起動]を選択

Project Settingsの設定

  • [C++],[Scalable 3D or 2D],[Raytracing Disabled],[Mobile/Tablet],[No Starter Content]を選択
  • FolderとNameを指定し[Create Project]

おまけ: エディタ言語を英語に設定する

この記事ではエディタ言語を英語に設定しております。まだ英語にしていない方はこちらの記事がおすすめです。

必要なプラグインの有効化

以下のPluginを有効化しUE4を再起動する (UE4ではPluginの有効化に再起動が必要)

  • HoloLens
  • Microsoft Windows Mixed Reality

※UE4のPlugin = UnityのPackage Manager的存在

プラグインの有効化の手順

  • [Edit]>[Plugins]>[All]を選択
  • 検索で「HoloLens」> Enabledにチェックを入れる
  • 検索で「Microsoft Windows Mixed Reality」> Enabledにチェックを入れる
  • [Restart Now]を選択し再起動する

検索で「HoloLens」> Enabledにチェックを入れる

新しいレベルの作成

※UE4のレベル = UnityでのScene的存在

  • Content直下に{Project Name}(本記事ではBuildTest)>[Maps]とNew Folderにてフォルダ生成する
  • 右クリックからLevelを選択する
  • LevelにMainという名前を付ける (名前は何でもよい)

Content/{Project Name}/Mapsというディレクトリ構造は私の好みなので、他の構成でも大丈夫です。
好みの理由はこちら

豆腐(Cube)をレベルに配置

  • Mainレベルをダブルクリック
  • [PlaceActors]ウィンドウを開く (もしくはすでに開いてある)
    • [Basic]>[Cube]をビューポートにドラッグ&ドロップ
    • [Lights]>[Directional Light]をビューポートにドラッグ&ドロップ
  • [World Outliner]と[Details]ウィンドウを開く (もしくはすでに開いてある)
    • Cubeを選択し、Transoformを以下の図のようにする
    • Mobilityを[Static]から[Movable]に設定する

[PlaceActors]ウィンドウを開く

※UnrealのPlaceActorsはUnityでヒエラルキーで右クリックして出てくる奴のような存在

もし、存在していない場合は
[Window]>[PlaceActors]にてチェックを入れる。

[Basic]>[Cube]をビューポートにドラッグ&ドロップ

※ UnrealのビューポートはUnityのSceneビュー的な存在

[Lights]>[Directional Light]をビューポートにドラッグ&ドロップ

[World Outliner]と[Details]ウィンドウを開く

※ UnrealのOutlinerビューはUnityのHierarchyビュー的存在
※ UnrealのDetailsビューはUnityのInspectorビュー的な存在

もし、存在していない場合は
[Window]>[World Outliner],[Details]>[Details1]にてチェックを入れる。

Cubeを選択し、Transoformを以下のように設定

対応表 Unreal Unity
位置 Location Position
座標系 Z-UP Y-UP
1Unitの単位 cm(センチメートル) m(メートル)

  • Location:
    • X:50
      • 前方50cmという意味
    • Y:0,Z:0
  • Scale, X,Y,Z
    • 0.2
      • 20cmサイズ
  • Mobility
    • Movable

※UnrealのMovableはUnityのNon-static的な概念 (ここでは深く触れない)

レベルを保存 (こまめに行う)

Mainレベルを右クリックして[Save]を押す。
もしくは、Save Allを押す (面倒くさいときはこちらで)

豆腐(Cube)の完成

Mixed Reality用の設定

  • ARSessionConfigの設定
  • MRPawnの設定
  • MRGameModeの設定

ARSessionConfigの設定

  • ARSessionConfigの新規作成
  • Start SessionとStop Sessionの実装

ARSessionConfigの新規作成

  • Content/{ProjectName}/Assetsディレクトリを新規作成
  • 右クリックで[Miscellaneous]>[Data Asset]を選択
  • ARSessionConfigを選択し[Select]
  • 名前を「ARSessionConfig」とし、保存(Ctrl+S)

右クリックで[Miscellaneous]>[Data Asset]を選択

ARSessionConfigを選択し[Select]

Start SessionとStop Sessionの実装

ARSessionConfigのStartとStopをどこかに実装する必要があります。今回はチュートリアル通りレベルブループリントとしましょう。

レベルプループリントは、レベルに紐づいたブループリントです。

  • [BluePrints]>[Open Level BluePrint]を選択し、レベルブループリントを開く
  • [Event Graph]を開く
  • 下図のようにBluePrintを作る

[BluePrints]>[Open Level BluePrint]を選択し、レベルブループリントを開く

[Event Graph]を開く,下図のようにBluePrintを作る。
検索ワード
[Event BeginPlay],[Start AR Session],[ARSessionConfig],[Event End Play],[Stop AR Session]

MRPawnの設定

Unrealでは、Pawnはゲーム内のプレイヤーを表します。今回の場合は HoloLens2になります。

  • MRPawnの生成
    • Content/{ProjectName}/Assetsにて、Content Browserを右クリック,[BluePrint]を選択
    • All Classesをクリック
    • 検索窓に「defaultPawn」と検索
    • [DefaultPawn]をクリック
    • [Select]を選択
    • 名前を「MRPawn」とする
  • MRPawnの設定を変更
    • 「MRPawn」をダブルクリックで開く
    • [Add Component]で[Camera]を選択
    • Cameraという名前を付けて、CollisionComponentの子供にあることを確認
    • CollisionComponentを選択し、Detailsウィンドウにて[Collision]>[Collision Presets]>[NoCollision]を選択
    • MeshComponentを選択し、同様に[NoCollision]を選択
    • MRPawnを[Compile]して[Save]する

Content/{ProjectName}/Assetsにて、Content Browserを右クリック,[BluePrint]を選択

All Classesをクリック,検索窓に「defaultPawn」と検索,[DefaultPawn]をクリック,[Select]を選択

[Add Component]で[Camera]を選択

CollisionComponentを選択し、Detailsウィンドウにて[Collision]>[Collision Presets]>[NoCollision]を選択

MeshComponentを選択し、同様に[NoCollision]を選択

MRPawnを[Compile]して[Save]する

MRGameModeの設定

  • MRGameModeの作成
    • Content Browserで右クリック>[BluePrint]>[Game Mode Base]を選択
    • 「MRGameMode」と名前を付ける
    • [MRGameMode]をダブルクリック
    • Detailsウィンドウの[Classes]>[Default Pawn Class]を[MRPawn]に設定
    • [Compile]>[Save]を選択
  • MRGameModeをプロジェクトに設定
    • [Edit]>[Project Settings]を選択
    • [Maps & Modes]を選択
    • [Default GameMode]>[Default GameMode]を[MRGameMode]に設定
    • [Default Maps]の2つのMap設定を[Main(Cubeが置いてあるMap)]
      に設定

「MRGameMode」と名前を付ける

Detailsウィンドウの[Classes]>[Default Pawn Class]を[MRPawn]に設定

MRGameModeをプロジェクトに設定

Package化の設定

  • Project Settingsの編集
  • Package
  • Device PortalからUSBでHoloLensにビルド

Project Settingsの編集

  • [Edit]>[Project Setting]を開く
  • [Description]を選択
    • [About]>[Project Name]にて{Project Name}を入力。
      • 今回は「CubeApp」とする
    • [Publisher]>[Company Name]にて{会社名}を入力。
      • 今回は「Iwaken」とする
    • [Publisher]>[Company Distinguished Name]にて「CN={CompanyName}」を入力する
      • 今回は「CN=Iwaken」とする
    • [Settings]>[Start in VR]にチェックを入れる
  • [Platforms]>[HoloLens]を選択
    • [HoloLens]>[Build for Hololens Device]にチェックが入っているのを確認
    • [Packaguing]>[Signing Certificate]から[Generate new]を選択
    • [Create Private Key Password]は[None]を選択
      • 今回はテスト目的のため[None]を入力

[Description]の記入

[Platforms]>[HoloLens]の設定

[Create Private Key Password]は[None]を選択

Package

※UnrealのPackageはUnityのBuildです

  • [File]>[Package Project]>[HoloLens]をクリック
    • [HoloLens is not listed...]とでても[Continue]を選択
  • Packageを保存したいフォルダを指定して選択

このように展開されます

もし初めてのPackageで失敗した場合はこの記事を1つ参考にしてみてください (初回で高確率でつまずくところです)

https://zenn.dev/iwaken71/articles/e1c2d5b3cd94df

Device PortalからUSBでHoloLensにビルド

WifiとUSBでビルドする方法がありますが、今回はUSBでビルドを行います。

  • HoloLens2とPCをUSB接続
  • Device Portalにアクセス
    • 初めてデバイスポータルにアクセスする場合はこちら
  • [Views]>[Apps]を選択
  • Local Storageにてファイルを選択
    • .appxbundleファイルを選択
  • (AppのInstallが初回の場合)Allow me to select framework packagesにチェックを入れる
    • [Next]
    • Choose any necessary dependenciesにて、Package時に生成された.appxファイルを選択する
  • [Insall]

Device Portal

豆腐(Cube)を表示するアプリの出来上がり

cube

Discussion