Kontrol alur AR session
Dokumen ini akan memperkenalkan kontrol alur AR session, termasuk cara membuat, memulai, menghentikan, dan menghancurkan AR session.
Sebelum memulai
- Pahami konsep dan alur AR session
Membuat
Gunakan appId pustaka pelokasian awan dalam konfigurasi, serverAddress layanan awan, apiKey dan apiSecret untuk membuat APIKeyAccessData.
Kemudian gunakan APIKeyAccessData yang dibuat untuk membuat MegaTrackerConfigs.
Gunakan MegaTrackerConfigs dan licenseKey dalam konfigurasi untuk membuat SessionConfigs.
Akhirnya, gunakan metode createSession(sessionConfigs) dari EasyARMegaComponent yang terpasang di scene xr-frame untuk membuat session.
createSession() {
// Dapatkan megaComponent yang terpasang di scene
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
// Konfigurasi otentikasi layanan cloud MegaTracker
const apiKeyAccess = new mega.APIKeyAccessData(this.data.appId, this.data.serverAddress, this.data.apiKey, this.data.apiSecret);
const megaTrackerConfigs: easyar.MegaTrackerConfigs = {
access: apiKeyAccess
}
// Konfigurasi Session
const sessionConfigs: easyar.SessionConfigs = {
megaTrackerConfigs: megaTrackerConfigs,
licenseKey: settings.EasyARLicenseKey
}
// Buat instance
session = megaComponent.createSession(sessionConfigs);
}
Kode ini menunjukkan cara mendapatkan
megaComponentdari scene dan kemudian menggunakan konfigurasi untuk membuat instance session.
Hati-Hati
Batasan instance tunggal: hanya satu instance Session yang diizinkan dalam satu scene. Sebelum membuat Session baru, pastikan untuk memanggil closeSession() untuk menghancurkan instance lama, jika tidak akan menyebabkan kegagalan pembuatan.
Memulai
Biasanya gunakan metode start(options) dari EasyARSession dalam callback kesiapan sistem AR xr-frame untuk memulai session.
Peringatan
MegaTracker bergantung pada data yang disediakan oleh pelacak AR planar, dan tidak dapat bekerja sebelum pelacak planar diinisialisasi.
Di WXML, gunakan bind:ready="handleReady" untuk mendaftarkan acara kesiapan sistem AR:
<xr-scene ar-system="modes:Plane; planeMode: 1" bind:ready="handleReady">
Dalam fungsi callback handleReady komponen xr-frame, gunakan metode start(options) dari EasyARSession untuk memulai session.
handleReady: function(event) {
try {
//Mulai Session, default mencoba ulang 5 kali jika gagal
await session.start();
} catch (err) {
console.error(`EasyAR Session initialization failed: ${err.message}`);
return;
}
}
Menghentikan dan menghancurkan
Gunakan metode closeSession() dari EasyARMegaComponent yang terpasang di scene xr-frame untuk menghancurkan session.
Disarankan untuk memanggilnya dalam siklus hidup detached komponen xr-frame untuk memastikan penghancuran saat meninggalkan halaman (yaitu saat instance komponen dihapus dari pohon node halaman).
lifetimes: {
detached: function() {
const megaElement = scene.getElementById('easyar-mega');
const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
megaComponent.closeSession();
}
}
Pergantian latar depan dan latar belakang
Saat halaman pindah ke latar belakang, gunakan metode pause() dari EasyARSession untuk menjeda session. Saat halaman kembali ke latar depan, gunakan metode resume() dari EasyARSession untuk melanjutkan session.
/** Pemanggilan di halaman mini program*/
onHide() {
if (this.ar) {
this.ar.pauseSession();
}
},
onShow() {
if (this.ar) {
this.ar.resumeSession();
}
}
/** Fungsi dalam komponen xr-frame*/
pauseSession(): void {
if (!session) { console.error("EasyAR Session is not ready"); return;}
session.pause();
},
resumeSession(): void {
if (!session) { console.error("EasyAR Session is not ready"); return;}
session.resume();
}
Dalam kode ini, komponen xr-frame mengekspos dua fungsi:
pauseSession()danresumeSession().Di halaman mini program, panggil
pauseSession()di onHide saat mini program berpindah dari latar depan ke latar belakang untuk menjeda session.Di onShow saat mini program berpindah dari latar belakang ke latar depan, panggil
resumeSession()untuk melanjutkan session.