Table of Contents

Class ARSession

Ruang Nama
easyar
Rakitan
EasyAR.Sense.dll

Mengontrol sesi AR dalam adegan MonoBehaviour. Sebuah sesi berisi sekumpulan komponen yang dirakit menjadi ARAssembly dan mengontrol aliran data selama siklus hidupnya. Komponen ini adalah pintu masuk ke AR. Tidak diperbolehkan memiliki beberapa instance aktif pada saat yang sama.

Semua fungsi komponen EasyAR hanya dapat digunakan setelah StartSession().

Transform relatif antara Camera dan beberapa komponen AR dikontrol oleh sesi. Salah satu objek disebut CenterObject, yang tidak bergerak dalam adegan, sementara objek lain bergerak relatif terhadap CenterObject ini. Objek ini dipilih berdasarkan nilai CenterMode. Penjelasan lebih rinci dapat dilihat di deskripsi ARSession.ARCenterMode.

[DefaultExecutionOrder(-2147483648)]
[DisallowMultipleComponent]
[RequireComponent(typeof(EasyARController), typeof(DiagnosticsController))]
[RequireComponent(typeof(FrameRecorder), typeof(FramePlayer), typeof(CameraImageRenderer))]
public class ARSession : MonoBehaviour
Pewarisan
ARSession

Bidang

AutoStart

Mulai sesi secara otomatis saat MonoBehaviour.Start. Jika disetel ke false, Anda perlu memanggil StartSession() secara manual untuk memulai sesi.

[SerializeField]
[HideInInspector]
public bool AutoStart

CenterMode

Mode pusat AR. Dapat diubah kapan saja, berlaku segera. Jika mode yang ditentukan tidak tersedia, mode tersebut akan diubah secara otomatis ke mode yang tersedia.

[SerializeField]
[HideInInspector]
public ARSession.ARCenterMode CenterMode

HorizontalFlip

Mode render cermin horizontal. Dapat diubah kapan saja, berlaku segera. Hanya tersedia saat menggunakan pelacakan gambar atau objek.

[SerializeField]
[HideInInspector]
public ARSession.FlipOptions HorizontalFlip

Properti

AssembleOptions

Opsi perakitan Sesi, perlu disetel sebelum Assemble() (jika belum dipanggil sebelumnya, StartSession() akan memanggilnya secara implisit).

public AssembleOptions AssembleOptions { get; }

Assembly

Rakitan komponen AR.

public ARAssembly Assembly { get; }

AvailableCenterMode

Mode pusat yang tersedia untuk sesi saat ini.

public IReadOnlyList<ARSession.ARCenterMode> AvailableCenterMode { get; }

CenterObject

Objek pusat yang digunakan sesi ini pada frame saat ini.

Objek ini mewakili objek atau induknya yang tidak bergerak dalam ruang Unity. Ini mungkin Origin, Camera, atau `target` tertentu. `Target` dapat berupa objek yang berisi komponen TargetController atau BlockRootController. Saat menggunakan peta ruang renggang dan EasyAR Mega, pusat sebenarnya GameObject adalah objek map atau block yang terdeteksi di bawah node root, CenterObject adalah induk dari objek ini. Penjelasan lebih rinci dapat dilihat di deskripsi ARSession.ARCenterMode.

public GameObject CenterObject { get; }

Diagnostics

Komponen diagnostik Sesi.

public DiagnosticsController Diagnostics { get; }

Origin

Asal sesi saat fungsi pelacakan gerak apa pun berjalan.

Ini akan dipilih secara otomatis dari adegan, atau dibuat oleh EasyAR atau ekstensi sumber-frame pihak ketiga jika tidak ada. Saat menggunakan sumber-frame bawaan, jika XROrigin dari kerangka Unity XR ada, itu akan dipilih. Jika paket AR Foundation tidak ada, hanya XR Origin dengan struktur pohon default yang akan dipilih.

public GameObject Origin { get; }

Report

Laporan Sesi. Ini tersedia untuk dilihat setelah assemble selesai, dan akan diperbarui saat status sesi berubah. Digunakan untuk melihat detail kerusakan sesi atau detail ketersediaan komponen.

public SessionReport Report { get; }

SpecificTargetCenter

Objek pusat yang ditentukan secara manual. CenterMode == SpecificTarget, CenterObject akan diatur ke objek ini. Dapat diubah kapan saja, berlaku segera.

Objek ini harus berisi komponen TargetController atau BlockRootController.

public GameObject SpecificTargetCenter { get; set; }

State

Status sesi saat ini.

public ARSession.SessionState State { get; }

TrackingStatus

Status pelacakan gerak saat fungsi pelacakan gerak apa pun berjalan.

public Optional<MotionTrackingStatus> TrackingStatus { get; }

Metode

Assemble()

Rakit sesi menggunakan AssembleOptions. Jika dipanggil, ini akan dipanggil secara otomatis di StartSession().

public IEnumerator Assemble()

ImageCoordinatesFromScreenCoordinates(Vector2)

Transformasi dari sistem koordinat layar ([0, 1]^2) ke sistem koordinat gambar ([0, 1]^2). pointInView perlu dinormalisasi ke [0, 1]^2. Tidak tersedia di headset.

public Optional<Vector2> ImageCoordinatesFromScreenCoordinates(Vector2 pointInView)

Parameter

pointInView

StartSession()

Mulai sesi. Jika AutoStart true, ini akan dipanggil secara otomatis di MonoBehaviour.Start.

public void StartSession()

StopSession(bool)

Hentikan sesi yang dimulai. Semua pembaruan transform dan pembaruan rendering gambar akan berhenti. Anda dapat mempertahankan gambar frame terakhir saat berhenti, tetapi hanya efektif saat EasyAR mengontrol rendering gambar (tidak berlaku untuk AR Foundation dan headset dll.).

public void StopSession(bool keepLastFrame)

Parameter

keepLastFrame

Peristiwa

AssembleUpdate

Peristiwa pembaruan Assemble() sesi. Peristiwa ini akan dipicu 1-2 kali dalam satu Assemble() (jika belum dipanggil sebelumnya, StartSession() akan memanggilnya secara implisit). Panggilan pertama terjadi saat Assemble selesai. Jika pembaruan daftar perangkat sudah selesai saat Assemble selesai, tidak akan ada panggilan kedua; jika tidak, panggilan kedua akan terjadi saat pembaruan daftar perangkat selesai.

public event Action<SessionReport.AvailabilityReport> AssembleUpdate

InputFrameUpdate

Peristiwa pembaruan frame input, hanya dipicu saat InputFrame yang ditampilkan oleh sesi berubah. Peristiwa ini tidak akan diterima di headset, dan jika ada gambar transparan, renderingnya dilakukan oleh perangkat.

public event Action<InputFrame> InputFrameUpdate

PostSessionUpdate

Peristiwa penyelesaian pembaruan Sesi, frekuensinya sama dengan frekuensi MonoBehaviour.Update (di headset memerlukan implementasi yang benar oleh penulis ekstensi). Saat peristiwa ini dipicu, semua perubahan transform yang dikontrol oleh EasyAR dalam frame tersebut telah selesai.

public event Action PostSessionUpdate

StateChanged

Peristiwa perubahan State sesi.

public event Action<ARSession.SessionState> StateChanged