XRSession
Limited availability
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.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Giao diện XRSession của WebXR Device API biểu diễn một phiên XR đang diễn ra, cung cấp các phương thức và thuộc tính được sử dụng để tương tác và điều khiển phiên. Để mở một phiên WebXR, hãy sử dụng phương thức requestSession() của giao diện XRSystem.
Với các phương thức của XRSession, bạn có thể thăm dò vị trí và hướng của người xem (XRViewerPose), thu thập thông tin về môi trường của người dùng và hiển thị hình ảnh cho người dùng. XRSession hỗ trợ cả chế độ nội tuyến và chế độ thực tế ảo/thực tế tăng cường nhập vai.
Thuộc tính thể hiện
Ngoài các thuộc tính được liệt kê bên dưới, XRSession kế thừa các thuộc tính từ giao diện cha của nó, EventTarget.
depthDataFormatExperimental Read only-
Trả về định dạng dữ liệu cảm biến độ sâu mà phiên đã được cấu hình.
depthUsageExperimental Read only-
Trả về cách sử dụng cảm biến độ sâu mà phiên đã được cấu hình.
domOverlayStateExperimental Read only-
Cung cấp thông tin về lớp phủ DOM, nếu tính năng được bật.
enabledFeaturesExperimental Read only-
Trả về một mảng các tính năng phiên đã được cấp phép.
environmentBlendModeExperimental Read only-
Trả về chế độ hòa trộn của phiên này, cho biết mức độ hiển thị của môi trường thực tế qua thiết bị XR và cách thiết bị sẽ hòa trộn hình ảnh thiết bị với môi trường thực.
inputSourcesExperimental Read only-
Trả về danh sách các
XRInputSourcecủa phiên này, mỗi cái biểu diễn một thiết bị đầu vào được sử dụng để điều khiển camera và/hoặc cảnh. interactionModeExperimental Read only-
Trả về chế độ tương tác của phiên này, mô tả không gian tốt nhất (theo tác nhân người dùng) để ứng dụng vẽ giao diện người dùng tương tác cho phiên hiện tại.
preferredReflectionFormatExperimental Read only-
Trả về định dạng phản chiếu ưa thích của phiên này được sử dụng cho dữ liệu texture ước tính ánh sáng.
renderStateExperimental Read only-
Một đối tượng
XRRenderStatechứa các tùy chọn ảnh hưởng đến cách hình ảnh được kết xuất. Điều này bao gồm các mặt phẳng cắt gần và xa (các khoảng cách xác định vật thể có thể gần và xa đến đâu và vẫn được kết xuất), cũng như thông tin về trường nhìn. visibilityStateExperimental Read only-
Một chuỗi cho biết hình ảnh của phiên có hiển thị cho người dùng hay không và nếu có, liệu nó có đang hiển thị nhưng không phải là mục tiêu của sự kiện người dùng hiện tại.
Phương thức thể hiện
Ngoài các phương thức kế thừa từ giao diện cha EventTarget, XRSession cung cấp các phương thức sau.
cancelAnimationFrame()Experimental-
Xóa một callback khỏi tập hợp các callback kết xuất khung hình của
XRSession, dựa trên giá trị định danh duy nhất được trả về bởi lệnh gọirequestAnimationFrame()trước đó. end()Experimental-
Kết thúc phiên WebXR. Trả về một
promisesẽ được resolve khi phiên đã được tắt hoàn toàn. requestAnimationFrame()Experimental-
Lên lịch phương thức được chỉ định để được gọi lần tiếp theo khi user agent đang thực hiện kết xuất một khung hình hoạt ảnh cho thiết bị WebXR. Trả về một giá trị số nguyên có thể được sử dụng để xác định yêu cầu nhằm mục đích hủy callback bằng
cancelAnimationFrame(). Phương thức này có thể so sánh với phương thứcWindow.requestAnimationFrame(). requestHitTestSource()Experimental-
Yêu cầu một đối tượng
XRHitTestSourcexử lý việc đăng ký kiểm tra va chạm. requestHitTestSourceForTransientInput()Experimental-
Yêu cầu một đối tượng
XRTransientInputHitTestSourcexử lý việc đăng ký kiểm tra va chạm cho nguồn đầu vào tạm thời. requestLightProbe()Experimental-
Yêu cầu một
XRLightProbeước tính thông tin ánh sáng tại một điểm nhất định trong môi trường của người dùng. requestReferenceSpace()Experimental-
Yêu cầu tạo một
XRReferenceSpacemới có kiểu được chỉ định. Trả về một promise sẽ resolve vớiXRReferenceSpacehoặcXRBoundedReferenceSpaceđã được yêu cầu, hoặc ném ra mộtDOMExceptionNotSupportedErrornếu kiểu không gian được yêu cầu không được thiết bị hỗ trợ. updateRenderState()Experimental-
Cập nhật các thuộc tính của trạng thái kết xuất phiên.
Sự kiện
Các sự kiện sau được gửi đến các đối tượng XRSession.
endExperimental-
Được gửi đến đối tượng
XRSessionsau khi phiên WebXR đã kết thúc và tất cả các hàm liên quan đến phần cứng đã hoàn tất. Sự kiện được biểu diễn bởi một đối tượng loạiXRSessionEvent. Cũng có sẵn thông qua thuộc tính trình xử lý sự kiệnonend. inputsourceschangeExperimental-
Một sự kiện loại
XRInputSourcesChangeEventđược gửi đếnXRSessionkhi danh sách các nguồn đầu vào XR đang hoạt động đã thay đổi. Cũng có sẵn thông qua thuộc tính trình xử lý sự kiệnoninputsourceschange. selectExperimental-
Một sự kiện loại
XRInputSourceEventđược gửi đến phiên khi một trong các nguồn đầu vào của phiên đã hoàn thành thành công một hành động chính. Điều này thường tương ứng với việc người dùng nhấn cò, bàn di chuột hoặc nút, nói lệnh hoặc thực hiện một cử chỉ có thể nhận dạng. Sự kiệnselectđược gửi sau sự kiệnselectstartvà ngay trước sự kiệnselectend. Nếuselectkhông được gửi, thì hành động chọn đã bị hủy bỏ trước khi hoàn tất. Cũng có sẵn thông qua thuộc tính trình xử lý sự kiệnonselect. selectendExperimental-
Một sự kiện loại
XRInputSourceEventđược gửi đến đối tượng phiên khi một trong các thiết bị đầu vào của nó kết thúc hành động chính hoặc bị ngắt kết nối trong quá trình xử lý hành động chính. Ví dụ: đối với các hành động nút hoặc cò, điều này có nghĩa là nút đã được thả ra; đối với các lệnh nói, điều này có nghĩa là người dùng đã nói xong. Đây là sự kiện cuối cùng trong ba sự kiệnselect*được gửi. Cũng có sẵn thông qua thuộc tính trình xử lý sự kiệnonselectend. selectstartExperimental-
Một sự kiện loại
XRInputSourceEventđược gửi đến đối tượng phiên khi một trong các thiết bị đầu vào của nó lần đầu tiên được người dùng kích hoạt theo cách gây ra bắt đầu hành động chính. Đây là sự kiệnsession*đầu tiên được gửi. Cũng có sẵn thông qua thuộc tính trình xử lý sự kiệnonselectstart. squeezeExperimental-
Một
XRInputSourceEventđược gửi để cho biết rằng một hành động bóp chính đã hoàn thành thành công. Điều này cho biết thiết bị đang bị bóp đã được thả ra và có thể biểu thị việc thả một đối tượng đã nắm, ví dụ. Nó được gửi ngay trước sự kiệnsqueezeendđể cho biết rằng hành động bóp đã kết thúc. Cũng có sẵn thông qua thuộc tính trình xử lý sự kiệnonsqueeze. squeezeendExperimental-
Một
XRInputSourceEventđược gửi đếnXRSessionkhi hành động bóp chính kết thúc, bất kể hành động có thành công hay không. Cũng có sẵn bằng cách sử dụng thuộc tính trình xử lý sự kiệnonsqueezeend. squeezestartExperimental-
Một sự kiện loại
XRInputSourceEventđược gửi đếnXRSessionkhi người dùng bắt đầu bóp một bộ điều khiển có thể bóp. Đây có thể là, ví dụ, một cò được sử dụng để biểu thị việc nắm bắt đối tượng, hoặc có thể biểu thị việc bóp thực tế khi đeo găng xúc giác. Cũng có sẵn thông qua thuộc tính trình xử lý sự kiệnonsqueezestart. visibilitychangeExperimental-
Một
XRSessionEventđược gửi đến phiên khi trạng thái hiển thị của nó được chỉ định bởivisibilityStatethay đổi. Cũng có sẵn thông qua thuộc tính trình xử lý sự kiệnonvisibilitychange.
Ví dụ
Ví dụ này thiết lập một XRSession mới ở chế độ inline để nó có thể được hiển thị trong một phần tử HTML, tránh nhu cầu sử dụng thiết bị xem AR hoặc VR chuyên dụng như kính thực tế ảo.
const XR = navigator.xr;
if (XR) {
XR.requestSession("inline").then((xrSession) => {
xrSession.requestReferenceSpace("local").then((xrReferenceSpace) => {
xrSession.requestAnimationFrame((time, xrFrame) => {
const viewer = xrFrame.getViewerPose(xrReferenceSpace);
gl.bindFramebuffer(xrWebGLLayer.framebuffer);
for (const xrView of viewer.views) {
const xrViewport = xrWebGLLayer.getViewport(xrView);
gl.viewport(
xrViewport.x,
xrViewport.y,
xrViewport.width,
xrViewport.height,
);
}
});
});
});
} else {
/* WebXR is not available */
}
Thông số kỹ thuật
| Specification |
|---|
| WebXR Device API> # xrsession-interface> |