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

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