Android NDK のクイックスタート

開発環境をセットアップする

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

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

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

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

      - または -

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

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

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

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

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

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

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

サンプルの実行

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

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

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

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

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

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

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

図 1 では、インスタント プレースメントは無効になっており、サーフェスのジオメトリが未定義です。 ビリヤード テーブルの右側の床に置かれたオブジェクト(4 つの小さな青い点)がひっくり返されて見え、それらのポーズは未定義です。

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

図 3 では、Instant Placement を有効にした状態で新しいオブジェクトがシーンに配置されています。 正確なポーズのためにまだ修正されていないことを示すために、色付きではなくグレースケールで表示されます。

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

Depth を使用

[Depth] を有効にすると、ARCore はシーン内のオブジェクトのジオメトリと位置を考慮し、シーン内の他のオブジェクトを基準としてシーンに配置されたオブジェクトの位置を計算します。これにより、配置されたオブジェクトをシーン内のオブジェクトによって遮られ、アプリにリアルな印象を与えられます。

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

図 1 では、Depth は無効になっています。オブジェクトがプールテーブルに配置される

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

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

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

次のステップ