Манипулятор камеры¶
-
объект
Манипулятор камеры;
CameraManipulatorBaseReactor
¶
Данный объект используется для управления виртуальной камерой. С его помощью можно также задать начальное положение камеры.
Обзор возможностей¶
Реализация | Описание |
---|---|
trackball | Интуитивно понятный интерфейс для манипуляции камеры с помощью виртуальной сферы, названный в честь входного устройства, носящего такое же имя. |
vr | Вид от первого лица, соответствует позиции головы аватара в виртуальном пространстве. Используется только для VR проектов. |
multitouch | Управление камерой осуществляется с помощью технологии multitouch на мобильных устройствах. |
Параметр | Описание |
---|---|
Начальное положение (homeEye) | Координаты камеры в мировой системе координат. |
Начальное положение (homeCenter) | Направление камеры в мировой системе координат. |
Начальное положение (homeUp) | Наклон камеры относительно линии горизонта. |
Автоматическое вычисление (autoComputeHomePosition) | Автоматическое вычисление начального положения таким образом, чтобы виртуальная камера охватывала всю сцену целиком. |
Событие | Описание |
---|---|
В начальном положении (onHomePosition) | Приходит при переходе камеры в начальное положение. |
Действие | Описание |
---|---|
Изменить начальное положение (setHomePosition) | Установка нового начального положения. |
В начальное положение (home) | Перевод камеры в начальное положение. |
-
параметр
Реализация;
Kind
¶ Тип манипулятора. Определяет, каким образом будет перемещаться виртуальная камера.
Начальное положение¶
Начальное положение - позиция, в которую камера может перемещаться при установке манипулятора. Также камера перемещается в начальное положение при нажатии клавиши «пробел» во вкладке «Сцена» (по умолчанию). Начальное положение определяется 3 векторами: непосредственно позиция камеры (вектор Eye), наклон камеры относительно линии горизонта (вектор Up) и точка, куда направлена камера (вектор Center).
-
параметр
Начальное положение ;
homeEye
¶ Координаты камеры в мировой системе координат.
-
параметр
Начальное положение ;
homeCenter
¶ Направление камеры в мировой системе координат.
-
параметр
Начальное положение ;
homeUp
¶ Наклон камеры относительно линии горизонта.
-
параметр
Автоматическое вычисление;
autoComputeHomePosition
¶ Автоматическое вычисление начального положения таким образом, чтобы виртуальная камера охватывала всю сцену целиком.
-
событие
В начальном положении;
onHomePosition
¶ Происходит при переходе камеры в начальное положение.
-
действие
Изменить начальное положение;
setHomePosition
(aEye, aCenter, aUp, aAutoComputeHomePosition)¶ Установка нового начального положения. Если параметр «Автоматическое вычисление (aAutoComputeHomePosition)» установлен в значение
true
, камера автоматически вычислит начальное положение.Параметры: - Начальное положение (Eye) / aEye – Положение камеры в мировой системе координат.
- Начальное положение (Center) / aCenter – Положение точки, на которую смотрит камера.
- Начальное положение (Up) / aUp – Наклон камеры относительно линии горизонта.
- Автоматическое вычисление / aAutoComputeHomePosition – Автоматическое вычисление начального положения.
Важно
Для перевода камеры в указанное положение должно быть обязательно вызвано действие В начальное положение (home)
-
действие
В начальное положение;
home
()¶ Перевод камеры в начальное положение. При вызове данного действия камера перемещается в позицию, заданную вектором Eye, вектор направления становится равным вектору Center, а вектор наклона - вектору Up, указанных в свойствах объекта.
Advanced¶
Вспомогательные методы | Описание |
---|---|
setHomeEye |
Устанавливает компоненту Начальное положение (homeEye) начального положения Аргументы: aEye, тип |
setHomeCenter |
Устанавливает компоненту Начальное положение (homeCenter) начального положения Аргументы: aCenter, тип |
setHomeUp |
Устанавливает компоненту Начальное положение (homeUp) начального положения Аргументы: aUp, тип |
setAutoComputeHomePosition |
Устанавливает параметр Автоматическое вычисление (autoComputeHomePosition) Аргументы: aAutoComputeHomePosition, тип bool |
Пример кода:
local cameraManipulator = reactorController:getReactorByName("CameraManipulator")
cameraManipulator:setHomeEye(osg.Vec3(0,0,5))
cameraManipulator:home()