Unreal EngineでARKit 3.0

以前、UnityでiOSのARKitを使って遊んでみたことがあった。



ふと、Unreal Engineでも同じことをやってみようと思い始めた。(気まぐれ)
iOS 14ARKitの最新バージョン4.0が発表されているけど、地雷を踏まないためにiOS 13で行く。
そもそもUnreal EngineはまだARKit3.0までしか対応していないわけだし。

少し調べてみると、Unityと違ってUnreal EngineでARKitを扱う情報はかなり少ないことに気づいた。
というか、ARKitに限らずUnreal EngineでARCoreを扱う情報も少ない。Unreal EngineでのスマホARアプリ開発はあんまり流行っていないのだろうか。

一応、Unreal Engineの公式ドキュメントハンドヘルド拡張現実(AR)の項目があるので、それに従って進めてみる。
Unreal EngineではWindows経由でiOSアプリのビルド・実機へのインストールができるらしいけどちょっと半信半疑。オイラの環境は以下。

  • Windows 10 Pro
    • Unreal Engine 4.25.3
    • iTunes 12.10.8.5
  • MacBook Air (macOS 10.15.6 Catalina)
    • Xcode 11.7
  • iPhone 11 Pro (iOS 13.7)



基本的にはWindowsで作業します。

Unreal Projectの作成

とりあえずAR クイック スタートに従って、Handheld AR(携帯AR)テンプレートを使ってプロジェクト(.uprojectファイル)を作成する。



エディタの環境設定で、とりあえずビューポートのカメラ操作をMaya風に変更。(ただの好みです)


iOS プロビジョニング

ここからiOSアプリ開発のための設定作業。
Unreal EngineでiOSアプリを開発するにはApple Developer Programに登録する必要がある。
(UnityはXcodeさえあれば無料で開発できたんですけどね)

Unreal Engineのインストールフォルダ下にあるiPhonePackagerを使用する。



この後何度も使うことになるので、デスクトップのショートカットを作っておくと良い。



先ほど作成した.uprojectファイルをiPhonePackagerで指定して、キーペア(.keyファイル)と証明書署名要求(.csrファイル)を生成する。
Apple IDのメールアドレスや名前(または会社名)の指定など、詳しいやり方はこちらのページ

Apple iOS DeveloperサイトのiOS Certificatesページで、先ほど生成した証明書署名要求をアップロードし、証明書(.cerファイル)をダウンロードする。
こちらを参考に、インストールするiOSデバイスの登録もApple iOS DeveloperサイトのiOS Devicesページで済ませましょう。

こちらを参考に、Apple iOS DeveloperサイトのiOS Provisioning Profilesページでプロビジョニング プロファイル(.mobileprovisionファイル)を作成してダウンロード。

プロジェクト設定

こちらを参考に、プラットフォーム iOSのMobile Provisionに先ほど作成したプロビジョニングプロファイル(.mobileprovisionファイル)と証明書(.cerファイル)をインポートする。

リモートビルド設定

WindowsでiOSアプリをビルドする。
というのはつまり、WindowsからSSH接続でMacを叩いてビルド結果をWindowsで受け取る、というカラクリらしい。

ということで、Windowsからリモート接続可能なMacを用意する。オイラは手持ちの古いMacBook Airを使うことにした。Macのシステム環境設定の「共有」でリモートログインを許可しておく。
Windows側では、Unreal Editorのプロジェクト設定でiOSのリモートビルドオプションを設定する。詳しくはこちらを参照。

ここで生成した秘密鍵のパーミッション変更が必要になるかもしれないので、その場合はCygwin等で設定する。詳しくはこちらを参照。

プロジェクトのパッケージ化(.ipaファイルの作成)

こちらを参考に、Unreal Editorの「ファイルメニューから「プロジェクトをパッケージ化」→「iOS」を選択し、.ipaファイルの保存場所を指定。
リモートビルドの設定が済んでいれば、ビルド用のMacがうなりを上げてビルドが始まる。ビルドが完了すると、指定したフォルダに.ipaファイルが出来上がる。
(これってつまりMac上のXcodeを使ってるのかな?)

実機に.ipaファイルをインストール

