ぼっちプログラマのメモ

UE4とかUE5とかについて書いたり書かなかったり。

UE4のARCoreサンプルを未サポート端末(ZenFoneAR)で動かすためにしたこと(2017/9/4)

f:id:pafuhana1213:20170904230939j:plain

はじめに

ARCoreというTango目的でZenFoneARを自腹で買った僕が涙目になる技術が公開され、
更に既にUE4が試験的に対応済み!ということで、早速動かしてみました!

注) まだ開発者プレビュー段階なので変わる可能性ありますし、動作の保証はありません。色々了承した上で自己責任で!

注) UE4+Android開発をする準備が既に整った方を対象として説明してます。まだの方はこちらを参考にセットアップ!
docs.unrealengine.com



参考:
https://www.unrealengine.com/ja/blog/get-started-with-google-arcore-using-unreal-engine-today

Getting Started with Unreal  |  ARCore  |  Google Developers

ARCore Service appを導入

まずはAndroid端末上でARCoreを動かすために、以下のサイトからARCore Service appをダウンロードし、対象の端末にインストールします。
Downloads and Samples  |  ARCore  |  Google Developers

インストール用のコマンド
adb install -r -d arcore-preview.apk

注意!
ZenFoneARなどのTango機能を持つAndroid端末にARCore Serviceをインストールすると、以降Tangoアプリ起動時にクラッシュするようになります。クラッシュを回避するためには、Tango Coreを再インストールするしかありません。現時点ではARCoreとTangoは両立できないのでご注意ください

ARCore用のUE4をダウンロード&ビルド

ARCore用のUE4プラグインはまだ本流に組み込まれていないため、開発中のブランチからUE4をダウンロードし、ビルドする必要があります。
https://github.com/google-ar-unreal/UnrealEngine/tree/4.17-arcore-sdk-preview

ソースからのビルド手順は以下のページで解説されています。
docs.unrealengine.com

ARCore用のサンプルをDL&起動

次に、ARCore用に用意されたサンプル「HelloARSample」を以下のサイトからDLします。
Downloads and Samples  |  ARCore  |  Google Developers
f:id:pafuhana1213:20170904233107p:plain

そして、先程ビルドしたUE4でサンプルを開きます。そして、そのままパッケージング作業を行い、対象となる端末にインストールします。
docs.unrealengine.com

すると、「Hello AR UE4」というアプリがインストールされていますので、実行して動作確認します!おつかれさまでした!

・・・


はい

※ 2017/9/4時点ではARCoreはまだPixel, Pixel XL, GalaxyS8にしか正式対応していません!

未サポート端末であるZenFoneARを動かすためにしたこと

ヒントになった記事がこれです
qiita.com

どうやらサポート端末か否かの判定さえ誤魔化せば何とかなりそうです。ということで、ARCore用プラグインのコードの一部を修正(といっても、Trueを強制リターンするようにしただけ)

GoogleARCoreAndroidHelper.cpp

bool FGoogleARCoreAndroidHelper::IsTangoCorePresent()
{
#if PLATFORM_ANDROID

	return true; // add

	if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
...
bool FGoogleARCoreAndroidHelper::IsTangoCoreUpToDate()
{
#if PLATFORM_ANDROID
	
	return true; // add
	
	if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())

...
bool FGoogleARCoreAndroidHelper::IsARCoreSupported()
{
#if PLATFORM_ANDROID

        return true; // add

	if (JNIEnv* Env = FAndroidApplication::GetJavaEnv())
	{
...

これでまだサポートされていないZenFoneARでARCoreを動かすことができました!めでたしめでたし!

注) この方法での起動はZenFoneAR以外の端末ではノーチェックです。また今後の動作に支障が出る可能性があります。試す場合は自己責任でお願いします。


f:id:pafuhana1213:20170904234606j:plain
注)
自 己 責 任 ! ! !