Синхронизировать визуализированные координаты мыши (WebGL) и блокировки указателя в режиме WebVR

Я пытаюсь синхронизировать визуализированную мышь с координатами блокировки указателя. Блокировка указателя скрывает курсор мыши, поэтому мне нужно нарисовать его отдельно. У меня есть 3D-сцена с примитивом в качестве указателя мыши. Я использовал рекламный щит, чтобы нарисовать курсор мыши в точке (0,0, -1), чтобы он выглядел как 2D-объект в этом 3D-пространстве, хорошо.

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 из-за двух глаз, но это не сработало. Кроме того, мне нужен правильный коэффициент ускорения для рендеринга, потому что мышь слишком быстрая. Снова что-то с шириной, я думаю.

1 ответ

Решение

События мыши возвращают значения x и y в пиксельных единицах. Если вы примените их непосредственно к позиции вашего визуализированного курсора, они, вероятно, немедленно переместят курсор в сторону от экрана. Вам, вероятно, просто нужно уменьшить пиксельные единицы на некоторый фактор, например x += movementX / 100 или что-то.

Другие вопросы по тегам