Table of Contents

Contrôle du flux AR Session

Ce document présente le contrôle du flux AR Session, notamment comment créer, démarrer, arrêter et détruire AR Session.

Avant de commencer

Création

Utilisez le appId de la cloud localization library, le serverAddress du cloud service, apiKey et apiSecret dans la configuration pour créer APIKeyAccessData.

Utilisez ensuite le APIKeyAccessData créé pour créer MegaTrackerConfigs.

Puis utilisez MegaTrackerConfigs et le licenseKey dans la configuration pour créer SessionConfigs.

Enfin, utilisez la méthode createSession(sessionConfigs) de EasyARMegaComponent montée dans la scène xr-frame pour créer la session.

createSession() {
    // obtient le megaComponent monte dans la scene
    const megaElement = scene.getElementById('easyar-mega');
    const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
    // configuration d authentification du service 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
    }
    // configuration de Session
    const sessionConfigs: easyar.SessionConfigs = {
        megaTrackerConfigs: megaTrackerConfigs,
        licenseKey: settings.EasyARLicenseKey
    }
    // cree une instance
    session = megaComponent.createSession(sessionConfigs);
}

Ce code montre comment obtenir megaComponent depuis la scène, puis utiliser la configuration pour créer une instance session.

Attention

Limite d'instance unique: une seule instance Session est autorisée dans une scène. Avant de créer une nouvelle Session, assurez-vous que closeSession() a été appelé pour détruire l'ancienne instance, sinon la création échouera.

Démarrage

En général, dans le callback où le système AR de xr-frame est prêt, utilisez la méthode start(options) de EasyARSession pour démarrer la session.

Avertissement

MegaTracker dépend des données fournies par le planar AR tracker et ne peut pas fonctionner avant la fin de l'initialisation du planar tracker.

Dans WXML, utilisez bind:ready="handleReady" pour enregistrer l'événement indiquant que le système AR est prêt:

<xr-scene ar-system="modes:Plane; planeMode: 1" bind:ready="handleReady">

Dans la fonction callback handleReady du composant xr-frame, utilisez la méthode start(options) de EasyARSession pour démarrer la session.

handleReady: function(event) {
    try {
        //demarre Session ; par defaut, reessaie 5 fois en cas d echec
        await session.start();
    } catch (err) {
        console.error(`EasyAR Session initialization failed: ${err.message}`);
        return;
    }
}

Arrêter et détruire

Utilisez la méthode closeSession() de EasyARMegaComponent montée dans la scène xr-frame pour détruire la session.

Il est recommandé de l'appeler dans le lifecycle detached du composant xr-frame, afin de garantir sa destruction lorsque vous quittez la page, c'est-à-dire lorsque l'instance du composant est supprimée de l'arborescence des nœuds de la page.

lifetimes: {
    detached: function() {
        const megaElement = scene.getElementById('easyar-mega');
        const megaComponent = megaElement.getComponent("easyar-mega") as easyar.EasyARMegaComponent;
        megaComponent.closeSession();
    }
}

Passage entre foreground et background

Lorsque la page passe en background, utilisez la méthode pause() de EasyARSession pour suspendre la session. Lorsque la page revient en foreground, utilisez la méthode resume() de EasyARSession pour reprendre la session.

/** appel de la page du mini-programme*/
onHide() {
    if (this.ar) {
        this.ar.pauseSession();
    }
},
onShow() {
    if (this.ar) {
        this.ar.resumeSession();
    }
}
/** fonction du composant 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();
}

Dans ce code, le composant xr-frame expose deux fonctions: pauseSession() et resumeSession().

Dans la page Mini Program, appelez pauseSession() dans onHide, c'est-à-dire lorsque le Mini Program passe du foreground au background, pour suspendre la session.

Appelez resumeSession() dans onShow, c'est-à-dire lorsque le Mini Program revient du background au foreground, pour reprendre la session.