Table of Contents

Dukungan EasyAR untuk framework Unity XR

EasyAR tidak bergantung pada framework Unity XR untuk menyediakan fungsi AR, tetapi dapat mendukung sebagian package komponen dalam framework Unity XR, sehingga saat menggunakan fungsi AR EasyAR di Unity Anda dapat memanfaatkan kemampuan yang disediakan framework Unity XR. Bagian berikut menjelaskan dukungan EasyAR untuk framework Unity XR dan kapan AR Foundation dapat dipertimbangkan.

Dukungan Unity XR

Unity mendukung pengembangan XR melalui plugin framework serta rangkaian feature package dan toolkit. EasyAR juga mendukung package komponen Unity XR ini, sehingga saat menggunakan fungsi AR EasyAR di Unity Anda dapat memanfaatkan kemampuan yang disediakan framework Unity XR.

EasyAR mendukung package komponen Unity XR berikut:

Display name Package name Versi minimum yang didukung Diperlukan Penggunaan
XR Core Utilities com.unity.xr.core-utils 2.0.0 Tidak Menyediakan dukungan Unity.XR.CoreUtils.XROrigin
AR Foundation com.unity.xr.arfoundation 5.0.0 Tidak Menyediakan dukungan AR Foundation
XR Plugin Management com.unity.xr.management 3.0.0 Tidak Menyediakan kompatibilitas manajemen ARCore SDK dan memperoleh tipe XR Loader saat runtime
XR Interaction Toolkit com.unity.xr.interaction.toolkit 2.0.0 Tidak Tidak digunakan secara langsung
PolySpatial visionOS com.unity.polyspatial.visionos 2.0.41 Tidak Tidak digunakan secara langsung
Apple visionOS XR Plugin com.unity.xr.visionos 2.0.41 Tidak Tidak digunakan secara langsung
Apple ARKit XR Plugin com.unity.xr.arkit 5.0.0 Tidak Tidak digunakan secara langsung
Google ARCore XR Plugin com.unity.xr.arcore 5.0.0 Tidak Menyediakan kompatibilitas manajemen ARCore SDK
Catatan

EasyAR tidak bergantung pada framework Unity XR untuk menyediakan fungsi AR. Karena itu, jika Anda tidak membutuhkan komponen Unity XR seperti AR Foundation, package tersebut tidak perlu diinstal dan EasyAR tetap dapat bekerja normal pada perangkat yang didukung.

Dukungan AR Foundation

AR Foundation adalah framework pengembangan AR yang disediakan Unity. Fungsi AR-nya diimplementasikan melalui sistem dasar atau pihak ketiga, dan sering digunakan untuk mendukung ARCore, ARKit, serta sebagian headset.

Hubungan antara EasyAR dan AR Foundation

