XR_ANDROID_unbounded_reference_space OpenXR uzantısı

Ad dizesi

XR_ANDROID_unbounded_reference_space

Uzantı Türü

Örnek uzatma

Kayıtlı Uzatma Numarası

468

Düzeltme

1

Uzantı ve Sürüm Bağımlılıkları

OpenXR 1.0

Son Değiştirilme Tarihi

2024-09-12

IP Durumu

Bilinen IP hak talepleri yok.

Katkıda bulunanlar

Spencer Quin, Google

Jared Finder, Google

Fengtao Fan, Google

Lachlan Ford, Google

Nihav Jain, Google

Levana Chen, Google

Genel Bakış

Bu uzantı, uygulamaların UNBOUNDED_ANDROID referans alanı oluşturmasına olanak tanır. Bu referans alanı, izleyicinin karmaşık bir ortamda genellikle başladığı yerden çok metre uzaktayken bile özgürce hareket etmesine olanak tanır. Bu sırada izleyicinin yakınındaki koordinat sistemi kararlılığı için her zaman optimizasyon yapılır. Cihaz, daha iyi bir sahne anlayışı oluşturmak için ortamını daha fazla algıladıkça referans alanının orijini, cihaz takibini sürdürmek için gerektiğinde büyük ayarlamalar ile kayabilir.

Uygulama, UNBOUNDED_ANDROID referans alanı oluşturmak için XrReferenceSpaceCreateInfo::referenceSpaceType değerini XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID ayarlayabilir ve xrCreateReferenceSpace işlevine iletebilir.

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));

UNBOUNDED_ANDROID referans alanı, cihaz izleme başladığında kulaklığın konumunun dünyaya kilitlenmiş bir orijinini oluşturur. +X sağa, +Y yukarı ve -Z öne bakacak şekilde, eğim ve yuvarlanma hariç tutulacak şekilde yerçekimi ile hizalanır.

UNBOUNDED_ANDROID alanı, bir uygulamanın tek bir STAGE sınırlarının ötesine geçen dünya ölçeğinde içerik oluşturması gerektiğinde (ör. bir binanın tüm katları veya birden fazla katı) kullanışlıdır.

UNBOUNDED_ANDROID alanı, orijinini zaman içinde ayarlayarak izleyiciye yakın bir yerde sabit kalır. Cihaz izlemeyi sürdürmek için gerektiğinde küçük ve büyük ayarlamalar yapabilir.

  • Çalışma zamanı, küçük düzenlemelere yanıt olarak XrEventDataReferenceSpaceChangePending etkinliğini sıraya almamalıdır.
  • Çalışma zamanı, büyük düzenlemelere yanıt olarak XrEventDataReferenceSpaceChangePending etkinliğini sıraya koymalıdır. Örneğin, UNBOUNDED_ANDROID alanındaki duruş, izleme kaybı nedeniyle sıfırlanır ve izleme, dünyanın bağlantısı kesilmiş bir tahmininde ("yeni harita") yeniden kurulur.
  • Sistem, dünyayı algılama şeklini sürekli olarak günceller ve cihaz takibini düzenler. Bir uygulama, izleme sıfırlamalarından bağımsız olarak kalıcı bir konum gerektiriyorsa bu durumda bir ankraj kullanılabilinir.

Referans alanı değiştirme etkinliği

Dünyayı değiştirme veya yeniden yerelleştirme etkinliklerini optimize etme işlemlerinde döndürülen XrEventDataReferenceSpaceChangePending yapısıyla tanımlanan parametreler için:

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

Üye Açıklamaları

  • referenceSpaceType XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID.
  • changeTime, yeniden yerelleştirmenin tamamlandığı XrTime değerini temsil eder.
  • poseValid, bağlantısı kesilmiş tahmin nedeniyle false olur veya yeniden bağlandıktan sonra true olur.
  • poseValid false olduğunda poseInPreviousSpace geçerli olmaz.

Görünümler, denetleyiciler veya diğer alanlar UNBOUNDED_ANDROID alanına göre izleme kaybı yaşadığında uygulamalar, position ve orientation değerlerini tahmin edilen veya bilinen son değerlerle almaya devam edebilir. Bu türden tahmin edilen duruşlar, örneğin boyun modeli güncellemelerini, eylemsiz seyrüsefer hesaplamalarını veya bilinen son konumu temel alabilir. Bir uygulama, XR_SPACE_LOCATION_POSITION_VALID_BIT ve XR_VIEW_STATE_POSITION_VALID_BIT değerlerinin ayarlanmaya devam edeceğini varsayabilir ancak XR_SPACE_LOCATION_POSITION_TRACKED_BIT ve XR_VIEW_STATE_POSITION_TRACKED_BIT, konumun bu şekilde tahmin edildiğini veya bilinen son konum olduğunu belirtmek için çalışma zamanında temizlenebilir.

İzleme kurtarıldığında çalışma zamanı, kaynağı keyfi olarak yeniden merkeze alabilir (ör. kaynağı izleyiciyle aynı hizada olacak şekilde taşıyabilir). Bir uygulama, kullanıma hazır olup olmadığını belirlemek için XrEventDataReferenceSpaceChangePending etkinliğinden döndürülen poseValid değerini kontrol edebilir.

Yeni Nesne Türleri

Yeni İşaret Türleri

Yeni Enum Constants

XrReferenceSpaceType dizini aşağıdakilerle genişletildi:

  • XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID

Yeni Sıralamalar

Yeni Yapılar

Yeni İşlevler

Sorunlar

Sürüm Geçmişi

  • Düzeltme 1, 12.09.2024 (Levana Chen)
    • İlk uzantı açıklaması