Table of Contents

Prise en charge EasyAR headset dans Unity

Ce document présente l'architecture globale et les notes relatives à la prise en charge EasyAR headset dans Unity.

Avant de commencer

  • Lisez EasyAR headset support pour connaître les types de headset déjà pris en charge par EasyAR et les fonctionnalités EasyAR pouvant s'exécuter sur headsets.

Présentation de la prise en charge headset

EasyAR prend en charge headsets dans Unity de manière flexible. Deux approches sont courantes :

  • Built-in support : se connecte généralement directement au device SDK dans EasyAR Sense library et fournit les interfaces correspondantes dans Unity, par exemple Apple Vision Pro
  • Extension support : se connecte au device SDK via un Unity headset extension package, par exemple Pico
block
  columns 4
  block:groupApp:4
    block:groupAppWrapper
      space
      App1["EasyAR + Device A<br>App"]
      space
      App2["EasyAR<br>App"]
      space
      App3["EasyAR + Device B<br>App"]
    end
  end
  
  block:groupSensePluginExtension
    columns 1
    SensePluginExtension["EasyAR Sense Unity Plugin<br>Extension for Device A"]
    space
  end
  block:groupSensePlugin
    columns 1
    SensePlugin["EasyAR Sense Unity Plugin"]
    space
  end
  block:groupXRI
    columns 1
    XRI["XR Interaction Toolkit"]
    space
  end
  block:groupARF
    columns 1
    ARF["AR Foundation"]
    space
  end
  
  block:groupDeviceAUnity
    columns 1
    DeviceAUnity["Device A<br>Unity SDK"]
    space
  end
  block:groupSense
    columns 1
    Sense["EasyAR Sense"]
    block:groupSenseWrapper
      MDeviceB["Device B<br>CameraDevice"]
      Others["..."]
    end
  end
  block:groupXRSubsystem:2
    columns 1
    XRSubsystem["XR Subsystems"]
    XRSDK["Unity XR SDK"]
  end

  block:groupSystem:4
    columns 1
    System["Native Library"]
    block:groupSystemWrapper
      space
      DeviceA["Device A<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      space
      DeviceB["Device B<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
    end
  end
  
  SensePluginExtension --> App1
  SensePlugin --> App1
  SensePlugin --> App2
  SensePlugin --> App3
  ARF --> App3
  XRI --> App1
  XRI --> App3
  groupSense --> SensePlugin
  groupDeviceAUnity --> SensePluginExtension
  SensePlugin --> SensePluginExtension
  DeviceA --> groupDeviceAUnity
  DeviceA --> XRSDK
  XRSubsystem --> ARF
  XRSubsystem --> XRI
  DeviceB --> MDeviceB
  DeviceB --> XRSDK
  
  style groupApp fill:none,stroke:none,stroke-width:0px
  style groupAppWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePlugin fill:none,stroke:none,stroke-width:0px
  style groupARF fill:none,stroke:none,stroke-width:0px
  style groupXRI fill:none,stroke:none,stroke-width:0px
  style DeviceAUnity fill:none,stroke:none,stroke-width:0px,color:#fff
  style Sense fill:none,stroke:none,stroke-width:0px,color:#fff
  style groupSenseWrapper fill:none,stroke:none,stroke-width:0px
  style XRSubsystem fill:none,stroke:none,stroke-width:0px,color
  style System fill:none,stroke:none,stroke-width:0px
  style groupSystemWrapper fill:none,stroke:none,stroke-width:0px
  style groupSensePluginExtension fill:none,stroke:none,stroke-width:0px  

  classDef EasyAR fill:#6e6ce6,stroke:#333,color:#fff
  class groupSense EasyAR
  class SensePlugin EasyAR
  class SensePluginExtension EasyAR

  classDef Device fill:#636,stroke:#333,color:#fff
  class groupDeviceAUnity Device
  class DeviceB Device
  class DeviceA Device

Dans la figure :

  • Device A appartient à extension support

    En pratique, device A dispose généralement d'un Unity SDK correspondant pour se connecter à Unity XR SDK ou implémenter indépendamment des capacités de headset rendering.

    Le headset extension package de device A est chargé de connecter EasyAR Sense Unity Plugin avec le Unity SDK de device A, permettant ainsi à EasyAR de fonctionner sur device A. Ce support package peut être fourni par EasyAR ou par le device vendor.

  • Device B appartient à built-in support

    En pratique, device B peut ou non disposer d'un Unity SDK correspondant, selon l'implémentation du device vendor. Par exemple, Apple Vision Pro n'a pas de Unity SDK correspondant, tandis que XREAL en a un.

Les headsets avec built-in support et extension support prennent tous deux en charge l'utilisation de custom camera.

Important

Lors de l'utilisation de produits d'essai sur une caméra personnalisée ou un casque (license Personal Edition, license XR d'essai ou service Mega d'essai, etc.), EasyAR Sense cesse de répondre 100 secondes après chaque démarrage (les utilisateurs Mega peuvent ajuster cette durée via EasyAR Business après approbation). Les versions payantes d'EasyAR Sense et les services payants EasyAR Mega ne sont pas soumis à cette limitation.

Dans Unity, le rendering de virtual camera, projection matrix, transform, etc. ne sont pas contrôlés par EasyAR. Ils sont généralement contrôlés par le device SDK ou Unity XR SDK. Les fonctions propres au device, comme gesture recognition et eye tracking, sont toujours fournies par le device et le device SDK. Lors de leur utilisation, il est généralement nécessaire d'utiliser EasyAR et le device SDK en même temps.

Étapes suivantes