block
  columns 6
  block:groupApp:6
    block:groupAppWrapper
      space
      App1["EasyAR<br>App"]
      space
      App2["EasyAR + AR Foundation<br>App"]
      space
      App3["AR Foundation<br>App"]
    end
  end
  
  block:groupSensePlugin:4
    columns 1
    SensePlugin["EasyAR Sense Unity Plugin"]
    space
  end
  block:groupARF
    columns 1
    ARF["AR Foundation"]
    space
  end
  block:groupXRI
    columns 1
    XRI["XR Interaction Toolkit"]
    space
  end
  
  block:groupAREngineInterop
    columns 1
    AREngineInterop["EasyAR<br>AR Engine Interop"]
    space
  end  
  block:groupSense:3
    columns 1
    Sense["EasyAR Sense"]
    block:groupSenseWrapper
      Image["Image<br>Tracker"]
      Object["Sparse<br>SpatialMap"]
      MotionTracker["Motion<br>Tracker"]
      MARCore["ARCore"]
      MARKit["ARKit"]
      Others["..."]
    end
  end
  block:groupXRSubsystem:2
    columns 1
    XRSubsystem["XR Subsystems"]
    XRSDK["Unity XR SDK"]
  end

  block:groupSystem:6
    columns 1
    System["System Library"]
    block:groupSystemWrapper
      space
      AREngine["AR Engine<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      ARCore["ARCore<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]
      space
      ARKit["ARKit<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
  
  SensePlugin --> App1
  SensePlugin --> App2
  ARF --> App2
  ARF --> App3
  groupSense --> SensePlugin
  groupAREngineInterop --> SensePlugin
  AREngine --> groupAREngineInterop
  XRSubsystem --> ARF
  XRSubsystem --> XRI
  ARCore --> MARCore
  ARKit --> MARKit
  ARCore --> XRSDK
  ARKit --> 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 AREngineInterop 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:#fff
  style System fill:none,stroke:none,stroke-width:0px
  style groupSystemWrapper fill:none,stroke:none,stroke-width:0px

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

  classDef Unity fill:#636,stroke:#333,color:#fff
  class groupXRSubsystem Unity
  class ARF Unity
  class XRI Unity

EasyAR dan AR Foundation adalah dua framework AR yang independen. EasyAR tidak bergantung pada AR Foundation untuk mengimplementasikan fungsi AR-nya. EasyAR juga dapat mengimplementasikan motion tracking melalui library sistem seperti ARKit dan ARCore di sistem. Selain itu, EasyAR menyediakan dua implementasi motion tracking yang tidak dimiliki AR Foundation: implementasi motion tracking EasyAR sendiri dan implementasi motion tracking melalui AR Engine, sehingga memberikan dukungan perangkat yang lebih luas dibandingkan AR Foundation.

Pada saat yang sama, EasyAR dapat memperoleh data runtime AR Foundation dan menggunakan kemampuan motion tracking yang disediakan AR Foundation runtime untuk menjalankan fungsi AR lainnya, sehingga menyediakan kompatibilitas dengan AR Foundation. Fungsi ini mencakup:

  • Mega
  • Sparse spatial map
  • Dense spatial map
  • Image tracking dan object tracking yang menggunakan motion fusion

Lihat motion tracking dan fungsi EasyAR untuk memahami hubungan antara motion tracking dan fungsi EasyAR secara lebih rinci.

Kapan perlu menggunakan AR Foundation

Dalam kebanyakan kasus, AR Foundation tidak perlu digunakan; EasyAR dapat bekerja normal pada cakupan perangkat yang lebih luas daripada perangkat yang didukung AR Foundation. Biasanya AR Foundation dapat dipertimbangkan dalam dua situasi berikut:

  1. Perlu menggunakan fungsi ARKit atau ARCore yang belum dibungkus oleh EasyAR

    Jika beberapa fungsi ARCore atau ARKit yang diperlukan belum dibungkus di EasyAR, Anda dapat menggunakan AR Foundation. Misalnya, AR Foundation menyediakan dukungan untuk face tracking ARKit melalui ARFaceManager, sedangkan EasyAR tidak membungkus fungsi ini.

  2. Menggunakan ARCore, bukan motion tracking yang diimplementasikan EasyAR, pada sebagian ponsel Xiaomi yang memiliki masalah sistem

    Jika perlu menggunakan ARCore pada semua ponsel Xiaomi dan Redmi yang mendukung ARCore, Anda dapat mempertimbangkan untuk mengaktifkan AR Foundation. Karena sebagian sistem ponsel Xiaomi dan Redmi memiliki masalah, pembungkus ARCore EasyAR tidak mendukung perangkat tersebut, termasuk seri Mi 9, Mi 10, Redmi K20, Redmi K30, Redmi K40, dan lainnya (daftar ini tidak lengkap dan dukungan perangkat akan terus diperbarui). Pada ponsel tersebut, ARCore tidak akan digunakan dalam konfigurasi default; pada ponsel yang mendukung EasyAR motion tracking, EasyAR motion tracking akan digunakan.

Saat menggunakan AR Foundation, hasil fungsi EasyAR bukan yang optimal. Ada dua situasi:

  1. Pada sebagian ponsel Xiaomi dan Redmi yang tidak didukung langsung oleh EasyAR, data yang masuk ke EasyAR adalah gambar grayscale, bukan gambar berwarna, sehingga memengaruhi beberapa algoritme. Karena ini adalah masalah perangkat, hal tersebut tidak dapat diselesaikan melalui konfigurasi.
  2. Saat menggunakan Mega, konfigurasi default yang digunakan AR Foundation bukan konfigurasi optimal.
Hati-Hati

Data input yang lebih baik dapat diperoleh dengan mengubah ARCameraManager.currentConfiguration milik AR Foundation. Mengaktifkan ARCoreARFoundationFrameSource.OptimizeConfigurationForTracking dapat otomatis memilih ARCameraManager.currentConfiguration terbaik. Namun perlu diperhatikan bahwa beberapa ponsel sendiri (misalnya Mi 10) memiliki masalah: setelah konfigurasi diubah, gambar tidak dapat diperoleh dan EasyAR tidak dapat digunakan (aplikasi memiliki background gambar tetapi fungsi EasyAR tidak bereaksi). Karena itu biasanya tidak disarankan untuk mengaktifkannya; jika harus digunakan, siapkan fallback ketika EasyAR tidak dapat digunakan.

Dukungan headset

Karena framework Unity XR tidak menyediakan interface data yang cukup lengkap, EasyAR tidak mendukung headset melalui framework Unity XR.

Pada headset yang mendukung framework Unity XR, EasyAR akan mendukung penggunaan Unity.XR.CoreUtils.XROrigin melalui XR Core Utilities, tetapi tidak menggunakan framework Unity XR untuk mengimplementasikan dukungan headset. EasyAR tidak memengaruhi fungsi XR Interaction Toolkit; selama perangkat mendukungnya, toolkit tersebut dapat digunakan secara normal.

Secara umum, produsen headset masing-masing menyediakan SDK atau interface sistem untuk menyediakan data ini. EasyAR mendukung headset melalui interface sistem dan SDK produsen. Terkadang SDK tersebut tidak sepenuhnya publik, dan EasyAR akan bekerja sama dengan produsen untuk menyediakan dukungan lengkap. Dukungan headset di Unity memperkenalkan headset yang didukung EasyAR dan cara penggunaannya.

Langkah berikutnya

Topik terkait


  1. Di Unity 6 dan versi lebih baru, versi minimum yang didukung adalah 2.0.4. Di Unity 2022.3, versi minimum yang didukung adalah 1.2.3, dan 1.3.x tidak didukung.