はじめに

※ Unity 向けの SDK についての記事です。

前回、2019年以降の ARCore の新機能、変更点をまとめました。

今回は、それらの新機能、変更点を中心に ARKit の同等の機能と比較をしていきます。

顔認識

ARCore のAugmentedFaceと ARKit のFaceTrackingを比較しました。

ARCore の顔認識

ARKit の顔認識

  • ARKit の顔認識は iPhoneX 系、 iPadPro のみ対応。

  • ARCore は、顔のメッシュと、鼻、右額、左額の3点の座標と法線åの向きを取得することができる。

  • ARKit は、目や口の開き具合などかなり細かい情報まで取得することができる。

(UnityARKitPlugin FaceTracking FaceBlendshape で取得できるパラメーターという記事に詳しく載っていました)

  • ARKit は顔の一部が画面からはみ出ると認識が外れてしまいました。

デプスセンサーを使っているだけあって、出来ることの幅は ARKit の方が広そうです。

マーカー認識

ARCore のAugmentedImageと ARKit のImageAnchorを比較しました。

ARCore

  • 移動するマーカーの追跡が可能
  • 現実より、一瞬遅延して画面が動く

ARKit

  • Unity では ARKit2.0で追加されたARImageTrackingConfigurationが利用できないので、移動するマーカーの追跡などが不可
  • Unity でもARWorldTrackingConfigurationを使った画像認識は実装可能
  • ゆっくり動くマーカーであればある程度は追跡できる

Unity で利用できる範囲に限ると、ARCore の方が高性能です。

ARImageTrackingConfigurationが利用できる開発環境であれば、 ARKit でも移動するマーカーの追跡が可能です。

XCode でプロジェクトを作ってARImageTrackingConfigurationも試してみました。

  • 認識するまでが ARCore よりも速い
  • 現実とのズレは ARCore と同程度

平面検出

水平面、垂直面の平面検出を比較しました。

ARCore の平面検出

ARKit の平面検出

  • ARKit の方が平面の検出にかかる時間が短い
  • ARCore は面の端まで綺麗に検出できない場合がある
  • ARCore の方がバックグラウンドからの復帰後のズレが小さい
復帰前 復帰後
ARCore ARCore_before ARCore_after
ARKit ARKit_before ARKit_after

さいごに

性能面だけの比較だとまだ ARKit の方が優勢かな、と思いました。

特に、認識するまでの速度がどの機能も ARKit の方が速いです。

一方、 ARCore は、徐々に iOS にも対応してきているので、幅広い機種で動作するという差別化をすることはできると思います。

個人的には、 ARCore の方がサンプル見やすかったり、色々丁寧だったので頑張って欲しいです。

また、 ARKit3についても発表されました。

人間を認識する機能が実装されて、いろいろと新しいことができるようになりそうです。