Физика в Blender Game Engine

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

При переключении на движок рендеринга Blender Game содержимое вкладки Physics редактора свойств изменяется. Теперь выделенному объекту можно назначать определенный тип, а не включать для него то или иное физическое свойство с помощью кнопок.

Типы физических объектов

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

Так оба начнут падать под действием виртуальной силы тяжести. При этом мяч при столкновении с землей, роль которой может играть статичный плоский объект, сожмется и отпрыгнет. Значение гравитации меняется на вкладке Scene редактора свойств.

Настройка гравитации в Blender

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

Также при переключении на рендеринг Blender Game появляется панель Physics на вкладке материалов. Здесь можно настроить такие физические свойства материала как трение, эластичность и др.

Физические свойства материала

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

Рассмотрим основные особенности разных типов объектов. По умолчанию объектам назначается тип Static. На такие тела не действуют законы физики. Это значит, что они не падают под действием гравитации, на них нельзя подействовать силой, в том числе толкнуть, например, твердым телом.

Однако статичные тела не пропускают сквозь себя "физические тела" (но два статичных при столкновении проходят сквозь друг друга). Так, если шар типа Rigid Body падает на плоскость Static, то он не пройдет сквозь нее, а останется на ее поверхности. Если же в игре требуется статический объект, который пропускает через себя тела, то следует выбирать тип No Collision или включить флажок Ghost у Rigid Body. Например, какой-то объект моделирует у вас водоем, и сквозь него движется персонаж. В таком случае водоем будет No Collision или привидением.

Также No Collision используются для фоновых объектов, которые по ходу игры никогда ни с чем не сталкиваются. Это экономит ресурсы.

Разница между Dynamic и Rigid Body заключается только в том, что первый не вращается. Например, шар Rigid покатится по склону, т. е. при перемещении будет вертеться вокруг своей оси как колесо, а шар Dynamic просто будет съезжать как ящик с горки, без кручения.

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

Тип Character обычно назначают игровым персонажам. Например, вы управляете героем, которому был назначен Rigid Body. При столкновении с препятствием вас вероятно начнет крутить или отбросит назад. Поэтому лучше использовать Character, которые имеет свои особые настройки, отличающиеся от того же Dynamic.

Мягкие тела сплющиваются при падении. Сделать их более упругими, похожими на резиновый мяч можно, увеличив значение Thershold (порог изменения формы) в настройках, которые появляются на вкладке Physics при выборе типа Soft Body. Отметим, что физика этого типа далека от совершенства.

Запись анимации

В Blender имеется возможность записать то, что происходило в игре, в анимацию. Для этого надо установить флажок Record Animation в пункте Game меню редактора Info.

Запись анимации

После этого запустить игру, "поиграть", выйти из игры. Далее нажать Alt+A. В 3D View вы увидите как проигрывается анимация, повторяющая то, что происходило при запуске игрового движка. Увидеть созданные ключевые кадры можно в редакторе Timeline.

Для получения видеофайла следует переключиться на движок рендеринга Blender Render, после чего на вкладке Render редактора свойств выполнить необходимые настройки и запустить рендер анимации (см. урок "Введение в анимацию в Blender").

Удалить все ключевые кадры объекта можно через меню редактора 3D View: Object → Animation → Clear Keyframes… . Кадры удаляются только у выделенных объектов.

Для объектов типа Static надо дополнительно включать флажок Record Animation на вкладке Physics редактора свойств. Иначе их изменения в режиме игры не записываются в анимацию.

Практическая работа. Границы столкновения

При взаимодействии объектов важно учитывать границы их столкновения, которые не всегда совпадают с контурами объектов. Так если на сцену добавить куб, установить для него тип Rigid Body и переключиться на вид каркаса (Z), вы увидите вписанный в куб шар. Этот шар обозначат границу радиуса взаимодействия, который настраивается через атрибут Radius на вкладке Physics редактора Свойств.

Обозначение границ радиуса взаимодействия в Blender

При уменьшении или увеличении объектов важно не забывать подправить этот радиус. Так, если объект был уменьшен, то вы увидите радиус за пределами объекта без переключения на вид каркаса.

Однако помимо радиуса есть более гибкий способ задавать границы объектов. Для этого надо на вкладке Physics включить флажок Collision Bounds и выбрать подходящую форму. Для геометрически сложных объектов подходят Convex Hull и Triangle Mesh.

Типы границ столкновения

На предыдущем изображении плоскость является статическим объектом, а кубы – твердыми телами. При падении нижний куб падает на плоскость, а верхний – сначала на нижний куб, после чего сваливается с него. Включение Collision Bounds и выбор варианта Box дает более реалистичную картину взаимодействия. Тогда как Radius не перекрывает углы куба, в результате при падении один куб частично входит внутрь другого, что с точки зрения физики реального мира неправильно.

Ваша задача создать сцену, в которой на статичную плоскость падает или лежит на ней большой плоский объект Dynamic, на который в свою очередь должны падать Rigid Body разных форм. Границы столкновений следует настроить таким образом, чтобы после падений между объектами не было ни зазоров, ни проникновений.

Пример сцены с падением объектов разных физик


 

Создано

Обновлено