Управление камерой в Blender Game Engine. Урок 6

Далеко не редкими бывают ситуации, когда сцена слишком большая для полноценного ее обзора с помощью неподвижной камеры. Поэтому необходимо, чтобы камера двигалась, следя за объектами, или на сцене присутствовали несколько камер, между которыми можно было бы переключаться. Допустим, мы придумали игру, в которой шар должен преодолеть препятствия, перепрыгивая их, не толкая при этом (иначе перегородки упадут). Путь, который шар должен пройти очень длинный. Если камера все время остается на месте, то стоит шару немного продвинуться вперед, как станет трудно или невозможно им управлять.

Blender Game Engine: вид из камеры

1. Связь родитель-потомок (Ctrl+P)

Данная связь широко используется в Blender для того, чтобы изменения объекта-«родителя» сразу приводили к изменениям объектов-«детей» (но не наоборот). Если «предок» меняет свое положение, размер, поворот, то следом за ним эти свойства изменяются и у «потомка». Для примера описанного выше, это означает, что если установить шар в качестве родителя, а камеру в качестве потомка, то любое перемещение шара, в том числе и в режиме игры, заставит камеру двигаться за ним.

Связь устанавливается так:

  1. Сначала выделяется потомок (в данном случае, камера).
  2. Затем (с зажатой клавишей Shift) выделяется предок (в данном случае, шар).
  3. Для установки связи родитель-потомок следует нажать комбинацию клавиш Ctrl+P (если в дальнейшем потребуется снять связь, то следует выделить оба предмета и нажать Alt+P).

Однако запустив режим игры можно столкнуться с проблемой: шар не только двигается, но и поворачивается. Следом за ним будет вертеться и камера, вид из камеры при этом будет варьировать от странного до еще более странного. Чтобы камера не вертелась, ее можно привязать не к целому объекту, а к его любой вершине. Вершина – это точка. Точки не вертятся. Тогда последовательность действий будет такой:

  1. Выделить камеру.
  2. Выделить шар-родитель (с зажатым Shift).
  3. Переключиться в режим редактирования.
  4. Выделить любую вершину шара.
  5. Нажать Ctrl+P. Выбрать Make vertex parent (сделать вершину родителем).
  6. Выйти из режима редактирования.

2. Активатор Camera

Есть еще один способ постоянно следить за выбранным объектом: использовать активатор Camera. Сделать это можно следующим образом. Для камеры добавить связанные между собой сенсор Always, контроллер и активатор Camera. В поле OB активатора прописать имя того объекта, за которым планируется следить.

Активатор Camera

Изначально настройки Height (высота камеры над объектом), Min и Max (минимальное и максимальное расстояния от камеры до объекта) равны нулю. Однако лучше их изменить. Если требуется, чтобы камера смотрела на объект больше сбоку, чем сверху, то Height не должна иметь большое значение.

Активатор Camera обеспечивает более плавное слежение за объектом, чем связь родитель-потомок. При резких движениях объекта камера двигается более мягко; если объект неподвижен, камера все равно продолжает немного двигаться и поворачиваться (по оси X или Y). Недостатком этого способа слежения является то, что если объект вертится, то камера иногда прокручивается так, что управлять объектом становится неудобно.

3. Слежение за разными объектами

Бывает, что на 3D-сцене сначала необходимо следить за одним объектом, а затем за другим. Чтобы реализовать такую возможность, можно создать для камеры не одну группу сенсоров, контроллеров и активаторов Camera. Каждый активатор может приводиться в действие нажатием клавиши или щелчком мыши. Тогда в режиме игры можно будет переключать вид с одного объекта на другой.

Камера может следить за несколькими объектами в BGE

4. Обзор сцены из разных камер

Когда требуется не следить за конкретным объектом, а просто обозревать сцену с разных точек зрения, то возможно уместней установить несколько камер и предусмотреть возможность переключаться между ними в режиме игры. Для установки камеры используется активатор Scene -> Set Camera.

Активатор Set Camera в BGE

Практическая работа

  1. Используя возможности игрового движка Blender, создайте сцену, в которой объект может перемещаться по плоскостям, расположенным вертикально по отношению друг к другу.
  2. Установите слежение за объектом с помощью связи родитель-потомок. Сохраните файл.
  3. Установите слежение за объектом с помощью активатора Camera. Сохраните файл под другим именем.
  4. Откройте оба файла и сравните движение камеры за объектом.
  5. Создайте 3D-сцену с несколькими объектами. Задайте возможность в режиме игры переключать вид камеры с одного объекта на другой.
  6. Добавьте на новую сцену две плоскости, разместив на них по любому объекту. Растащите их таким образом, чтобы одна плоскость была хорошо видна в одной камере, при этом вторая виднелась вдалеке. Во второй камере должна быть хорошо видна другая плоскость, а первая – где-то вдалеке. Организуйте возможность переключения между камерами с помощью щелчка левой кнопкой мыши по плоскости вдалеке.