Ad dizesi
XR_ANDROID_trackables
Uzantı Türü
Örnek uzatma
Kayıtlı Uzatma Numarası
456
Düzeltme
1
Uzantı ve Sürüm Bağımlılıkları
Son Değiştirilme Tarihi
2024-09-30
IP Durumu
Bilinen IP hak talepleri yok.
Katkıda bulunanlar
Spencer Quin, Google
Nihav Jain, Google
John Pursey, Google
Jared Finder, Google
Levana Chen, Google
Kenny Vercaemer, Google
Genel Bakış
Bu uzantı, uygulamanın fiziksel ortamdaki takip edilebilir öğelere erişmesine ve takip edilebilir öğeye bağlı ankrajlar oluşturmasına olanak tanır.
Bu uzantı, uçak takip edilebilir öğelerini tanımlar. Diğer uzantılar ek izlenebilir türler ekleyebilir. Örneğin, XR_ANDROID_trackables_object
takip edilebilir nesneler ekler ve XR_ANDROID_depth_texture
, ortamdaki rastgele noktalara ışın izleme yapılmasına olanak tanıyan derinlik tamponları ekler.
İzlenebilir, fiziksel ortamda izlenen bir öğedir (XrTrackableTypeANDROID bölümüne bakın):
- bir düzlem (ör. duvar, zemin, tavan, masa)
- bir nesne (ör. klavye, fare, dizüstü bilgisayar)
İzlenebilir bir takip aracı oluşturma
XrTrackableTrackerANDROID, ortamda belirli bir XrTrackableTypeANDROID öğesinin izlenebilenlerini bulup güncellemek için gereken kaynakları temsil eden bir herkese açık tanımlayıcıdır.
XR_DEFINE_HANDLE(XrTrackableTrackerANDROID)
xrCreateTrackableTrackerANDROID işlevi şu şekilde tanımlanır:
XrResult xrCreateTrackableTrackerANDROID(
XrSession session,
const XrTrackableTrackerCreateInfoANDROID* createInfo,
XrTrackableTrackerANDROID* trackableTracker);
Parametre Açıklamaları
session
, takip cihazını oluşturan XrSession'dir.createInfo
, izleyiciyi oluşturmak için kullanılacak parametreleri içeren bir XrTrackableTrackerCreateInfoANDROID yapısının işaretçisidir.trackableTracker
, oluşturulan XrTrackableTrackerANDROID nesnesinin döndürüldüğü bir tutamacın işaretçisidir.
Uygulama, izlenebilir bir izleyici oluşturmak için xrCreateTrackableTrackerANDROID işlevini kullanabilir.
- Sistem belirtilen türdeki takip edilebilir öğeleri desteklemiyorsa
XR_ERROR_FEATURE_UNSUPPORTED
döndürülür. - Çağrı yapan uygulamaya gerekli izinler verilmemişse
XR_ERROR_PERMISSION_INSUFFICIENT
döndürülür.
Uygulama, sonraki API çağrılarında döndürülen izleyici kimliğini kullanabilir. XrTrackableTrackerANDROID mülkünün, xrDestroyTrackableTrackerANDROID işlevi kullanılarak nihayetinde serbest bırakılması gerekir.
Geçerli Kullanım (Dolayı)
- xrCreateTrackableTrackerANDROID çağrılmadan önce
XR_ANDROID_trackables
uzantısı etkinleştirilmelidir. session
geçerli bir XrSession herkese açık kullanıcı adı olmalıdır.createInfo
, geçerli bir XrTrackableTrackerCreateInfoANDROID yapısının işaretçisi olmalıdır.trackableTracker
, XrTrackableTrackerANDROID işaretçisine yönelmelidir.
İade Kodları
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_OUT_OF_MEMORY
XR_ERROR_LIMIT_REACHED
XR_ERROR_FEATURE_UNSUPPORTED
XrTrackableTrackerCreateInfoANDROID yapısı şu şekilde tanımlanır:
typedef struct XrTrackableTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
XrTrackableTypeANDROID trackableType;
} XrTrackableTrackerCreateInfoANDROID;
Üye Açıklamaları
type
, bu yapının XrStructureType değeridir.next
,NULL
veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.trackableType
, izleyicinin izleyeceği XrTrackableTypeANDROID değeridir.
XrTrackableTrackerCreateInfoANDROID yapısı, xrCreateTrackableTrackerANDROID işlevine aktarıldığında XrTrackableTrackerANDROID için oluşturma seçenekleri sağlar.
Uzantılar, izlenebilir izleyiciler için ek yapılandırma yapılmasına olanak tanımak amacıyla next
'ye eklenebilecek yapıları tanımlayabilir.
Geçerli Kullanım (Dolayı)
- XrTrackableTrackerCreateInfoANDROID kullanılmadan önce
XR_ANDROID_trackables
uzantısı etkinleştirilmelidir. type
XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
olmalıdırnext
NULL
veya yapı zincirindeki sonraki yapıya işaret eden geçerli bir işaretçi olmalıdır. Ayrıca şuna da bakın: XrTrackableObjectConfigurationANDROIDtrackableType
geçerli bir XrTrackableTypeANDROID değeri olmalıdır
XrTrackableTypeANDROID enum şu şekilde tanımlanır:
typedef enum XrTrackableTypeANDROID {
XR_TRACKABLE_TYPE_NOT_VALID_ANDROID = 0,
XR_TRACKABLE_TYPE_PLANE_ANDROID = 1,
XR_TRACKABLE_TYPE_DEPTH_ANDROID = 1000463000,
XR_TRACKABLE_TYPE_OBJECT_ANDROID = 1000466000
} XrTrackableTypeANDROID;
xrDestroyTrackableTrackerANDROID işlevi şu şekilde tanımlanır:
XrResult xrDestroyTrackableTrackerANDROID(
XrTrackableTrackerANDROID trackableTracker);
Parametre Açıklamaları
trackableTracker
, daha önce xrCreateTrackableTrackerANDROID tarafından oluşturulmuş bir XrTrackableTrackerANDROID işleyicisidir.
xrDestroyTrackableTrackerANDROID işlevi, izlenebilir takip cihazını yok eder.
Aynı XrTrackableTypeANDROID ile oluşturulmuş başka bir geçerli XrTrackableTrackerANDROID yoksa sistem, sistem kaynaklarını korumak için bu izlenebilir tür için gereken izleme hizmetlerini devre dışı bırakabilir.
Geçerli Kullanım (Dolayı)
- xrDestroyTrackableTrackerANDROID çağrılmadan önce
XR_ANDROID_trackables
uzantısı etkinleştirilmelidir. trackableTracker
, geçerli bir XrTrackableTrackerANDROID işaretçisi olmalıdır.
Thread Güvenliği
trackableTracker
ve alt herkese açık kimliklere erişim, harici olarak senkronize edilmelidir.
İade Kodları
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_HANDLE_INVALID
Tüm takip edilebilir öğeleri alma
XrTrackableANDROID
atomu şu şekilde tanımlanır:
XR_DEFINE_ATOM(XrTrackableANDROID)
XrTrackableANDROID
tek bir izlenebilir öğeyi temsil etmek için kullanılır ve yalnızca ilişkili XrTrackableTrackerANDROID öğesinin yaşam döngüsü içinde geçerlidir.
xrGetAllTrackablesANDROID işlevi şu şekilde tanımlanır:
XrResult xrGetAllTrackablesANDROID(
XrTrackableTrackerANDROID trackableTracker,
uint32_t trackableCapacityInput,
uint32_t* trackableCountOutput,
XrTrackableANDROID* trackables);
Parametre Açıklamaları
trackableTracker
, sorgulanacak XrTrackableTrackerANDROID öğesidir.trackableCapacityInput
,trackables
dizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0 değerini alır.trackableCountOutput
, yazılantrackables
sayısının işaretçisidir veyatrackables
yetersiz olduğunda gereken kapasitenin işaretçisidir.trackables
,XrTrackableANDROID
dizisinin işaretçisidir.trackableCapacityInput
0 iseNULL
olabilir.Gerekli
trackables
boyutunu almayla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
xrGetAllTrackablesANDROID, ortamda bulunan takip edilebilir öğeleri temsil eden bir XrTrackableANDROID
dizisi doldurur. Döndürülen trackables
öğesinin XrTrackableTypeANDROID değeri, trackableTracker
öğesinin XrTrackableTypeANDROID değeriyle eşleşmelidir.
Takip edilebilir uçak alma
xrGetTrackablePlaneANDROID işlevi şu şekilde tanımlanır:
XrResult xrGetTrackablePlaneANDROID(
XrTrackableTrackerANDROID trackableTracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackablePlaneANDROID* planeOutput);
Parametre Açıklamaları
trackableTracker
, sorgulanacak XrTrackableTrackerANDROID öğesidir.getInfo
, izlenebilen düzlemi almak için kullanılan bilgileri içeren XrTrackableGetInfoANDROID işlevidir.planeOutput
, izlenebilen düzlemin döndürüldüğü XrTrackablePlaneANDROID yapısına işaretçidir.
xrGetTrackablePlaneANDROID işlevi, izlenebilir düzlemle ilgili geometri, yön ve izleme durumu gibi ayrıntıları döndürür.
Uçak bilgileri, XrTrackableGetInfoANDROID::time, XrTrackableGetInfoANDROID::baseSpace kullanılarak xrGetTrackablePlaneANDROID çağrısı sırasında çözülür ve temel alana göre ilişkilendirilir.
Geçerli Kullanım (Dolayı)
- xrGetTrackablePlaneANDROID çağrısı yapılmadan önce
XR_ANDROID_trackables
uzantısı etkinleştirilmelidir. trackableTracker
, geçerli bir XrTrackableTrackerANDROID işaretçisi olmalıdır.getInfo
, geçerli bir XrTrackableGetInfoANDROID yapısının işaretçisi olmalıdır.planeOutput
, XrTrackablePlaneANDROID yapısına işaret eden bir işaretçi olmalıdır.
İade Kodları
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_LIMIT_REACHED
XR_ERROR_TIME_INVALID
XrTrackableGetInfoANDROID yapısı şu şekilde tanımlanır:
typedef struct XrTrackableGetInfoANDROID {
XrStructureType type;
void* next;
XrTrackableANDROID trackable;
XrSpace baseSpace;
XrTime time;
} XrTrackableGetInfoANDROID;
Üye Açıklamaları
type
, bu yapının XrStructureType değeridir.next
,NULL
veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.trackable
, sorgulanacakXrTrackableANDROID
uçağıdır.baseSpace
uçak pozu,time
'daki bu XrSpace'e göre belirlenir.time
,baseSpace
'e göre koordinatların değerlendirileceğiXrTime
değeridir.
XrTrackableGetInfoANDROID yapısı, xrGetTrackablePlaneANDROID işlevine iletildiğinde sorgu seçenekleri sağlar. trackable
, xrGetTrackablePlaneANDROID'da kullanılan trackableTracker
ile eşleşmelidir.
trackable
öğesinin izlenebilir türü XR_TRACKABLE_TYPE_PLANE_ANDROID
değilse XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
döndürülür.
Geçerli Kullanım (Dolayı)
- XrTrackableGetInfoANDROID işlevi kullanılmadan önce
XR_ANDROID_trackables
uzantısı etkinleştirilmelidir. type
XR_TYPE_TRACKABLE_GET_INFO_ANDROID
olmalıdırnext
NULL
veya yapı zincirindeki sonraki yapıya işaret eden geçerli bir işaretçi olmalıdır.baseSpace
geçerli bir XrSpace herkese açık kullanıcı adı olmalıdır.
XrTrackablePlaneANDROID yapısı şu şekilde tanımlanır:
typedef struct XrTrackablePlaneANDROID {
XrStructureType type;
void* next;
XrTrackingStateANDROID trackingState;
XrPosef centerPose;
XrExtent2Df extents;
XrPlaneTypeANDROID planeType;
XrPlaneLabelANDROID planeLabel;
XrTrackableANDROID subsumedByPlane;
XrTime lastUpdatedTime;
uint32_t vertexCapacityInput;
uint32_t* vertexCountOutput;
XrVector2f* vertices;
} XrTrackablePlaneANDROID;
Üye Açıklamaları
type
, bu yapının XrStructureType değeridir.next
,NULL
veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.trackingState
, uçağın XrTrackingStateANDROID değeridir.centerPose
, düzlemle ilgili XrTrackableGetInfoANDROID::baseSpace referans çerçevesinin içinde düzlemin konumunu ve yönünü tanımlayan bir XrPosef bağımsız değişkenidir. Buradaki kimlik yönelimi, +Y'nin düzlem normaline paralel olduğu bir koordinat eksenini temsil eder.extents
, düzlemdeki XrExtent2Df boyutudur.planeType
, çalışma zamanının bu uçak için belirlediği XrPlaneTypeANDROID değeridir.planeLabel
, çalışma zamanında bu uçak için belirlenen XrPlaneLabelANDROID değeridir.subsumedByPlane
, bu düzlemi kapsayan düzlemdekiXrTrackableANDROID
değeridir (yok iseXR_NULL_TRACKABLE_ANDROID
).lastUpdatedTime
, uçağın son güncellemesininXrTime
değeridir.vertexCapacityInput
,vertices
dizisinin kapasitesidir veya gerekli kapasiteyi alma isteğini belirtmek için 0 değerini alır.vertexCountOutput
, yazılanvertices
sayısının işaretçisidir veyavertices
yetersiz olduğunda gerekli kapasitenin işaretçisidir.vertices
, XrVector2f dizisinin işaretçisidir.vertexCapacityInput
0 iseNULL
olabilir. Köşeler saat yönünün tersine göre sıralanır. Poligon içbükey olabilir ve kendi kendini kesmemelidir (kesişmemelidir).- Gerekli
vertices
boyutunu almayla ilgili ayrıntılı açıklama için Arabellek Boyutu Parametreleri bölümüne bakın.
Geçerli Kullanım (Dolayı)
- XrTrackablePlaneANDROID kullanılmadan önce
XR_ANDROID_trackables
uzantısı etkinleştirilmelidir. type
XR_TYPE_TRACKABLE_PLANE_ANDROID
olmalıdırnext
NULL
veya yapı zincirindeki sonraki yapıya işaret eden geçerli bir işaretçi olmalıdır.trackingState
geçerli bir XrTrackingStateANDROID değeri olmalıdırplaneType
geçerli bir XrPlaneTypeANDROID değeri olmalıdır.planeLabel
geçerli bir XrPlaneLabelANDROID değeri olmalıdır.vertexCountOutput
,uint32_t
değerine işaret eden bir işaretçi olmalıdır.vertices
vertexCapacityInput
XrVector2f yapılarının bir dizisinin işaretçisi olmalıdırvertexCapacityInput
parametresi0
değerinden büyük olmalıdır.
XrTrackingStateANDROID enum, XrTrackableANDROID
öğesinin izleme durumunu tanımlar.
typedef enum XrTrackingStateANDROID {
XR_TRACKING_STATE_PAUSED_ANDROID = 0,
XR_TRACKING_STATE_STOPPED_ANDROID = 1,
XR_TRACKING_STATE_TRACKING_ANDROID = 2
} XrTrackingStateANDROID;
Açıklama |
|
|
İzlenebilir veya ankraj izlemenin duraklatıldığını ancak gelecekte devam ettirilebileceğini belirtir. |
|
Bu İzlenebilir'in takibi durduruldu ve hiçbir zaman devam ettirilmeyecek. |
|
Nesne izlenir ve duruşu günceldir. |
XrPlaneTypeANDROID enum, XrTrackableANDROID
uçağının türüdür.
typedef enum XrPlaneTypeANDROID {
XR_PLANE_TYPE_HORIZONTAL_DOWNWARD_FACING_ANDROID = 0,
XR_PLANE_TYPE_HORIZONTAL_UPWARD_FACING_ANDROID = 1,
XR_PLANE_TYPE_VERTICAL_ANDROID = 2,
XR_PLANE_TYPE_ARBITRARY_ANDROID = 3
} XrPlaneTypeANDROID;
XrPlaneLabelANDROID enum, XrTrackableANDROID
düzlemi için bir etikettir.
typedef enum XrPlaneLabelANDROID {
XR_PLANE_LABEL_UNKNOWN_ANDROID = 0,
XR_PLANE_LABEL_WALL_ANDROID = 1,
XR_PLANE_LABEL_FLOOR_ANDROID = 2,
XR_PLANE_LABEL_CEILING_ANDROID = 3,
XR_PLANE_LABEL_TABLE_ANDROID = 4
} XrPlaneLabelANDROID;
Sabitleme alanı oluşturma
XrResult xrCreateAnchorSpaceANDROID(
XrSession session,
const XrAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
Parametre Açıklamaları
session
, ankraj alanını oluşturan XrSession'dir.createInfo
, ankraj alanını oluşturmak için kullanılacak parametreleri içeren bir XrAnchorSpaceCreateInfoANDROID yapısının işaretçisidir.anchorOutput
, oluşturulan XrSpace öğesinin döndürüldüğü bir herkese açık kullanıcı adına işaretçidir.
Herhangi bir zamanda ankrajın hem konumu hem de yönü izlenir veya izlenmez. Bu, uygulama anchorOutput
için xrLocateSpace veya xrLocateSpaces'i çağırdığında hem XR_SPACE_LOCATION_POSITION_TRACKED_BIT
hem de XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT
'nin ayarlanması veya silinmesi gerektiği anlamına gelir.
Uygulama, xrDestroySpace işlevini kullanarak döndürülen XrSpace'i silmek zorundadır.
- Sistem sabitlemeleri desteklemiyorsa
XR_ERROR_FEATURE_UNSUPPORTED
döndürülmelidir. - Belirli bir ankraj eki desteklenmiyorsa
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
döndürülmelidir.
Geçerli Kullanım (Dolayı)
- xrCreateAnchorSpaceANDROID çağrılmadan önce
XR_ANDROID_trackables
uzantısı etkinleştirilmelidir. session
geçerli bir XrSession herkese açık kullanıcı adı olmalıdır.createInfo
, geçerli bir XrAnchorSpaceCreateInfoANDROID yapısının işaretçisi olmalıdır.anchorOutput
, XrSpace herkese açık kullanıcı adına işaret eden bir işaretçi olmalıdır.
İade Kodları
XR_SUCCESS
XR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTED
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
XR_ERROR_VALIDATION_FAILURE
XR_ERROR_RUNTIME_FAILURE
XR_ERROR_HANDLE_INVALID
XR_ERROR_INSTANCE_LOST
XR_ERROR_SESSION_LOST
XR_ERROR_LIMIT_REACHED
XR_ERROR_POSE_INVALID
XR_ERROR_TIME_INVALID
XR_ERROR_OUT_OF_MEMORY
XrAnchorSpaceCreateInfoANDROID yapısı şu şekilde tanımlanır:
typedef struct XrAnchorSpaceCreateInfoANDROID {
XrStructureType type;
void* next;
XrSpace space;
XrTime time;
XrPosef pose;
XrTrackableANDROID trackable;
} XrAnchorSpaceCreateInfoANDROID;
Üye Açıklamaları
type
, bu yapının XrStructureType değeridir.next
,NULL
veya bir yapı zincirindeki sonraki yapının işaretçisidir. Temel OpenXR'da veya bu uzantıda böyle bir yapı tanımlanmamıştır.space
, ankrajın oluşturulacağı XrSpace'tir.time
, ana öğeninXrTime
değeridir.pose
, ankrajın XrPosef değeridir.trackable
, ankrajın ekleneceğiXrTrackableANDROID
öğesidir. Uzamsal ankraj oluşturmakXR_NULL_TRACKABLE_ANDROID
olabilir.
Geçerli Kullanım (Dolayı)
- XrAnchorSpaceCreateInfoANDROID işlevi kullanılmadan önce
XR_ANDROID_trackables
uzantısı etkinleştirilmelidir. type
XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
olmalıdırnext
NULL
veya yapı zincirindeki sonraki yapıya işaret eden geçerli bir işaretçi olmalıdır.space
geçerli bir XrSpace herkese açık kullanıcı adı olmalıdır.
Tüm takip edilebilir öğeleri almayla ilgili örnek kod
Aşağıdaki örnek kodda, belirli bir türdeki tüm izlenebilir öğelerin nasıl alınacağı gösterilmektedir.
XrSession session; // previously initialized
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrCreateTrackableTrackerANDROID xrCreateTrackableTrackerANDROID; // previously initialized
PFN_xrGetAllTrackablesANDROID xrGetAllTrackablesANDROID; // previously initialized
PFN_xrDestroyTrackableTrackerANDROID xrDestroyTrackableTrackerANDROID; // previously initialized
XrTrackableTrackerCreateInfoANDROID createInfo{XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID};
createInfo.trackableType = XR_TRACKABLE_TYPE_PLANE_ANDROID;
XrTrackableTrackerANDROID planeTrackableTracker;
XrResult result = xrCreateTrackableTrackerANDROID(
session,
&createInfo,
&planeTrackableTracker);
if (result != XR_SUCCESS) { /* Handle failures. */ }
uint32_t trackableCountOutput = 0;
std::vector<XrTrackableANDROID> allPlaneTrackables;
// Query the number of trackables available.
result = xrGetAllTrackablesANDROID(
planeTrackableTracker,
0,
&trackableCountOutput,
nullptr
);
if (result == XR_SUCCESS) {
allPlaneTrackables.resize(trackableCountOutput, XR_NULL_HANDLE);
// Fetch the actual trackable handles in the appropriately resized array.
result = xrGetAllTrackablesANDROID(
planeTrackableTracker,
trackableCountOutput,
&trackableCountOutput,
allPlaneTrackables.data());
if (result == XR_SUCCESS) {
for (XrTrackableANDROID trackable : allPlaneTrackables) {
// You now have all trackables of the specified type.
}
}
}
// Release trackable tracker.
result = xrDestroyTrackableTrackerANDROID(planeTrackableTracker);
İzlenebilir uçak almak için örnek kod
Aşağıdaki örnek kodda, isabet sonucu XR_ANDROID_raycast
veya xrGetTrackablesANDROID
'den elde edilen mevcut bir XrTrackableANDROID
'den nasıl izlenebilir bir düzlem alınacağı gösterilmektedir.
XrTrackableTrackerANDROID planeTracker; // previously created
// The function pointers are previously initialized using xrGetInstanceProcAddr.
PFN_xrGetTrackablePlaneANDROID xrGetTrackablePlaneANDROID; // previously initialized
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().
XrTrackableGetInfoANDROID planeGetInfo;
planeGetInfo.type = XR_TYPE_TRACKABLE_GET_INFO_ANDROID;
planeGetInfo.next = nullptr;
planeGetInfo.trackable = planeTrackable;
planeGetInfo.space = appSpace;
planeGetInfo.time = updateTime;
XrTrackablePlaneANDROID plane = { XR_TYPE_TRACKABLE_PLANE_ANDROID };
result = xrGetTrackablePlaneANDROID(
planeTracker,
&planeGetInfo,
&plane
);
if (result == XR_SUCCESS) {
// Plane tracking state, center pose, extents, type now available in plane.
}
Sabitleme alanı oluşturmaya yönelik örnek kod
Aşağıdaki örnek kodda, bir izlenebilir öğeye bağlı bir ankraj alanı oluşturma işlemi gösterilmektedir.
XrSession session; // Created at app startup.
XrTime updateTime; // Time used for the current frame's simulation update.
XrSpace appSpace; // Space created for XR_REFERENCE_SPACE_TYPE_LOCAL.
XrTrackableANDROID planeTrackable; // Acquired from a hit result or getTrackables().
// Create an anchor at (2, 2, 2) world-coordinates.
XrAnchorSpaceCreateInfoANDROID spatialAnchorCreateInfo;
spatialAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
spatialAnchorCreateInfo.next = nullptr;
spatialAnchorCreateInfo.space = appSpace;
spatialAnchorCreateInfo.time = updateTime;
spatialAnchorCreateInfo.pose = { { 0, 0, 0, 1 }, { 2, 2, 2 } };
XrSpace spatialAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
session,
&spatialAnchorCreateInfo,
&spatialAnchor
);
// Create an anchor attached to a trackable.
XrTrackablePlane plane = ...;
XrAnchorSpaceCreateInfoANDROID trackableAnchorCreateInfo;
trackableAnchorCreateInfo.type = XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID;
trackableAnchorCreateInfo.next = nullptr;
trackableAnchorCreateInfo.space = appState;
trackableAnchorCreateInfo.pose = plane.centerPose;
trackableAnchorCreateInfo.trackable = planeTrackable;
XrSpace trackableAnchor = XR_NULL_HANDLE;
XrResult result = xrCreateAnchorSpaceANDROID(
session,
&trackableAnchorCreateInfo,
&trackableAnchor
);
while (true) {
// app update loop
// ...
// Get the current location of the anchor's space w.r.t the world.
XrSpaceLocation anchorLocation = { XR_TYPE_SPACE_LOCATION };
result = xrLocateSpace(trackableAnchor, appSpace, updateTime, &anchorLocation);
if (anchor.trackingState == XR_TRACKING_STATE_TRACKING_ANDROID) {
// Update anchor pose.
doDrawingForAnchor(anchorLocation.pose);
} else {
// ...
}
}
// Cleanup - destroy the space, detatch the anchor so its no longer tracked by the
// runtime and then release all resources held by it.
xrDestroySpace(spatialAnchor);
xrDestroySpace(trackableAnchor);
Yeni Temel Türleri
Yeni Nesne Türleri
Yeni Enum Constants
XrStructureType dizini aşağıdakilerle genişletildi:
XR_TYPE_TRACKABLE_GET_INFO_ANDROID
XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
XR_TYPE_TRACKABLE_PLANE_ANDROID
XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
XrObjectType dizini aşağıdakilerle genişletildi:
XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID
XrResult dizini şu şekilde genişletildi:
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
Yeni Sıralamalar
Yeni Yapılar
- XrTrackableTrackerCreateInfoANDROID
- XrTrackableGetInfoANDROID
- XrTrackablePlaneANDROID
- XrAnchorSpaceCreateInfoANDROID
Yeni İşlevler
- xrCreateTrackableTrackerANDROID
- xrDestroyTrackableTrackerANDROID
- xrGetAllTrackablesANDROID
- xrGetTrackablePlaneANDROID
- xrCreateAnchorSpaceANDROID
Sorunlar
Sürüm Geçmişi
- Düzeltme 1, 27.09.2024 (Kenny Vercaemer)
- İlk uzantı açıklaması.