フレームワーク

ARKit

iOSデバイスのカメラ機能とモーション機能を統合し、Appやゲームの中で拡張現実体験を生み出します。

概要

拡張現実(AR)は、デバイスのカメラからのライブビューに2Dや3Dのアイテムを追加して、そのアイテムがあたかも現実の世界に存在するかのように見えるユーザー体験です。ARKitは、デバイスのモーショントラッキング、カメラによるシーンの取得、高度なシーンの処理、便利な表示機能を組み合わせたもので、AR体験を簡単に構築できるようにします。これらのテクノロジーを使うと、iOSデバイスのバックカメラまたはフロントカメラで、さまざまなAR体験を生み出すことができます。

バックカメラを使用した拡張現実

最も一般的なAR体験は、iOSデバイスのバックカメラからのビューを表示し、ほかのビジュアルコンテンツを追加して「拡張」し、ユーザーが周囲の世界を新しい方法で見たり操作したりできるようにするものです。

このような体験を提供するのがARWorldTrackingConfiguration(英語)です。ARKitが、ユーザーのいるリアルワールドの空間をマッピングおよびトラッキングし、それを座標空間に一致させることで、仮想コンテンツを配置できるようにします。ワールドトラッキングは、ユーザーの周囲にあるオブジェクトや画像を認識したり、リアルワールドの照明の状況を反映させるなど、AR体験をより臨場感あふれるものにする機能も提供します。

フロントカメラを使用した拡張現実

iPhone Xでは、前面にあるTrueDepthカメラを使って、ARFaceTrackingConfiguration(英語)がユーザーの顔のポーズや表情に関するリアルタイム情報を提供します。この情報を使って仮想コンテンツをレンダリングできます。たとえば、カメラビューでユーザーの顔を表示し、リアルな仮想マスクをかぶせることができます。また、iMessageのアニ文字Appのようにカメラビューは出さずに、ARKitの表情データを使って仮想キャラクターを動かすこともできます。

トピック

最初のステップ

デバイスのサポートとユーザーの許可の確認

AppがARKitを利用可能であること、ユーザーのプライバシーに配慮していることを確認します。

class ARSession(英語)

拡張現実体験で必要となる、デバイスのカメラとモーション処理を管理するための共有オブジェクト。

class ARConfiguration(英語)

ARセッション構成のための抽象基底クラス。

表示

class ARSCNView(英語)

3DのSceneKitコンテンツを使って、カメラビューを拡張したAR体験を表示するためのビュー。

class ARSKView(英語)

2DのSpriteKitコンテンツを使って、カメラビュー拡張したAR体験を表示するためのビュー。

Metalを利用したAR体験の表示

カメラ画像をレンダリングし、位置トラッキング情報を使ってオーバーレイコンテンツを表示するカスタムARビューを構築します。

ワールドトラッキング

デバイスのバックカメラを使って、ユーザーの周囲の世界で仮想コンテンツを探索できるAR体験を生み出します。

初めてのAR体験の構築(英語)

ARセッションを実行し、平面検出機能を使ってSceneKitで3Dコンテンツを配置するAppを作成します。

ARKitのワールドトラッキングについて

優れたAR体験を構築するため、ARKitがサポートするコンセプト、特徴、ベストプラクティスを確認しておきましょう。

class ARWorldTrackingConfiguration(英語)

バックカメラを使って、デバイスの向きと位置を追跡し、リアルワールドの平面、既知の画像やオブジェクトを検出する設定です。

class ARPlaneAnchor(英語)

ワールドトラッキングARセッションで検出された、リアルワールドの平面の位置と向きに関する情報。

ユーザー体験

以下のサンプルコードとHuman Interface Guidelines > 拡張現実(英語)を活用して、魅力的で直感的なAR体験を構築してください。

セッションのライフサイクルとトラッキングクオリティの管理

わかりやすいフィードバックの提供、中断からの復帰、以前のセッションの再開によって、AR体験をより強力なものにしてください。

拡張現実における3D操作とUIコントロール(英語)

AR体験でのビジュアルフィードバック、ジェスチャ操作、リアルなレンダリングについてのベストプラクティスです。

SwiftShot:拡張現実のゲームの作成(英語)

AppleがWWDC18で紹介したデモのコードです。どのように構築されているか確認し、ARKit、SceneKit、Swiftを使ってオリジナルのマルチプレイヤーゲームを作るヒントにしてください。

ARワールドの共有と持続

複数ユーザーが共有できるAR体験の作成(英語)

MultipeerConnectivityフレームワークを使って近くのデバイスとの間でARKitのワールドマッピングデータをやり取りし、AR体験の共有基盤を作ります。

持続的なAR体験の作成(英語)

ARKitのワールドマッピングデータを保存して読み込むことにより、同じリアルワールド環境で、ユーザーが以前のAR体験の状態に戻れるようにします。

class ARWorldMap(英語)

ワールドトラッキングARセッションの、空間マッピングの状況とアンカー群。

環境テクスチャリング

AR体験へのリアルな反射の追加(英語)

ARKitを使って、カメラの画像から環境プローブテクスチャを生成し、それが写り込んだ仮想オブジェクトをレンダリングします。

class AREnvironmentProbeAnchor(英語)

ワールドトラッキングARセッションの特定空間の環境照明情報を提供するオブジェクト。

画像の検出とトラッキング

ユーザーの環境内にある既知の2D画像を使って、ワールドトラッキングARセッションを強化します。

AR体験における画像の認識(英語)

ユーザーの環境内にある既知の2D画像を検出し、その位置を使ってARコンテンツを配置します。

class ARReferenceImage(英語)

ワールドトラッキングARセッション中にリアルワールドの環境で認識される画像。

class ARImageAnchor(英語)

ワールドトラッキングARセッションで検出された、画像の位置と向きに関する情報。

オブジェクトの検出

ユーザーの環境内にある既知の 3Dオブジェクトを使って、ワールドトラッキングARセッションを強化します。

3Dオブジェクトのスキャンと検出(英語)

リアルワールドのオブジェクトの空間的特徴を記録します。その後、その結果を使ってユーザーの環境でそのオブジェクトを探し、ARコンテンツを起動します。

class ARReferenceObject(英語)

ワールドトラッキングARセッション中にリアルワールドの環境で認識される3Dオブジェクト。

class ARObjectAnchor(英語)

ワールドトラッキングARセッションで検出された、リアルワールドの3Dオブジェクトの位置と向きに関する情報。

class ARObjectScanningConfiguration(英語)

バックカメラを使って、後の検索のため3Dオブジェクトのスキャンに必要な忠実度の高い空間データを収集する設定です。

ヒットテストとリアルワールドの位置

class ARHitTestResult(英語)

ARセッションのデバイスのカメラビュー上のポイントから推定される、リアルワールドの面に関する情報。

class ARAnchor(英語)

ARシーンにオブジェクトを配置するときに使う、リアルワールドでの位置と向き。

protocol ARAnchorCopying(英語)

ARAnchor(英語)のカスタムサブクラスをサポートします。

protocol ARTrackable(英語)

ARKitが位置と向きの変化を追跡するシーン内のリアルワールドのオブジェクト。

カメラとシーンの情報

class ARFrame(英語)

ARセッションの一部としてキャプチャされる、位置追跡情報を含むビデオ画像。

class ARCamera(英語)

ARセッションでキャプチャされたビデオフレームの、カメラの位置とイメージング特性に関する情報。

class ARLightEstimate(英語)

ARセッションでキャプチャされたビデオフレームに関連付けられた、推定のシーン照明情報。

フェイストラッキング

iPhone XのTrueDepthカメラを使って、ユーザーの顔や表情に応じたAR体験を生み出します。

顔に基づくAR体験の作成(英語)

フェイストラッキングARセッションによって提供される情報を使って、3Dコンテンツを配置したりアニメーション化したりします。

class ARFaceTrackingConfiguration(英語)

TrueDepthカメラを使って、ユーザーの顔の動きや表情を追跡する設定です。

class ARFaceAnchor(英語)

フェイストラッキングARセッションで検出された顔のポーズ、トポロジー、表情についての情報。

class ARDirectionalLightEstimate(英語)

フェイストラッキングARセッションでキャプチャされたビデオフレームに関連付けられた、推定の環境照明情報。

専用設定

class AROrientationTrackingConfiguration(英語)

バックカメラを使って、デバイスの向きのみを追跡する設定です。

class ARImageTrackingConfiguration(英語)

バックカメラを使って、既知の画像を検出し追跡する設定です。

関連テクノロジー

オーディオを使った臨場感のあるAR体験の作成(英語)

サウンドエフェクトや環境音レイヤを使用して、魅力的なAR体験を作成します。

リアルタイムでのVisionとARKitの使用(英語)

Core MLの画像識別の効率的な実行のために、Visionリソースを管理し、SpriteKitを使用してARに画像識別の結果を表示します。