String Nama
XR_ANDROID_trackables
Jenis Ekstensi
Ekstensi instance
Registered Extension Number
456
Revisi
1
Dependensi Ekstensi dan Versi
Tanggal Terakhir Diubah
2024-09-30
Status IP
Tidak ada klaim IP yang diketahui.
Kontributor
Spencer Quin, Google
Nihav Jain, Google
John Pursey, Google
Jared Finder, Google
Levana Chen, Google
Kenny Vercaemer, Google
Ringkasan
Ekstensi ini memungkinkan aplikasi mengakses perangkat pelacak dari lingkungan fisik, dan membuat anchor yang terpasang ke perangkat pelacak.
Ekstensi ini menentukan pelacak bidang. Ekstensi lain dapat menambahkan jenis
yang dapat dilacak lainnya. Misalnya, XR_ANDROID_trackables_object menambahkan objek
yang dapat dilacak, dan XR_ANDROID_depth_texture menambahkan buffering kedalaman yang memungkinkan
raycasting ke titik arbitrer di lingkungan.
Trackable adalah sesuatu yang dilacak di lingkungan fisik (lihat XrTrackableTypeANDROID):
- bidang (misalnya, dinding, lantai, langit-langit, meja)
- objek (misalnya keyboard, mouse, laptop)
Membuat pelacak yang dapat dilacak
XrTrackableTrackerANDROID adalah nama sebutan yang mewakili resource yang diperlukan untuk menemukan dan memperbarui trackable dari XrTrackableTypeANDROID tertentu di lingkungan.
XR_DEFINE_HANDLE(XrTrackableTrackerANDROID)
Fungsi xrCreateTrackableTrackerANDROID ditentukan sebagai:
XrResult xrCreateTrackableTrackerANDROID(
XrSession session,
const XrTrackableTrackerCreateInfoANDROID* createInfo,
XrTrackableTrackerANDROID* trackableTracker);
Deskripsi Parameter
sessionadalah XrSession yang membuat pelacak.createInfoadalah pointer ke struktur XrTrackableTrackerCreateInfoANDROID yang berisi parameter yang akan digunakan untuk membuat pelacak.trackableTrackeradalah pointer ke handle tempat XrTrackableTrackerANDROID yang dibuat ditampilkan.
Aplikasi dapat menggunakan fungsi xrCreateTrackableTrackerANDROID untuk membuat pelacak yang dapat dilacak.
XR_ERROR_FEATURE_UNSUPPORTEDakan ditampilkan jika sistem tidak mendukung pelacak dari jenis yang ditentukan.XR_ERROR_PERMISSION_INSUFFICIENTakan ditampilkan jika izin yang diperlukan belum diberikan ke aplikasi panggilan.
Aplikasi dapat menggunakan nama sebutan pelacak yang ditampilkan dalam panggilan API berikutnya. Handle XrTrackableTrackerANDROID harus dibebaskan pada akhirnya menggunakan fungsi xrDestroyTrackableTrackerANDROID.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_trackablesharus diaktifkan sebelum memanggil xrCreateTrackableTrackerANDROID sessionharus berupa nama sebutan channel XrSession yang validcreateInfoharus berupa pointer ke struktur XrTrackableTrackerCreateInfoANDROID yang validtrackableTrackerharus berupa pointer ke nama sebutan channel XrTrackableTrackerANDROID
Kode Status
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_OUT_OF_MEMORYXR_ERROR_LIMIT_REACHEDXR_ERROR_FEATURE_UNSUPPORTED
Struktur XrTrackableTrackerCreateInfoANDROID ditentukan sebagai:
typedef struct XrTrackableTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
XrTrackableTypeANDROID trackableType;
} XrTrackableTrackerCreateInfoANDROID;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur. Tidak ada struktur semacam itu yang ditentukan di OpenXR inti atau ekstensi ini.trackableTypeadalah XrTrackableTypeANDROID yang akan dilacak oleh pelacak.
Struktur XrTrackableTrackerCreateInfoANDROID menyediakan opsi pembuatan untuk XrTrackableTrackerANDROID saat diteruskan ke xrCreateTrackableTrackerANDROID.
Ekstensi dapat menentukan struktur yang dapat dilampirkan ke next untuk memungkinkan
konfigurasi tambahan bagi pelacak yang dapat dilacak.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_trackablesharus diaktifkan sebelum menggunakan XrTrackableTrackerCreateInfoANDROID typeharus berupaXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROIDnextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai struktur. Lihat juga: XrTrackableObjectConfigurationANDROIDtrackableTypeharus berupa nilai XrTrackableTypeANDROID yang valid
Enum XrTrackableTypeANDROID ditentukan sebagai:
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;
Fungsi xrDestroyTrackableTrackerANDROID ditentukan sebagai:
XrResult xrDestroyTrackableTrackerANDROID(
XrTrackableTrackerANDROID trackableTracker);
Deskripsi Parameter
trackableTrackeradalah handle XrTrackableTrackerANDROID yang sebelumnya dibuat oleh xrCreateTrackableTrackerANDROID.
Fungsi xrDestroyTrackableTrackerANDROID menghancurkan pelacak yang dapat dilacak.
Jika tidak ada XrTrackableTrackerANDROID valid lainnya yang dibuat dengan XrTrackableTypeANDROID yang sama, sistem dapat menonaktifkan layanan pelacakan yang diperlukan untuk jenis yang dapat dilacak tersebut guna menghemat resource sistem.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_trackablesharus diaktifkan sebelum memanggil xrDestroyTrackableTrackerANDROID trackableTrackerharus berupa handle XrTrackableTrackerANDROID yang valid
Keamanan Thread
- Akses ke
trackableTracker, dan setiap nama sebutan turunan, harus disinkronkan secara eksternal
Kode Status
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
Mendapatkan semua item yang dapat dilacak
Atom XrTrackableANDROID ditentukan sebagai:
XR_DEFINE_ATOM(XrTrackableANDROID)
XrTrackableANDROID digunakan untuk mewakili satu objek yang dapat dilacak
dan hanya valid dalam siklus proses
XrTrackableTrackerANDROID terkait.
Fungsi xrGetAllTrackablesANDROID ditentukan sebagai:
XrResult xrGetAllTrackablesANDROID(
XrTrackableTrackerANDROID trackableTracker,
uint32_t trackableCapacityInput,
uint32_t* trackableCountOutput,
XrTrackableANDROID* trackables);
Deskripsi Parameter
trackableTrackeradalah XrTrackableTrackerANDROID yang akan dikueri.trackableCapacityInputadalah kapasitas arraytrackables, atau 0 untuk menunjukkan permintaan guna mengambil kapasitas yang diperlukan.trackableCountOutputadalah pointer ke jumlahtrackablesyang ditulis, atau pointer ke kapasitas yang diperlukan jikatrackablestidak memadai.trackablesadalah pointer ke arrayXrTrackableANDROID. Nilainya dapat berupaNULLjikatrackableCapacityInputadalah 0.Lihat bagian Parameter Ukuran Buffer untuk mengetahui penjelasan mendetail tentang pengambilan ukuran
trackablesyang diperlukan.
xrGetAllTrackablesANDROID mengisi array
XrTrackableANDROID yang mewakili trackable yang ditemukan di
lingkungan. XrTrackableTypeANDROID dari
trackables yang ditampilkan harus cocok dengan XrTrackableTypeANDROID dari
trackableTracker.
Mendapatkan bidang yang dapat dilacak
Fungsi xrGetTrackablePlaneANDROID ditentukan sebagai:
XrResult xrGetTrackablePlaneANDROID(
XrTrackableTrackerANDROID trackableTracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackablePlaneANDROID* planeOutput);
Deskripsi Parameter
trackableTrackeradalah XrTrackableTrackerANDROID yang akan dikueri.getInfoadalah XrTrackableGetInfoANDROID dengan informasi yang digunakan untuk mendapatkan bidang yang dapat dilacak.planeOutputadalah pointer ke struktur XrTrackablePlaneANDROID tempat bidang yang dapat dilacak ditampilkan.
Fungsi xrGetTrackablePlaneANDROID menampilkan detail tentang bidang yang dapat dilacak, seperti geometri, orientasi, dan status pelacakannya.
Informasi bidang di-resolve dan relatif terhadap ruang dasar pada saat panggilan ke xrGetTrackablePlaneANDROID menggunakan XrTrackableGetInfoANDROID::time, XrTrackableGetInfoANDROID::baseSpace.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_trackablesharus diaktifkan sebelum memanggil xrGetTrackablePlaneANDROID trackableTrackerharus berupa handle XrTrackableTrackerANDROID yang validgetInfoharus berupa pointer ke struktur XrTrackableGetInfoANDROID yang validplaneOutputharus berupa pointer ke struktur XrTrackablePlaneANDROID
Kode Status
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_TIME_INVALID
Struktur XrTrackableGetInfoANDROID ditentukan sebagai:
typedef struct XrTrackableGetInfoANDROID {
XrStructureType type;
void* next;
XrTrackableANDROID trackable;
XrSpace baseSpace;
XrTime time;
} XrTrackableGetInfoANDROID;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur. Tidak ada struktur semacam itu yang ditentukan di OpenXR inti atau ekstensi ini.trackableadalah bidangXrTrackableANDROIDyang akan dikueri.baseSpacepose bidang akan relatif terhadap XrSpace ini ditime.timeadalahXrTimetempat mengevaluasi koordinat secara relatif terhadapbaseSpace.
Struktur XrTrackableGetInfoANDROID menyediakan opsi kueri
saat diteruskan ke xrGetTrackablePlaneANDROID. trackable
harus sesuai dengan trackableTracker yang digunakan dalam
xrGetTrackablePlaneANDROID.
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID akan ditampilkan jika
jenis trackable yang dapat dilacak bukan XR_TRACKABLE_TYPE_PLANE_ANDROID.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_trackablesharus diaktifkan sebelum menggunakan XrTrackableGetInfoANDROID typeharus berupaXR_TYPE_TRACKABLE_GET_INFO_ANDROIDnextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai strukturbaseSpaceharus berupa nama sebutan XrSpace yang valid
Struktur XrTrackablePlaneANDROID ditentukan sebagai:
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;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur. Tidak ada struktur semacam itu yang ditentukan di OpenXR inti atau ekstensi ini.trackingStateadalah XrTrackingStateANDROID dari bidang.centerPoseadalah XrPosef yang menentukan posisi dan orientasi bidang dalam frame referensi XrTrackableGetInfoANDROID::baseSpace yang sesuai. Orientasi identitas di sini mewakili sumbu koordinat dengan +Y sejajar dengan normal bidang.extentsadalah dimensi XrExtent2Df bidang.planeTypeadalah XrPlaneTypeANDROID yang telah ditentukan runtime untuk bidang ini.planeLabeladalah XrPlaneLabelANDROID yang telah ditentukan runtime untuk bidang ini.subsumedByPlaneadalahXrTrackableANDROIDbidang yang menyerap bidang ini (XR_NULL_TRACKABLE_ANDROIDjika tidak ada).lastUpdatedTimeadalahXrTimedari update terakhir bidang.vertexCapacityInputadalah kapasitas arrayvertices, atau 0 untuk menunjukkan permintaan guna mengambil kapasitas yang diperlukan.vertexCountOutputadalah pointer ke jumlahverticesyang ditulis, atau pointer ke kapasitas yang diperlukan jikaverticestidak memadai.verticesadalah pointer ke array XrVector2f. Nilai ini dapat berupaNULLjikavertexCapacityInputadalah 0. Verteks berada dalam urutan berlawanan arah jarum jam. Poligon dapat cekung dan tidak boleh bersimpangan sendiri.- Lihat bagian Parameter Ukuran Buffer untuk mengetahui penjelasan
mendetail tentang pengambilan ukuran
verticesyang diperlukan.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_trackablesharus diaktifkan sebelum menggunakan XrTrackablePlaneANDROID typeharus berupaXR_TYPE_TRACKABLE_PLANE_ANDROIDnextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai strukturtrackingStateharus berupa nilai XrTrackingStateANDROID yang validplaneTypeharus berupa nilai XrPlaneTypeANDROID yang validplaneLabelharus berupa nilai XrPlaneLabelANDROID yang validvertexCountOutputharus berupa pointer ke nilaiuint32_tverticesharus berupa pointer ke array strukturvertexCapacityInputXrVector2f- Parameter
vertexCapacityInputharus lebih besar dari0
Enum XrTrackingStateANDROID menjelaskan status pelacakan
XrTrackableANDROID.
typedef enum XrTrackingStateANDROID {
XR_TRACKING_STATE_PAUSED_ANDROID = 0,
XR_TRACKING_STATE_STOPPED_ANDROID = 1,
XR_TRACKING_STATE_TRACKING_ANDROID = 2
} XrTrackingStateANDROID;
Deskripsi |
|
|
Menunjukkan bahwa pelacakan anchor atau yang dapat dilacak dijeda, tetapi dapat dilanjutkan di masa mendatang. |
|
Pelacakan telah dihentikan pada Item yang Dapat Dilacak ini dan tidak akan pernah dilanjutkan. |
|
Objek dilacak dan posenya saat ini. |
Enum XrPlaneTypeANDROID adalah jenis
bidang XrTrackableANDROID.
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;
Enum XrPlaneLabelANDROID adalah label untuk
bidang XrTrackableANDROID.
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;
Membuat ruang anchor
XrResult xrCreateAnchorSpaceANDROID(
XrSession session,
const XrAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
Deskripsi Parameter
sessionadalah XrSession yang membuat ruang anchor.createInfoadalah pointer ke struktur XrAnchorSpaceCreateInfoANDROID yang berisi parameter yang akan digunakan untuk membuat ruang anchor.anchorOutputadalah pointer ke handle tempat XrSpace yang dibuat ditampilkan.
Pada waktu kapan pun, posisi dan arah anchor dilacak atau
tidak dilacak. Artinya,
XR_SPACE_LOCATION_POSITION_TRACKED_BIT dan
XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT harus ditetapkan atau keduanya harus dihapus
saat aplikasi memanggil
xrLocateSpace atau xrLocateSpaces untuk
anchorOutput.
Aplikasi harus pada akhirnya mengosongkan XrSpace yang ditampilkan menggunakan xrDestroySpace.
XR_ERROR_FEATURE_UNSUPPORTEDharus ditampilkan jika sistem tidak mendukung anchor.XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROIDharus ditampilkan jika lampiran anchor tertentu tidak didukung.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_trackablesharus diaktifkan sebelum memanggil xrCreateAnchorSpaceANDROID sessionharus berupa nama sebutan channel XrSession yang validcreateInfoharus berupa pointer ke struktur XrAnchorSpaceCreateInfoANDROID yang validanchorOutputharus berupa pointer ke nama sebutan channel XrSpace
Kode Status
XR_SUCCESSXR_SESSION_LOSS_PENDING
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROIDXR_ERROR_VALIDATION_FAILUREXR_ERROR_RUNTIME_FAILUREXR_ERROR_HANDLE_INVALIDXR_ERROR_INSTANCE_LOSTXR_ERROR_SESSION_LOSTXR_ERROR_LIMIT_REACHEDXR_ERROR_POSE_INVALIDXR_ERROR_TIME_INVALIDXR_ERROR_OUT_OF_MEMORY
Struktur XrAnchorSpaceCreateInfoANDROID ditentukan sebagai:
typedef struct XrAnchorSpaceCreateInfoANDROID {
XrStructureType type;
void* next;
XrSpace space;
XrTime time;
XrPosef pose;
XrTrackableANDROID trackable;
} XrAnchorSpaceCreateInfoANDROID;
Deskripsi Anggota
typeadalah XrStructureType dari struktur ini.nextadalahNULLatau pointer ke struktur berikutnya dalam rantai struktur. Tidak ada struktur semacam itu yang ditentukan di OpenXR inti atau ekstensi ini.spaceadalah XrSpace tempat anchor akan dibuat.timeadalahXrTimepembuatan anchor.poseadalah XrPosef anchor.trackableadalahXrTrackableANDROIDtempat anchor akan dilampirkan.XR_NULL_TRACKABLE_ANDROIDmungkin untuk membuat anchor spasial.
Penggunaan yang Valid (Implisit)
- Ekstensi
XR_ANDROID_trackablesharus diaktifkan sebelum menggunakan XrAnchorSpaceCreateInfoANDROID typeharus berupaXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROIDnextharus berupaNULLatau pointer yang valid ke struktur berikutnya dalam rantai strukturspaceharus berupa nama sebutan XrSpace yang valid
Contoh kode untuk mendapatkan semua item yang dapat dilacak
Kode contoh berikut menunjukkan cara mendapatkan semua objek pelacak dari jenis tertentu.
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);
Contoh kode untuk mendapatkan bidang yang dapat dilacak
Kode contoh berikut menunjukkan cara mendapatkan bidang yang dapat dilacak dari
XrTrackableANDROID yang ada, yang diperoleh dari hasil hit
XR_ANDROID_raycast atau xrGetTrackablesANDROID.
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.
}
Contoh kode untuk membuat ruang anchor
Contoh kode berikut menunjukkan cara membuat ruang anchor yang dilampirkan ke objek yang dapat dilacak.
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);
Jenis Dasar Baru
Jenis Objek Baru
Konstanta Enum Baru
Enumerasi XrStructureType diperluas dengan:
XR_TYPE_TRACKABLE_GET_INFO_ANDROIDXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROIDXR_TYPE_TRACKABLE_PLANE_ANDROIDXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
Enumerasi XrObjectType diperluas dengan:
XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID
Enumerasi XrResult diperluas dengan:
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROIDXR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
Enum Baru
Struktur Baru
- XrTrackableTrackerCreateInfoANDROID
- XrTrackableGetInfoANDROID
- XrTrackablePlaneANDROID
- XrAnchorSpaceCreateInfoANDROID
Fungsi Baru
- xrCreateTrackableTrackerANDROID
- xrDestroyTrackableTrackerANDROID
- xrGetAllTrackablesANDROID
- xrGetTrackablePlaneANDROID
- xrCreateAnchorSpaceANDROID
Masalah
Histori Versi
- Revisi 1, 27-09-2024 (Kenny Vercaemer)
- Deskripsi ekstensi awal.
OpenXR™ dan logo OpenXR adalah merek dagang yang dimiliki oleh The Khronos Group Inc. dan terdaftar sebagai merek dagang di China, Uni Eropa, Jepang, dan Inggris Raya.