Android NDK のクイックスタート

開発環境を設定する

  • Android SDK Platform バージョン 7.0(API レベル 24)以降を搭載した Android Studio バージョン 3.1 以降をインストールします。

  • Android Studio をネイティブ開発で使用できるようにするため、SDK Manager を使用して Android Native Development Kit(NDK)と CMake をインストールします。詳細については、NDK のスタートガイドをご覧ください。

  • ARCore SDK for Android を入手する必要があります。次のいずれかの方法でご対応ください。

    • ARCore SDK for Android をダウンロードして解凍します。

      - または -

    • 次のコマンドを使用してリポジトリのクローンを作成します。

      git clone https://github.com/google-ar/arcore-android-sdk.git

デバイスまたはエミュレータを準備する

AR アプリは、対応デバイスまたは Android Emulator で実行できます。アプリを実行する前に、エミュレータで Google Play 開発者サービス for AR を更新する必要があります。詳しくは、Android Emulator で AR アプリを実行する をご覧ください。

サンプル プロジェクトを開く

Android Studio で、<ARCore SDK Folder>/samples/hello_ar_chello_ar_c サンプル プロジェクトを開きます。

サンプル プロジェクトには、Gradle や Android SDK など、特定のバージョンのソフトウェアに対するビルド依存関係があります。必要な依存関係がインストールされていない場合、Android Studio は、マシンにダウンロードしてインストールする権限を求めます。

サンプルの実行

Android デバイスが開発マシンに接続されていることを確認して、Android Studio で Run をクリックします。

Android Studio は、プロジェクトをデバッグ可能な APK にビルドし、APK をインストールしてから、デバイスでアプリを実行します。詳細については、アプリをビルドして実行するをご覧ください。

デバイスを動かすと、アプリが平らな面を自動的に検出し、ダイヤモンド グリッドを描画します。グリッドをタップして、サーフェスに 3D ARCore ポーンを配置します。

インスタント プレースメントを使用する

Instant Placement API を使用すると、ARCore がサーフェス ジオメトリを検出するのを待たずに、ユーザーが AR オブジェクトを画面に配置できます。ユーザーが環境内を移動すると、オブジェクトの配置がリアルタイムで調整されます。ARCore が AR オブジェクトが配置されている領域で正しいポーズを検出すると、オブジェクトはポーズが正確になるように自動的に更新されます。

画面をタップしてオブジェクトを配置します。ホログラフィック オブジェクトが画面に表示されたら、デバイスを動かし続けます。これにより、ARCore が周囲の環境に関する十分なデータを取得し、仮想オブジェクトを正確に固定できます。

インスタント プレースメント

図 1 では、インスタント プレースメントが無効になっており、サーフェス ジオメトリが未定義です。プール台の右側の床に置かれたオブジェクト(4 つの小さな青い点)が倒れており、ポーズが定義されていません。

図 2 では、歯車アイコンの下にあるメニューからインスタント プレースメントが有効になっています。

図 3 では、インスタント プレースメントが有効になっているため、新しいオブジェクトがシーンに配置されています。正確なポーズにまだ補正されていないことを示すため、色ではなくグレースケールで表示されます。

図 4 では、サーフェス ジオメトリ(トラッキング可能なグリッド線で記述)が検出されると、新しいオブジェクトが着色され、そのポーズが正確になります。

深度を使用する

[Depth] が有効になっている場合、ARCore はシーン内のオブジェクトのジオメトリと位置を考慮し、シーン内の他のオブジェクトを基準としてシーン内に配置されたオブジェクトの位置を計算します。これにより、配置したオブジェクトをシーン内のオブジェクトで隠すことができ、アプリのリアリティを高めることができます。

インスタント プレースメント

図 1 では、奥行きが無効になっています。プールテーブルの下にオブジェクトが置かれている。

図 2 では、デバイスがプール台の周囲を移動すると、シーン内のオブジェクトに関係なく、オブジェクトがデバイスに追従するように見えます。

図 3 では、奥行きが有効になっています。

図 4 では、デバイスがシーン内を移動すると、オブジェクトがプールテーブルによって遮蔽されているように見えます。

次のステップ