Chuỗi tên
XR_ANDROID_trackables
Loại phần mở rộng
Tiện ích thực thể
Số điện thoại mở rộng đã đăng ký
456
Bản sửa đổi
1
Phần mở rộng và phần phụ thuộc phiên bản
Ngày sửa đổi gần đây nhất
2024-09-30
Trạng thái IP
Không có thông báo xác nhận quyền sở hữu đối với tài sản trí tuệ nào.
Cộng tác viên
Spencer Quin, Google
Nihav Jain, Google
John Pursey, Google
Jared Finder, Google
Levana Chen, Google
Kenny Vercaemer, Google
Tổng quan
Tiện ích này cho phép ứng dụng truy cập vào các thiết bị theo dõi từ môi trường thực và tạo neo được đính kèm vào một thiết bị theo dõi.
Tiện ích này xác định các đối tượng có thể theo dõi trên mặt phẳng. Các tiện ích khác có thể thêm các loại có thể theo dõi khác. Ví dụ: XR_ANDROID_trackables_object thêm đối tượng có thể theo dõi và XR_ANDROID_depth_texture thêm vùng đệm chiều sâu cho phép truyền tia tới các điểm tuỳ ý trong môi trường.
Đối tượng có thể theo dõi là đối tượng được theo dõi trong môi trường thực tế (xem XrTrackableTypeANDROID):
- một mặt phẳng (ví dụ: tường, sàn, trần, bàn)
- một đối tượng (ví dụ: bàn phím, chuột, máy tính xách tay)
Tạo trình theo dõi có thể theo dõi
XrTrackableTrackerANDROID là một tay cầm đại diện cho các tài nguyên cần thiết để khám phá và cập nhật các đối tượng có thể theo dõi của một XrTrackableTypeANDROID nhất định trong môi trường.
XR_DEFINE_HANDLE(XrTrackableTrackerANDROID)
Hàm xrCreateTrackableTrackerANDROID được xác định là:
XrResult xrCreateTrackableTrackerANDROID(
XrSession session,
const XrTrackableTrackerCreateInfoANDROID* createInfo,
XrTrackableTrackerANDROID* trackableTracker);
Nội dung mô tả tham số
sessionlà XrSession tạo trình theo dõi.createInfolà con trỏ đến cấu trúc XrTrackableTrackerCreateInfoANDROID chứa các tham số sẽ được dùng để tạo trình theo dõi.trackableTrackerlà con trỏ đến một tay cầm trong đó XrTrackableTrackerANDROID đã tạo được trả về.
Ứng dụng có thể sử dụng hàm xrCreateTrackableTrackerANDROID để tạo trình theo dõi có thể theo dõi.
XR_ERROR_FEATURE_UNSUPPORTEDsẽ được trả về nếu hệ thống không hỗ trợ các đối tượng có thể theo dõi thuộc loại đã chỉ định.XR_ERROR_PERMISSION_INSUFFICIENTsẽ được trả về nếu bạn chưa cấp các quyền cần thiết cho ứng dụng gọi.
Ứng dụng có thể sử dụng tên người dùng của trình theo dõi được trả về trong các lệnh gọi API tiếp theo. Cuối cùng, bạn phải giải phóng tay cầm XrTrackableTrackerANDROID bằng cách sử dụng hàm xrDestroyTrackableTrackerANDROID.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_trackablestrước khi gọi xrCreateTrackableTrackerANDROID sessionphải là một tay cầm XrSession hợp lệcreateInfophải là con trỏ đến một cấu trúc XrTrackableTrackerCreateInfoANDROID hợp lệtrackableTrackerphải là con trỏ đến một tay cầm XrTrackableTrackerANDROID
Mã trả về
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
Cấu trúc XrTrackableTrackerCreateInfoANDROID được xác định như sau:
typedef struct XrTrackableTrackerCreateInfoANDROID {
XrStructureType type;
void* next;
XrTrackableTypeANDROID trackableType;
} XrTrackableTrackerCreateInfoANDROID;
Nội dung mô tả thành viên
typelà XrStructureType của cấu trúc này.nextlàNULLhoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.trackableTypelà XrTrackableTypeANDROID mà trình theo dõi sẽ theo dõi.
Cấu trúc XrTrackableTrackerCreateInfoANDROID cung cấp các tuỳ chọn tạo cho XrTrackableTrackerANDROID khi được truyền đến xrCreateTrackableTrackerANDROID.
Tiện ích có thể xác định các cấu trúc có thể đính kèm vào next để cho phép thêm cấu hình cho các trình theo dõi có thể theo dõi.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_trackablestrước khi sử dụng XrTrackableTrackerCreateInfoANDROID typephải làXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROIDnextphải làNULLhoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Xem thêm: XrTrackableObjectConfigurationANDROIDtrackableTypephải là một giá trị XrTrackableTypeANDROID hợp lệ
Enum XrTrackableTypeANDROID được xác định là:
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;
Hàm xrDestroyTrackableTrackerANDROID được xác định là:
XrResult xrDestroyTrackableTrackerANDROID(
XrTrackableTrackerANDROID trackableTracker);
Nội dung mô tả tham số
trackableTrackerlà một tay cầm XrTrackableTrackerANDROID do xrCreateTrackableTrackerANDROID tạo trước đó.
Hàm xrDestroyTrackableTrackerANDROID huỷ bỏ trình theo dõi có thể theo dõi.
Nếu không có XrTrackableTrackerANDROID hợp lệ nào khác được tạo bằng cùng một XrTrackableTypeANDROID, thì hệ thống có thể tắt các dịch vụ theo dõi cần thiết cho loại đối tượng có thể theo dõi đó để tiết kiệm tài nguyên hệ thống.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_trackablestrước khi gọi xrDestroyTrackableTrackerANDROID trackableTrackerphải là một tay cầm XrTrackableTrackerANDROID hợp lệ
Độ an toàn cho luồng
- Quyền truy cập vào
trackableTrackervà mọi tay điều khiển con phải được đồng bộ hoá bên ngoài
Mã trả về
XR_SUCCESS
XR_ERROR_FUNCTION_UNSUPPORTEDXR_ERROR_HANDLE_INVALID
Lấy tất cả thiết bị theo dõi
Nguyên tử XrTrackableANDROID được xác định là:
XR_DEFINE_ATOM(XrTrackableANDROID)
XrTrackableANDROID được dùng để biểu thị một đối tượng có thể theo dõi và chỉ hợp lệ trong vòng đời của XrTrackableTrackerANDROID liên kết.
Hàm xrGetAllTrackablesANDROID được xác định là:
XrResult xrGetAllTrackablesANDROID(
XrTrackableTrackerANDROID trackableTracker,
uint32_t trackableCapacityInput,
uint32_t* trackableCountOutput,
XrTrackableANDROID* trackables);
Nội dung mô tả tham số
trackableTrackerlà XrTrackableTrackerANDROID để truy vấn.trackableCapacityInputlà dung lượng của mảngtrackableshoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.trackableCountOutputlà con trỏ đến số lượngtrackablesđã ghi hoặc con trỏ đến dung lượng cần thiết trong trường hợptrackableskhông đủ.trackableslà con trỏ trỏ đến một mảngXrTrackableANDROID. Giá trị này có thể làNULLnếutrackableCapacityInputlà 0.Hãy xem phần Tham số kích thước bộ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước
trackablesbắt buộc.
xrGetAllTrackablesANDROID điền một mảng XrTrackableANDROID đại diện cho các đối tượng có thể theo dõi được tìm thấy trong môi trường. XrTrackableTypeANDROID của trackables được trả về phải khớp với XrTrackableTypeANDROID của trackableTracker.
Lấy mặt phẳng có thể theo dõi
Hàm xrGetTrackablePlaneANDROID được xác định là:
XrResult xrGetTrackablePlaneANDROID(
XrTrackableTrackerANDROID trackableTracker,
const XrTrackableGetInfoANDROID* getInfo,
XrTrackablePlaneANDROID* planeOutput);
Nội dung mô tả tham số
trackableTrackerlà XrTrackableTrackerANDROID để truy vấn.getInfolà XrTrackableGetInfoANDROID với thông tin dùng để lấy mặt phẳng có thể theo dõi.planeOutputlà con trỏ trỏ đến cấu trúc XrTrackablePlaneANDROID trong đó mặt phẳng có thể theo dõi được trả về.
Hàm xrGetTrackablePlaneANDROID trả về thông tin chi tiết về mặt phẳng có thể theo dõi, chẳng hạn như hình học, hướng và trạng thái theo dõi.
Thông tin về mặt phẳng được phân giải và tương ứng với không gian cơ sở tại thời điểm gọi xrGetTrackablePlaneANDROID bằng cách sử dụng XrTrackableGetInfoANDROID::time, XrTrackableGetInfoANDROID::baseSpace.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_trackablestrước khi gọi xrGetTrackablePlaneANDROID trackableTrackerphải là một tay cầm XrTrackableTrackerANDROID hợp lệgetInfophải là con trỏ đến một cấu trúc XrTrackableGetInfoANDROID hợp lệplaneOutputphải là con trỏ trỏ đến cấu trúc XrTrackablePlaneANDROID
Mã trả về
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
Cấu trúc XrTrackableGetInfoANDROID được xác định là:
typedef struct XrTrackableGetInfoANDROID {
XrStructureType type;
void* next;
XrTrackableANDROID trackable;
XrSpace baseSpace;
XrTime time;
} XrTrackableGetInfoANDROID;
Nội dung mô tả thành viên
typelà XrStructureType của cấu trúc này.nextlàNULLhoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.trackablelà mặt phẳngXrTrackableANDROIDđể truy vấn.baseSpacetư thế của mặt phẳng sẽ tương ứng với XrSpace này tạitime.timelàXrTimetại đó để đánh giá toạ độ tương ứng vớibaseSpace.
Cấu trúc XrTrackableGetInfoANDROID cung cấp các tuỳ chọn truy vấn khi được truyền đến xrGetTrackablePlaneANDROID. trackable
phải tương ứng với trackableTracker dùng trong xrGetTrackablePlaneANDROID.
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID sẽ được trả về nếu loại có thể theo dõi của trackable không phải là XR_TRACKABLE_TYPE_PLANE_ANDROID.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_trackablestrước khi sử dụng XrTrackableGetInfoANDROID typephải làXR_TYPE_TRACKABLE_GET_INFO_ANDROIDnextphải làNULLhoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúcbaseSpacephải là một tên người dùng XrSpace hợp lệ
Cấu trúc XrTrackablePlaneANDROID được xác định là:
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;
Nội dung mô tả thành viên
typelà XrStructureType của cấu trúc này.nextlàNULLhoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.trackingStatelà XrTrackingStateANDROID của mặt phẳng.centerPoselà một XrPosef xác định vị trí và hướng của mặt phẳng trong khung tham chiếu của XrTrackableGetInfoANDROID::baseSpace tương ứng. Hướng nhận dạng ở đây biểu thị một trục toạ độ với +Y song song với pháp tuyến của mặt phẳng.extentslà kích thước XrExtent2Df của mặt phẳng.planeTypelà XrPlaneTypeANDROID mà thời gian chạy đã xác định cho mặt phẳng này.planeLabellà XrPlaneLabelANDROID mà thời gian chạy đã xác định cho mặt phẳng này.subsumedByPlanelàXrTrackableANDROIDcủa mặt phẳng bao hàm mặt phẳng này (XR_NULL_TRACKABLE_ANDROIDnếu không có mặt phẳng nào).lastUpdatedTimelàXrTimecủa lần cập nhật gần đây nhất của mặt phẳng.vertexCapacityInputlà dung lượng của mảngverticeshoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.vertexCountOutputlà con trỏ đến số lượngverticesđã ghi hoặc con trỏ đến dung lượng cần thiết trong trường hợpverticeskhông đủ.verticeslà con trỏ đến một mảng XrVector2f. Giá trị này có thể làNULLnếuvertexCapacityInputlà 0. Các đỉnh được sắp xếp theo thứ tự ngược chiều kim đồng hồ. Đa giác có thể lõm và không được tự giao nhau.- Hãy xem phần Tham số kích thước bộ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước
verticesbắt buộc.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_trackablestrước khi sử dụng XrTrackablePlaneANDROID typephải làXR_TYPE_TRACKABLE_PLANE_ANDROIDnextphải làNULLhoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúctrackingStatephải là một giá trị XrTrackingStateANDROID hợp lệplaneTypephải là một giá trị XrPlaneTypeANDROID hợp lệplaneLabelphải là một giá trị XrPlaneLabelANDROID hợp lệvertexCountOutputphải là con trỏ đến giá trịuint32_tverticesphải là con trỏ trỏ đến một mảng cấu trúcvertexCapacityInputXrVector2f- Tham số
vertexCapacityInputphải lớn hơn0
Enum XrTrackingStateANDROID mô tả trạng thái theo dõi của XrTrackableANDROID.
typedef enum XrTrackingStateANDROID {
XR_TRACKING_STATE_PAUSED_ANDROID = 0,
XR_TRACKING_STATE_STOPPED_ANDROID = 1,
XR_TRACKING_STATE_TRACKING_ANDROID = 2
} XrTrackingStateANDROID;
Nội dung mô tả |
|
|
Cho biết rằng tính năng theo dõi đối tượng có thể theo dõi hoặc theo dõi neo đang tạm dừng nhưng có thể tiếp tục trong tương lai. |
|
Tính năng theo dõi đã dừng trên Đối tượng có thể theo dõi này và sẽ không bao giờ tiếp tục. |
|
Đối tượng được theo dõi và tư thế của đối tượng là hiện tại. |
Enum XrPlaneTypeANDROID là loại của một mặt phẳng 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 là nhãn cho một mặt phẳng 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;
Tạo không gian cố định
XrResult xrCreateAnchorSpaceANDROID(
XrSession session,
const XrAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
Nội dung mô tả tham số
sessionlà XrSession tạo không gian neo.createInfolà con trỏ đến cấu trúc XrAnchorSpaceCreateInfoANDROID chứa các thông số sẽ được dùng để tạo không gian neo.anchorOutputlà con trỏ đến một tay cầm trong đó XrSpace đã tạo được trả về.
Tại bất kỳ thời điểm nào, cả vị trí và hướng của neo đều được theo dõi hoặc không được theo dõi. Điều này có nghĩa là bạn phải đặt cả XR_SPACE_LOCATION_POSITION_TRACKED_BIT và XR_SPACE_LOCATION_ORIENTATION_TRACKED_BIT hoặc xoá cả hai khi ứng dụng gọi xrLocateSpace hoặc xrLocateSpaces cho anchorOutput.
Cuối cùng, ứng dụng phải giải phóng XrSpace được trả về bằng cách sử dụng xrDestroySpace.
- Phải trả về
XR_ERROR_FEATURE_UNSUPPORTEDnếu hệ thống không hỗ trợ neo. - Phải trả về
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROIDnếu không hỗ trợ tệp đính kèm neo cụ thể.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_trackablestrước khi gọi xrCreateAnchorSpaceANDROID sessionphải là một tay cầm XrSession hợp lệcreateInfophải là con trỏ đến một cấu trúc XrAnchorSpaceCreateInfoANDROID hợp lệanchorOutputphải là con trỏ đến một tên người dùng XrSpace
Mã trả về
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
Cấu trúc XrAnchorSpaceCreateInfoANDROID được xác định là:
typedef struct XrAnchorSpaceCreateInfoANDROID {
XrStructureType type;
void* next;
XrSpace space;
XrTime time;
XrPosef pose;
XrTrackableANDROID trackable;
} XrAnchorSpaceCreateInfoANDROID;
Nội dung mô tả thành viên
typelà XrStructureType của cấu trúc này.nextlàNULLhoặc con trỏ trỏ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Không có cấu trúc nào như vậy được xác định trong OpenXR cốt lõi hoặc tiện ích này.spacelà XrSpace nơi sẽ tạo neo.timelàXrTimecủa việc tạo neo.poselà XrPosef của neo.trackablelàXrTrackableANDROIDmà neo sẽ được đính kèm. Có thể làXR_NULL_TRACKABLE_ANDROIDđể tạo một điểm neo không gian.
Cách sử dụng hợp lệ (ngầm ẩn)
- Bạn phải bật tiện ích
XR_ANDROID_trackablestrước khi sử dụng XrAnchorSpaceCreateInfoANDROID typephải làXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROIDnextphải làNULLhoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúcspacephải là một tên người dùng XrSpace hợp lệ
Mã ví dụ để lấy tất cả đối tượng có thể theo dõi
Mã ví dụ sau đây minh hoạ cách lấy tất cả đối tượng có thể theo dõi thuộc một loại nhất định.
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);
Mã ví dụ để lấy mặt phẳng có thể theo dõi
Mã ví dụ sau đây minh hoạ cách lấy một mặt phẳng có thể theo dõi từ một XrTrackableANDROID hiện có, thu được từ kết quả nhấn XR_ANDROID_raycast hoặc 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.
}
Mã ví dụ để tạo không gian neo
Mã ví dụ sau đây minh hoạ cách tạo không gian neo được đính kèm vào một đối tượng có thể theo dõi.
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);
Các loại cơ sở mới
Các loại đối tượng mới
Hằng số enum mới
Bổ sung enum XrStructureType:
XR_TYPE_TRACKABLE_GET_INFO_ANDROIDXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROIDXR_TYPE_TRACKABLE_PLANE_ANDROIDXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
Bổ sung enum XrObjectType:
XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID
Bổ sung enum XrResult bằng:
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROIDXR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
Enum mới
Cấu trúc mới
- XrTrackableTrackerCreateInfoANDROID
- XrTrackableGetInfoANDROID
- XrTrackablePlaneANDROID
- XrAnchorSpaceCreateInfoANDROID
Hàm mới
- xrCreateTrackableTrackerANDROID
- xrDestroyTrackableTrackerANDROID
- xrGetAllTrackablesANDROID
- xrGetTrackablePlaneANDROID
- xrCreateAnchorSpaceANDROID
Vấn đề
Nhật ký phiên bản
- Bản sửa đổi 1, ngày 27 tháng 9 năm 2024 (Kenny Vercaemer)
- Nội dung mô tả ban đầu của tiện ích.
OpenXR™ và biểu trưng OpenXR là các nhãn hiệu thuộc sở hữu của The Khronos Group Inc. và được đăng ký dưới dạng nhãn hiệu ở Trung Quốc, Liên minh Châu Âu, Nhật Bản và Vương quốc Anh.