Как двигать камеру в блендере
Перейти к содержимому

Как двигать камеру в блендере

  • автор:

Анимация камер¶

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

Переключение камер¶

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

Треугольник над камерой станет затенен когда станет активным.

../_images/animation_camera_switch.png

Сначала на временной шкале, добавьте и установите маркеры которые будут использоваться для переключения камер. Нажмите M для добавления маркера, затем Ctrl M переименовать, дублированные маркеры будут иметь такое же название.

  1. В окне 3D-просмотра, выберите камеру, которая будет переключится по маркеру.
  2. Во временной шкале выделите маркер(ы) для переключения камеры.
  3. Во временной шкале нажмите Ctrl-B для привязки камеры к маркерам

Что делать если перестаёт работать камера в Blender(не рендера)?

Thetanius

Это происходит когда ты находишься не в ортогональной проекции, а в перспективе, если нажмешь 5 на Numpad`е, то попадешь в ортографию и там эта проблема будет устранена. Но если же ты привык работать в перспективе, то точка, так называемого «центра обзора», находится либо на том месте где ты смотрел последний объект либо по центру между объектами которые были выделены, если коротко выдели какой ни будь объект на сцене и нажми Точку на нумпаде. Тебе приблизит к объекту и пересчитает место от которого будет зависеть движение камеры. Но тут есть нюанс, тебе постоянно придется эту точку перенажимать, если ты работаешь в перспективном обзоре. Советую работать в ортографии.

Ответ написан более двух лет назад

Комментировать

Нравится 1 Комментировать

Вращение камеры не через углы Эйлера

Всем добра

Есть ли какие-то опции у камеры, чтобы она вращалась не через углы эйлера, а более свободно? Или может какой-то плагин? Или может можно как-то повернуть мир на -90 по иксу и оси b4w и блендера совпадут?
Дело вот в чем: есть простая сцена, в идеале в ней ось Z должна идти вверх (как в блендере). Если в коде поворачивать по иксу на -90 для конвертации осей блендера в b2w оси — то все нормально. Вот только неудобно так работать с кодом, сценой и объектами в браузере. (и вообще — зачем это было сделано? неудобно же).
Так вот, решил попробовать повернуть сцену в блендере и сместить камеру — и тут камера попала в шарнирный замок и невозможно её разместить в наиболее удобном положении ни в блендере ни в браузере. Даже если её как-то направить на сцену — то вид в блендере и в браузере будет различаться — видимо все из-за того же шарнирного замка.
Или таки надо писать свой код для вращения камеры?

26 января 2015 19:56
сообщений: 677

и вообще — зачем это было сделано? неудобно же

Это сделано с целью соответствия стандартам OpenGL, на которых WebGL и основан. На самом деле — это в блендере оси расположены немного непривычно для 3D.
Вот даже есть обсуждение этой уникальности.

Сама поддержка блендеровской системы координат может только приводить к дополнительным сложностям, например, популярная WebGL-библиотека glMatrix, которую мы используем, завязана на стандартной с.к. из Opengl.

В принципе, можно было бы поддержать блендеровские координаты только для внешнего API, а приводить все к стандарту OpenGL уже внутри движка, сделав некую прослойку. Тогда с точки зрения разработчика приложения — все будет как в блендере. Но, я думаю, все-таки большинство разработчиков привыкло работать с системой координат OpenGL, поэтому незачем её менять.

Поэтому повороты в своем приложении будет гораздо удобнее мыслить именно в стандартах OpenGL, т.е. вращение вокруг вертикальной оси — значит вокруг Y.

Или таки надо писать свой код для вращения камеры

Того что есть в движке в принципе достаточно, поэтому свой код писать не нужно, если это только не что-то оригинальное.
Если есть проблемы с конкретной сценой, можете скинуть на почту, посмотрим.

26 января 2015 23:44
сообщений: 6

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

Того что есть в движке в принципе достаточно, поэтому свой код писать не нужно, если это только не что-то оригинальное.
Если есть проблемы с конкретной сценой, можете скинуть на почту ivan@blend4web.com, посмотрим.

Так я же говорю в чем проблема: камера попадает в шарнирный замок и нужен иной механизм её вращения вокруг сцены. Собственно, это я и спрашивал — видимо надо таки написать свое. Ну да ладно, раз нету — то напишу. Тогда, такой вопрос: а как вращать камеру? И где у объекта находится его матрица? У меня идея такая: конвертировать движение курсора в вектор, сделать проекцию этого вектора на сферу и уже по сфере кватернионом вращать. Ну или как-то так. Надо бы поэкспериментировать.

27 января 2015 11:23
сообщений: 644

Вообще, если Z становится Y-ком, это не должно никак сказываться на работе с объектами. Я могу предположить, что в вашем случае несоответствия между Blender и Blend4Web обуславливаются тем, что вы использовали Target-камеру, которая жестко выравнивает свою вертикаль по Y-оси. Можно это проверить, изменив тип камеры например на Eye или Static. Но для точного диагноза, конечно, нужно видеть blend-файл.

27 января 2015 17:57
сообщений: 6
Камера стандартная, ничего нигде не менялось. Хорошо, попробую. Хмхмх, а где переключить-то?
27 января 2015 18:18
сообщений: 644

Ответ на сообщение пользователя VoidVolker
Камера стандартная, ничего нигде не менялось. Хорошо, попробую. Хмхмх, а где переключить-то?

Как это описано в документации по камере — в разделе Blend4Web изменяете Move style на нужный вам тип.

27 января 2015 18:56
сообщений: 6

Ааа, вот оно где. Спасибо! Сменил с таргет на Hover — этот тип камеры двигается, но не вращается. Нашел опции вращения:

Ответ на сообщение пользователя
Blend4Web > Use horizontal rotation
Доступно в режиме Hover при включенной опции Blend4Web > Use distance limits. Разрешить вращение камеры в горизонтальной плоскости относительно опорной точки.

Это конечно здорово, но вот при загрузке сцены в бразуере камера оказывается на оси Z — т.е. почему-то поворачивается на -90 градусов.
Таргет вблизи шарнирного замка в браузере получает лишнее вращение и сцена выглядит под другим углом, нежели в блендере.
В общем, надо делать свое вращение камеры. Я так понимаю, камера — это типа объект и к ней применимы стандартные трасформации объектов? А где у объектов/камры их матрицы? Я заглянул внутрь объектов и увидел там огромное количество параметров и несколько матриц.

28 января 2015 15:07
сообщений: 677

А вообще, какое поведение камеры требуется? Честно говоря, пока не уверен, стоит ли начинать писать свою модель движения.

Это конечно здорово, но вот при загрузке сцены в бразуере камера оказывается на оси Z — т.е. почему-то поворачивается на -90 градусов.

HOVER-камера слишком специфическая — она реализует обзор с высоты птичьего полета как в стратегиях, поэтому, вряд ли, подойдет.

У меня идея такая: конвертировать движение курсора в вектор, сделать проекцию этого вектора на сферу и уже по сфере кватернионом вращать.

— примерно так и работает TARGET-камера, которая стоит по умолчанию. При этом перемещение мыши слева направо пприведет к вращению вокруг вертикали, т.е. мировой оси Y, а сверху-вниз — вокруг локальной оси X самой камеры, что соответствует углам в сферической системе координат.
Если требуется вращение вокруг определенной точки, то TARGET-камера подходит лучше остальных.

Насколько я понял, вы повернули сцену так, что камера в блендере смотрит на куб снизу вверх, тогда и ось Z для неё будет вертикальной.

Пока непонятно следующее:

Даже если её как-то направить на сцену — то вид в блендере и в браузере будет различаться — видимо все из-за того же шарнирного замка.

Таргет вблизи шарнирного замка в браузере получает лишнее вращение и сцена выглядит под другим углом, нежели в блендере.

— без скриншотов или исходного blend-файла трудно сказать, т.е. при старте в приложении камера ориентирована по другому? Для всех камер кроме STATIC происходит выравнивание вертикали, как писал Евгений, это блокирует крен («roll») камеры, изменение которого не было нужно в этих режимах — не знаю, в этом ли причина.

Теперь по вращениям:

А где у объектов/камры их матрицы? Я заглянул внутрь объектов и увидел там огромное количество параметров и несколько матриц.

— для поворотов используются кватернионы.

API-методы для поворота объектов содержатся в модуле transform.js:
get_rotation()
set_rotation()
set_rotation_v()
Там также можно и через углы Эйлера, но не рекомендуется.

Michael_XIII’s blog

Скачал Blender под MacOS, поставил и вот нужно мне некоторые предметы рассмотреть в трехмерке весьма тщательно и подробно — ан нет.

Ведь на ноуте моем — ни трехкнопочной мышки — ни даже однокнопочной, если честно 😉 , ни NumPad, а с помощью touchpad — могу только крутить по одной оси, перемещать камеру вверх-вниз, вправо-влево и приближать-удалять.

Все, думаю — кранты — необходимый мне предмет ну никак не рассмотреть. ;-(

Рецепт

Идем в User Preferences -> Input и включаем галки

[v] Emulate 3-button mouse
[v] Emulate Numpad

В итоге с помощью цифровых клавиш 28 и 46 можно хоть как-то крутить камеру в трехмерке. Неудобно — но хоть как-то

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *