Как управлять обзором через перемешение курсора мышки?
Добрый день, возник вопрос по поводу изменения координат положения камеры в пространстве.
Итак, что есть: есть простенькая демо-сцена в браузере, где я могу менять положение камеры и угол её наклона.
Меняю положение путём трансляции матрицы камеры (классическая wasd-схема взятая из игр), а угол наклона меняю путём наклона к оси x или y. Угол наклона я вычисляю через координаты курсора на экране.
Такой способ хорош, если бы не было всё в браузере, т.к. в нём возникают проблемы:
1) Ноль считается за ту точку, где находился курсор на момент загрузки страницы. Это самая небольшая проблема, которую я хотя бы представляю как пофиксить.
2) Угол поворота ограничивается границей экрана. Т.е. подвожу курсор к границе - и всё, дальше я не могу поворачиваться.
Подскажите, что я ещё могу использовать для изменения матрицы координат камеры, чтобы границы экрана не ограничивали угол поворота? Мне на ум приходит, не знаю как правильно назвать эту вещь, но что-то вроде "прироста значений к координатам курсора, которые посылаются мышкой в систему", но я не имею малейшего представления как это реализуется и что мне в принципе надо искать.
Реализую на web-gl и java script.
Это вариант, но не хотелось бы к нему прибегать. Хочу реализовать как в видеоиграх делают - там же как-то смогли решить данную проблему (проверил на примере уже древного квейка 1995 года). Осталось узнать как.
Часто используется:
левая кн. мыши - поворот по y (вертикальная ось),
правая - поворот по x (наклоны),
колесо - зумминг (угол обзора камеры. Обычно 90 гр.)
клавиатура: W - движение вперёд, X - назад;
A - влево, D - вправо (движения перпендикулярно взгляду)
(писал по памяти)
Спасибо, но это немного не то. Я пытаюсь именно за счёт движение мышкой менять координаты матрицы камеры (в конкретном случае с мышкой - только угол наклона). Через клавиши это элементарно: нажал - прибавил, а вот с мышкой уже не так тривиально.