Введение в Blender Game Engine (BGE). Урок 1

1. Что такое BGE

Уникальной особенностью Blender является встроенный в него так называемый "игровой движок" (англ. game engine). Это программный компонент, который позволяет создавать небольшие игры, не выходя из среды трехмерного моделирования Blender.

Game engine:

  1. придает объектам "физические" свойства; объекты начинают вести себя так, как в реальном мире: падают под действием силы тяжести, сталкиваются и т.д. (возможно следует отметить, что в этом смысле движок еще "сыроват");
  2. позволяет наблюдать поведение объектов в реальном времени и воздействовать на них;
  3. записывает происходящее в режиме игры в анимацию;
  4. позволяет визуально настраивать (программировать) поведение и взаимодействие объектов;
  5. а также встраивать скрипты на языке программирования Python.

Режим игры – это режим действия игрового движка. Он запускается при нажатии клавиши P на клавиатуре. Выход из него – клавиша Esc. Лучше перед запуском игры переключиться в режим отображения текстур (Alt+Z).

Задание. Расположите на сцене плоскость и любой другой меш-объект над ней. Включите режим отображения текстур, затем режим игры. После выйдите из режима игры.

Для настройки поведения объектов для режима игры предназначена панель кнопок Logic (F4). На этом уроке мы рассмотрим ее левую часть – настойки объекта.

2. Типы объектов

В реальном мире объекты сделаны из различных материалов и, естественно, обладают различными свойствами.
Игровой движок (BGE), конечно, не позволяет симулировать такое разнообразие, но кое-что может. К тому же, BGE позволяет манипулировать и "нефизическими объектами", т.е. теми для которых как бы нет влияющего окружающего мира (в реальном мире таких объектов не существует).

Тип выбранного объекта (например, куба) задается с помощью меню Object Type.

Типы объектов в Blender Game Engine

Occluder (occlude – закрывать, преграждать). В определенных условиях увеличивает производительность путем исключения объектов, расположенных за объектом-«окклюдером». Уместно использовать в сложных сценах.

No collision (collision - столкновение). Отключает у объекта возможность столкновения с другими объектами. Т.е. если dynamic-объект встретит на своем пути no_collision-объект, то пройдет сквозь него, как будто его нет. Рекомендуется использовать для объектов, которые никогда ни с чем не столкнуться: выбор этого типа объекта увеличивает производительность игры.

Sensor (датчик). Предназначен для более сложного управления столкновениями.

Static (статический, неподвижный). Такой тип объекта может участвовать во взаимодействиях с физическими объектами (играть роль препятствий), хотя на него не влияют никакие виртуальные физические силы. В режиме игры он может быть перемещен за счет изменения своего положения, но не под влиянием сил. Два static-объекта при пересечении их путей не сталкиваются, а проходят сквозь друг друга.

Dynamic (динамический). Объект, на который "действуют" законы физики: сила тяжести, масса, воздействие внешних сил, ускорение и др.

Rigid body (твердое тело). Более реально ведущий себя по сравнению с Dynamic "физический" объект.

Soft body (мягкое тело). "Физический" объект, который ведет себя подобно резиновому мячу или мягкой игрушке, т.е деформируется (изменяет свою форму) при столкновениях с другими объектами.

Опыт 1. Типы объектов
Для того, чтобы сразу протестировать как ведут себя некоторые типы объектов в режиме игры, расположим несколько сфер над плоскостью и нажмем P. Вот что мы увидим по прошествии нескольких секунд:

Поведение объектов в Blender в режиме игры (P)

Видно, что с объектов типа Static ничего не произошло, Dynamic, Rigid Body и Soft Body упали под действием виртуальной силы тяжести. Причем Soft Body упал и слегка «размазался», как и положено мягкому телу, но почему-то меш-объект остался прежнего размера (это недоработка Blender или как-нибудь настраивается отдельно? Примечание: если при создании сферы сразу указать небольшой размер, то она будет мелкой при создании из нее мягкого тела).

Опыт 2. Dynamic и Rigid body
Чтобы заметить разницу между Rigid body и Dynamic, развернем плоскость на 50 по оси Y или X. Теперь можно наблюдать, что при падении Rigid Body продолжает свое движение как естественный объект (также ведет себя и Soft Body), а Dynamic остается спокойно лежать на плоскости. Конечно, если наклон плоскости сделать больше, то вниз покатится и динамический объект.

Отличие между объектами Dynamic и Rigid Body в Blender

3. Настройки

