Манипулятор камеры

объект Манипулятор камеры; 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, тип osg.Vec3

setHomeCenter

Устанавливает компоненту Начальное положение (homeCenter) начального положения

Аргументы:

aCenter, тип osg.Vec3

setHomeUp

Устанавливает компоненту Начальное положение (homeUp) начального положения

Аргументы:

aUp, тип osg.Vec3

setAutoComputeHomePosition

Устанавливает параметр Автоматическое вычисление (autoComputeHomePosition)

Аргументы:

aAutoComputeHomePosition, тип bool

Пример кода:

local cameraManipulator = reactorController:getReactorByName("CameraManipulator")
cameraManipulator:setHomeEye(osg.Vec3(0,0,5))
cameraManipulator:home()