XRView:eye 屬性
XRView 介面的只讀 **eye** 屬性是一個字串,用於指示 XRView 代表哪隻眼睛的視點:left(左眼)或 right(右眼)。對於不代表任何一隻眼睛的檢視,例如單眼檢視,此屬性的值為 none。
值
一個可以為以下值之一的字串
用法說明
此屬性的主要目的是允許將任何預渲染立體內容(stereo content)的正確區域呈現給正確的眼睛。對於動態渲染的 3D 內容,您通常可以忽略此屬性,並依次渲染檢視者的每個檢視。
示例
此程式碼來自檢視器姿勢 (viewer pose) 的渲染器,它會遍歷姿勢的檢視並進行渲染。但是,我們有一些標誌,如果為 true,則表示在遊戲中某隻眼睛受傷了。渲染該眼睛時,如果標誌為 true,則跳過該檢視而不進行渲染。
js
glLayer = xrSession.renderState.baseLayer;
gl.bindFramebuffer(gl.FRAMEBUFFER, glLayer.framebuffer);
gl.clearColor(0, 0, 0, 1.0);
gl.clearDepth(1.0);
gl.clear(gl.COLOR_BUFFER_BIT, gl.DEPTH_BUFFER_BIT);
for (const view of xrPose.views) {
let skipView = false;
if (view.eye === "left" && body.leftEye.injured) {
skipView = updateInjury(body.leftEye);
} else if (view.eye === "right" && body.rightEye.injured) {
skipView = updateInjury(body.rightEye);
}
if (!skipView) {
let viewport = glLayer.getViewport(view);
gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);
renderScene(gl, view);
}
}
對於每個檢視,都會檢查 eye 的值,如果它為 left 或 right,我們就會檢查 body.leftEye.injured 或 body.rightEye.injured 屬性是否為 true;如果是,我們就會在該眼睛上呼叫 updateInjury() 函式,以根據遊戲需求執行諸如允許少量治癒、追蹤中毒效果的進度等操作。
updateInjury() 返回 true 表示眼睛仍然受傷,或者返回 false 表示眼睛已透過該函式恢復健康。如果結果為 false(表示眼睛現在健康),我們則為該眼睛渲染場景。否則,不渲染。
規範
| 規範 |
|---|
| WebXR Device API # dom-xrview-eye |
瀏覽器相容性
載入中…