Как сделать привязку камеры к объекту

Обновлено: 06.07.2024

Привет. В этой статье я хочу рассказать, как сделать слежение одного объекта за другим или проще говоря поворот одного объекта в сторону другого. Мы встроим в объект камеру и получится, что камера смотрит в сторону другого объекта. Создадим четыре таких камеры и разбросаем их по экрану.

Для чего это нужно:

  • Например наблюдательный пункт в игре
  • Зеркало заднего вида для автомобиля
  • Слежение за другими игроками, в какой-нибудь онлайн стратегии.

Камера – это объект, через который в Blender’е ведётся визуализация изображений. Она определяет часть сцены, которая будет видна на отрисованном изображении. По умолчанию сцена содержит одну камеру. Тем не менее, сцена может содержать несколько камер, хотя только одна из них может быть активна в один момент времени. Так что вам нужно будет просто добавить новую камеру, если вам нужно переключение между ними. Смотрите раздел по анимированию камер .

Изменение активной камеры¶

Mode:Object Mode
Hotkey: Ctrl-Numpad0

../../../_images/render_blender-render_camera_introduction_cameras.jpg

Активная камера (левая)

Активная камера – это камера, которая в настоящий момент времеми используется для визуализации. Включить вид из активной камеры можно клавишей Цифр0 .

Выберите камеру, которую вы хотели бы сделать активной, и нажмите сочетание клавиш Ctrl-Цифр0 (при этом вы также переключитесь в режим вида из этой камеры). Для визуализации сцены в ней должна быть активная камера.

Также активную камеру можно задать на вкладке Сцена Редактора свойств.

Активная камера представляется закрашенным треугольником в своей верхней части. Индикаторы ограничений и тумана рисуются чуть темнее, если камера не является активной для текущей сцены.

Активная камера, также, как и слои, может быть либо конкретно для данного представления, либо глобальной (заблокированной) для всей сцены. Смотрите раздел локальная камера .

Граничная визуализация¶

Mode:All modes
Menu: View ‣ Render Border
Hotkey: Ctrl-B

../../../_images/render_blender-render_camera_introduction_border.jpg

Переключатель граничной визуализации

Граница может быть отключена путём снятия галочки Граница на панели Размеры вкладки Визуализация и повторно включена её установкой.

При включении граничной визуализации в 3D-виде станет доступно для просмотра размытие при движении на основе выборок .


Ушастый


Народ! Подскажите, пожалста, каким способ можно привязать к объекту камеру, что бы при анимации в поле зрения камеры был виден заданный объект? Надо для анимации авто!
Заранее пасиб!


RENat_ukg


еще бы спросил как чайник сделать?

создать камеру с целью (target)> цель привязать к обекту (link)> как следствие камера всегда направлена на обьект


Ушастый


RENat_ukg, а кстати, как сдедать чайник? Лепить из полей или сплайнами?
Неа такой способ я знаю! Я спрашивал как сделать так чтобы и объект двигался и камера вместе с ним шла на опред расстоянии, а не поворачивалась!


RENat_ukg



RENat_ukg


а можно из сплайна круг сделать вокруг машины и камеру по пути (сплайну) пустить я пробовал офигенно получается!

Настройки камеры выставляются в панели Properties на вкладке Camera (Object Data) .

_images/camera_setup.jpg

Настройки, доступные для камеры

Режим управления камерой:

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

Режим взгляда позволяет осуществлять вращение и перемещение от первого лица.

В режиме нависания камера движется параллельно горизонтальной опорной плоскости. Дополнительными лимитами можно задать плавную траекторию движения камеры по направлению к опорной точке.

В статическом режиме изменение положения камеры осуществляется посредством анимации или через API.

Доступно в режиме Target . Позиция точки, относительно которой будет вращаться камера. Кнопка Look At Cursor позволяет скопировать текущее положение курсора, а при нажатии на неё активная камера поворачивается в направлении указанной точки.

Для камеры доступны настройки скорости движения:

Camera Move Style > Camera Velocities > Translation Velocity

Актуально для режимов Target , Eye , Hover . Задаёт скорость перемещения камеры. Интервал значений: \(\left[0,\ \infty \right)\) . Значение по умолчанию: 1.

Camera Move Style > Camera Velocities > Rotation Velocity

Актуально для режимов Target , Eye , Hover . Задаёт скорость вращения камеры. Интервал значений: \(\left[0,\ \infty \right)\) . Значение по умолчанию: 1.

Camera Move Style > Camera Velocities > Zoom Velocity

Актуально для режимов Target , Hover . Задаёт скорость приближения камеры к опорной точке. Интервал значений: \(\left[0,\ 0.99\right]\) . Значение по умолчанию: 0.1.

Ограничения движения камеры¶

Для камеры доступно несколько настроек, ограничивающих/изменяющих её движение тем или иным образом. Они объединены в группу Camera Limits .

_images/camera_limits.jpg

Настройки ограничения движения камеры

Ограничители перемещения камеры могут отображаться непосредственно во вьюпорте Blender. Для этого нужно включить опцию Display Limits in Viewport .

Камера типа Target¶

_images/camera_limits_target.jpg

Camera Move Style > Camera Limits > Distance Limits

Задание минимального и максимального расстояний от камеры до точки вращения. Допустимые значения: Min \(\le\) Max. Значения по умолчанию: Min = 1, Max = 10. По умолчанию отключено.

Ограничение горизонтального (вокруг мировой оси Z в Blender’е) вращения камеры относительно соответствующей точки. Вращение происходит по дуге окружности определяемой значениями Left Angle и Right Angle . Дуга вращения соответствует движению из Left Angle в Right Angle против часовой стрелки. Значения по умолчанию: Left Angle = -45°, Right Angle = 45°. По умолчанию отключено.

Ограничение горизонтального (вокруг мировой оси Z в Blender’е) вращения камеры относительно соответствующей точки. Вращение происходит по дуге окружности определяемой значениями Left Angle и Right Angle . Дуга вращения соответствует движению из Left Angle в Right Angle против часовой стрелки. Значения по умолчанию: Left Angle = -45°, Right Angle = 45°. По умолчанию отключено.

Ограничение перемещения точки привязки камеры. Значения по умолчанию: MinZ = 0, MaxZ = 10. Не отображается во вьюпорте.

Camera Move Style > Camera Limits > Use Panning Mode

Разрешить панорамное перемещение камеры.

Камера типа Eye¶

_images/camera_limits_eye.jpg

Blend4Web > Horizontal Rotation Limits

Ограничение горизонтального (вокруг мировой оси Z в Blender’е) вращения камеры относительно соответствующей точки. Вращение происходит по дуге окружности определяемой значениями Left Angle и Right Angle . Дуга вращения соответствует движению из Left Angle в Right Angle против часовой стрелки. Значения по умолчанию: Left Angle = -45°, Right Angle = 45°. По умолчанию отключено.

Ограничение горизонтального (вокруг мировой оси Z в Blender’е) вращения камеры относительно соответствующей точки. Вращение происходит по дуге окружности определяемой значениями Left Angle и Right Angle . Дуга вращения соответствует движению из Left Angle в Right Angle против часовой стрелки. Значения по умолчанию: Left Angle = -45°, Right Angle = 45°. По умолчанию отключено.

Камера типа Hover¶

_images/camera_limits_hover.jpg

Camera Move Style > Camera Limits > Horizontal Translation Limits

Ограничение перемещения опорной точки вдоль оси X в мировых координатах в Blender’е. Допустимые значения: Min \(\le\) Max. Значения по умолчанию: MinX = -10, MaxX = 10. По умолчанию отключено.

Camera Move Style > Camera Limits > Vertical Translation Limits

Ограничение перемещения опорной точки вдоль оси Y в мировых координатах в Blender’е. Допустимые значения: Min \(\le\) Max. Значения по умолчанию: MinY = -10, MaxY = 10. По умолчанию отключено.

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

Camera Move Style > Camera Limits > Distance Limits

Задание минимального и максимального расстояний от камеры до точки пересечения (опорная точка) направления взгляда камеры с горизонтальной опорной плоскостью (по умолчанию с плоскостью XOY мировых координат в Blender’е). Допустимые значения: Min \(\le\) Max. Значения по умолчанию: Min = 1, Max = 10. По умолчанию отключено.

Camera Move Style > Camera Limits > Vertical Rotation Limits

Ограничения угла подъема камеры (угла между направлением взгляда камеры и горизонтальной плоскостью). Допустимые значения: \(\le\) Down \(\le\) Up \(\le\) 90°. Значения по умолчанию: Down = 0°, Up = 90°.

Camera Move Style > Camera Limits > Zero Level

Расстояние от опорной плоскости камеры до центра координат. По умолчанию равно нулю.

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

Некорректное задание лимитов по расстоянию либо углу подъема приведет к отключению этой настройки.

Camera Move Style > Camera Limits > Use Horizontal Rotation

Разрешить вращение камеры в плоскости XOY Blender’а относительно опорной точки. По умолчанию включено.

Камера типа Static

_images/camera_limits_static.jpg

Камера этого типа не имеет ограничителей, так как не контролируется пользователем.

Особенности задания ограничений

Для EYE/TARGET камеры перемена мест значений Left/Right или Down/Up приводит к движению по противоположной дуге окружности вращения.

При ограничении горизонтального и вертикального вращения камеры можно выбрать пространство координат:

Все углы отсчитываются относительно начального положения и ориентации камеры.

Горизонтальные углы отсчитываются относительно направления оси Y в пространстве мировых координат, вертикальные - относительно плоскости XOY в мировом пространстве в Blender’е.

Значение по умолчанию: Camera Space .

Ограничения по горизонтали на примере TARGET камеры:

Ограничения по вертикали на примере TARGET камеры:

Привязка к камере¶

Если родителем объекта является камера, для него доступен набор параметров, известный как Viewport Alignment. Эти параметры находятся во вкладке Relations на панели Object .

_images/objects_viewport_alignment.jpg

С их помощью объект можно выровнять относительно камеры таким образом, что он всегда будет оставаться в одной и той же точке экрана, вне зависимости от движения или поворота камеры. Может применяться, в частности, для создания элементов интерфейса.

_images/camera_viewport_alignment.jpg

Все элементы интерфейса, представленные на этом изображении, созданы с использованием настройки Viewport Alignment.

Этот параметр включает и выключает использование всех нижеперечисленных параметров. По умолчанию деактивирован.

Этот параметр определяет, к какой точке экрана будет привязан объект. Может иметь одно из следующих значений:

Top-Left - привязывает объект к левому верхнему углу экрана

Top - привязывает объект к верхней границе экрана

Top-Right - привязывает объект к правому верхнему углу экрана

Left - привязывает объект к левой стороне экрана

Center - привязывает объект к центру экрана

Right - привязывает объект к правой стороне экрана

Bottom-Left - привязывает объект к левому нижнему углу экрана

Bottom - привязывает объект к нижней границе экрана

Bottom-Right - привязывает объект к правому нижнему углу экрана

Значение по умолчанию: Center .

Расстояние между камерой и объектом, привязанным к ней. По умолчанию равно 10.

Нажатие на эту кнопку расположит объект относительно камеры так, как он будет располагаться в движке. Может использоваться для предварительного просмотра результатов привязки.

Управление через API¶

Подробная документация API модуля: ссылка.

Положение и ориентация камеры в пространстве определяются конкретным режимом управления. В режимах EYE , TARGET и HOVER модель поведения накладывает ряд ограничений, например, таких как выравнивание вертикальной оси камеры вдоль мировой оси Y и постоянная ориентация камеры на опорную точку. Для STATIC камеры таких ограничений нет, поэтому она лучше подходит в случаях, когда нужен более полный контроль, например, при процедурной анимации.

Основные функции управления камерой находятся в модуле camera. Часть из них, относящаяся к конкретному режиму управления, начинается с соответствующих префиксов: static_ , eye_ , target_ и hover_ . Остальные методы применимы для всех режимов.

Задание режима управления¶

Для изменения режима и полного определения модели поведения камеры можно воспользоваться следующими методами: static_setup(), eye_setup(), target_setup() и hover_setup(). Они принимают объект, содержащий набор опциональных параметров, позволяющих задать положение камеры, поворот, наличие лимитов и т.д:

Особенность камеры типа HOVER заключается в том, что лимиты, ограничивающие расстояние и угол подъёма, задают определённую траекторию движения по направлению к опорной точке. Камера всегда будет находиться на данной траектории, поэтому её итоговая позиция может отличаться от той, что была передана в методе hover_setup() (по сути происходит её проекция на траекторию). Если необходимо, чтобы заданное положение камеры сразу находилось на некой траектории, то можно воспользоваться методом hover_setup_rel() для относительного задания лимитов.

Если требуется изменить лишь некоторые аспекты поведения камеры, то стоит воспользоваться отдельными методами, описанными ниже.

Перемещение и поворот¶

Для поворота STATIC камеры следует использовать методы static_get_rotation() и static_set_rotation() - в них поворот описывается кватернионом:

Для EYE, TARGET и HOVER поворот осуществляется в сферических координатах с использованием методов eye_rotate(), target_rotate(), hover_rotate() и rotate_camera():

Текущие сферические координаты камеры можно получить, используя метод get_camera_angles():

Доступ к позиции камеры предоставляют методы get_translation() и set_translation(). При этом для режимов TARGET и HOVER перемещение означает параллельный перенос всей модели, включающей позицию камеры и опорную точку.

Дополнительные методы для перемещения камеры:

static_set_look_at(), eye_set_look_at() - одновременное задание позиции и точки взгляда камеры;

Т.к. камера является объектом сцены, то при необходимости можно использовать и методы модуля transform. Однако, результат может не всегда соответствовать ожиданиям из-за вмешательства модели поведения камеры в каждом конкретном режиме.

Задание лимитов¶

Лимиты камеры присутствуют в режимах EYE, TARGET и HOVER. Для назначения конкретного лимита следует воспользоваться соответствующим методом:

EYE TARGET HOVER
eye_get_horizontal_limits() eye_set_horizontal_limits() eye_get_vertical_limits() eye_set_vertical_limits() target_get_distance_limits() target_set_distance_limits() target_get_horizontal_limits() target_set_horizontal_limits() target_get_vertical_limits() target_set_vertical_limits() target_get_pivot_limits target_set_pivot_limits hover_get_distance_limits() hover_set_distance_limits() hover_get_vertical_limits() hover_set_vertical_limits() hover_get_horiz_trans_limits() hover_set_horiz_trans_limits() hover_get_vert_trans_limits() hover_set_vert_trans_limits()

В режиме HOVER у камеры всегда есть лимиты по дистанции и углу подъёма. В случае, если они не были заданы, лимиты автоматически рассчитываются так, чтобы зафиксировать камеру в текущем положении относительно опорной точки.

Присутствующие на камере лимиты могут влиять на её позицию и ориентацию, выставляемые через API.

Отсчет угловых координат¶

При работе с камерой через API (вращение, выставление ограничений) отсчет угловых координат ведется следующим образом:

Для типов TARGET/HOVER :

Читайте также: