この記事は @nkjzm さん主催の Unityゆるふわサマーアドベントカレンダー2019 の8/6の記事です!
AR Foundationとは
UnityPackageで提供されているARのPackageで、PackagerManagerからインストールすることができます。詳しくは以前下記のブログに書きました。
独立型戦闘支援ブログ : AR Foundationを使ってみた
Appleが発表したARKit 3(現状ベータ版)の機能を使うには、以前から提供されていたARKit Pluginではなく、AR Foundationを使用する必要があります。現状でも、ARKit 2の範囲の機能をAR Foundationを使って作成することができます(ただ、AR FoundationはARKitの全ての機能に対応しているわけではありませんので注意が必要です)
ARKitとARCoreの双方にある代表的な機能(SLAMや平面認識など)はAR Foundationで使うことができますので、新規プロジェクトは積極的にAR Foundationを採用していく方針がいいのではないかと思います。
AR Foundationのバージョンについて
ARKit 3の機能を使用するには、Packageのバージョンが2.2以上のものを使用する必要があります。ただしその場合、Xcode 11とiOS/iPadOS 13以上の機種を用意する必要があり、アプリの公開も正式版が出るまではできません。なので、公開したいものを作成するには、AR FoudationおよびARKit XR Pluginのバージョンは2.1番台のものを使用しましょう。
AR Foundationのサンプルを動かしてみる
AR Foundationのサンプルについても、インストールしたAR Foundationのバージョンに合わせたものを使用しましょう。(下記は2.1のリンクです)
GitHub : arfoundation-samples
AR Foundationのカメラから静止画を取得する
AR Foundationは、ARCameraコンポーネントによってカメラからの画像を処理して表示しています。カメラの画像はARの機能を提供するために特徴点の抽出やSLAM(デバイスの自己位置推定など)に使用されるため、WebCamTextureなどで横からカメラを奪い取ることができません。なので、ARCameraから画像を取得する必要があります。
取得方法についてはAR Foundationのマニュアルに記載されています。
Exampleに記載されているCameraImageExampleクラスを、CameraImageExample.csとして保存して、シーンに置いて実行すると、Texture2D m_Texture にカメラの画像が入ります。
あとは、m_TextureのEncodeToPNG()を実行してバイト列を取得し、ファイルとして保存すればPNGファイルになりますし、外部の画像認識AIのAPI(Azure Cognitive Servicesなど)に送って解析させれば、ARとAIを組み合わせたアプリを作成することができます。
マニュアル類も充実してきているので、AR Foundation使っていきたいですね!