UE4 で HoloLens 2 の各種機能をレベルに分けて実装したサンプル集です。
- Unreal Engine
- 4.27.0
- HoloLens 2
- バージョン:21H1
- OS ビルド:20348.1014
Windows Mixed Reality プラグインは無効にし、 Microsoft OpenXR Plugin を有効にしています
-
UE4HoloSample\ThirdParty\HoloLensWinrtDLL\HoloLensWinrtDLL.vcxproj を Visual Studio で開き、ARM64, Release でビルドし、dllを生成します
-
メニューの Edit > Project Settins... を選択し、Platforms > HoloLens の Packaging > Signing Certificate の Generate new ボタンを押下し、表示されたダイアログで None を選択して証明書を作成します
-
メニューの File > Package Project > HoloLens を選択して任意のフォルダにパッケージを作成します
パッケージ作成中に以下のような Char.h に関するエラーが出た場合は、
UATHelper: Packaging (HoloLens): C:\Program Files\Epic Games\UE_4.27\Engine\Source\Runtime\Core\Public\Misc/Char.h(1): error C4819: �t�@�C���́A���݂̃R�[�h �y�[�W (932) �ŕ\���ł��Ȃ�������܂�ł��܂��B�f�[�^�̑�����h�����߂ɁA�t�@�C���� Unicode �`���ŕۑ����Ă��������B
Char.h をVisual Studio で開き、以下のコメントを削除してください
/** * 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. */
-
デバイスポータルからパッケージをインストールします
MRアプリを作るための基本的な準備を済ませた状態のサンプル
- キューブを掴んで移動や拡大縮小ができる(UxtGenericManipulator)
アイトラッキングのサンプル
- 視線の方向に青いラインが描画される
実機でのみ動作します(以前はストリーミングで動作しましたが、現在 IsEyeTrackerConnected がストリーミングだと False になります)
ハンドトラッキングのサンプル
- 手の位置にハンドメッシュを描画する
Photo/Video (PV) Camera Capture のサンプル
- カメラで撮影した映像をキューブのマテリアルに反映する
以下の issue の通り不具合があるようですが、Project Settings > Platforms - Windows > Default RHI を DirectX 11 に設定することで動作します
PV CamCapture Displaying Blank Texture #20
QRコードトラッキングのサンプル
- QRコードの中心を追跡し点を描画する
SpatialAnchor のサンプル
実機でのみ動作します
- アンカーの保存・読み込みを行い、読み込んだ位置にキューブを表示する
空間オーディオのサンプル
- 球の位置からホワイトノイズが再生される
パッケージ作成時に Microsoft OpenXR Plugin プラグインと MicrosoftSpatialSound プラグインが競合してエラーがでるため、MicrosoftSpatialSoundを無効にしています。そのため現在動作しません
空間マッピングのサンプル
- 空間マッピングを描画する
音声入力のサンプル
- SetRed, SetGreenの音声を認識してキューブの色を変える
システムキーボードのサンプル
UE4.27, OpenXR において現状実機で動作確認できていません
ファイルダイアログを開き HoloLens の Document 配下にテキストを保存するサンプル
実機でのみ動作します