![【Google AR体験】誰でも簡単に操作できるグーグルのAR(拡張現実)を体験しよう!~そこにいないはずの動物が出現~](https://i.ytimg.com/vi/KWroDOinmu8/hqdefault.jpg)
コンテンツ
- Sceneformプラグインを使用した3Dモデルのインポート
- Sceneformプラグインのインストール
- Sceneform UXおよびJava 8:プロジェクトの依存関係の更新
- ArFragmentで許可をリクエストする
- ARが必須かオプションか?
- 1. ARが必要
- 2. ARオプション
- ArFragmentをレイアウトに追加します
- GoogleのPolyを使用して3Dモデルをダウンロードする
- 3DモデルをAndroid Studioにインポートする
- 3Dモデルを表示する
- 1. ArFragmentメンバー変数を作成します
- 2. ModelRenderableを構築する
- 3.ユーザー入力に応答する
- 4.モデルを固定する
- 5.移動、スケーリング、回転のサポートを追加します
- 完成したMainActivity
- Google ARCore拡張現実アプリのテスト
- Android仮想デバイスでのARCoreのテスト
- まとめ
Sceneformプラグインを使用した3Dモデルのインポート
通常、3Dモデルの操作には専門知識が必要ですが、Sceneformプラグインのリリースにより、GoogleはJavaを使用して3Dモデルをレンダリングできるようになりました。 なしで OpenGLを学ぶ必要があります。
Sceneformプラグインは、標準のAndroidウィジェット、シェイプまたはマテリアル、または.OBJや.FBXファイルなどの3DアセットからRenderdableを作成するために使用できる高レベルAPIを提供します。
このプロジェクトでは、Sceneformプラグインを使用して、.OBJファイルをAndroid Studioにインポートします。 Sceneformを使用してファイルをインポートするたびに、このプラグインは自動的に:
- アセットファイルを.sfbファイルに変換します。 これは、ランタイムに最適化されたSceneform Binary形式(.sfb)であり、APKに追加され、実行時にロードされます。この.sfbファイルを使用して、メッシュ、マテリアル、およびテクスチャで構成され、拡張シーン内の任意の場所に配置できるレンダリング可能なものを作成します。
- .sfaファイルを生成します。 これは資産記述ファイルです。これは、.sfbファイルの人間が読み取れる説明を含むテキストファイルです。モデルによっては、.sfaファイル内のテキストを編集して外観を変更できる場合があります。
執筆時点では、Sceneformプラグインはまだベータ版であったため、このプラグインを使用すると、バグ、エラー、またはその他の奇妙な動作が発生する可能性があることに注意してください。
Sceneformプラグインのインストール
SceneformプラグインにはAndroid Studio 3.1以降が必要です。使用しているAndroid Studioのバージョンがわからない場合は、ツールバーから[Android Studio> Android Studioについて]を選択します。後続のポップアップには、バージョン番号など、Android Studioのインストールに関する基本情報が含まれています。
Sceneformプラグインをインストールするには:
- Macを使用している場合は、Android Studioツールバーから[Android Studio]> [設定...]を選択し、左側のメニューから[プラグイン]を選択します。 Windows PCを使用している場合は、[ファイル]> [設定]> [プラグイン]> [リポジトリの参照]を選択します。
- 「Sceneform」を検索します。「Google Sceneform Tools」が表示されたら、「Install」を選択します。
- プロンプトが表示されたらAndroid Studioを再起動すると、プラグインを使用する準備が整います。
Sceneform UXおよびJava 8:プロジェクトの依存関係の更新
このプロジェクト全体で使用する依存関係を追加することから始めましょう。モジュールレベルのbuild.gradleファイルを開き、Sceneform UXライブラリを追加します。これには、レイアウトで使用するArFragmentが含まれています。
依存関係{実装fileTree(dir:libs、include:)実装androidx.appcompat:appcompat:1.0.2実装androidx.constraintlayout:constraintlayout:1.1.3 testImplementation junit:junit:4.12 androidTestImplementation androidx.test.ext:junit:1.1.0 androidTestImplementation androidx.test.espresso:espresso-core:3.1.1 // Sceneform UXは、ArFragment //実装 "com.google.ar.sceneform.ux:sceneform-ux:1.7.0"実装 "com。 android.support:appcompat-v7:28.0.0 "}
SceneformはJava 8の言語構成を使用するため、プロジェクトのソース互換性とターゲット互換性をJava 8に更新する必要もあります。
compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8}
最後に、Sceneformプラグインを適用する必要があります。
プラグインの適用:com.google.ar.sceneform.plugin
完成したbuild.gradleファイルは次のようになります。
プラグインの適用:com.android.application android {compileSdkVersion 28 defaultConfig {applicationId "com.jessicathornsby.arcoredemo" minSdkVersion 23 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"} compileOptions {sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8} buildTypes {リリース{minifyEnabled false proguardFiles getDefaultProguardFile(proguard-android-optimize.txt)、proguard-rules.pro}}}依存関係{実装fileTree(dir:libs、include:)実装androidx.appcompat:appcompat:1.0 .2実装androidx.constraintlayout:constraintlayout:1.1.3 testImplementation junit:junit:4.12 androidTestImplementation androidx.test.ext:junit:1.1.0 androidTestImplementation androidx.test.espresso:espresso-core:3.1.1 implementation "com.google。 ar.sceneform.ux:sceneform-ux:1.7.0 "実装" com.android.support:appcompat-v7:28.0.0 "}適用プラグイン:com.google.ar .sceneform.plugin
ArFragmentで許可をリクエストする
このアプリケーションは、デバイスのカメラを使用して周囲を分析し、3Dモデルを現実世界に配置します。アプリケーションがカメラにアクセスするには、カメラの許可が必要なので、プロジェクトのマニフェストを開いて次を追加します。
Android 6.0では、許可ごとに許可を付与、拒否、および取り消すことができました。これによりユーザーエクスペリエンスが改善されましたが、Android開発者は実行時に手動で権限を要求し、ユーザーの応答を処理する必要があります。良いニュースは、Google ARCoreを使用する場合、カメラの許可をリクエストし、ユーザーの応答を処理するプロセスが実装されることです。 自動的に.
ArFragmentコンポーネントは、アプリにカメラの権限があるかどうかを自動的に確認し、必要に応じて、ARセッションを作成する前にカメラの権限を要求します。アプリでArFragmentを使用するため、カメラの許可をリクエストするためのコードを記述する必要はありません。
ARが必須かオプションか?
AR機能を使用するアプリケーションには2つのタイプがあります。
1. ARが必要
優れたユーザーエクスペリエンスを提供するためにアプリケーションがGoogle ARCoreに依存している場合、ARCoreをサポートするデバイスにのみダウンロードされるようにする必要があります。アプリが「AR Required」とマークすると、デバイスがARCoreをサポートしている場合にのみGoogle Playストアに表示されます。
私たちのアプリケーション以来 する ARCoreが必要です。マニフェストを開き、次を追加します。
また、理論上はARCoreをサポートしているが、実際にはARCoreがインストールされていないデバイスにアプリケーションがダウンロードされる可能性があります。アプリが「AR Required」としてマークされると、ターゲットデバイスにまだ存在しない場合、Google PlayはアプリとともにARCoreを自動的にダウンロードしてインストールします。
アプリがandroid:required =” true”の場合でも、 まだ ユーザーがアプリをダウンロードしてからARCoreをアンインストールした可能性があるため、実行時にARCoreが存在すること、またはARCoreのバージョンが古いことを確認する必要があります。
良いニュースは、ArFragmentを使用していることです。ArFragmentは、作成する前にARCoreがインストールされ、最新であることを自動的に確認します 各 ARセッション–繰り返しますが、これは手動で実装する必要はありません。
2. ARオプション
アプリに便利なAR機能が含まれているが、コア機能を提供するのに必須ではない場合、このアプリケーションを「ARオプション」としてマークできます。アプリは、実行時にGoogle ARCoreが存在するかどうかを確認し、 ARCoreをサポートしないデバイスのAR機能。
「AR Optional」アプリを作成すると、ARCoreは じゃない デバイスにARCoreをサポートするために必要なすべてのハードウェアとソフトウェアがある場合でも、アプリケーションと一緒に自動的にインストールされます。 「AR Optional」アプリは、ARCoreが存在するかどうかを確認し、必要に応じて最新バージョンをダウンロードする必要があります。
ARCoreがアプリにとって重要でない場合は、マニフェストに次を追加できます。
マニフェストを開いている間に、android:configChangesとandroid:screenOrientationも追加して、MainActivityが方向の変更を適切に処理できるようにします。
これらすべてをマニフェストに追加すると、完成したファイルは次のようになります。
ArFragmentをレイアウトに追加します
ARCoreのArFragmentを使用します。これは、各ARセッションの開始時にいくつかの主要なARCoreタスクを自動的に処理するためです。最も注目すべきは、ArFragmentは、互換性のあるバージョンのARCoreがデバイスにインストールされていること、およびアプリに現在カメラの権限があることを確認します。
デバイスがアプリのAR機能をサポートできることをArFragmentが確認すると、ArSceneView ARCoreセッションが作成され、アプリのARエクスペリエンスが利用可能になります。
通常のAndroidフラグメントと同様に、ArFragmentフラグメントをレイアウトファイルに追加できるため、activity_main.xmlファイルを開いて「com.google.ar.sceneform.ux.ArFragment」コンポーネントを追加します。
GoogleのPolyを使用して3Dモデルをダウンロードする
Renderablesを作成する方法はいくつかありますが、この記事では3Dアセットファイルを使用します。
Sceneformは、アニメーションの有無にかかわらず、.OBJ、.glTF、および.FBX形式の3Dアセットをサポートします。これらのサポートされている形式のいずれかで3Dモデルを取得できる場所はたくさんありますが、このチュートリアルでは、GoogleのPolyリポジトリからダウンロードした.OBJファイルを使用します。
Polyウェブサイトに移動し、使用するアセットを.OBJ形式でダウンロードします(このT-Rexモデルを使用しています)。
- モデルのソースアセットファイル(.OBJ、.FBX、または.glTF)を含むフォルダーを解凍します。モデルによっては、このフォルダーには、.mtl、.bin、.png、または.jpeg形式のファイルなど、モデルの依存関係も含まれる場合があります。
3DモデルをAndroid Studioにインポートする
アセットを取得したら、Sceneformプラグインを使用してAndroid Studioにインポートする必要があります。これは、次のことを必要とするマルチステッププロセスです。
- 「sampledata」フォルダーを作成します。 Sampledataは、設計時のサンプルデータ用の新しいフォルダータイプで、APKには含まれませんが、Android Studioエディターで使用できます。
- 元の.OBJアセットファイルを「sampledata」フォルダーにドラッグアンドドロップします。
- .OBJファイルでSceneformのインポートと変換を実行すると、.sfaファイルと.sfbファイルが生成されます。
もっと簡単に見えるかもしれませんが、 しないでください .OBJファイルをプロジェクトの「res」ディレクトリに直接ドラッグアンドドロップします。これにより、モデルが不必要にAPKに含まれてしまいます。
Android Studioプロジェクトにはデフォルトで「sampledata」フォルダーが含まれていないため、手動で作成する必要があります。
- Controlキーを押しながらプロジェクトの「アプリ」フォルダーをクリックします。
- 「新規」>「サンプルデータディレクトリ」を選択し、「sampledata」という名前のフォルダーを作成します。
- 以前にダウンロードした3Dモデルファイルに移動します。ソースアセットファイル(.OBJ、.FBX、または.glTF)を見つけて、「sampledata」ディレクトリにドラッグアンドドロップします。
- モデルに依存関係(.mtl、.bin、.png、.jpeg形式のファイルなど)があるかどうかを確認します。これらのファイルが見つかった場合は、それらを「sampledata」フォルダーにドラッグアンドドロップします。
- Android Studioで、Controlキーを押しながら3Dモデルソースファイル(.OBJ、.FBX、または.glTF)をクリックし、[シーンフォームアセットのインポート]を選択します。
- 後続のウィンドウには、Sceneformが生成するファイルに関する情報が表示されます。これには、結果の.sfaファイルがプロジェクト内で保存される場所が含まれます。 「raw」ディレクトリを使用します。
- 入力した情報に満足したら、[完了]をクリックします。
このインポートにより、プロジェクトにいくつかの変更が加えられます。 build.gradleファイルを開くと、Sceneformプラグインがプロジェクトの依存関係として追加されていることがわかります。
依存関係{classpath com.android.tools.build:gradle:3.5.0-alpha06 classpath com.google.ar.sceneform:plugin:1.7.0 //注:アプリケーションの依存関係をここに置かないでください。それらは//個々のモジュールbuild.gradleファイルに属します}}
モジュールレベルのbuild.gradleファイルを開くと、インポートした3Dモデルの新しいsceneform.asset()エントリが見つかります。
apply plugin:com.google.ar.sceneform.plugin //インポート中に指定した「ソース資産パス」// sceneform.asset(sampledata / dinosaur.obj、//インポート中に指定した「マテリアルパス」//デフォルト、// import // sampledata / dinosaur.sfaで指定した「.sfa出力パス」、// import // src / main / assets / dinosaurで指定した「.sfb出力パス」
「sampledata」フォルダーと「raw」フォルダーを見ると、それぞれに新しい.sfaファイルと.sfbファイルが含まれていることがわかります。
Android Studioの新しいSceneform Viewerで.sfaファイルをプレビューできます。
- Android Studioのメニューバーから[表示]> [ツールウィンドウ]> [ビューア]を選択します。
- 左側のメニューで、.sfaファイルを選択します。 3DモデルがViewerウィンドウに表示されます。
3Dモデルを表示する
次のタスクは、周囲を理解するARセッションを作成し、ユーザーが3Dモデルを拡張シーンに配置できるようにすることです。
これには、次のことを行う必要があります。
1. ArFragmentメンバー変数を作成します
ArFragmentは、ARセッションの作成に伴う重荷の多くを実行するため、MainActivityクラス全体でこのフラグメントを参照します。
次のスニペットでは、ArFragmentのメンバー変数を作成し、onCreate()メソッドで初期化します。
private ArFragment arCoreFragment; @Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState); ... ... ...} setContentView(R.layout.activity_main); arCoreFragment =(ArFragment)//フラグメントマネージャを使用してフラグメントを検索// getSupportFragmentManager()。findFragmentById(R.id.main_fragment);
2. ModelRenderableを構築する
.sfbファイルをModelRenderableに変換する必要があります。これにより、最終的に3Dオブジェクトがレンダリングされます。
ここでは、プロジェクトのres / raw / dinosaur .sfbファイルからModelRenderableを作成しています。
プライベートModelRenderable dinoRenderable; ... ... ... ModelRenderable.builder().setSource(this、R.raw.dinosaur).build().thenAccept(renderable-> dinoRenderable = renderable).exceptionally(throwable-> {Log.e( TAG、「レンダリング可能ファイルをロードできません」); nullを返す;}); }
3.ユーザー入力に応答する
ArFragmentには、タップ、ドラッグ、ピンチ、およびツイストジェスチャーのサポートが組み込まれています。
このアプリでは、ユーザーはARCore平面にタップを与えることで、その平面に3Dモデルを追加します。
この機能を提供するには、プレーンがタップされるたびに呼び出されるコールバックを登録する必要があります。
arCoreFragment.setOnTapArPlaneListener((HitResult hitResult、Plane plane、MotionEvent motionEvent)-> {if(dinoRenderable == null){return;}
4.モデルを固定する
このステップでは、ArSceneViewを取得し、それをシーンの親ノードとして機能するAnchorNodeにアタッチします。
ArSceneViewは、デバイスのカメラ画像のレンダリング、ARエクスペリエンスを開始するためにユーザーがデバイスを保持および移動する方法を示すSceneform UXアニメーションの表示など、いくつかの重要なARCoreタスクを実行します。 ArSceneViewはまた、検出したプレーンを強調表示し、ユーザーがシーン内に3Dモデルを配置できるようにします。
ARSceneViewコンポーネントには、シーンがアタッチされています。これは、レンダリングする必要があるすべてのノードを含む親子データ構造です。
まず、AnchorNodeタイプのノードを作成します。これは、ArSceneViewの親ノードとして機能します。
すべてのアンカーノードは同じ実世界の位置にとどまるため、アンカーノードを作成することにより、3Dモデルが拡張シーン内の所定の位置に固定されたままになるようにします。
アンカーノードを作成しましょう。
AnchorNode anchorNode = new AnchorNode(anchor);
次に、getArSceneView()を使用してArSceneViewを取得し、それをAnchorNodeにアタッチできます。
anchorNode.setParent(arCoreFragment.getArSceneView()。getScene());
5.移動、スケーリング、回転のサポートを追加します
次に、TransformableNodeタイプのノードを作成します。 TransformableNodeは、ユーザーのジェスチャーに基づいて、ノードの移動、スケーリング、回転を行います。
TransformableNodeを作成したら、それをRenderableにアタッチできます。これにより、ユーザーの操作に基づいてモデルがスケーリングおよび移動できるようになります。最後に、TransformableNodeをAnchorNodeに接続する必要があります。これは、TransformableNodeを保証する子親関係にあります。 そして レンダリング可能なオブジェクトは、拡張シーン内の固定されたままです。
TransformableNode transformableNode = new TransformableNode(arCoreFragment.getTransformationSystem()); // transformableNodeをanchorNode //に接続しますtransformableNode.setParent(anchorNode); transformableNode.setRenderable(dinoRenderable); //ノードを選択// transformableNode.select(); }); }
完成したMainActivity
上記のすべてを実行すると、MainActivityは次のようになります。
import android.app.Activity; import android.app.ActivityManager; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.net.Uri; import android.os.Build; import android.os.Build.VERSION_CODES; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import androidx.annotation.RequiresApi; import com.google.ar.core.Anchor; import com.google.ar.core.HitResult; import com.google.ar.core.Plane; import com.google.ar.sceneform.AnchorNode; import com.google.ar.sceneform.rendering.ModelRenderable; import com.google.ar.sceneform.ux.ArFragment; import com.google.ar.sceneform.ux.TransformableNode;パブリッククラスMainActivityはAppCompatActivityを拡張します{private static final String TAG = MainActivity.class.getSimpleName(); private static final double MIN_OPENGL_VERSION = 3.0; // ModelRenderable //プライベートModelRenderableのメンバー変数を作成しますdinoRenderable; // ArFragment // private ArFragment arCoreFragment;のメンバー変数を作成します。 @RequiresApi(api = VERSION_CODES.N)@Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState); if(!checkDevice((this))){return; } setContentView(R.layout.activity_main); arCoreFragment =(ArFragment)//フラグメントマネージャーを使用してフラグメントを検索// getSupportFragmentManager()。findFragmentById(R.id.main_fragment); if(Build.VERSION.SDK_INT> = VERSION_CODES.N){// ModelRenderable // ModelRenderable.builder().setSource(this、R.raw.dinosaur).build().thenAccept(renderable-> dinoRenderable = renderableをビルド).exceptionally(//エラーが発生した場合... // throwable-> {// ...次にLogcat // Log.e(TAG、 "Unable to load renderable"); return null;} ); } // onTapイベントのリッスン// arCoreFragment.setOnTapArPlaneListener((HitResult hitResult、Plane plane、MotionEvent motionEvent)-> {if(dinoRenderable == null){return;} Anchor anchor = hitResult.createAnchor(); //ビルドタイプAnchorNode // AnchorNodeのノードanchorNode = new AnchorNode(anchor); // AnchorNodeをScene // anchorNode.setParent(arCoreFragment.getArSceneView()。getScene())に接続します//タイプTransformableNode //のノードを構築しますTransformableNode transformableNode = new TransformableNode(arCoreFragment.getTransformationSystem()); // TransformableNodeをAnchorNode //に接続します// transformableNode.setParent(anchorNode); // Renderable //を追加します/ transformableNode.select();}); } public static boolean checkDevice(final Activity activity){//デバイスでAndroid Marshmallow以前が実行されている場合... // if(Build.VERSION.SDK_INT <VERSION_CODES.N){// ... Logcat // Log.e(TAG、「SceneformにはAndroid N以上が必要です」); activity.finish(); falseを返します。 } String openGlVersionString =((ActivityManager)activity.getSystemService(Context.ACTIVITY_SERVICE)).getDeviceConfigurationInfo()// OpenGL ES // .getGlEsVersion();のバージョンを確認します。 //デバイスがOpenGL ES 3.0未満を実行している場合... // if(Double.parseDouble(openGlVersionString)<MIN_OPENGL_VERSION){// ...次にLogcat // Log.e(TAG、 " OpenGL ES 3.0以降が必要です "); activity.finish(); falseを返します。 } trueを返します。 }}
完成したプロジェクトはGitHubからダウンロードできます。
Google ARCore拡張現実アプリのテスト
これで、サポートされている物理的なAndroidデバイスでアプリケーションをテストする準備が整いました。 ARCoreをサポートするデバイスを所有していない場合は、AndroidエミュレーターでARアプリをテストすることができます(追加の構成については、次のセクションで説明します)。
プロジェクトをテストするには 物理的な Androidデバイス:
- ターゲットデバイスにアプリケーションをインストールします。
- プロンプトが表示されたら、アプリケーションにデバイスのカメラへのアクセスを許可します。
- ARCoreアプリのインストールまたは更新を求められたら、[続行]をタップし、ダイアログを完了して、最新かつ最高のバージョンのARCoreを実行していることを確認します。
- カメラビューが表示され、デバイスを持っている手のアニメーションが完成します。アニメーションが示すように、カメラを平らな面に向け、デバイスを円運動で動かします。しばらくすると、一連のドットが表示され、平面が検出されたことを示します。
- これらのドットの位置に満足したら、タップしてください。選択した平面に3Dモデルが表示されます。
- モデルを物理的に動かしてみてください。周囲の状況に応じて、周囲を360度完全に表示できる場合があります。オブジェクトが実際の光源と一致する影を落としていることも確認する必要があります。
Android仮想デバイスでのARCoreのテスト
Android Virtual Device(AVD)でARCoreアプリをテストするには、Android Emulatorバージョン27.2.9以降が必要です。また、AVDでGoogle Playストアにサインインし、OpenGL ES 3.0以上が有効になっている必要があります。
OpenGL ES 3.0以降がAVDで現在有効になっているかどうかを確認するには:
- 通常どおりAVDを起動します。
- 新しいターミナルウィンドウ(Mac)またはコマンドプロンプト(Windows)を開きます。
- ディレクトリ(「cd」)を変更して、ターミナル/コマンドプロンプトがAndroid SDKの「adb」プログラムの場所を指すようにします。たとえば、私のコマンドは次のようになります。
Cd / Users / jessicathornsby / Library / Android / sdk / platform-tools
- キーボードの「Enter」キーを押します。
- 次のコマンドをターミナルにコピーして貼り付け、「Enter」キーを押します。
./adb logcat | grep eglMakeCurrent
ターミナルが「ver 3 0」以上を返す場合、OpenGL ESは正しく構成されています。ターミナルまたはコマンドプロンプトに3.0より前のものが表示される場合、OpenGL ES 3.0を有効にする必要があります。
- AVDに切り替えます。
- Androidエミュレーターの横にある「拡張コントロール」ボタンのストリップを見つけて、「設定」>「詳細」を選択します。
- 「OpenGL ES APIレベル>最大レンダラー(OpenGL ES 3.1まで)」に移動します。
- エミュレータを再起動します。
ターミナル/コマンドプロンプトウィンドウで、次のコマンドをコピーして貼り付け、[Enter]キーを押します
./adb logcat | grep eglMakeCurrent
「ver 3 0」以上の結果が得られるはずです。これは、OpenGL ESが正しく構成されていることを意味します。
最後に、AVDが最新バージョンのARCoreを実行していることを確認してください。
- ARCoreのGitHubページに移動し、エミュレータ用のARCoreの最新リリースをダウンロードします。たとえば、執筆時点で最新のリリースは「ARCore_1.7.0.x86_for_emulator.apk」でした
- APKを実行中のAVDにドラッグアンドドロップします。
AVDでプロジェクトをテストするには、アプリケーションをインストールし、プロンプトが表示されたらAVDの「カメラ」へのアクセスを許可します。
シミュレートされた部屋のカメラビューが表示されます。アプリケーションをテストするには、この仮想空間内を移動し、シミュレートされた平面を見つけ、クリックしてこの表面にモデルを配置します。
「Option」(macOS)または「Alt」(LinuxまたはWindows)キーを押したまま、次のキーボードショートカットのいずれかを使用して、仮想カメラを仮想ルーム内で移動できます。
- 左または右に移動します。 AまたはDを押します。
- 下または上に移動します。 QまたはEを押します。
- 前後に移動します。 WまたはSを押す
「Option」または「Alt」を押してからマウスを使用して、仮想シーンを「移動」することもできます。これは最初は少し不格好に感じるかもしれませんが、練習すれば仮想空間をうまく探索できるはずです。シミュレートされた平面を見つけたら、白い点をクリックして、この表面に3Dモデルを配置します。
まとめ
この記事では、ARCoreとSceneformプラグインを使用して、シンプルな拡張現実アプリを作成しました。
自分のプロジェクトでGoogle ARCoreを使用することに決めた場合は、下のコメントで作成したものを必ず共有してください!