私はArcoreのを勉強しています参考資料を、開発からコースを作るコーセラ、と読み、理解してから学ぶサンプル。
しかし、私はまだいくつかの実際の使用例といくつかの定義が欠落しています。
セッションとは何ですか?私はArcoreの使用を必要とすることたびに私はセッションが必要ですか?私が見ると、画面に自分の3Dモデルレンダラ/描くことができるように、セッションは常にカメラが接続していますか?私は、セッションなしでこれを行うことができますか?
カメラはgetPoseとフレームがGetPoseを持っている、彼らの間diferencesは何ですか?
私は約この質問分割を作ると思ったが、どういうわけか、私は、彼らがすべて接続されていることを知っています。セッション、CameraAr、フレームとポーズ。
ArSessionについて
ArSession
ARパズルの中で最も重要な要素です。セッションは、ARシステムの状態を管理し、セッションのライフサイクルを処理します。Sessionクラスは、 ArcoreのAPIへのメインエントリポイントです。このクラスは、ユーザーがセッション、それは、最も重要なのは、起動または停止し、設定を作成することができます受け取るArFrames
ことができるようにアクセスするARCamera
画像やデバイスポーズを。Arcoreのを使用するためには必要です
ArSession
。Arcoreのは、(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
、完全にユニークであると考えられるべきである座標空間の世界を。数値の座標ARAnchors
とARCamera
、それらが取り出された時に描画フレーム外で使用すべきではありません。すべての
ArFrame
店舗Arcoreの者の状態に関する次の情報::
- RGB画像そのもの
- トラッキングステータス
- 世界に対するカメラのポーズ
- 推定照明パラメータ
- (ポイント雲のような)オブジェクトへの更新に関する情報
コードの例:
private void onUpdateFrame(FrameTime frameTime) {
Frame frame = arFragment.getArSceneView().getArFrame();
// .............
}