В предыдущем опыте можно заметить, что при смене типа объектов меняются кнопки настоек ниже. Здесь основная часть настроек свойств объекта. Рассмотрим некоторые.

Настройки объектов Rigid Body и Soft Body в Blender

Общие:

Actor (актер). Для версии 2.49 осталось непонятным, на что влияет данных параметр.
Ghost (призрак). Объект будет проходить сквозь другие объекты при столкновении с ними, при этом никак на них не влияя.
Invisible (невидимый). Объект становится невидимым, но присутствует на сцене. Объект-невидимка может взаимодействовать с другими объектами.
Mass (масса). Виртуальная масса объекта. Настройка данного параметра имеет большое значение для "физических" объектов при воздействии на них той или иной силы. Чем больше масса, тем больше нужно приложить силы для ее перемещения.

Rigid body:

Radius (радиус). Влияет на площадь взаимодействия с объектом. Радиус виден как розовая пунктирная окружность в 3D окне. Если не виден, то увеличьте значение. Фактически границы окружности и определяют размер взаимодействующей области (объекта).
No sleeping (не спящий). При включении-отключении данной опции в версии 2.49 изменений в поведении объекта при применении к нему силы замечено не было.
Остальные настройки пока опустим, т.к. они достаточно специфичны и требуют начальных знаний физики.

Soft body:

Shape Match (shape – форма, match – выравнивать, противостоять и др.). Если кнопка будет выключена, то объект не сохранит свою форму, а сложится как тряпка (при достаточном количестве вершин).
Bending Const (bending – сгибание, constraints – ограничения). Если отключить данную кнопку, то объект при столкновении будет сильнее изменять свою форму.
kMT. Влияет на упругость объекта, связана с Shape Match. Увеличив данное значение, например, у сферы, вы получите объект поведением похожий на мяч.

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

  1. Разместите на сцене плоскость, увеличьте ее. Над плоскостью друг над другом расположите три одинаковых куба, каждый куб должен быть
    объектом Rigid body. Запустив режим игры, отметьте, как упали кубики.
  2. У среднего куба увеличьте Radius до значения 1.5. Снова запустите игру и отметьте изменения.
  3. Включите для среднего куба кнопку Invisible и снова запустите режим игры. Участвует ли невидимый куб во взаимодействии объектов?
  4. Удалите со сцены все три куба. Добавьте сферу с 16-тью сегментами и кольцами (уменьшение частей меш-объектов влияет на производительность),
    расположив ее над плоскостью. Сделайте ее объектом Soft body и продублируйте по оси X четыре раза (все пять объектов должны быть над плоскостью,
    увеличьте плоскость при необходимости). Желательно развернуть камеру таким образом, чтобы она "смотрела" прямо на ось X.
  5. Для первого объекта Soft body оставьте значения настроек по умолчанию. У второго – увеличьте значение kMT почти до единицы.
    У третьего – отключите Shape Match, у четвертого – Bending Const, а у пятого – обе кнопки.
  6. Запустите режим игры. Отметьте изменения каждой из сфер. Если разница между первой и четвертой сферой? В чем она заключается?

Здравствуйте. Помогите решить

Здравствуйте. Помогите решить проблему с BGE. Устанавливал разные версии Blender-a. blender-2.69-windows64 и blender-2.72b-windows64. В обоих версиях при попытки запустить игровой движок в блендере (нажатием клавиши P или через кнопку start в меню blander game ) blender просто закрывается, вылетает в Windows, об ошибках никаких сообщений нет. Система: Win 7 x64, видеокарта NVIDIA GeForce GTX 260. На ноутбуке, на той же "семерке" попробовал подобную процедуру, движек запускается, но сцена моргает и ничего корректно не отображается.

No sleeping

>No sleeping (не спящий). При включении-отключении данной опции в версии 2.49 изменений в поведении объекта при применении к нему силы замечено не было.

При No sleeping блендер продолжает просчитывать физику, даже если объект стоит на месте. Иногда заметно дрожание как побочный эффект. Меню Game - Show physics visualization отлично показывает разницу.

BGE

>Actor (актер). Для версии 2.49 осталось непонятным, на что влияет данных параметр.
Он влияет на сенсоры, если кнопка стоять не будет, неуоторые сенсоры обнаруживать объект не будут.

(вообще урок выглядит непрофессионально :) )

Soft body

>но почему-то меш-объект остался прежнего размера (это недоработка Blender или как-нибудь настраивается отдельно?
Нужно поставить размеры на 1 и изменять размер только в режиме редактирования.