Arcoreの - セッション、フレーム、カメラとポーズ

汗国:

私はArcoreのを勉強しています参考資料を開発からコースを作るコーセラ、と読み、理解してから学ぶサンプル

しかし、私はまだいくつかの実際の使用例といくつかの定義が欠落しています。

セッションとは何ですか?私はArcoreの使用を必要とすることたびに私はセッションが必要ですか?私が見ると、画面に自分の3Dモデルレンダラ/描くことができるように、セッションは常にカメラが接続していますか?私は、セッションなしでこれを行うことができますか?

カメラはgetPoseとフレームがGetPoseを持っている、彼らの間diferencesは何ですか?

私は約この質問分割を作ると思ったが、どういうわけか、私は、彼らがすべて接続されていることを知っています。セッション、CameraAr、フレームとポーズ。

アンディ:

ArSessionについて

ArSessionARパズルの中で最も重要な要素ですセッションは、ARシステムの状態を管理し、セッションのライフサイクルを処理します。Sessionクラスは、 ArcoreのAPIへのメインエントリポイントです。このクラスは、ユーザーがセッション、それは、最も重要なのは、起動または停止し、設定を作成することができます受け取るArFramesことができるようにアクセスするARCamera画像やデバイスポーズを

Arcoreのを使用するためには必要ですArSessionArcoreのは、(3DモデルをレンダリングされませんRenderables)。このジョブはのためにあるSceneformフレームワーク

ここでは、画像の説明を入力します。

コードの例:

private Session mSession;
Config config = new Config(mSession);

if (!mSession.isSupported(config)) {
    showSnackbarMessage("This phone doesn't support AR", true);
}
mSession.configure(config);

また、セッションの設定は、ネストされたクラスを含めることができます。

  • Config.AugmentedFaceMode(選択の振る舞いAugmented Facesサブシステム)
  • Config.CloudAnchorMode(クラウドアンカーモードConfig
  • Config.FocusMode(選択の所望の動作camera focusサブシステム)
  • Config.LightEstimationMode(の行動選択lighting estimationのサブシステムを)
  • Config.PlaneFindingMode(の行動選択plane detectionのサブシステムを)
  • Config.UpdateMode(選択の振る舞いupdate()

ポーズについて

Pose一方から不変剛体変換は、別の座標空間を表します。すべてArcoreののAPIから提供されるように、ポーズは常にワールド座標空間へのオブジェクトのローカル座標空間からの変換を記述する。変換は、翻訳続い起源について四元回転を使用して定義されます。

コードの例:

float[] position = { 0, 0, -2.2 };          //  { x, y, z } position 
float[] rotation = { 0, 0, 0, 1 };          //  { x, y, z, w } quaternion rotation

Session session = arFragment.getArSceneView().getSession();
Anchor myAnchor = session.createAnchor(new Pose(position, rotation));

ARCameraについて

ARCameraシーンを見たを通じて視点を決定し、仮想カメラを表します。カメラはの一部である場合ArSceneViewは、カメラが自動的に追跡カメラポーズを Arcoreのから。ARCameraは長命オブジェクトであり、カメラのプロパティは、すべての時間が更新されるSession.update()と呼ばれています。Cameraクラスは、各内の画像や追加情報をキャプチャするために使用されたカメラの情報を提供しますArFrame

コードの例:

// Shared camera access with ARCore

sharedSession = new Session(this, EnumSet.of(Session.Feature.SHARED_CAMERA))
sharedCamera = sharedSession.getSharedCamera();
cameraId = sharedSession.getCameraConfig().getCameraId();

ArFrameについて

環境のArcoreの者の理解が変化したとき、それは、そのモデル調整の世界を一貫性のあるものを維持します。このような場合、数値の位置(座標)ARCameraとはARAnchors、それらが変更はすべてのことを意味represent.These物理的な場所の適切な相対位置を維持するために大幅に変更することができArFrame、完全にユニークであると考えられるべきである座標空間の世界を数値の座標ARAnchorsARCamera、それらが取り出された時に描画フレーム外で使用すべきではありません。

すべてのArFrame店舗Arcoreの者の状態に関する次の情報::

  • RGB画像そのもの
  • トラッキングステータス
  • 世界に対するカメラのポーズ
  • 推定照明パラメータ
  • (ポイント雲のような)オブジェクトへの更新に関する情報

コードの例:

private void onUpdateFrame(FrameTime frameTime) {

    Frame frame = arFragment.getArSceneView().getArFrame();

    // .............
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=179995&siteId=1