【问题标题】:Sync rendered mouse (WebGL) and Pointer Lock coordinates in WebVR-mode在 WebVR 模式下同步渲染鼠标 (WebGL) 和指针锁定坐标
【发布时间】:2015-04-11 11:13:44
【问题描述】:

我正在尝试将渲染的鼠标与pointer lock 坐标同步。指针锁隐藏了鼠标光标,所以我需要单独绘制它。我有一个带有原始鼠标指针的 3D 场景。我用billboarding在(0,0,-1)处绘制了鼠标光标,所以它在这个3D空间中看起来像一个2D-Object,不错。

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 空间中同步。由于两只眼睛,我认为它类似于 width/2 或 width/4,但这不起作用。另外我需要一个正确的渲染加速因子,因为鼠标太快了。我猜又是宽度的东西。

【问题讨论】:

  • “我以为是 width/2 或 width/4 之类的东西,因为有两只眼睛,但那行不通。” ——究竟是怎么破的?你想让它做什么?
  • 我需要与 2D 坐标同步的初始渲染鼠标位置 (0,0,-1) 用于对象拾取。我根据 x 和 y 的距离绘制鼠标指针。但是拾取不起作用,因为指针锁定坐标和渲染鼠标之间存在偏移。我认为它可能是宽度/2 或宽度/4,因为它是 2D 屏幕的中心。 (0,0,-1) 位于(我的上下文)3D 空间的中心。
  • 鼠标事件以像素为单位返回 x 和 y 值。如果您将它们直接应用于渲染光标的位置,它们可能会立即将光标移出屏幕(我猜,我不知道您的视口尺寸是多少)。您可能只需要将像素单位缩小一些倍数。 x += movementX / 100 什么的。

标签: webgl pointerlock webvr


【解决方案1】:

鼠标事件以像素为单位返回 x 和 y 值。如果您将它们直接应用到渲染光标的位置,它们可能会立即将光标移出屏幕。您可能只需要将像素单位缩小某个因素,例如x += movementX / 100 或其他东西。

【讨论】:

  • 好的,这对我来说应该更明显:-/,谢谢。然而,物体拾取并不像想象的那样工作。可能是计算。
猜你喜欢
  • 2017-02-08
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
  • 2013-08-17
  • 2021-08-18
  • 2021-09-15
相关资源
最近更新 更多