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で作業します。

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と比べてみたいな。


スポンサーリンク

関連記事

OpenAR:OpenCVベースのマーカーARライブラリ
スター・ウォーズのスピンオフ『マンダロリアン』の舞台裏
UnityユーザーがUnreal Engineの使い方を学ぶには?
映画から想像するVR・AR時代のGUIデザイン
Unity Scriptコーディング→Unreal Engine Scriptコーディング
Oculus Quest 2を購入!
Unityからkonashiをコントロールする
Meta Quest 3を購入!
Programing Guide for iPhone SDK 日本語のドキュメント
ArUco:OpenCVベースのコンパクトなARライブラリ
iPhone 13 Pro→ iPhone 15 Pro
Qlone:スマホのカメラで3Dスキャンできるアプリ
疑似3D写真が撮れるiPhoneアプリ『Seene』がアップデートでついにフル3Dモデルが撮影できる...
Unreal Engine 5の情報が公開された!
新年の衝動買い
Unity ARKitプラグインサンプルのチュートリアルを読む
UnityのAR FoundationでARKit 3
映画『シン・ウルトラマン』 メイキング記事まとめ
今年もSSII
iOSデバイスと接続して連携するガジェットの開発方法
プラカラーストック:模型塗料を管理できるスマホアプリ
ポリ男をリファイン
PS4用ソフト『Marvel's Spider-Man』
iPhoneをSSHクライアントとして使う
ポリ男からMetaHumanを作る
konashiのサンプルコードを動かしてみた
iOSデバイスのためのフィジカル・コンピューティングツールキット『konashi(こなし)』
Mac用のSubversionクライアント 『SCplugin』
口笛から作曲できるスマホアプリ『Chordana Composer』
Unreal Engineの機能を学ぶ優先順位を考える
AR (Augmented Reality)とDR (Diminished Reality)
Konashiを買った
UnityでARKit2.0
iPhoneアプリ開発 Xcode 5のお作法
iPhone 3GSがますます欲しくなる動画
Unity ARKitプラグインサンプルのドキュメントを読む
iOSで使えるJetpac社の物体認識SDK『DeepBelief』
AI英語教材アプリ『abceed』
iPhoneで3D写真が撮れるアプリ『seene』
Unreal Engineの薄い本
リアルタイム レイトレーシングAPI『DirectX Raytracing (DXR)』
iPhone5S → iPhone6S

コメント