【HoloLens2】UnityエンジニアがUE4.26でHoloLens2に豆腐(Cube)ビルドする
完成系
今回はみんな大好き豆腐(Cube)のみのアプリをUE4.26からHoloLens2にビルドします。
私はUnity歴こそ5年ですが、Unreal Engine(以下Unreal)は触り始めてまだ半年で、これから慣れていく段階です。
なので、この記事は「Unityはよく触っているが、Unrealはあまり触っていない人」が読みやすいように書く努力をしています。
以前こちらの記事を書きました。これからUnrealを触り始める人向けの記事です。
書いていないこと
- 必要なツールのインストール
- オプションにHoloLens2を設定
参考: https://docs.microsoft.com/ja-jp/windows/mixed-reality/develop/unreal/tutorials/unreal-uxt-ch1
参考記事
開発環境
- 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
- X:50
- Scale, X,Y,Z
- 0.2
- 20cmサイズ
- 0.2
- 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]にチェックを入れる
- [About]>[Project Name]にて{Project Name}を入力。
- [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つ参考にしてみてください (初回で高確率でつまずくところです)
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]
Discussion