XRViewerPose
Khả dụng hạn chế
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Giao diện XRViewerPose của WebXR Device API đại diện cho tư thế (vị trí và hướng) của điểm nhìn của người xem đối với cảnh. Mỗi XRViewerPose có thể có nhiều góc nhìn để đại diện, ví dụ như khoảng cách nhỏ giữa mắt trái và mắt phải.
Góc nhìn này có thể đại diện cho bất kỳ điều gì từ điểm nhìn của tai nghe XR của người dùng đến góc nhìn được biểu diễn bởi chuyển động của avatar trong trò chơi bằng chuột và bàn phím hiển thị trên màn hình, đến một camera ảo ghi lại cảnh cho người xem.
Thuộc tính phiên bản
Ngoài các thuộc tính được kế thừa từ XRPose, XRViewerPose bao gồm những thuộc tính sau:
viewsRead only-
Một mảng các đối tượng
XRView, một cho mỗi điểm nhìn lên cảnh cần thiết để hiển thị cảnh cho người dùng. Một tai nghe thông thường cung cấp tư thế người xem với hai góc nhìn có thuộc tínheyelàlefthoặcright, cho biết mắt nào mà góc nhìn đó đại diện. Kết hợp với nhau, các góc nhìn này có thể tái tạo hiệu ứng 3D khi hiển thị trên thiết bị XR.
Ghi chú sử dụng
Đối tượng XRViewerPose được dùng để mô tả trạng thái của người xem trong cảnh WebXR khi được thiết bị XR theo dõi. Người xem có thể là hình đại diện ảo của người dùng, hoặc có thể đại diện cho một thiết bị hay giao diện khác có thể đóng vai trò là nguồn của vị trí và hướng tạo nên góc nhìn lên cảnh. Ví dụ, mỗi người chơi trong một trò chơi nhập vai nhiều người chơi có thể có một phiên bản XRViewerPose để cung cấp cách tính toán những gì họ có thể thấy.
XRViewerPose luôn được lấy và tham chiếu tương đối với một XRReferenceSpace hiện có. Điều này đảm bảo các vị trí và hướng được báo cáo bằng hệ tọa độ tương đối dự kiến.
Để kết xuất một cảnh sử dụng XRViewerPose đại diện cho đầu người dùng, cần duyệt qua các góc nhìn trong mảng views, kết xuất chúng lần lượt. Bằng cách gọi viewport() trên ngữ cảnh WebGL, chỉ định XRView làm đầu vào, bạn có thể lấy viewport để dùng khi kết xuất nhằm vẽ khung hình cho mắt đó vào đúng phần của bề mặt vẽ.
Ngoài ra, khi kết xuất cảnh cho khán giả hoặc người chơi khác trong trò chơi nhiều người, transform của XRViewerPose có thể được dùng để xác định cả vị trí và hướng nhìn của người chơi khác trong trò chơi, để họ có thể được vẽ ở đúng nơi với đúng hướng.
Tư thế người xem cho khung hình hoạt động được đại diện bởi XRFrame có thể được lấy bằng cách gọi phương thức getViewerPose() của khung, chỉ định không gian tham chiếu mà vị trí gốc nên được tính. XRViewerPose trả về cho bạn biết người xem đang ở đâu và họ đang nhìn theo hướng nào tại thời điểm khung hình đó diễn ra.
Ví dụ
Trong ví dụ này, là một phần của mã để kết xuất XRFrame, getViewerPose() được gọi để lấy XRViewerPose sử dụng cùng không gian tham chiếu mà mã đang dùng làm không gian tham chiếu cơ sở. Nếu tư thế hợp lệ được trả về, khung hình được kết xuất bằng cách xóa bộ đệm phụ rồi kết xuất từng góc nhìn trong tư thế, thường là các góc nhìn cho mắt trái và mắt phải.
const pose = frame.getViewerPose(xrReferenceSpace);
if (pose) {
const glLayer = xrSession.renderState.baseLayer;
gl.bindFrameBuffer(gl.FRAMEBUFFER, glLayer.framebuffer);
gl.clearColor(0, 0, 0, 1);
gl.clearDepth(1);
gl.clear(gl.COLOR_BUFFER_BIT, gl.DEPTH_BUFFER_BIT);
for (const view of pose.views) {
const viewport = glLayer.getViewport(view);
gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);
/* kết xuất cảnh cho mắt view.eye */
}
}
Truyền từng view vào getViewport() trả về viewport WebGL cần áp dụng để đầu ra kết xuất được định vị chính xác trong framebuffer để kết xuất tới mắt tương ứng trên thiết bị đầu ra.
Mã này được lấy từ Vẽ một khung hình trong ví dụ WebXR "Chuyển động và di chuyển" của chúng tôi.
Thông số kỹ thuật
| Thông số kỹ thuật |
|---|
| WebXR Device API> # xrviewerpose-interface> |