- Камера типу Target
- Камера типу Eye
- Камера типу Hover
- Завдання режиму управління
- Переміщення і поворот
- завдання лімітів
- Відлік кутових координат
Наша взаимовыгодная связь https://banwar.org/
Налаштування камери виставляються в панелі Properties на вкладці Camera (Object Data).
Налаштування, доступні для камери
Camera Move Style> Move Style
Режим управління камерою:
- Target
За замовчуванням камера знаходиться в режимі обертання навколо деякої точки (target). Положення точки обертання може бути змінено (див. панорамування ).
- Eye
Режим погляду дозволяє здійснювати обертання і переміщення від першої особи.
- Hover
У режимі нависання камера рухається паралельно горизонтальній опорній площині. Додатковими лімітами можна задати плавну траєкторію руху камери у напрямку до опорної точці.
- Static
У статичному режимі зміна положення камери здійснюється за допомогою анімації або через API.
Доступно в режимі Target. Позиція точки, щодо якої буде обертатися камера. Кнопка Look At Cursor дозволяє скопіювати поточний стан курсору, а при натисканні на неї активна камера повертається в напрямку зазначеної точки.
Depth of Field
Описано в розділі Глибина різкості камери .
Для камери доступні настройки швидкості руху:
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.

Налаштування обмеження руху камери
Обмежувачі переміщення камери можуть відображатися безпосередньо у вьюпорте Blender. Для цього потрібно включити опцію Display Limits in Viewport.
Камера типу Target

