XR_ANDROID_scene_meshing
Name String
XR_ANDROID_scene_meshing
Uzantı Türü
Örnek uzantısı
Kayıtlı Dahili Numara
719
Düzeltme
3
Onay Durumu
Onaylanmadı
Uzantı ve Sürüm Bağımlılıkları
Son Değiştirilme Tarihi
2025-05-15
IP Durumu
Bilinen bir fikri mülkiyet hak talebi yok.
Katkıda bulunanlar
Spencer Quin, Google
Jared Finder, Google
Antonio Fontan, Google
Cairn Overturf, Google
Nihav Jain, Google
Salar Khan, Google
Sebastian Klose, Google
Jürgen Sturm, Google
Vinny DaSilva, Google
Ricardo Campbell, Google
Genel Bakış
Bu uzantı, kullanıcının ortamındaki fiziksel nesneleri yaklaşık olarak temsil eden mesh'ler sağlamak için tasarlanmıştır.
Uygulamalar, sahneyi görselleştirmek ve sanal nesnelerin fiziksel nesnelerle etkileşime girmesini (ör. çarpışma) sağlamak için bu uzantıyı kullanabilir.
Sahne mesh verileri, çalışma zamanı tarafından oluşturulur ve XrSceneMeshingTrackerANDROID ile XrSceneMeshSnapshotANDROID kullanılarak uygulamayla paylaşılır. Uygulamalar, xrGetAllSubmeshStatesANDROID tarafından döndürülen XrSceneSubmeshStateANDROID aracılığıyla sahne alt ağı bilgilerindeki değerlere erişebilir. Uygulamalar, xrGetSubmeshDataANDROID tarafından döndürülen XrSceneSubmeshDataANDROID aracılığıyla sahne alt ağı verilerindeki değerlere erişebilir.
Sahne meshleme verileri, hassas kişisel bilgilerdir ve kişisel gizlilik ve bütünlükle yakından bağlantılıdır. Sahne ağ oluşturma verilerini depolayan veya aktaran uygulamaların, bu işlemi yapmak için her zaman kullanıcıdan etkin ve özel bir onay istemesi önemle tavsiye edilir.
İzinler
Android uygulamalarının manifest dosyasında android.permission.SCENE_UNDERSTANDING_FINE izni bulunmalıdır. android.permission.SCENE_UNDERSTANDING_FINE izni, çalışma zamanının kullanıcı ortamını incelemesine olanak tanıdığı için hassas bilgilere erişim izni olarak kabul edilir.
Uygulama, aşağıdaki işlevleri kullanmak için çalışma zamanında izin istemelidir:
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrCreateSceneMeshSnapshotANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
(koruma düzeyi: tehlikeli)
Sistem özelliğini inceleme
XrSystemSceneMeshingPropertiesANDROID yapısı şu şekilde tanımlanır:
typedef struct XrSystemSceneMeshingPropertiesANDROID {
XrStructureType type;
void* next;
XrBool32 supportsSceneMeshing;
} XrSystemSceneMeshingPropertiesANDROID;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.supportsSceneMeshing, sistemin sahne ağ oluşturmayı destekleyip desteklemediğini gösteren birXrBool32değeridir.
Uygulamalar, xrGetSystemProperties işlevini çağırırken XrSystemProperties'a bir XrSystemSceneMeshingPropertiesANDROID yapısı ekleyerek sistemin sahne mesh'leme yapıp yapamayacağını kontrol edebilir.
Bir çalışma zamanı supportsSceneMeshing için XR_FALSE döndürürse sistem, sahne ağ oluşturmayı desteklemez ve bu nedenle xrCreateSceneMeshingTrackerANDROID'den XR_ERROR_FEATURE_UNSUPPORTED döndürmesi gerekir. supportsSceneMeshing, XR_FALSE olduğunda uygulama, sahne mesh'leme işlevini kullanmaktan kaçınmalıdır.
Çalışma zamanı, supportsSceneMeshing için XR_TRUE döndürürse sistem, sahne ağ oluşturmayı destekler.
Geçerli Kullanım (Dolaylı)
- XrSystemSceneMeshingPropertiesANDROID kullanılmadan önce
XR_ANDROID_scene_meshinguzantısı etkinleştirilmelidir. -
typeXR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROIDolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
XrSceneMeshSemanticLabelSetANDROID sıralaması, sahne mesh'leme için anlamsal etiket gruplarını açıklar. Bu enum'daki her değer, anlamsal etiketleri içeren başka bir enum'u temsil eder. Örneğin, XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID değeri XrSceneMeshSemanticLabelANDROID grubunu temsil eder.
typedef enum XrSceneMeshSemanticLabelSetANDROID {
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID = 0,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID = 1,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT2_ANDROID = 1000801000,
XR_SCENE_MESH_SEMANTIC_LABEL_SET_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelSetANDROID;
Numaralandırma değerleri aşağıdaki anlamlara sahiptir:
Enum Açıklaması
XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID
Bu anlamsal etiket grubu, anlamsal etiketlerin olmadığını gösterir.
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
Bu anlamsal etiket grubu, XrSceneMeshSemanticLabelANDROID'i temsil eder.
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT2_ANDROID
Bu anlamsal etiket grubu, XrSceneMeshSemanticLabel2ANDROID'i temsil eder. (XR_ANDROID_scene_meshing_semantic_label2 uzantısı tarafından eklendi)
xrEnumerateSupportedSemanticLabelSetsANDROID işlevi şu şekilde tanımlanır:
XrResult xrEnumerateSupportedSemanticLabelSetsANDROID(
XrInstance instance,
XrSystemId systemId,
uint32_t supportedSemanticLabelSetsInputCapacity,
uint32_t* supportedSemanticLabelSetsOutputCount,
XrSceneMeshSemanticLabelSetANDROID* supportedSemanticLabelSets);
Parametre Açıklamaları
instance, uygulama tarafından oluşturulan bir XrInstance'tır.systemId, xrGetSystem'den yeniden denenen birXrSystemId.supportedSemanticLabelSetsInputCapacity,supportedSemanticLabelSetskapasitesidir veya gerekli kapasiteyi almak için 0'dır.supportedSemanticLabelSetsOutputCount, yazılansupportedSemanticLabelSetssayısına yönelik bir işaretçi veyasupportedSemanticLabelSetsInputCapacitydeğerinin yetersiz olması durumunda gerekli kapasiteye yönelik bir işaretçidir.supportedSemanticLabelSets, XrSceneMeshSemanticLabelSetANDROID dizisine işaret eden bir işaretçidir.supportedSemanticLabelSetsInputCapacity0 iseNULLolabilir.- Gerekli
supportedSemanticLabelSetsboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, xrEnumerateSupportedSemanticLabelSetsANDROID işlevini kullanarak sistem tarafından desteklenen semantik etiket kümelerini listeleyebilir.
Her sistem en azından XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID değerini desteklemelidir. Bu enum değeri, semantik etiket kümesi olmadığını gösterir ve uygulamanın köşe semantiğine ihtiyaç duymadığı durumlarda kullanılabilir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_scene_meshinguzantısı, xrEnumerateSupportedSemanticLabelSetsANDROID çağrılmadan önce etkinleştirilmelidir. -
instancegeçerli bir XrInstance herkese açık kullanıcı adı olmalıdır -
supportedSemanticLabelSetsOutputCount, biruint32_tdeğerine işaretçi olmalıdır -
supportedSemanticLabelSetsInputCapacity,0değilsesupportedSemanticLabelSets,supportedSemanticLabelSetsInputCapacityXrSceneMeshSemanticLabelSetANDROID değerlerinden oluşan bir diziye işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_SYSTEM_INVALIDXR_ERROR_VALIDATION_FAILURE
Sahne ağ oluşturma izleyici tutma yeri oluşturma
XR_DEFINE_HANDLE(XrSceneMeshingTrackerANDROID)
XrSceneMeshingTrackerANDROID tanıtıcısı, sahne ağ oluşturma ve ilgili kaynakları yönetme için bir sahne ağ oluşturma izleyicisini temsil eder.
Bu herkese açık kullanıcı adı, bu uzantıda xrCreateSceneMeshSnapshotANDROID kullanarak sahne ağı anlık görüntüsü oluşturmak için kullanılabilir.
xrCreateSceneMeshingTrackerANDROID işlevi şu şekilde tanımlanır:
XrResult xrCreateSceneMeshingTrackerANDROID(
XrSession session,
const XrSceneMeshingTrackerCreateInfoANDROID* createInfo,
XrSceneMeshingTrackerANDROID* tracker);
Parametre Açıklamaları
session, sahne mesh izleyicinin etkin olacağı bir XrSession'dır.createInfo, oluşturulacak sahne mesh izleyiciyi tanımlamak için kullanılan bir XrSceneMeshingTrackerCreateInfoANDROID yapısına işaretçidir.tracker, döndürülen XrSceneMeshingTrackerANDROID herkese açık kullanıcı adıdır.
Uygulamalar, xrCreateSceneMeshingTrackerANDROID işlevini kullanarak XrSceneMeshingTrackerANDROID herkese açık anahtarı oluşturabilir.
Sistem, sahne ağını desteklemiyorsa çalışma zamanı, xrCreateSceneMeshingTrackerANDROID'den XR_ERROR_FEATURE_UNSUPPORTED değerini döndürmelidir. Bu durumda, uygulamanın sahne meshleme izleyici oluşturmasını önlemek için xrGetSystemProperties işlevi çağrıldığında çalışma zamanı, XrSystemSceneMeshingPropertiesANDROID :: supportsSceneMeshing için XR_FALSE değerini döndürmelidir.
Uygulama, sahne mesh izleyici oluştururken yalnızca XrSceneMeshingTrackerCreateInfoANDROID :: semanticLabelSet içinde sistem tarafından desteklenen semantik etiket kümelerini kullanmalıdır. Uygulama, desteklenmeyen bir sahne ağı köşe semantik etiket grubu kullanıyorsa çalışma zamanı, xrCreateSceneMeshingTrackerANDROID'den XR_ERROR_FEATURE_UNSUPPORTED değerini döndürmelidir .
Uygulama, xrEnumerateSupportedSemanticLabelSetsANDROID işleviyle desteklenen semantik etiket kümelerinin listesini numaralandırabilir.
xrCreateSceneMeshingTrackerANDROID herkese açık kullanıcı adı, sahne mesh'leme için tüm kaynaklara sahiptir. Sahne meshleme deneyimi tamamlandıktan sonra uygulama, xrDestroySceneMeshingTrackerANDROID işlevi aracılığıyla herkese açık anahtarı imha etmelidir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_scene_meshinguzantısı, xrCreateSceneMeshingTrackerANDROID çağrılmadan önce etkinleştirilmelidir. -
sessiongeçerli bir XrSession herkese açık kullanıcı adı olmalıdır -
createInfo, geçerli bir XrSceneMeshingTrackerCreateInfoANDROID yapısına işaretçi olmalıdır. -
tracker, bir XrSceneMeshingTrackerANDROID herkese açık anahtarına işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FEATURE_UNSUPPORTEDXR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_VALIDATION_FAILURE
XrSceneMeshingTrackerCreateInfoANDROID yapısı şu şekilde tanımlanır:
typedef struct XrSceneMeshingTrackerCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSceneMeshSemanticLabelSetANDROID semanticLabelSet;
XrBool32 enableNormals;
} XrSceneMeshingTrackerCreateInfoANDROID;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.semanticLabelSet, sahne ağ oluşturma için kullanılacak semantik etiket grubunu belirtmek için kullanılan bir XrSceneMeshSemanticLabelSetANDROID'dir. Bu değerXR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROIDolarak ayarlanırsa çalışma zamanı, XrSceneSubmeshDataANDROID ::vertexSemanticsarabellek alanını yoksayar.enableNormals, sahne ağ verileri alınırken sahne ağ arabelleğindeki ağ köşeleri için köşe normallerinin dahil edilip edilmeyeceğini belirten birXrBool32değeridir.
XrSceneMeshingTrackerCreateInfoANDROID yapısı, XrSceneMeshingTrackerANDROID herkese açık kullanıcı adı oluşturma bilgilerini açıklar.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_scene_meshinguzantısı, XrSceneMeshingTrackerCreateInfoANDROID kullanılmadan önce etkinleştirilmelidir. -
typeXR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROIDolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
semanticLabelSetgeçerli bir XrSceneMeshSemanticLabelSetANDROID değeri olmalıdır
xrDestroySceneMeshingTrackerANDROID işlevi şu şekilde tanımlanır:
XrResult xrDestroySceneMeshingTrackerANDROID(
XrSceneMeshingTrackerANDROID tracker);
Parametre Açıklamaları
tracker, daha önce xrCreateSceneMeshingTrackerANDROID tarafından oluşturulmuş bir XrSceneMeshingTrackerANDROID'dir.
xrDestroySceneMeshingTrackerANDROID işlevi, sahne meshleme deneyimleri tamamlandığında tracker ve temel kaynakları serbest bırakır.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_scene_meshinguzantısı, xrDestroySceneMeshingTrackerANDROID çağrılmadan önce etkinleştirilmelidir -
trackergeçerli bir XrSceneMeshingTrackerANDROID herkese açık kullanıcı adı olmalıdır
İleti Dizisi Güvenliği
trackerve tüm alt herkese açık kullanıcı adlarına erişim harici olarak senkronize edilmelidir.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
Sahne ağı anlık görüntü tutma noktası oluşturma
XR_DEFINE_HANDLE(XrSceneMeshSnapshotANDROID)
XrSceneMeshSnapshotANDROID herkese açık kullanıcı adı, bir sahne ağı anlık görüntüsünü temsil eder. Bu anlık görüntü, işlev çağrısı sırasında sahne mesh verilerinin anlık görüntüsünü alan xrCreateSceneMeshSnapshotANDROID kullanılarak oluşturulur.
Bu herkese açık kullanıcı adı, xrGetAllSubmeshStatesANDROID ve xrGetSubmeshDataANDROID kullanılarak alt ağ bilgilerini ve verilerini almak için kullanılabilir.
xrCreateSceneMeshSnapshotANDROID işlevi şu şekilde tanımlanır:
XrResult xrCreateSceneMeshSnapshotANDROID(
XrSceneMeshingTrackerANDROID tracker,
const XrSceneMeshSnapshotCreateInfoANDROID* createInfo,
XrSceneMeshSnapshotCreationResultANDROID* outSnapshotCreationResult);
Parametre Açıklamaları
tracker, daha önce xrCreateSceneMeshingTrackerANDROID ile oluşturulmuş bir XrSceneMeshingTrackerANDROID herkese açık anahtarıdır.createInfo, sahne mesh anlık görüntüsünü oluşturmak için gereken bilgileri içeren bir XrSceneMeshSnapshotCreateInfoANDROID yapısına işaret eder.outSnapshotCreationResult, çalışma zamanı tarafından anlık görüntü oluşturma sonucuyla doldurulan bir XrSceneMeshSnapshotCreationResultANDROID nesnesine işaretçidir.
Uygulama, sahne mesh izleyiciden sahne mesh anlık görüntüsü oluşturmak için xrCreateSceneMeshSnapshotANDROID işlevini kullanabilir. Bu işlev, XrSceneMeshSnapshotCreationResultANDROID yapısına sarmalanmış XrSceneMeshTrackingStateANDROID ile birlikte bir XrSceneMeshSnapshotANDROID herkese açık kullanıcı adı döndürür. Herkese açık kullanıcı adı, teknik olarak oluşturma sırasındaki sahne ağı verilerinin anlık görüntüsüdür. Bu herkese açık kullanıcı adı, sırasıyla xrGetAllSubmeshStatesANDROID ve xrGetSubmeshDataANDROID kullanılarak sahne ağı bilgilerini ve verilerini sorgulamak için kullanılabilir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_scene_meshinguzantısı, xrCreateSceneMeshSnapshotANDROID çağrılmadan önce etkinleştirilmelidir. -
trackergeçerli bir XrSceneMeshingTrackerANDROID herkese açık kullanıcı adı olmalıdır -
createInfo, geçerli bir XrSceneMeshSnapshotCreateInfoANDROID yapısına işaret eden bir işaretçi olmalıdır. -
outSnapshotCreationResult, bir XrSceneMeshSnapshotCreationResultANDROID yapısına işaretçi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_OUT_OF_MEMORYXR_ERROR_POSE_INVALIDXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_TIME_INVALID
XrSceneMeshSnapshotCreateInfoANDROID yapısı şu şekilde tanımlanır:
typedef struct XrSceneMeshSnapshotCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpace baseSpace;
XrTime time;
XrBoxf boundingBox;
} XrSceneMeshSnapshotCreateInfoANDROID;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.baseSpace, sahne alt ağı poz bilgisinin temsil edildiği bir XrSpace'tir.time, sahne ağının işleneceği veya görüntüleneceği zamanı açıklayanXrTimedeğeridir (genellikle XrFrameState ::predictedDisplayTime).boundingBox, sahne ağının alınacağı sınırlayıcı kutuyu açıklayan bir XrBoxf değeridir.
XrSceneMeshSnapshotCreateInfoANDROID yapısı, XrSceneMeshSnapshotANDROID herkese açık kullanıcı adı oluşturmak için gereken bilgileri açıklar.
Geçerli Kullanım (Dolaylı)
- XrSceneMeshSnapshotCreateInfoANDROID kullanılmadan önce
XR_ANDROID_scene_meshinguzantısı etkinleştirilmelidir -
typeXR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROIDolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
baseSpacegeçerli bir XrSpace hesabı olmalıdır
XrSceneMeshSnapshotCreationResultANDROID yapısı şu şekilde tanımlanır:
typedef struct XrSceneMeshSnapshotCreationResultANDROID {
XrStructureType type;
const void* next;
XrSceneMeshSnapshotANDROID snapshot;
XrSceneMeshTrackingStateANDROID trackingState;
} XrSceneMeshSnapshotCreationResultANDROID;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.snapshot, çalışma zamanı tarafından oluşturulan bir XrSceneMeshSnapshotANDROID herkese açık anahtarıdır.trackingState, anlık görüntü oluşturma sırasında sahne mesh izleyicisinin durumunu açıklayan bir XrSceneMeshTrackingStateANDROID'dir.
XrSceneMeshSnapshotCreationResultANDROID yapısı, xrCreateSceneMeshSnapshotANDROID tarafından döndürülen sahne ağı anlık görüntüsü oluşturma işleminin sonucunu depolar.
Geçerli Kullanım (Dolaylı)
- XrSceneMeshSnapshotCreationResultANDROID kullanılmadan önce
XR_ANDROID_scene_meshinguzantısı etkinleştirilmelidir. -
typeXR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROIDolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
snapshot, geçerli bir XrSceneMeshSnapshotANDROID herkese açık kullanıcı adı olmalıdır. -
trackingState, geçerli bir XrSceneMeshTrackingStateANDROID değeri olmalıdır.
XrSceneMeshTrackingStateANDROID numaralandırması, sahne mesh izleyicinin izleme durumunu açıklar. Bu enum'daki her değer, sahne mesh izleyicinin bir durumunu temsil eder.
typedef enum XrSceneMeshTrackingStateANDROID {
XR_SCENE_MESH_TRACKING_STATE_INITIALIZING_ANDROID = 0,
XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID = 1,
XR_SCENE_MESH_TRACKING_STATE_WAITING_ANDROID = 2,
XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID = 3,
XR_SCENE_MESH_TRACKING_STATE_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshTrackingStateANDROID;
Numaralandırma değerleri aşağıdaki anlamlara sahiptir:
Enum Açıklaması
XR_SCENE_MESH_TRACKING_STATE_INITIALIZING_ANDROID
Takip cihazı henüz ağ verileri sağlamaya hazır değil.
XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID
Aktivite izleyici aktif olarak aktivite izleme yapıyor.
XR_SCENE_MESH_TRACKING_STATE_WAITING_ANDROID
Takipçi, son ağ güncellemesinden bu yana entegre edilecek geçerli ölçümleri bekliyor.
XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID
Takipçi, birden fazla döngü için geçerli ölçümler almadı ve hata durumunda.
Bu durum, uygulamaya yalnızca ek bilgi sağlar. Başka hata kaynakları yoksa çalışma zamanı, izleyicinin mevcut XrSceneMeshTrackingStateANDROID değerinden bağımsız olarak uygulamanın anlık görüntü oluşturmasına ve bunlardan veri almasına izin vermeye devam etmelidir. Durum XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID değilse anlık görüntüler güncel olmayabilir veya boş olabilir.
Sahne ağı anlık görüntüsünden sahne ağı verileri alınıyor
xrGetAllSubmeshStatesANDROID işlevi şu şekilde tanımlanır:
XrResult xrGetAllSubmeshStatesANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshStateCapacityInput,
uint32_t* submeshStateCountOutput,
XrSceneSubmeshStateANDROID* submeshStates);
Parametre Açıklamaları
snapshot, daha önce xrCreateSceneMeshSnapshotANDROID ile oluşturulmuş bir XrSceneMeshSnapshotANDROID herkese açık anahtarıdır.submeshStateCapacityInput,submeshStateskapasitesidir veya gerekli kapasiteyi almak için 0'dır.submeshStateCountOutput, yazılansubmeshStatessayısına yönelik bir işaretçi veyasubmeshStateCapacityInputdeğerinin yetersiz olması durumunda gerekli kapasiteye yönelik bir işaretçidir.submeshStates, çalışma zamanının sahne ağındaki tüm alt ağların durumunu çıkaracağı XrSceneSubmeshStateANDROID yapılarından oluşan bir diziye işaret eder.submeshStateCapacityInput0 iseNULLolabilir.- Gerekli
submeshStatesboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Uygulama, sahne ağındaki tüm alt ağların durumunu almak için xrGetAllSubmeshStatesANDROID işlevini kullanabilir. Bu, uygulamanın veri istediği alt ağları seçmesine olanak tanıyan temel bilgileri içerir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_scene_meshinguzantısı, xrGetAllSubmeshStatesANDROID çağrılmadan önce etkinleştirilmelidir -
snapshot, geçerli bir XrSceneMeshSnapshotANDROID herkese açık kullanıcı adı olmalıdır. -
submeshStateCountOutput, biruint32_tdeğerine işaretçi olmalıdır -
submeshStateCapacityInput,0değilsesubmeshStates,submeshStateCapacityInputXrSceneSubmeshStateANDROID yapılarından oluşan bir dizinin işaretçisi olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
XrSceneSubmeshStateANDROID yapısı şu şekilde tanımlanır:
typedef struct XrSceneSubmeshStateANDROID {
XrStructureType type;
void* next;
XrUuid submeshId;
XrTime lastUpdatedTime;
XrPosef submeshPoseInBaseSpace;
XrExtent3Df bounds;
} XrSceneSubmeshStateANDROID;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.submeshId, alt ağı tanımlayan bir XrUuid'dir.lastUpdatedTime, alt ağın en son güncellendiği zamanı temsil eden birXrTimedeğeridir.submeshPoseInBaseSpace, sahne ağı anlık görüntüsünü oluşturmak için kullanılan temel alandaki alt ağın pozunu temsil eden bir XrPosef'dir. Poz, alt ağ sınırlayıcı kutusunun da merkezidir.bounds, alt ağı çevreleyen sınırlayıcı kutunun boyutlarını açıklayan bir XrExtent3Df'dir. Bu sınırlar, sahne mesh tutma noktasını oluşturmak için kullanılan temel alanda tanımlanır.
Çalışma zamanı, submeshId öğesini alt ağın kapladığı fiziksel alanın bölgesiyle eşlemek için elinden geleni yapar. Çalışma zamanları, herhangi bir zamanda bu eşlemeyi kaybedebilir ve algılanan alt ağların herhangi bir alt kümesine yeni bir UUID atayabilir. Özellikle çalışma zamanlarının, sonraki uygulama örneklerinde aynı mesh'ler için aynı UUID'leri yeniden kullanması gerekmez.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_scene_meshinguzantısı, XrSceneSubmeshStateANDROID kullanılmadan önce etkinleştirilmelidir -
typeXR_TYPE_SCENE_SUBMESH_STATE_ANDROIDolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
xrGetSubmeshDataANDROID işlevi şu şekilde tanımlanır:
XrResult xrGetSubmeshDataANDROID(
XrSceneMeshSnapshotANDROID snapshot,
uint32_t submeshDataCount,
XrSceneSubmeshDataANDROID* inoutSubmeshData);
Parametre Açıklamaları
snapshot, daha önce xrCreateSceneMeshSnapshotANDROID ile oluşturulmuş bir XrSceneMeshSnapshotANDROID herkese açık anahtarıdır.submeshDataCount,inoutSubmeshDatauzunluğundadır.inoutSubmeshData, XrSceneSubmeshDataANDROID'nin uygulama tarafından ayrılmış bir dizisidir. Çalışma zamanı, her öğeyi XrSceneSubmeshDataANDROID ::submeshIdiçinde iletilen alt ağ kimliğiyle ilişkili ağ verileriyle doldurur.
Uygulama, alt ağ gruplarını veya tüm alt ağları tek seferde almak için xrGetSubmeshDataANDROID işlevini kullanabilir. Bunun için her XrSceneSubmeshDataANDROID :: submeshId, alınacak alt ağın ilgili kimliğine ayarlanmış bir XrSceneSubmeshDataANDROID listesi iletilir.
XrSceneSubmeshDataANDROID :: submeshId, inoutSubmeshData içindeki her öğe için benzersiz olmalıdır ve aynı snapshot için xrGetAllSubmeshStatesANDROID tarafından alınabilir olmalıdır. Alt ağ kimliği geçersizse veya inoutSubmeshData içindeki birden fazla öğe aynı alt ağ kimliğine sahipse çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir (must).
submeshDataCount, xrGetAllSubmeshStatesANDROID :: submeshStateCountOutput tarafından döndürülen değere eşit veya bu değerden küçük olmalıdır. Aksi takdirde çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir must.
Bu, seçilen tüm alt ağların köşe ve dizin sayısını sorgulamak için 2 çağrılı bir deyimde kullanılabilir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_scene_meshinguzantısı, xrGetSubmeshDataANDROID çağrılmadan önce etkinleştirilmelidir. -
snapshot, geçerli bir XrSceneMeshSnapshotANDROID herkese açık kullanıcı adı olmalıdır. -
inoutSubmeshData,submeshDataCountXrSceneSubmeshDataANDROID yapılarından oluşan bir diziye işaretçi olmalıdır. -
submeshDataCountparametresi0değerinden büyük olmalıdır.
Dönüş Kodları
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SIZE_INSUFFICIENTXR_ERROR_VALIDATION_FAILURE
XrSceneSubmeshDataANDROID yapısı şu şekilde tanımlanır:
typedef struct XrSceneSubmeshDataANDROID {
XrStructureType type;
const void* next;
XrUuid submeshId;
uint32_t vertexCapacityInput;
uint32_t vertexCountOutput;
XrVector3f* vertexPositions;
XrVector3f* vertexNormals;
uint8_t* vertexSemantics;
uint32_t indexCapacityInput;
uint32_t indexCountOutput;
uint32_t* indices;
} XrSceneSubmeshDataANDROID;
Üye Açıklamaları
type, bu yapının XrStructureType değeridir.next,NULLveya bir yapı zincirindeki sonraki yapıya işaret eden bir göstergedir. Temel OpenXR'da veya bu uzantıda bu tür yapılar tanımlanmamıştır.submeshId, alt ağı tanımlayan bir XrUuid'dir.vertexCapacityInput,vertexPositions,vertexNormalsvevertexSemanticskapasitesidir veya gerekli kapasiteyi almak için 0'dır.vertexCountOutput, yazılanvertexPositions,vertexNormalsvevertexSemanticssayısına yönelik bir işaretçi veyavertexCapacityInput'nin yetersiz olması durumunda gerekli kapasiteye yönelik bir işaretçidir.vertexPositions, çalışma zamanının alt ağın köşe konumlarını çıkaracağı bir XrVector3f dizisidir.vertexNormals, çalışma zamanının alt ağın köşe normallerini çıkaracağı bir XrVector3f dizisidir. Uygulama, normaller devre dışı bırakılmış bir izleyici oluşturduysa bu alanNULLbırakılabilir.vertexSemantics, çalışma zamanının alt ağın köşe semantiğini çıkaracağı biruint8_tdizisidir. Uygulama,XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROIDsemantik etiket kümesiyle bir izleyici oluşturduysa bu alanNULLbırakılabilir.indexCapacityInput,indiceskapasitesidir veya gerekli kapasiteyi almak için 0'dır.indexCountOutput, yazılanindicessayısına yönelik bir işaretçi veyavertexCapacityInputdeğerinin yetersiz olması durumunda gerekli kapasiteye yönelik bir işaretçidir.indices, çalışma zamanının alt ağın dizinlerini çıkaracağı biruint32_tdizisidir.- Gerekli
vertexPositions,vertexNormals,vertexSemanticsveindicesboyutunu alma hakkında ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Geçerli Kullanım (Dolaylı)
- XrSceneSubmeshDataANDROID kullanılmadan önce
XR_ANDROID_scene_meshinguzantısı etkinleştirilmelidir -
typeXR_TYPE_SCENE_SUBMESH_DATA_ANDROIDolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır. -
vertexCapacityInput,0değilsevertexPositions,vertexCapacityInputXrVector3f yapılarından oluşan bir dizinin işaretçisi olmalıdır. -
vertexCapacityInput,0değilsevertexNormals,vertexCapacityInputXrVector3f yapılarından oluşan bir dizinin işaretçisi olmalıdır. -
vertexCapacityInput,0değilsevertexSemantics,vertexCapacityInputuint8_tdeğerlerinden oluşan bir dizinin işaretçisi olmalıdır. -
indexCapacityInput,0değilseindices,indexCapacityInputuint32_tdeğerlerinden oluşan bir dizinin işaretçisi olmalıdır.
XrSceneMeshSemanticLabelANDROID numaralandırması, mesh köşesinin hangi fiziksel ortam yüzeyinde olduğunu açıklamak için mesh köşelerini etiketlemek amacıyla kullanılabilecek varsayılan semantik etiket grubudur. Bu enum grubu, XrSceneMeshSemanticLabelSetANDROID içindeki XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID değeriyle temsil edilir.
typedef enum XrSceneMeshSemanticLabelANDROID {
XR_SCENE_MESH_SEMANTIC_LABEL_OTHER_ANDROID = 0,
XR_SCENE_MESH_SEMANTIC_LABEL_FLOOR_ANDROID = 1,
XR_SCENE_MESH_SEMANTIC_LABEL_CEILING_ANDROID = 2,
XR_SCENE_MESH_SEMANTIC_LABEL_WALL_ANDROID = 3,
XR_SCENE_MESH_SEMANTIC_LABEL_TABLE_ANDROID = 4,
XR_SCENE_MESH_SEMANTIC_LABEL_MAX_ENUM_ANDROID = 0x7FFFFFFF
} XrSceneMeshSemanticLabelANDROID;
Numaralandırmalar aşağıdaki anlamlara sahiptir:
Enum Açıklaması
XR_SCENE_MESH_SEMANTIC_LABEL_OTHER_ANDROID
Bu semantik etiket, ilgili mesh öğesinin bilinmeyen bir nesneyi temsil ettiğini gösterir.
XR_SCENE_MESH_SEMANTIC_LABEL_FLOOR_ANDROID
Bu semantik etiket, ilgili ağ öğesinin bir zemini temsil ettiğini gösterir.
XR_SCENE_MESH_SEMANTIC_LABEL_CEILING_ANDROID
Bu semantik etiket, ilgili ağ öğesinin bir tavanı temsil ettiğini gösterir.
XR_SCENE_MESH_SEMANTIC_LABEL_WALL_ANDROID
Bu semantik etiket, ilgili ağ öğesinin bir duvarı temsil ettiğini gösterir.
XR_SCENE_MESH_SEMANTIC_LABEL_TABLE_ANDROID
Bu semantik etiket, ilgili mesh öğesinin bir tabloyu temsil ettiğini gösterir.
Sahne ağı anlık görüntüsünü silme
xrDestroySceneMeshSnapshotANDROID işlevi şu şekilde tanımlanır:
XrResult xrDestroySceneMeshSnapshotANDROID(
XrSceneMeshSnapshotANDROID snapshot);
Parametre Açıklamaları
snapshot, daha önce xrCreateSceneMeshSnapshotANDROID ile oluşturulan ve bu işlev tarafından yok edilecek bir XrSceneMeshSnapshotANDROID herkese açık anahtarıdır.
Uygulama, sahne mesh anlık görüntüsünü yok etmek için xrDestroySceneMeshSnapshotANDROID işlevini kullanabilir. Herkese açık kullanıcı adı silindikten sonra uygulama, alt ağ bilgilerini veya verilerini almak için artık bu adı kullanamaz. İzleyici tanıtıcısı, sahne ağı anlık görüntüsü tanıtıcısının üst öğesi olduğundan izleyici yok edildiğinde tanıtıcı otomatik olarak yok edilir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_scene_meshinguzantısı, xrDestroySceneMeshSnapshotANDROID çağrılmadan önce etkinleştirilmelidir. -
snapshot, geçerli bir XrSceneMeshSnapshotANDROID herkese açık kullanıcı adı olmalıdır.
İleti Dizisi Güvenliği
snapshotve tüm alt herkese açık kullanıcı adlarına erişim harici olarak senkronize edilmelidir.
Dönüş Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALIDXR_ERROR_RUNTIME_FAILURE
Sahne mesh'i için örnek kod
Aşağıdaki örnek kodda, oluşturma için sahne ağı verilerine nasıl erişileceği gösterilmektedir.
XrInstance instance; // Created at app startup
XrSystemId systemId; // Received from xrGetSystem() at app startup
XrSession session; // Created at app startup
XrSpace appPlaySpace; // Created at app startup
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateSceneMeshingTrackerANDROID xrCreateSceneMeshingTrackerANDROID;
PFN_xrDestroySceneMeshingTrackerANDROID xrDestroySceneMeshingTrackerANDROID;
PFN_xrEnumerateSupportedSemanticLabelSetsANDROID xrEnumerateSupportedSemanticLabelSetsANDROID;
PFN_xrCreateSceneMeshSnapshotANDROID xrCreateSceneMeshSnapshotANDROID;
PFN_xrDestroySceneMeshSnapshotANDROID xrDestroySceneMeshSnapshotANDROID;
PFN_xrGetAllSubmeshStatesANDROID xrGetAllSubmeshStatesANDROID;
PFN_xrGetSubmeshDataANDROID xrGetSubmeshDataANDROID;
// Inspect system capability
XrSystemSceneMeshingPropertiesANDROID sceneMeshingProps = {
.type = XR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID,
};
XrSystemProperties sysProps = {
.type = XR_TYPE_SYSTEM_PROPERTIES,
.next = &sceneMeshingProps
};
CHK_XR(xrGetSystemProperties(instance, systemId, &sysProps));
if (!sceneMeshingProps.supportsSceneMeshing) {
// scene meshing is not supported.
return;
}
uint32_t supportedsemanticLabelSetsCount = 0;
xrEnumerateSupportedSemanticLabelSetsANDROID(
instance, systemId, 0, &supportedsemanticLabelSetsCount, nullptr);
std::vector<XrSceneMeshSemanticLabelSetANDROID> supportedSemanticLabelSets(
supportedsemanticLabelSetsCount);
xrEnumerateSupportedSemanticLabelSetsANDROID(
instance, systemId, supportedsemanticLabelSetsCount,
&supportedsemanticLabelSetsCount, supportedSemanticLabelSets.data());
XrSceneMeshSemanticLabelSetANDROID semanticLabelSet = XR_SCENE_MESH_SEMANTIC_LABEL_SET_NONE_ANDROID;
// Check if system supports XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID
if (std::find(supportedSemanticLabelSets.begin(), supportedSemanticLabelSets.end(),
XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID) !=
supportedSemanticLabelSets.end()) {
semanticLabelSet = XR_SCENE_MESH_SEMANTIC_LABEL_SET_DEFAULT_ANDROID;
}
XrSceneMeshingTrackerCreateInfoANDROID trackerCreateInfo = {
.type = XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROID,
.semanticLabelSet = semanticLabelSet,
.enableNormals = XR_TRUE
};
XrSceneMeshingTrackerANDROID tracker = XR_NULL_HANDLE;
CHK_XR(xrCreateSceneMeshingTrackerANDROID(session, &trackerCreateInfo, &tracker));
XrSceneMeshSnapshotCreationResultANDROID snapshotResult {
.type = XR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROID,
.snapshot = XR_NULL_HANDLE
};
XrSceneMeshSnapshotANDROID& snapshot = snapshotResult.snapshot;
XrSceneMeshSnapshotCreateInfoANDROID createInfo {
.type = XR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROID
};
// app update loop
while (true) {
// ...
// For every frame in frame loop
// ...
XrFrameState frameState; // previously returned from xrWaitFrame
const XrTime time = frameState.predictedDisplayTime;
XrBoxf box; // populated with the bounding box of the camera frustum
// ...
createInfo.baseSpace = appPlaySpace;
createInfo.time = time;
createInfo.boundingBox = box;
// Grab the scene mesh snapshot. This way the app can: know all of the submesh infos,
// choose the appropriate submeshes for which to get data, allocate the necessary
// buffer for those submeshes, and then get the data.
CHK_XR(xrCreateSceneMeshSnapshotANDROID(tracker, &createInfo, &snapshotResult));
// check the tracking state
if (snapshotResult.trackingState == XR_SCENE_MESH_TRACKING_STATE_ERROR_ANDROID) {
// unrecoverable error. Exit the app.
if (snapshot != XR_NULL_HANDLE) {
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
}
break;
} else if (snapshotResult.trackingState != XR_SCENE_MESH_TRACKING_STATE_TRACKING_ANDROID) {
// The tracker is not tracking. Try again later.
if (snapshot != XR_NULL_HANDLE) {
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
}
continue;
}
// 2-call idiom for getting submesh states
uint32_t submeshCount = 0;
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, 0, &submeshCount, nullptr));
std::vector<XrSceneSubmeshStateANDROID> states(submeshCount, {
.type = XR_TYPE_SCENE_SUBMESH_STATE_ANDROID,
});
CHK_XR(xrGetAllSubmeshStatesANDROID(snapshot, submeshCount, &submeshCount, states.data()));
// To store the poses for the selected submeshes
std::vector<XrPosef> submeshesPoses;
submeshesPoses.reserve(submeshCount);
std::vector<XrSceneSubmeshDataANDROID> submeshes;
submeshes.reserve(submeshCount);
// Iterate the states and determine which submeshes the app wants data for
for (XrSceneSubmeshStateANDROID& state : states) {
// Modify this bool as necessary by looking at states. Maybe state.lastUpdatedTime
// is below a threshold or maybe the bounding box does not intersect with camera view
// frustum (The submesh will be culled).
bool needed;
if (needed) {
// Add the selected submesh to the submeshes list. Set the capacity
// zero for now since the size of the buffer will be determined later.
XrSceneSubmeshDataANDROID submesh {
.type = XR_TYPE_SCENE_SUBMESH_DATA_ANDROID,
.submeshId = state.submeshId,
.vertexCapacityInput = 0,
.vertexCountOutput = 0,
.vertexPositions = nullptr,
.vertexNormals = nullptr,
.vertexSemantics = nullptr,
.indexCapacityInput = 0,
.indexCountOutput = 0,
.indices = nullptr,
};
submeshes.push_back(submesh);
submeshesPoses.push_back(state.submeshPoseInBaseSpace);
}
}
// Grab the data for the selected submeshes using the 2-call idiom.
CHK_XR(xrGetSubmeshDataANDROID(snapshot, submeshes.size(), submeshes.data()));
for (XrSceneSubmeshDataANDROID& submesh : submeshes) {
submesh.vertexCapacityInput = submesh.vertexCountOutput;
submesh.vertexCountOutput = 0;
submesh.vertexPositions = new XrVector3f[submesh.vertexCapacityInput];
submesh.vertexNormals = new XrVector3f[submesh.vertexCapacityInput];
submesh.vertexSemantics = new uint8_t[submesh.vertexCapacityInput];
submesh.indexCapacityInput = submesh.indexCountOutput;
submesh.indexCountOutput = 0;
submesh.indices = new uint32_t[submesh.indexCapacityInput];
}
CHK_XR(xrGetSubmeshDataANDROID(snapshot, submeshes.size(), submeshes.data()));
// Destroy the scene mesh snapshot since we have finally grabbed the submeshes data. In
// next iteration app can: create a new one to get latest mesh data
CHK_XR(xrDestroySceneMeshSnapshotANDROID(snapshot));
snapshot = XR_NULL_HANDLE;
// Iterate the submeshes and get the vertex positions, vertex normals and
// vertex semantics data for the selected submeshes
for (uint32_t i = 0; i < submeshes.size(); i++) {
XrSceneSubmeshDataANDROID& data = submeshes[i];
XrVector3f* vertexPositions = data.vertexPositions;
XrVector3f* vertexNormals = data.vertexNormals;
XrSceneMeshSemanticLabelANDROID* vertexSemantics =
new XrSceneMeshSemanticLabelANDROID[data.vertexCountOutput];
for (uint32_t j = 0; j < data.vertexCountOutput; j++) {
vertexSemantics[j] =
static_cast<XrSceneMeshSemanticLabelANDROID>(data.vertexSemantics[j]);
}
XrPosef pose = submeshesPoses[i];
// *** Use the data as per needs ***
// Release the allocated memory for the data buffers when done using
delete [] vertexSemantics;
delete [] data.vertexPositions;
delete [] data.vertexNormals;
delete [] data.vertexSemantics;
delete [] data.indices;
}
// ...
// Finish frame loop
// ...
}
CHK_XR(xrDestroySceneMeshingTrackerANDROID(tracker));
Yeni nesne türleri
Yeni Komutlar
- xrCreateSceneMeshSnapshotANDROID
- xrCreateSceneMeshingTrackerANDROID
- xrDestroySceneMeshSnapshotANDROID
- xrDestroySceneMeshingTrackerANDROID
- xrEnumerateSupportedSemanticLabelSetsANDROID
- xrGetAllSubmeshStatesANDROID
- xrGetSubmeshDataANDROID
Yeni Yapılar
- XrSceneMeshSnapshotCreateInfoANDROID
- XrSceneMeshSnapshotCreationResultANDROID
- XrSceneMeshingTrackerCreateInfoANDROID
- XrSceneSubmeshDataANDROID
- XrSceneSubmeshStateANDROID
XrSystemProperties'i genişletme:
Yeni Enum Veri Türleri
Yeni Enum Sabitleri
XR_ANDROID_SCENE_MESHING_EXTENSION_NAMEXR_ANDROID_scene_meshing_SPEC_VERSIONXrObjectType'i genişletme:
XR_OBJECT_TYPE_SCENE_MESHING_TRACKER_ANDROIDXR_OBJECT_TYPE_SCENE_MESH_SNAPSHOT_ANDROID
XrStructureType'ı genişletme:
XR_TYPE_SCENE_MESHING_TRACKER_CREATE_INFO_ANDROIDXR_TYPE_SCENE_MESH_SNAPSHOT_CREATE_INFO_ANDROIDXR_TYPE_SCENE_MESH_SNAPSHOT_CREATION_RESULT_ANDROIDXR_TYPE_SCENE_SUBMESH_DATA_ANDROIDXR_TYPE_SCENE_SUBMESH_STATE_ANDROIDXR_TYPE_SYSTEM_SCENE_MESHING_PROPERTIES_ANDROID
Sayılar
Sürüm Geçmişi
Düzeltme 3, 15.05.2025 (Salar Khan)
- İlk uzantı açıklaması