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

ふと、Unreal Engineでも同じことをやってみようと思い始めた。(気まぐれ)
iOS 14とARKitの最新バージョン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テンプレートそのままなので、平面上をタップするとプリミティブオブジェクトが配置される。
夜道を散歩してAR遊びしてた#UE4 #UE4Study pic.twitter.com/d6nPKxrtoq
— NegativeMind (@NegativeMind) September 16, 2020
全体像
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と比べてみたいな。
関連記事
Konashiを買った
iPhone 13 Pro→ iPhone 15 Pro
疑似3D写真が撮れるiPhoneアプリ『Seene』がアップ...
Unreal Engineの薄い本
ArUco:OpenCVベースのコンパクトなARライブラリ
Unity Scriptコーディング→Unreal Engi...
iPhone 11 Pro→ iPhone 13 Pro
書籍『OpenCV 3 プログラミングブック』を購入
iOSデバイスと接続して連携するガジェットの開発方法
iPhoneをSSHクライアントとして使う
MetaHumanの頭部をBlenderで編集できるアドオン
ポリ男からMetaHumanを作る
konashiのサンプルコードを動かしてみた
Unreal Engineの機能を学ぶ優先順位を考える
2018年に購入したiPad Proのその後
リアルタイム レイトレーシングAPI『DirectX Ray...
ヒーローに変身なりきりアーケードゲーム『ナレルンダー』
iPhoneアプリ開発 Xcode 5のお作法
Unreal Engine 5の情報が公開された!
iOSデバイスのためのフィジカル・コンピューティングツールキ...
Unity ARKitプラグインサンプルのドキュメントを読む
iPhone 15 Pro→ iPhone 17 Pro
Oculus Quest 2を購入!
ペイントマネージャー:模型塗料を管理できるスマホアプリ
AI英語教材アプリ『abceed』
Meta Quest 3を購入!
UnityユーザーがUnreal Engineの使い方を学ぶ...
UnityでARKit2.0
映画から想像するVR・AR時代のGUIデザイン
Programing Guide for iPhone SD...
Unityからkonashiをコントロールする
AR (Augmented Reality)とDR (Dim...
iPhone 3GSがますます欲しくなる動画
今年もSSII
iPhoneで3D写真が撮れるアプリ『seene』
映画『シン・ウルトラマン』 メイキング記事まとめ
スター・ウォーズのスピンオフ『マンダロリアン』の舞台裏
OpenAR:OpenCVベースのマーカーARライブラリ
Unity ARKitプラグインサンプルのチュートリアルを読...
UnityのAR FoundationでARKit 3
ポリ男をリファイン
UnrealCV:コンピュータビジョン研究のためのUnrea...
 
  
  
  
  

コメント