Камера Hover
17 июля 2015 16:03
Здравствуйте, хотел узнать можно ли у камеры с move style "hover" ограничить углы поворота по горизонтали (Use Horizontal Rotation). 2. И ещё можно ли задать ограничения на передвижение по x y относительно зума. Допустим стоит ограничение Use Horizontal Translation Limits 0 - 4 . Но эти ограничение одинаковые при любом приближении камеры (Use Distance Limits). То есть если я вижу всю сцену при минимальном зуме и могу её немного перемещать по горизонтали, то при максимальном зуме я вижу лишь часть сцены и движение по горизонтали не дают доходит до краев сцены. В идеале бы получить камеру которая на максимальном зуме видит всю сцену и нет перемещения по х у, а по при зумировании появляется возможность перемещать камеру до краев сцены.
17 июля 2015 18:37
Здравствуйте, hover-камера - это специфический вариант камеры. Мы не планировали его чересчур универсальным, поэтому непосредственно таких настроек нет, и оба ваших вопроса решаются только кодингом.
Можно получить текущие азимутальный и угол подъема камеры функцией get_camera_angles(), затем сравнить с граничными и повернуть камеру обратно, если мы вылезли за границы (функцией rotate_camera() или rotate_hover_camera()).
По такому же алгоритму работают ограничения для камер типов EYE/TARGET внутри движка.
Ограничения можно менять методами apply_vertical_limits() и apply_horizontal_limits(), привязавшись к расстоянию до pivot-точки камеры. Её положение возвращается методом get_hover_cam_pivot().
Возможно, подстройку ограничений стоит имплементировать в движке, но тут мы ещё будем думать.
ограничить углы поворота по горизонтали (Use Horizontal Rotation)
Можно получить текущие азимутальный и угол подъема камеры функцией get_camera_angles(), затем сравнить с граничными и повернуть камеру обратно, если мы вылезли за границы (функцией rotate_camera() или rotate_hover_camera()).
По такому же алгоритму работают ограничения для камер типов EYE/TARGET внутри движка.
можно ли задать ограничения на передвижение по x y относительно зума
Ограничения можно менять методами apply_vertical_limits() и apply_horizontal_limits(), привязавшись к расстоянию до pivot-точки камеры. Её положение возвращается методом get_hover_cam_pivot().
Возможно, подстройку ограничений стоит имплементировать в движке, но тут мы ещё будем думать.
19 июля 2015 00:26
Жаль что нет ещё такого встроенного функционала, но и то что есть уже весьма хорошо. Осталось только вызывать нужные ограничения в нужное время. С вашими подсказками разобрался как закодить первый и второй вопрос. Обрабатывать ограничения при срабатывании обработчиков событий мышки наверно не самый лучший выход. Наверно стоит переопределить методы камеры hover, которые используются при зуме и повороте, вызываемые при событиях прокрутки колесика и при перетаскивании зажатой правой клавиши мышки(камера hover). Нашел где определяется часть методов модуля камеры /deploy/api_doc/camera.js.html , а вот найти где находится реализация камеры hover мне не удалось. Я надеюсь это не коммерческая тайна и вы сможете назвать какие методы нужно переопределить или где находится реализация камеры hover?
19 июля 2015 07:05
23 июля 2015 15:25
23 июля 2015 17:32
Ответ на сообщение пользователя Onis
Здравствуйте, все получилось сделать, только столкнулся с одним затруднением, не смог получить ограничение vercatal translation limits of the HOVER camera , не нашел нужного метода в api, сделал заплатку, но вообще такую функцию надо бы встроить в api
ок, метод будет доступен в ближайшем релизе