パッケージ化した.ipaファイルをiOS実機に転送するには、再びiPhonePackagerを使用する。
実際にはiPhonePackagerがWindowsにインストールされているiTunesを叩くらしい。そこで、こちらを参考に事前にiTunesのインストールディレクトリ(C:\Program Files\WindowsApps以下)のアクセス権を変更しておく。ついでに、iPhonePackagerのためにC:\Program Files\Epic Games以下の権限も変更しておく。

iTunesを起動し、アプリをインストールするiOSデバイスを接続した状態にしておく。
再びiPhonePackagerを起動し、Advanced Toolsで先ほどパッケージ化した.ipaファイルを指定。すると転送処理が始まる、
と思ったら何やらエラー↓



C:\Program Files\Epic Games\UE_4.25\Engine\Build\IOS以下にUE4Game-Info.plistというファイルが無いと言っている。

Unreal Engine Forumsを漁って付け焼刃な対処方法を知った。
GitHubのUnreal Engine 4.6ブランチからUE4Game-Info.plistファイルを持ってくるという。。。

よくわからん対処法だけど、確かに実機へのインストールは成功した↓


アプリの起動

Handheld ARテンプレートそのままなので、平面上をタップするとプリミティブオブジェクトが配置される。


全体像

Unreal EngineでスマホARプロジェクトの作成、iOSアプリのビルド、実機インストールまでやってみた。
理解したリモートビルドの構造を図示しておこう↓


ARKitの各機能のON/OFF

HandheldARBPの中にあるD_ARSessionConfigをいじれば、ARKitの各機能のON/OFFを切り替えられるようだ。



プリミティブオブジェクトを配置するブループリントを見てお作法を学ぼう↓
https://docs.unrealengine.com/ja/Platforms/AR/HandheldAR/ARHowToHitTesting/index.html



AndroidのARCoreと比べてみたいな。

関連記事

iPhone5S → iPhone6S

ペイントマネージャー:模型塗料を管理できるスマホアプリ

PS4用ソフト『Marvel's Spider-Man』

スター・ウォーズのスピンオフ『マンダロリアン』の舞台裏

映画から想像するVR・AR時代のGUIデザイン

UnrealCLR:Unreal Engineで.NET Coreを利用できるプラグイン

iOSで使えるJetpac社の物体認識SDK『DeepBelief』

Unity Scriptコーディング→Unreal Engine Scriptコーディング

AR (Augmented Reality)とDR (Diminished Reality)

iPhone 3GSがますます欲しくなる動画

iOSデバイスのためのフィジカル・コンピューティングツールキット『konashi(こなし)』

ヘッドマウントディスプレイとビジュアリゼーションの未来

Programing Guide for iPhone SDK 日本語のドキュメント

口笛から作曲できるスマホアプリ『Chordana Composer』

ヒーローに変身なりきりアーケードゲーム『ナレルンダー』

Unity ARKitプラグインサンプルのチュートリアルを読む

konashiのサンプルコードを動かしてみた

iPhoneで3D写真が撮れるアプリ『seene』

Unreal Engine 5の情報が公開された!

Unreal Engineの機能を学ぶ優先順位を考える

UnityでARKit2.0

今年もSSII

UnityユーザーがUnreal Engineの使い方を学ぶには?

Unityからkonashiをコントロールする

iPhoneをSSHクライアントとして使う

映画『シン・ウルトラマン』 メイキング記事まとめ

新年の衝動買い

Mac用のSubversionクライアント 『SCplugin』

プラカラーストック:模型塗料を管理できるスマホアプリ

UnrealCV:コンピュータビジョン研究のためのUnreal Engineプラグイン

ArUco:OpenCVベースのコンパクトなARライブラリ

MetaHumanの頭部をBlenderで編集できるアドオン

Unity ARKitプラグインサンプルのドキュメントを読む

リアルタイム レイトレーシングAPI『DirectX Raytracing (DXR)』

Physics Forests:機械学習で流体シミュレーションを近似する

Meta Quest 3を購入!

疑似3D写真が撮れるiPhoneアプリ『Seene』がアップデートでついにフル3Dモデルが撮影できる...

iPhone 13 Pro→ iPhone 15 Pro

iOSデバイスと接続して連携するガジェットの開発方法

ポリ男をリファイン

Unreal Engineの薄い本

Qlone:スマホのカメラで3Dスキャンできるアプリ

コメント