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

ограничить углы поворота по горизонтали (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
Здравствуйте,

Реализация различных способов управления камерой находится в аддоне app.js, внутри функции enable_camera_controls().
Руководитель проекта | VK | Twitter | Facebook | Linkedin
19 июля 2015 17:12
Спасибо за ответ, буду разбираться
23 июля 2015 15:25
Здравствуйте, все получилось сделать, только столкнулся с одним затруднением, не смог получить ограничение vercatal translation limits of the HOVER camera , не нашел нужного метода в api, сделал заплатку, но вообще такую функцию надо бы встроить в api
23 июля 2015 17:32

Ответ на сообщение пользователя Onis
Здравствуйте, все получилось сделать, только столкнулся с одним затруднением, не смог получить ограничение vercatal translation limits of the HOVER camera , не нашел нужного метода в api, сделал заплатку, но вообще такую функцию надо бы встроить в api

ок, метод будет доступен в ближайшем релизе
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.