Завдання мінімального і максимального відстаней від камери до точки обертання. Можна вибрати зі значень Min \ (\ le \) Max. Значення за замовчуванням: Min = 1, Max = 10. За замовчуванням вимкнено.
Camera Move Style> Camera Limits> Horizontal Rotation Limits
Обмеження горизонтального (навколо світової осі Z в Blender'е) обертання камери щодо відповідної точки. Обертання відбувається по дузі кола визначається значеннями Left Angle і Right Angle. Дуга обертання відповідає руху з Left Angle в Right Angle проти годинникової стрілки. Значення за замовчуванням: Left Angle = -45 °, Right Angle = 45 °. За замовчуванням вимкнено.
Camera Move Style> Camera Limits> Vertical Rotation Limits
Обмеження горизонтального (навколо світової осі Z в Blender'е) обертання камери щодо відповідної точки. Обертання відбувається по дузі кола визначається значеннями Left Angle і Right Angle. Дуга обертання відповідає руху з Left Angle в Right Angle проти годинникової стрілки. Значення за замовчуванням: Left Angle = -45 °, Right Angle = 45 °. За замовчуванням вимкнено.
Camera Move Style> Camera Limits> Pivot Translation Limits
Обмеження переміщення точки прив'язки камери. Значення за замовчуванням: MinZ = 0, MaxZ = 10. Чи не відображається у вьюпорте.
Camera Move Style> Camera Limits> Use Panning Mode
Дозволити панорамне переміщення камери.
Камера типу Eye

Обмеження горизонтального (навколо світової осі Z в Blender'е) обертання камери щодо відповідної точки. Обертання відбувається по дузі кола визначається значеннями Left Angle і Right Angle. Дуга обертання відповідає руху з Left Angle в Right Angle проти годинникової стрілки. Значення за замовчуванням: Left Angle = -45 °, Right Angle = 45 °. За замовчуванням вимкнено.
Camera Move Style> Camera Limits> Vertical Rotation Limits
Обмеження горизонтального (навколо світової осі Z в Blender'е) обертання камери щодо відповідної точки. Обертання відбувається по дузі кола визначається значеннями Left Angle і Right Angle. Дуга обертання відповідає руху з Left Angle в Right Angle проти годинникової стрілки. Значення за замовчуванням: Left Angle = -45 °, Right Angle = 45 °. За замовчуванням вимкнено.
Камера типу Hover

Обмеження переміщення опорної точки вздовж осі 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> Use Zooming
Дозволяє користувачеві наближати і видаляти камеру щодо опорної точки. При відключенні цього параметра положення камери щодо опорної точки буде фіксованим. За замовчуванням вимкнено.
Camera Move Style> Camera Limits> Distance Limits
Завдання мінімального і максимального відстаней від камери до точки перетину (опорна точка) напрямку погляду камери з горизонтальною опорною площиною (за замовчуванням з площиною XOY світових координат в Blender'е). Можна вибрати зі значень Min \ (\ le \) Max. Значення за замовчуванням: Min = 1, Max = 10. За замовчуванням вимкнено.
Camera Move Style> Camera Limits> Vertical Rotation Limits
Обмеження кута підйому камери (кута між напрямком погляду камери і горизонтальною площиною). Можна вибрати зі значень 0 ° \ (\ 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

Камера цього типу не має обмежувачів, так як не контролюється користувачем.
Особливості завдання обмежень
Camera SpaceВсі кути відраховуються відносно початкового положення і орієнтації камери.
World Space
Горизонтальні кути відраховуються щодо направлення осі Y в просторі світових координат, вертикальні - щодо площині XOY в світовому просторі в Blender'е.
Значення за замовчуванням: Camera Space.
Обмеження по горизонталі на прикладі TARGET камери:
Обмеження по вертикалі на прикладі TARGET камери:
Якщо батьком об'єкта є камера, для нього доступний набір параметрів, відомий як Viewport Alignment. Ці параметри знаходяться у вкладці Relations на панелі Object.
З їх допомогою об'єкт можна вирівняти відносно камери таким чином, що він завжди буде залишатися в одній і тій же точці екрану, незалежно від руху або повороту камери. Може застосовуватися, зокрема, для створення елементів інтерфейсу.
Всі елементи інтерфейсу, представлені на цьому зображенні, створені з використанням настройки Viewport Alignment.
Viewport Alignment
Цей параметр вмикає та вимикає використання всіх нижчеперелічених параметрів. За замовчуванням активовано.
Alignment
Цей параметр визначає, до якої точки екрану буде прив'язаний об'єкт. Може мати одне з наступних значень:
Top-Left - прив'язує об'єкт до лівого верхнього кута екрану
Top - прив'язує об'єкт до верхньої межі екрану
Top-Right - прив'язує об'єкт до правого верхнього кута екрану
Left - прив'язує об'єкт до лівої сторони екрану
Center - прив'язує об'єкт до центру екрану
Right - прив'язує об'єкт до правого боку екрану
Bottom-Left - прив'язує об'єкт до лівого нижнього кута екрану
Bottom - прив'язує об'єкт до нижньої межі екрану
Bottom-Right - прив'язує об'єкт до правого нижнього кута екрану
Значення за замовчуванням: Center.
Distance
Відстань між камерою і об'єктом, прив'язаним до неї. За замовчуванням дорівнює 10.
Fit to Camera
Натискання на цю кнопку розташує об'єкт щодо камери так, як він буде розташовуватися в движку. Може використовуватися для попереднього перегляду результатів прив'язки.
Детальна документація API модуля: посилання .
Положення і орієнтація камери в просторі визначаються конкретним режимом управління. У режимах EYE, TARGET і HOVER модель поведінки накладає ряд обмежень, наприклад, таких як вирівнювання вертикальної осі камери уздовж світової осі Y і постійна орієнтація камери на опорну точку. Для STATIC камери таких обмежень немає, тому вона краще підходить у випадках, коли потрібен більш повний контроль, наприклад, при процедурної анімації.
Основні функції управління камерою знаходяться в модулі camera . Частина з них, що відноситься до конкретного режиму управління, починається з відповідних префіксів: static_, eye_, target_ і hover_. Решта методи застосовні для всіх режимів.
Завдання режиму управління
Для зміни режиму і повного визначення моделі поведінки камери можна скористатися такими способами: static_setup () , eye_setup () , target_setup () і hover_setup () . Вони приймають об'єкт, що містить набір опціональних параметрів, що дозволяють задати положення камери, поворот, наявність лімітів тощо:
var camera = m_scenes. get_active_camera (); var POS = new Float32Array ([1, 1, 1]); var LOOK_AT = new Float32Array ([0, 0, 0]); var EYE_HORIZ_LIMITS = {left: Math. PI / 4, right: - Math. PI / 4}; var EYE_VERT_LIMITS = {down: - Math. PI / 4, up: Math. PI / 4}; var TARGET_DIST_LIMITS = {min: 1, max: 10}; var HOVER_DIST_LIMITS = {min: 1, max: 10}; var HOVER_ANGLE_LIMITS = {down: 0, up: - Math. PI / 4}; var HOVER_HORIZ_TRANS_LIMITS = {min: - 5, max: 3}; var HOVER_VERT_TRANS_LIMITS = {min: - 1, max: 1}; ... // setup STATIC camera by defining the new position and the new look-at point m_cam. static_setup (camera, {pos: POS, look_at: LOOK_AT}); // setup STATIC camera by defining the new look-at point and keeping the existing position m_cam. static_setup (camera, {look_at: LOOK_AT}); // setup STATIC camera by defining the new position and keeping the existing orientation m_cam. static_setup (camera, {pos: POS}); // setup EYE camera with horizontal rotation limits m_cam. eye_setup (camera, {pos: POS, look_at: LOOK_AT, horiz_rot_lim: EYE_HORIZ_LIMITS}); // setup EYE camera with vertical rotation limits m_cam. eye_setup (camera, {pos: POS, look_at: LOOK_AT, vert_rot_lim: EYE_VERT_LIMITS}); // setup TARGET camera with distance limits and panning mode m_cam. target_setup (camera, {pos: POS, pivot: LOOK_AT, dist_lim: TARGET_DIST_LIMITS, use_panning: true}); // setup HOVER camera on a fixed distance (without zooming) relatively to its pivot m_cam. hover_setup (camera, {pos: POS, pivot: LOOK_AT}); // setup HOVER camera with zooming (distance + angle limits) m_cam. hover_setup (camera, {pos: POS, pivot: LOOK_AT, dist_lim: HOVER_DIST_LIMITS, hover_angle_lim: HOVER_ANGLE_LIMITS}); // setup HOVER camera with translation limits m_cam. hover_setup (camera, {pos: POS, pivot: LOOK_AT, horiz_trans_lim: HOVER_HORIZ_TRANS_LIMITS, vert_trans_lim: HOVER_VERT_TRANS_LIMITS}); // setup HOVER camera with horizontal rotation enabled m_cam. hover_setup (camera, {pos: POS, pivot: LOOK_AT, enable_horiz_rot: true});
Особливість камери типу HOVER полягає в тому, що ліміти, що обмежують відстань і кут підйому, задають певну траєкторію руху у напрямку до опорної точці. Камера завжди буде знаходитися на даній траєкторії, тому її підсумкова позиція може відрізнятися від тієї, що була передана в методі hover_setup () (По суті відбувається її проекція на траєкторію). Якщо необхідно, щоб задане положення камери відразу знаходилося на деякій траєкторії, то можна скористатися методом hover_setup_rel () для відносного завдання лімітів.
var camera = m_scenes. get_active_camera (); var POS = new Float32Array ([1, 1, 1]); var PIVOT = new Float32Array ([0, 0, 0]); ... // setup HOVER camera with maintaining the given camera position and // ability to zoom-in and zoom-out equally m_cam. hover_setup_rel (camera, {pos: POS, pivot: PIVOT, dist_interval: 2, angle_interval: Math. PI / 4});
Перевірити поточний режим камери можна, використовуючи методи is_static_camera () , is_eye_camera () , is_target_camera () , is_hover_camera () або get_move_style () :
var camera = m_scenes. get_active_camera (); ... if (m_cam. Is_static_camera (camera)) console. log ( "STATIC camera!"); if (m_cam. get_move_style (camera) == m_cam. MS_EYE_CONTROLS) console. log ( "EYE camera!");
Примітка
Якщо потрібно змінити лише деякі аспекти поведінки камери, то варто скористатися окремими методами, описаними нижче.
Переміщення і поворот
Для повороту STATIC камери слід використовувати методи static_get_rotation () і static_set_rotation () - в них поворот описується кватернионами:
var camera = m_scenes. get_active_camera (); ... // rotation through a quaternion var _quat_tmp = new Float32Array (4); var old_quat = m_cam. static_get_rotation (camera, _quat_tmp); var new_quat = m_quat. rotateX (old_quat, Math. PI / 2, old_quat) m_cam. static_set_rotation (camera, new_quat);
Для EYE, TARGET і HOVER поворот здійснюється в сферичних координатах з використанням методів eye_rotate () , target_rotate () , hover_rotate () і rotate_camera () :
var camera = m_scenes. get_active_camera (); ... // rotate by given delta angles m_cam. eye_rotate (camera, Math. PI / 6, Math. PI / 2); // set absolute rotation in world space m_cam. eye_rotate (camera, Math. PI / 6, Math. PI / 2, true, true);
Поточні сферичні координати камери можна отримати, використовуючи метод get_camera_angles () :
var camera = m_scenes. get_active_camera (); var _vec2_tmp = new Float32Array (2); ... // get camera orientation in spherical coordinates var angles = m_cam. get_camera_angles (camera, _vec2_tmp); phi = angles [0]; theta = angles [1];
Доступ до позиції камери надають методи get_translation () і set_translation () . При цьому для режимів TARGET і HOVER переміщення означає паралельний перенесення всієї моделі, що включає позицію камери і опорну точку.
var camera = m_scenes. get_active_camera (); var _vec3_tmp = new Float32Array (3); ... // get camera position var pos = m_cam. get_translation (camera, _vec3_tmp); // set new position var new_pos = m_vec3. set (1, 0, 2, pos); m_cam. set_translation (camera, new_pos);
Додаткові методи для переміщення камери:
Примітка
Оскільки камера є об'єктом сцени, то при необхідності можна використовувати і методи модуля transform . Однак, результат може не завжди відповідати очікуванням через втручання моделі поведінки камери в кожному конкретному режимі.
завдання лімітів
Ліміти камери присутні в режимах EYE, TARGET і HOVER. Для призначення конкретного ліміту слід скористатися відповідним методом:
var camera = m_scenes. get_active_camera (); var _limits_tmp = {}; var EYE_HORIZ_LIMITS = {left: Math. PI / 4, right: - Math. PI / 4}; ... // get limits m_cam. eye_get_horizontal_limits (camera, _limits_tmp); // set limits m_cam. eye_set_horizontal_limits (camera, EYE_HORIZ_LIMITS);
Наявність лімітів можна перевірити методами has_distance_limits () , has_horizontal_rot_limits () , has_vertical_rot_limits () , has_horizontal_trans_limits () і has_vertical_trans_limits () .
Примітка
У режимі HOVER у камери завжди є ліміти по дистанції і розі підйому. У разі, якщо вони не були задані, ліміти автоматично розраховуються так, щоб зафіксувати камеру в поточному положенні щодо опорної точки.
Примітка
Присутні на камері ліміти можуть впливати на її позицію і орієнтацію, що виставляються через API.
Відлік кутових координат
При роботі з камерою через API (обертання, виставлення обмежень) відлік кутових координат ведеться наступним чином:
Для типів TARGET / HOVER:
Для типу EYE: