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