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 đí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ố
session
là XrSession tạo trình theo dõi.createInfo
là con trỏ đến cấu trúc XrTrackableTrackerCreateInfoANDROID chứa các tham số dùng để tạo trình theo dõi.trackableTracker
là 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_UNSUPPORTED
sẽ được trả về nếu hệ thống không hỗ trợ đối tượng có thể theo dõi thuộc loại đã chỉ định.XR_ERROR_PERMISSION_INSUFFICIENT
sẽ đượ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 điều khiển 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_trackables
trước khi gọi xrCreateTrackableTrackerANDROID session
phải là một tay cầm XrSession hợp lệcreateInfo
phải là con trỏ đến cấu trúc XrTrackableTrackerCreateInfoANDROID hợp lệtrackableTracker
phải là con trỏ đến một tay cầm XrTrackableTrackerANDROID
Mã trả về
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
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
type
là XrStructureType của cấu trúc này.next
làNULL
hoặ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.trackableType
là 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_trackables
trước khi sử dụng XrTrackableTrackerCreateInfoANDROID type
phải làXR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
next
phải làNULL
hoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúc. Xem thêm: XrTrackableObjectConfigurationANDROIDtrackableType
phả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ố
trackableTracker
là 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_trackables
trước khi gọi xrDestroyTrackableTrackerANDROID trackableTracker
phải là một tay cầm XrTrackableTrackerANDROID hợp lệ
Độ an toàn cho luồng
- Quyền truy cập vào
trackableTracker
và 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_UNSUPPORTED
XR_ERROR_HANDLE_INVALID
Lấy tất cả đối tượng có thể 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ố
trackableTracker
là XrTrackableTrackerANDROID để truy vấn.trackableCapacityInput
là dung lượng của mảngtrackables
hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.trackableCountOutput
là con trỏ đến số lượngtrackables
đã ghi hoặc con trỏ đến dung lượng cần thiết trong trường hợptrackables
không đủ.trackables
là con trỏ trỏ đến một mảngXrTrackableANDROID
. Giá trị này có thể làNULL
nếutrackableCapacityInput
là 0.Hãy xem phần Tham số kích thước bộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước
trackables
bắ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áy bay 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ố
trackableTracker
là XrTrackableTrackerANDROID để truy vấn.getInfo
là XrTrackableGetInfoANDROID với thông tin dùng để lấy mặt phẳng có thể theo dõi.planeOutput
là 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_trackables
trước khi gọi xrGetTrackablePlaneANDROID trackableTracker
phải là một tay cầm XrTrackableTrackerANDROID hợp lệgetInfo
phải là con trỏ đến một cấu trúc XrTrackableGetInfoANDROID hợp lệplaneOutput
phải là con trỏ trỏ đến cấu trúc XrTrackablePlaneANDROID
Mã trả về
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
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
type
là XrStructureType của cấu trúc này.next
làNULL
hoặ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.trackable
là mặt phẳngXrTrackableANDROID
để truy vấn.baseSpace
tư thế của mặt phẳng sẽ tương ứng với XrSpace này tạitime
.time
làXrTime
tạ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_trackables
trước khi sử dụng XrTrackableGetInfoANDROID type
phải làXR_TYPE_TRACKABLE_GET_INFO_ANDROID
next
phải làNULL
hoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúcbaseSpace
phả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
type
là XrStructureType của cấu trúc này.next
làNULL
hoặ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.trackingState
là XrTrackingStateANDROID của mặt phẳng.centerPose
là 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.extents
là kích thước XrExtent2Df của mặt phẳng.planeType
là XrPlaneTypeANDROID mà thời gian chạy đã xác định cho mặt phẳng này.planeLabel
là XrPlaneLabelANDROID mà thời gian chạy đã xác định cho mặt phẳng này.subsumedByPlane
làXrTrackableANDROID
của mặt phẳng bao hàm mặt phẳng này (XR_NULL_TRACKABLE_ANDROID
nếu không có mặt phẳng nào).lastUpdatedTime
làXrTime
của lần cập nhật gần đây nhất của mặt phẳng.vertexCapacityInput
là dung lượng của mảngvertices
hoặc 0 để cho biết yêu cầu truy xuất dung lượng cần thiết.vertexCountOutput
là con trỏ đến số lượngvertices
đã ghi hoặc con trỏ đến dung lượng cần thiết trong trường hợpvertices
không đủ.vertices
là con trỏ đến một mảng XrVector2f. Giá trị này có thể làNULL
nếuvertexCapacityInput
là 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ộ nhớ đệm để biết nội dung mô tả chi tiết về cách truy xuất kích thước
vertices
bắ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_trackables
trước khi sử dụng XrTrackablePlaneANDROID type
phải làXR_TYPE_TRACKABLE_PLANE_ANDROID
next
phải làNULL
hoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúctrackingState
phải là một giá trị XrTrackingStateANDROID hợp lệplaneType
phải là một giá trị XrPlaneTypeANDROID hợp lệplaneLabel
phải là một giá trị XrPlaneLabelANDROID hợp lệvertexCountOutput
phải là con trỏ đến giá trịuint32_t
vertices
phải là con trỏ trỏ đến một mảng cấu trúcvertexCapacityInput
XrVector2f- Tham số
vertexCapacityInput
phả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 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 neo
XrResult xrCreateAnchorSpaceANDROID(
XrSession session,
const XrAnchorSpaceCreateInfoANDROID* createInfo,
XrSpace* anchorOutput);
Nội dung mô tả tham số
session
là XrSession tạo không gian neo.createInfo
là 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.anchorOutput
là 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_UNSUPPORTED
nếu hệ thống không hỗ trợ neo. - Phải trả về
XR_ERROR_TRACKABLE_TYPE_NOT_SUPPORTED_ANDROID
nế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_trackables
trước khi gọi xrCreateAnchorSpaceANDROID session
phải là một tay cầm XrSession hợp lệcreateInfo
phải là con trỏ đến một cấu trúc XrAnchorSpaceCreateInfoANDROID hợp lệanchorOutput
phải là con trỏ đến tên người dùng XrSpace
Mã trả về
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
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
type
là XrStructureType của cấu trúc này.next
làNULL
hoặ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.space
là XrSpace mà trên đó sẽ tạo điểm neo.time
làXrTime
của việc tạo neo.pose
là XrPosef của neo.trackable
làXrTrackableANDROID
mà 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_trackables
trước khi sử dụng XrAnchorSpaceCreateInfoANDROID type
phải làXR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
next
phải làNULL
hoặc con trỏ hợp lệ đến cấu trúc tiếp theo trong chuỗi cấu trúcspace
phả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_ANDROID
XR_TYPE_ANCHOR_SPACE_CREATE_INFO_ANDROID
XR_TYPE_TRACKABLE_PLANE_ANDROID
XR_TYPE_TRACKABLE_TRACKER_CREATE_INFO_ANDROID
Bổ sung enum XrObjectType bằng:
XR_OBJECT_TYPE_TRACKABLE_TRACKER_ANDROID
Bổ sung enum XrResult bằng:
XR_ERROR_MISMATCHING_TRACKABLE_TYPE_ANDROID
XR_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)
- Mô tả ban đầu về tiện ích.