在 WebVR 模式下同步渲染鼠标 (WebGL) 和指针锁定坐标

Sync rendered mouse (WebGL) and Pointer Lock coordinates in WebVR-mode

我正在尝试将我渲染的鼠标与 pointer lock coordinates. The pointer lock hides the mouse cursor, so that's why I need to draw it separately. I have a 3D-scene with a primitive as mouse pointer. I used billboarding 同步以在 (0,0, -1) 处绘制鼠标光标,因此在这个 3D-[=23= 中它看起来像一个 2D 对象],不错

Lookie lookie

到目前为止一切顺利。为了计算基于指针锁定的 x 和 y 坐标,我使用这个:

var movementX = e.movementX || e.mozMovementX || e.webkitMovementX || 0;
var movementY = e.movementY || e.mozMovementY || e.webkitMovementY || 0;
x += movementX;
y += movementY;

第一个问题是,我不知道最初必须如何设置 x 和 y 坐标。当您进入 VR 模式时,光标设置为 (0,0, -1),因此它们必须在 2D-space 中同步。因为有两只眼睛,我认为它类似于 width/2 或 width/4,但这没有用。此外,我需要一个正确的渲染加速因子,因为鼠标太快了。我猜又是宽度的东西。

鼠标事件return x 和 y 值(以像素为单位)。如果您将它们直接应用到渲染光标的位置,它们可能会立即将光标移出屏幕。您可能只需要按比例缩小像素单位,例如 x += movementX / 100 之类的。