[iOS 11] Apple 純正の AR フレームワーク「ARKit」について理解する #WWDC17

2017.06.06

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Apple 純正の AR フレームワーク「ARKit」

現在開催中の WWDC17。キーノートでは様々な新機能とハードウェアが発表されました。概要については以下のまとめを参照してください。

WWDC17 キーノートまとめ 新製品HomePodの発表も! #WWDC17

iOS 11 にも様々なフレームワークと API が追加されました。本記事では、その中の一つ ARKit についての概要をまとめてみました。

ARKit は、現在開催中の WWDC17 にて実機デモを試せるようです。現地に行かれている方は、試されてみてはいかがでしょうか。

本記事は Apple からベータ版として公開されているドキュメントを情報源としています。 そのため、正式版と異なる情報になる可能性があります。ご留意の上、お読みください。

概要

AR は 「Augmented reality」の略で、日本語にすると「拡張現実」。アプリ上のコンテンツとカメラで映し出された画像を融合した表現が可能な技術です。

  • ユーザーが住む世界とアプリの視覚的コンテンツの間を通信させる仕組み
  • アプリ上のコンテンツとライブカメラを一緒に表示できる
  • UXのリアリティを増大させる効果がある
  • コンテンツは SpriteKit (2D) または SceneKit (3D) を使って表示できる

トラッキングの方法

ARKit トラッキングは、デバイスのモーションセンサーとカメラの画像の分析結果を組み合わせて行われます。接触判定も行えます。

  • ARKit では、通信のことを visual-inertial odometry と呼ぶ
  • これは iOS デバイスのモーションセンサーとカメラから見えた映像の分析結果を結合するプロセス
  • ARKit は、画像の中の特徴検出を行い、それらの特徴のビデオフレームにわたる位置の違いをトラッキングし、その情報をモーション検出データと比較する
    • その結果として、デバイスの位置と動作の高精度モデルが得られる
  • ARHitTestResultを使って、カメラで映し出された現実の世界の接触判定が行える
  • planeDetection設定を使うと、ARKit は画像内の平坦な面を検出し、その位置と大きさをレポートする
  • ARHitTestResult と planeDetection を活用して、仮想コンテンツの配置を行ったり相互作用させたりできる

ベストプラクティスと制限

ARKit の性能を考慮したベストプラクティスが紹介されています。

照明の状況を考慮した AR 体験の設計

  • トラッキングには鮮明な画像が必要
  • 真っ白な壁や暗すぎる場所ではトラッキングの品質は低下する

ユーザーへのフィードバックにはトラッキングの品質を情報として伝える

  • トラッキングは画像解析結果とデバイスのモーションデータを関連付ける
  • デバイスが少ししか動かない場合でも、ARKit はシーンへの解析を行う
  • 動きが大きすぎたり、速すぎたり、激しく揺れたり、画像がぼやけたり、特徴とビデオフレームの距離が長すぎたりすると、トラッキングの品質は低下する
  • ARCameraクラスはトラッキングの状況の理由の情報を提供する
    • これを使うと、品質の低下の解決方法をユーザーに提示することができる

平面検出で明確な結果が得られたら、平面検出を無効にする

  • 平面検出結果は時間とともに変化する
  • 平面が最初に検出されると、位置と範囲が不正確になる可能性がある
  • 時間の経過とともに平面が場面に留まると、ARKit は位置と範囲の推定を改善する
  • 大きな平面がある場合、ARKit はコンテンツを配置した後に、平面のアンカーの位置、範囲、変換を更新し続けることがある

まとめ

Pokémon GO でかなり有名になった AR ですが、純正の AR フレームワークが使えるようになり、今後 AR を使ったアプリが増えること間違いなしでしょう。他にも ARKit の技術情報が公開されていますので、引き続き見ていきたいと思います。

参考