XR_ANDROID_spatial_anchor_space
Name String
XR_ANDROID_spatial_anchor_space
Uzantı Türü
Örnek uzantısı
Kayıtlı Dahili Numara
796
Düzeltme
1
Onay Durumu
Onaylanmadı
Uzantı ve Sürüm Bağımlılıkları
XR_EXT_spatial_anchor
Son Değiştirilme Tarihi
2025-09-15
IP Durumu
Bilinen bir fikri mülkiyet hak talebi yok.
Katkıda bulunanlar
YuSheng Chang, Google
Kyle Chen, Google
Levana Chen, Google
Nihav Jain, Google
Spencer Quin, Google
Genel Bakış
XR_EXT_spatial_anchor uzantısında tanımlanan xrCreateSpatialAnchorEXT işlevi, uygulamaların bunu temsil edecek bir XrSpatialEntityEXT herkese açık anahtarı ile uzamsal yer işaretleri oluşturmasına olanak tanır. Bunun aksine, bu uzantı XrSpace herkese açık kullanıcı adı ile temsil edilen bir uzamsal sabitleyici oluşturur. Bu, uygulamanın aşağıdakileri yapmak istediği durumlarda kullanışlıdır:
- Sabit noktanın konumunu almak için xrLocateSpaces'i kullanın.
- Sabit noktaya göre diğer alanları bulun.
XR_ANDROID_anchor_sharing_exportkullanarak sabiti dışa aktarın.- Uygulama, yerleştirilen sabitleyicilerin yalnızca konumunu (sanal içerik eklemek için) dikkate alır. Sabitleyiciyi oluşturmak için kullanılan XrSpatialContextEXT aracılığıyla keşfedilen diğer varlıkların başka bileşenlerini dikkate almaz. Bu sayede uygulama, uzamsal bağlamı yok edebilir.
Bu uzantıyla oluşturulan sabit noktalar XR_ANDROID_device_anchor_persistence uzantısı kullanılarak kalıcı hale getirilemez ve uygulamanın bunun yerine XR_EXT_spatial_persistence_operations kullanması gerekir. XrPersistedAnchorSpaceInfoANDROID :: anchor, xrCreateSpatialAnchorSpaceANDROID veya xrCreateSpatialAnchorSpaceFromIdANDROID kullanılarak oluşturulursa çalışma zamanı, xrPersistAnchorANDROID'den XR_ERROR_VALIDATION_FAILURE döndürmelidir.
Üç boyutlu yer işareti için XrSpace oluşturma
Uzamsal yer işareti ve alan oluşturma
xrCreateSpatialAnchorSpaceANDROID işlevi şu şekilde tanımlanır:
XrResult xrCreateSpatialAnchorSpaceANDROID(
XrSession session,
XrSpatialContextEXT spatialContext,
const XrSpatialAnchorCreateInfoEXT* createInfo,
XrSpatialEntityIdEXT* anchorEntityId,
XrSpace* anchorSpace);
Parametre Açıklamaları
session, daha önce xrCreateSession ile oluşturulmuş bir XrSession'ın herkese açık kullanıcı adıdır.spatialContext, daha önce xrCreateSpatialContextAsyncEXT kullanılarak oluşturulmuş bir XrSpatialContextEXT'tir.createInfo, XrSpatialAnchorCreateInfoEXT'ye işaret eden bir işaretçidir.anchorEntityId, birXrSpatialEntityIdEXTişaretçisidir.anchorSpace, bir XrSpace işaretçisidir.
xrCreateSpatialAnchorSpaceANDROID işlevi, XrSpatialEntityIdEXT ve XrSpace herkese açık kullanıcı adı döndüren bir sabitleyici oluşturur. xrCreateSpatialAnchorSpaceANDROID, xrCreateSpatialAnchorEXT ile aynı doğrulama koşullarına sahiptir.
xrCreateSpatialAnchorSpaceANDROID'e iletilen XrSpatialContextEXT, XR_SPATIAL_CAPABILITY_ANCHOR_EXT ile yapılandırılmamışsa çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir.
xrCreateSpatialAnchorSpaceANDROID tarafından oluşturulan sabitleyicinin bulunabilirliğiyle ilgili olarak xrCreateSpatialAnchorEXT spesifikasyonunun son paragrafı geçerlidir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_spatial_anchor_spaceuzantısı, xrCreateSpatialAnchorSpaceANDROID çağrılmadan önce etkinleştirilmelidir. -
sessiongeçerli bir XrSession herkese açık kullanıcı adı olmalıdır -
spatialContext, geçerli bir XrSpatialContextEXT herkese açık kullanıcı adı olmalıdır -
createInfo, geçerli bir XrSpatialAnchorCreateInfoEXT yapısına işaret eden bir işaretçi olmalıdır. -
anchorEntityId, birXrSpatialEntityIdEXTdeğerine işaretçi olmalıdır -
anchorSpace, bir XrSpace tutamacına işaretçi olmalıdır. -
spatialContext,sessionüzerinden oluşturulmuş, tahsis edilmiş veya alınmış 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_SPATIAL_ANCHOR_ATTACHABLE_COMPONENT_NOT_FOUND_ANDROIDXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXTXR_ERROR_TIME_INVALIDXR_ERROR_VALIDATION_FAILURE
Mevcut bir uzamsal sabitleyiciden XrSpace oluşturma
xrCreateSpatialAnchorSpaceFromIdANDROID işlevi şu şekilde tanımlanır:
XrResult xrCreateSpatialAnchorSpaceFromIdANDROID(
XrSession session,
XrSpatialContextEXT spatialContext,
const XrSpatialAnchorSpaceFromIdCreateInfoANDROID* createInfo,
XrSpace* anchorSpace);
Parametre Açıklamaları
session, daha önce xrCreateSession ile oluşturulmuş bir XrSession'ın herkese açık kullanıcı adıdır.spatialContext, daha önce xrCreateSpatialContextAsyncEXT kullanılarak oluşturulmuş bir XrSpatialContextEXT'tir.createInfo, bir XrSpatialAnchorSpaceFromIdCreateInfoANDROID işaretçisidir.anchorSpace, bir XrSpace işaretçisidir.
Uzamsal yer işareti varlıklarının önceden mevcut olduğu senaryolarda (ör. kalıcılık nedeniyle) uygulamalar, uzamsal varlık kimliklerini sağlayarak bu uzamsal yer işaretlerinden bir XrSpace oluşturabilir.
xrCreateSpatialAnchorSpaceFromIdANDROID işlevi, XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId alanında bir XrSpatialEntityIdEXT sağlayarak XrSpace herkese açık kullanıcı adı oluşturur.
xrCreateSpatialAnchorSpaceFromIdANDROID'e iletilen XrSpatialContextEXT, XR_SPATIAL_CAPABILITY_ANCHOR_EXT ile yapılandırılmamışsa çalışma zamanı XR_ERROR_VALIDATION_FAILURE değerini döndürmelidir.
Geçerli Kullanım (Dolaylı)
-
XR_ANDROID_spatial_anchor_spaceuzantısı, xrCreateSpatialAnchorSpaceFromIdANDROID çağrılmadan önce etkinleştirilmelidir. -
sessiongeçerli bir XrSession herkese açık kullanıcı adı olmalıdır -
spatialContext, geçerli bir XrSpatialContextEXT herkese açık kullanıcı adı olmalıdır -
createInfo, geçerli bir XrSpatialAnchorSpaceFromIdCreateInfoANDROID yapısına işaret eden bir işaretçi olmalıdır. -
anchorSpace, bir XrSpace tutamacına işaretçi olmalıdır. -
spatialContext,sessionüzerinden oluşturulmuş, tahsis edilmiş veya alınmış 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_RUNTIME_FAILUREXR_ERROR_SESSION_LOSTXR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROIDXR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXTXR_ERROR_VALIDATION_FAILURE
XrSpatialAnchorSpaceFromIdCreateInfoANDROID yapısı şu şekilde tanımlanır:
typedef struct XrSpatialAnchorSpaceFromIdCreateInfoANDROID {
XrStructureType type;
const void* next;
XrSpatialEntityIdEXT anchorEntityId;
} XrSpatialAnchorSpaceFromIdCreateInfoANDROID;
Ü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.anchorEntityId, XrSpace'in oluşturulacağı mevcut uzamsal sabitleyicininXrSpatialEntityIdEXTdeğeridir.
XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId, spatialContext için geçerli bir kimlik değilse çalışma zamanı XR_ERROR_SPATIAL_ENTITY_ID_INVALID_EXT değerini döndürmelidir.
XrSpatialAnchorSpaceFromIdCreateInfoANDROID ::entityId, bir sabitleyici için geçerli bir varlık kimliği değilse çalışma zamanı XR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROID değerini döndürmelidir .
Geçerli Kullanım (Dolaylı)
- XrSpatialAnchorSpaceFromIdCreateInfoANDROID kullanılmadan önce
XR_ANDROID_spatial_anchor_spaceuzantısı etkinleştirilmiş olmalıdır. -
typeXR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROIDolmalıdır -
next,NULLveya yapı zincirindeki bir sonraki yapıya geçerli bir işaretçi olmalıdır.
Sabit Yaşam Döngüsü
XrSpace herkese açık adının üst öğesi XrSession'dır. Bu, sabitleyiciyi temsil eden bir XrSpace tutma yerinin, xrCreateSpatialAnchorSpaceFromIdANDROID :: spatialContext veya xrCreateSpatialAnchorSpaceANDROID :: spatialContext yok edildikten sonra bile geçerli kaldığı anlamına gelir. Uzamsal varlık yer işaretini temsil eden bir XrSpace oluşturmak, uygulamanın XR_SPATIAL_CAPABILITY_ANCHOR_EXT ile yapılandırılmış XrSpatialContextEXT'yi yok etmesine olanak tanır.Bu sırada, xrLocateSpaces ile XrSpace'ini kullanarak yer işaretinin en son konumunu almaya devam eder. Yani çalışma zamanı, yer işaretini temsil eden tüm XrSpace tanıtıcıları yok edilene kadar yer işaretini izlemeye devam etmelidir.
Örnek kod
XrSpace olarak uzamsal yer işareti oluşturma
Aşağıdaki örnek kodda, uzamsal yer işaretinin nasıl oluşturulacağı ve XrSpace olarak nasıl döndürüleceği gösterilmektedir.
XrSpatialEntityIdEXT spatialAnchorEntityId;
XrSpace spatialAnchorSpace {XR_NULL_HANDLE}; // XrSpace handle of anchor
// Spatial anchor create info
XrSpatialAnchorCreateInfoEXT createInfo{
.type = XR_TYPE_SPATIAL_ANCHOR_CREATE_INFO_EXT,
.baseSpace = localSpace,
.time = predictedDisplayTime,
.pose = {{0, 0, 0, 1}, {1, 1, 1}},
};
// Create spatial anchor using the new API
CHK_XR(xrCreateSpatialAnchorSpaceANDROID(session, spatialContext, &createInfo, &spatialAnchorEntityId, &spatialAnchorSpace));
// ...
Bağlantı noktası varlık kimliğinden XrSpace oluşturma
Aşağıdaki örnek kodda, önceden var olan bir sabitleyici öğe kimliğinden nasıl XrSpace oluşturulacağı gösterilmektedir.
XrSpace anchorSpace = XR_NULL_HANDLE;
// Spatial anchor from XrSpace create info
XrSpatialAnchorSpaceFromIdCreateInfoANDROID createInfoFromId{
.type = XR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID,
.anchorEntityId = spatialAnchorEntityId,
};
// Create XrSpace handle from spatial anchor ID
CHK_XR(xrCreateSpatialAnchorSpaceFromIdANDROID(session, spatialContext, &createInfoFromId, &anchorSpace));
// ...
Yeni Komutlar
Yeni Yapılar
Yeni Enum Sabitleri
XR_ANDROID_SPATIAL_ANCHOR_SPACE_EXTENSION_NAMEXR_ANDROID_spatial_anchor_space_SPEC_VERSIONXrResult'ı genişletme:
XR_ERROR_SPATIAL_ANCHOR_ENTITY_ID_INVALID_ANDROID
XrStructureType'ı genişletme:
XR_TYPE_SPATIAL_ANCHOR_SPACE_FROM_ID_CREATE_INFO_ANDROID
Sayılar
Sürüm Geçmişi
Düzeltme 1, 15.09.2025 (YuSheng Chang, Kyle Chen)
- İlk uzantı açıklaması.