Ekstensi OpenXR XR_ANDROID_unbounded_reference_space

String Nama

XR_ANDROID_unbounded_reference_space

Jenis Ekstensi

Ekstensi instance

Registered Extension Number

468

Revisi

1

Dependensi Ekstensi dan Versi

OpenXR 1.0

Tanggal Terakhir Diubah

2024-09-12

Status IP

Tidak ada klaim IP yang diketahui.

Kontributor

Spencer Quin, Google

Jared Finder, Google

Fengtao Fan, Google

Lachlan Ford, Google

Nihav Jain, Google

Levana Chen, Google

Ringkasan

Ekstensi ini memungkinkan aplikasi membuat ruang referensi UNBOUNDED_ANDROID. Ruang referensi ini memungkinkan penampil bergerak bebas melalui lingkungan yang kompleks, sering kali beberapa meter dari tempat mereka memulai, sambil selalu mengoptimalkan stabilitas sistem koordinat di dekat penampil. Saat perangkat mendeteksi lebih banyak lingkungan untuk membangun pemahaman scene yang lebih baik, asal ruang referensi dapat menyimpang dengan penyesuaian besar sesuai kebutuhan untuk mempertahankan pelacakan perangkat.

Untuk membuat ruang referensi UNBOUNDED_ANDROID, aplikasi dapat menetapkan XrReferenceSpaceCreateInfo::referenceSpaceType XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID dan meneruskan ke xrCreateReferenceSpace.

XrInstance instance; // previously initialized
XrSession session; // previously initialized
XrPosef pose; // previously initialized

// Use the new reference space type in the create info struct
XrReferenceSpaceCreateInfo createInfo = {
    .type = XR_REFERENCE_SPACE_CREATE_INFO;
    .next = nullptr;
    .referenceSpaceType = XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID;
    .poseInReferenceSpace = pose;
}
XrSpace referenceSpace;
CHK_XR(xrCreateReferenceSpace(session, &createInfo, &referenceSpace));

// After usage
CHK_XR(xrDestroySpace(referenceSpace));

Ruang referensi UNBOUNDED_ANDROID menetapkan asal posisi headset yang terkunci di dunia saat pelacakan perangkat dimulai. Sensor ini selaras dengan gravitasi untuk mengecualikan pitch dan roll, dengan +X ke kanan, +Y ke atas, dan -Z ke depan.

Ruang UNBOUNDED_ANDROID berguna saat aplikasi perlu merender konten skala dunia yang melampaui batas satu STAGE, misalnya, seluruh lantai atau beberapa lantai bangunan.

Ruang UNBOUNDED_ANDROID mempertahankan stabilitas di dekat penampil dengan menyesuaikan asalnya dari waktu ke waktu. Fitur ini dapat melakukan penyesuaian sedikit dan besar sesuai kebutuhan untuk mempertahankan pelacakan perangkat.

  • Runtime tidak boleh mengantrekan peristiwa XrEventDataReferenceSpaceChangePending sebagai respons terhadap penyesuaian kecil.
  • Runtime harus mengantrekan peristiwa XrEventDataReferenceSpaceChangePending sebagai respons terhadap penyesuaian besar. Misalnya, pose dalam ruang UNBOUNDED_ANDROID direset karena kehilangan pelacakan dan pelacakan diaktifkan kembali pada estimasi dunia yang terputus ("peta baru").
  • Sistem ini terus memperbarui pemahamannya tentang dunia dan menyesuaikan pelacakan perangkat. Jika aplikasi memerlukan lokasi yang dipertahankan terlepas dari reset pelacakan, anchor dapat digunakan dalam hal ini.

Peristiwa perubahan ruang referensi

Untuk parameter yang ditentukan oleh struktur XrEventDataReferenceSpaceChangePending yang ditampilkan pada peristiwa relokasi yang mengoptimalkan atau mengubah dunia:

typedef struct XrEventDataReferenceSpaceChangePending {
    XrStructureType         type;
    const void*             next;
    XrSession               session;
    XrReferenceSpaceType    referenceSpaceType;
    XrTime                  changeTime;
    XrBool32                poseValid;
    XrPosef                 poseInPreviousSpace;
} XrEventDataReferenceSpaceChangePending;

Deskripsi Anggota

  • referenceSpaceType XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID.
  • changeTime akan mewakili XrTime saat relokasi selesai.
  • poseValid akan menjadi false karena estimasi terputus atau true setelah terhubung kembali.
  • poseInPreviousSpace tidak akan valid jika poseValid adalah false.

Saat tampilan, pengontrol, atau ruang lain mengalami kehilangan pelacakan relatif terhadap ruang UNBOUNDED_ANDROID, aplikasi dapat terus menerima nilai position dan orientation yang disimpulkan atau yang diketahui terakhir. Pose yang disimpulkan ini dapat, misalnya, didasarkan pada pembaruan model leher, dead reckoning inersia, atau posisi yang diketahui terakhir. Aplikasi dapat mengasumsikan bahwa aplikasi akan terus menetapkan XR_SPACE_LOCATION_POSITION_VALID_BIT dan XR_VIEW_STATE_POSITION_VALID_BIT, tetapi XR_SPACE_LOCATION_POSITION_TRACKED_BIT dan XR_VIEW_STATE_POSITION_TRACKED_BIT dapat dihapus oleh runtime untuk menunjukkan bahwa posisi disimpulkan atau diketahui terakhir dengan cara ini.

Saat pelacakan dipulihkan, runtime dapat memusatkan ulang origin secara arbitrer, misalnya memindahkan origin agar bertepatan dengan penampil. Aplikasi dapat memeriksa nilai poseValid yang ditampilkan dari peristiwa XrEventDataReferenceSpaceChangePending untuk menentukan apakah nilai tersebut siap digunakan.

Jenis Objek Baru

Jenis Tanda Baru

Konstanta Enum Baru

Enumerasi XrReferenceSpaceType diperluas dengan:

  • XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID

Enum Baru

Struktur Baru

Fungsi Baru

Masalah

Histori Versi

  • Revisi 1, 12-09-2024 (Levana Chen)
    • Deskripsi ekstensi awal