実は少し前からMicrosoftのHoloLensをお借りして色々と試していました。
このタイミングでこんなものが届いてしまった… pic.twitter.com/JZBRkfbtzT
— alwei (@aizen76) 2017年3月2日
で、本来HoloLensアプリの開発にはUnityを利用するか、DirectXネイティブなアプリ開発するしかありません。ほとんどの方はUnityを選択するはずですが、私個人としてはどうしてもUE4で動かしたいわけで…
UE4は現在HoloLensには未対応です。それどころか、MicrosoftのWindowsソフトウェアプラットフォームである、UWP(Universal Windows Platform)という独自形式にも未対応です。UWPアプリが実行できない限り、決してHoloLensのアプリを作ることはできません。
で、今回は結論から言えばUE4のアプリをHoloLens上で実行できたので、それまでの方法についての解説です。非常に技術的な部分もあり、初心者が簡単に手を出せるというものでもありませんので、そこはご注意ください。
では早速解説していきます。
UWPアプリをビルド準備
まずはUE4のUWPアプリをビルドするためにはカスタマイズされたエンジンが必要となります。
https://github.com/MICROSOFT-XBOX-ATG/MICROSOFT_UWP_UNREAL
上記のURLへアクセスするにはUE4アカウントとGitHubアカウントの紐付けが必要です。紐付けされていない状態でアクセスするとnot foundとなり、ページそのものへアクセスできません。最低でもエンジンビルドができないとこれ以上先に進むのは厳しいので注意してください。
このGitHubのリポジトリーはMicrosoft自身がフォークした独自のUE4となっており、UWPアプリをビルドするために様々な拡張が盛り込まれています。Epic Games自身はUWPには対応しませんが、MicrosoftはUWPをもっと使ってもらいたいということなのか、公式が非公式に対応しています。
Microsoftは最終的にこのフォークしたカスタムエンジンを統合したいようですが、現状ではどのようになるのかまだわかりません。
上記GitHubからカスタムUE4をクローンしてしてきたら、次はVisual Studioの方に少し注意が必要です。Visual Studio(ここでは2015 Update 3を使用)のインストーラーを起動して確認をします。
必ず"VIsual C++"と"ユニバーサルWindows開発ツール"のふたつにチェックが入った状態でインストールされていることを確認します。特に後者は必要なければ入っていないことも多いので注意してください。これがなければまずビルドが不可能です。
あとは普通にエンジンビルドを行うだけなので、正規の手順でビルドしてください。
2017年3月10日現在のソースコードを利用すればビルドエラーもなく、無事成功するはずです。
UWPアプリを作成する
ビルドしたエンジンを使ってプロジェクトを起動しましょう。新規プロジェクトで適当なブループリントプロジェクトを作成します。
ビルドしたエンジンにはUWP系のパッケージングが追加されていることがわかります。UWPアプリを作成するにはこのUWPのパッケージングを選択します。
ここでひとつ注意しておかねばならないのが、HoloLensとしてインストールするアプリはx86、つまり32bitアプリとしてビルド&パッケージングの必要があります。64bitでビルドした場合にはHoloLens上にインストールすることができませんので、注意してください。
特にパッケージングに問題なければそのまま成功してパッケージングできるはずです。
ビルドしたパッケージングファイルの中に".appx"というファイルがありますが、これがUWPアプリでのexeファイルにあたるものです。実行するとインストールするか聞かれます。
ただし、ここでインストールしようとしてもなぜかうまくいきません。
ではここで次はUWPアプリを実行するために必要な証明書を作成しましょう。
証明書を作成して、UWPアプリとして使えるようにする
UWPアプリはセキュリティも強化されて、実行権限がない状態ではインストールすらできません。たとえデバッグ用途でもそのままでは実行できないので、証明書を自前で作成する必要があります。通常のUWPアプリであれば、証明書はVisual Studioが作成してくれますが、UE4で作成したUWPアプリではそんな便利なものを作成してくれません。なのでUWPの証明書の作成ツールを利用します。ツールは以下の場所にあります。
x86ではなくx64のフォルダーにも同様のツールがありますが、おそらくどちらを使っても大丈夫です。ここでふたつのコマンドラインツールを利用します。"makecert"と"pvk2pfx"というツールです。
コマンドラインからの起動となるので、コマンドプロンプトを起動します。環境変数などが既に専用に設定されている"開発者コマンドプロント for VS2015"というものがあるので、OS検索などから起動します。これでコマンドラインツールへのパスが通っているので簡単に使うことが可能です。
そして以下のようにコマンドを入力します。
cd %USERPROFILE%\Desktop
makecert MyCert.cer -r -n "CN=No Publisher, O=No Publisher" -$ individual -sv MyCert.pvk -pe -cy end
pvk2pfx -pvk MyCert.pvk -spc MyCert.cer -pfx MyCert.pfx
1行目のコマンドでカレントディレクトリをログインユーザーのデスクトップに移動します。ファイルがデスクトップに生成されます。
2行目のコマンドは"makecert"を使って証明書を作成します。ここで作成される".cer"と".pvk"ファイルが証明書となります。
3行目のコマンドの"pvk2pfx"を使い、証明書を"pfx"という最終的なセキュリティつきの証明書ファイルが出来上がります。
"makecert"を使用するとパスワードを聞かれますが、テスト用のものなので今回はパスワードなしでOKです。"makecert"で特に重要なのは、"CN=No Publisher, O=No Publisher"という部分です。ここの文字列は証明書の発行者を指します。パッケージングされると、同フォルダーに"AppxManifest.xml"というファイルがありますが、このファイル内に発行者としての情報が含まれています。
この情報を変えると証明書内の情報も変える必要があるので注意してください。今回指定した名前はUE4がデフォルトで生成する指定のものを使っています。
"pvk2pfx"でpfxファイルを生成します。これで証明書の作成が完了しました。が、これだけではまだ不完全で、証明書のインポートを行わないとそのPC上で証明書が利用できません。生成されたpfxファイルをダブルクリックして開いてください。
上記画像のように進めていくと、証明書のインポートが完了します。これでローカルPC内ではこの証明書を使ってUWPアプリを実行することが可能です。
あとはこの証明書をUE4内で登録しましょう。
プロジェクト設定を開き、UWPのカテゴリーを探します。ここで"Signing Certificate"というところの"..."ボタンを押して、作成したpfxファイルを選択してください。これで証明書がUE4内で登録されます。あとはこの状態で再度パッケージングすればOKです。
パッケージング後に再度appxファイルを実行すれば、上手くいくとインストールが完了するはずです。これで無事UE4のUWPアプリの作成が完了しました。
HoloLensにインストールする
ここまでくればHoloLensにインストールすること自体は意外と難しくありません。ここではHoloLensのセットアップは省きますが、HoloLensを開発者用に登録し、PCとペアリングしておきます。
これでPCと通信できる状態にしておきます。HoloLensはUSBケーブルを繋がなくてもリアルタイムにPCと通信できるので、PC上にあるUWPアプリをそのままインストールすることが可能です。
ペアリング後にDevice Portalを開きます。Device Portal上から直接UWPアプリをインストールします。
"Apps"メニューを開くと、インストールされているアプリの一覧が確認できます。
"ファイルを選択"から、appxファイルを選択し、"Go"ボタンでインストールが開始されます。インストールが完了したら、"Installed apps"のメニューからインストールしたアプリを選択し、"Start"を押すとアプリが自動的に実行されます。
ここまで出来れば無事にHoloLens上でUE4のUWPアプリが実行できるはずです!!
やったー!UE4のUWPアプリがHoloLens上で動いた~!長い戦いだった!!これで色々作れる!! #UE4 #HoloLens pic.twitter.com/sl04YIeVAY
— alwei (@aizen76) 2017年3月7日
非常に面倒な手順が多かったですが、なんとかHoloLens上でUE4のアプリを無事実行できました。
課題
HoloLens上でUE4のアプリを実行できたのですが、現状ではまだまだ課題が多いです。
1.実行しているのは2Dアプリなので、平面的なコンテンツしか作れない
2.視線入力、エアタップ、ジェスチャーやボイスなどの入力がとれない
3.現実的なデバッグ環境がない
1はただのUWPアプリなので、3DのHolographicアプリを作成することができません。これは大きく拡張が必要となり、まだまだ難しいことが多いです。
2はHoloLens独自の入力方法に一切対応していないので、入力が一切とれない状態です。これはUE4上で入力がとれるようにC++コードを書く必要があります。
3はサポートされていないので当たり前なのですが、HoloLensエミュレーターなどのデバッグ環境が使えません。これもかなりつらい。
C++コードを書かないと現状ではほとんどできることがありません。C++も通常のC++ではなく、UWPアプリを作成するために必要なC++/CXというMS独自拡張のC++を使う必要があり、これも難易度を上げている要因のひとつです。
私自身も現在C++/CXでのコード実行に挑戦していますが、こちらは情報が全くないということもあり、非常に苦戦している状態です。もしUE4でC++/CXを実行できたよーという方がいればぜひ教えてください。
UE4でのHoloLensはまだまだ課題が多いですが、色々と可能性は感じているところですので、ぜひとも挑戦する人が現れてほしいです。