Манипулятор камеры¶
-
объект
Манипулятор камеры;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, камера автоматически вычислит начальное положение.Parameters: - Начальное положение (Eye) / aEye – Положение камеры в мировой системе координат.
- Начальное положение (Center) / aCenter – Положение точки, на которую смотрит камера.
- Начальное положение (Up) / aUp – Наклон камеры относительно линии горизонта.
- Автоматическое вычисление / aAutoComputeHomePosition – Автоматическое вычисление начального положения.
Important
Для перевода камеры в указанное положение должно быть обязательно вызвано действие В начальное положение (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()