これまでのARとこれからのAR
9月20日、iOS端末上でARをサポートするARKitの機能を搭載したiOS11がリリースされました。 それを追う形で、Googleは同様にAndroid端末上でARをサポートするARCoreを開発中です(現在SDKのプレビュー版を公開中)。
「これまでもスマホでARができたのに何が違うの?」と思う方もいるかと思います。この記事ではスマホを中心にこれまでのARとこれからのARを、その技術の変化とともに時系列に紹介することで、今後の展望について考えます。
用語解説
マーカーAR
ARにはマーカーARとマーカーレスARがあります。
これまでに広く使われてきたのはシンプルなマーカーARで、これは単純に前もって登録された画像を認識することで、その画像の場所にオブジェクトを表示させることができます。認識の対象は如何にもといった感じのマーカー(QRコード、ARタグなど)にとどまらず、自分で任意の画像を認識対象にすることもできます。メリットは「処理負荷が低く精度が高い」、デメリットは「マーカー等の事前準備が必要」「利用シーンが限られる」、です。
ARタグを使ったマーカーAR
任意の画像を使ったマーカーAR
マーカーレスAR
一方で、このマーカーを必要としないものがマーカーレスARです。これは周囲の環境を認識することで、表示させるオブジェクトと環境とのインタラクションを可能にします。これによってCGのキャラクターに床を走り回らせたり壁の前で方向転換させたり、そういうことができるようになるわけです。この手法のメリットは「マーカーが不要」「非常に多様な表現が可能」、デメリットは「処理負荷が高く、精度が求められるものは不向き」「アプリケーションのデザインが難しい」となります。
マーカーレスAR
「マーカーレスAR」の定義は諸説あるようで、QRコードやARコードに限らない任意の画像を使用可能なものをマーカーレスARと呼んでいる文章も見受けられました。 正確な定義はわかりませんが、本稿では「マーカーAR」「マーカーレスAR」を上記の意味として扱います。
SLAM
マーカレスARに必要な技術がSLAM(Simultaneous Localization and Mapping)です。wikipediaの言葉を借りると「自己位置推定と環境地図作成を同時に行うこと」になります。「自己位置」とはカメラの位置(と向き)、「環境地図」は床があり壁があり、ある地点からある地点までの距離が何mであるかといった周囲の環境を意味します。つまりSLAMによってディスプレイに表示される映像が決定されることになります。
スマホARの変遷
2017年8月までのスマホAR
ここではマーカーARがメインの機能となります。 これまでiOSもAndroidも、OSレベルでARをサポートしていませんでした。しかしOSレベルでサポートされていなくてもARは実現可能です。単にプログラミングで実現すれば良いのです。
さらにARの技術を持っていない開発者でも、有償無償の各種ライブラリを使うことで、基本的なマーカー認識などのAR機能を持ったアプリケーションを作ることができます。ARライブラリにはVuforia, SmartAR, Kudanなど、機能や価格の異なる様々な種類があるので用途に合わせて選びましょう。SmartARとKudanは、制限があったり精度が甘かったりしますが、マーカーレスARができます。
「プログラムだけでARができるなら、もうそれで良くない?」と思う方もいるかと思いますが、そうではないのです。
SLAMの一手法に、現在広く使われているvSLAMというものがあります。これはカメラから入ってくる画像の特徴点(机の角とかカーペットの模様とか。尖ったものがよく選ばれる)の動きを利用して空間を把握する手法ですが、これは非常に計算負荷が高いんですね。
vSLAMを使った空間認識の様子
これまでのスマホARではカメラ画像に加えてスマホのジャイロや加速度センサーを補足的に使うことでこれをカバーしていました。カバーしていたとは言ってもこの時点のOSから見ればカメラと各種センサーはそれぞれ独立した機能で、それらを連携させるにはOSよりも高レイヤーの部分でプログラムする必要があったのです。これでは効率が悪い。
OSレベルでARをサポートするということは、端末の持つ各センサーのARのための連携をOSが提供することで、これまでよりも高負荷な処理(具体的には精度の高いマーカーレスARなど)を可能にする、ということです。
Project Tango(2016年後半~2017年8月)
Googleが推進していたProject Tangoというものがあります。これは一般的なスマートフォンにARのための広角カメラ(特徴点検出用)、赤外線センサーを追加し、さらに各種センサーとの連携をOSレベルで提供する端末を提供するものでした。
Tango対応端末は通常のスマートフォンよりもはるかに高精度、高機能(壁検出、オクルージョン、Area Learningなど)なARが実現可能でしたが、ARCoreの発表とともにTangoは終了となりました。市販された対応端末はLenovoのPhab2ProとAsusのZenFoneARの2機種のみ。Area LearningなどはARKitやARCoreでも実現できていないので、Tangoの終了はとttttっても残念です。
しかし今広く普及しているスマホも、今後は世代が進むにつれCPU性能の向上やセンサー類の追加で結局はTango端末のようなものに向かっていくのではないでしょうか。Project Tangoは早すぎたのだと思います。
Tangoによる高精度、オクルージョンを含むAR表現
2017年9月以降のスマホAR
と、ここまで書いてみるともうこの項で書くことはあまりないですね。
iOSのARKit、AndroidのARCoreともに、OSレベルでARをサポートすることでこれまでより高性能なARがスマホで実現できる、ということになります。OSレベルのサポートがあるといってもCPUの性能は必要で、ARKit, ARCoreともに対応する端末が限定されているのが現状です。この点では端末のラインナップがコントロールされているiPhoneのARKitに大きなアドバンテージがあると言えるでしょう。Tangoが一足飛びに進んでしまい誰もついていけなかったARの道を、これからは処理能力の向上とともに多くのスマートフォンが少しずつ進んでいくことになります。