Ваш браузер устарел. Рекомендуем обновить его до последней версии.

Испытательный полигон v.1

Опубликовано 06.05.2017

Описание возможностей разработки в Blender, сложности моделирования и их решение

Испытательный полигон v.1

 В этой статье я подробно опишу свою новую разработку - "Испытательный полигон", это его первая версия. Также тут будут описаны возможности моей разработки, перспективы, сложности ее моделирования и их решения.

 Видео демонстрирует небольшую часть элементов разработки. Давайте рассмотрим эти элементы более детально:

Меню "Испытательного полигона" при старте игрыМеню "Испытательного полигона" при старте игрыМеню "Испытательного полигона" в Blender3DМеню "Испытательного полигона" в Blender3D  

 На рисунках изображены:

  1. Меню игры "Испытательный полигон".
  2. Меню полигона в Blender3D.
  3. Меню игры "Крутилка".

 Как видите, "Крутилка" от "Испытательного полигона" отличается совсем немного - появился задний фон, добавлены новые надписи. Ещё появилась музыка, "сенсор" которой прикреплен к слову "Меню". Расскажу вам о фоне - дело в том, что моделирование его, в игре не отражалось. Оказалось, что для моделирования сложных 

Редактор: Свойства, пункт: Затенение, в blenderРедактор: Свойства, пункт: Затенение, в blender

материалов, со структурами, нужна дополнительная настройка "Визуализации", а именно поменять затенение с "Несколько текстур" на "GLSL" и проставить все галочки.

 На изображении меню, в окне Blender, видны "сенсор", "контроллер", "актуатор" слова "Меню" - они отвечают за постоянное проигрывание музыки, подобные связки присутствуют во всех сценах полигона, а их 3.

 Последнее об этой сцене - связки для переходов в другие сцены, плюс реализация анимации кнопок. Кнопка "Старт" отправляет на сцену "Игра", а "Управление" на одноименную сцену. Я приведу в пример алгоритм логики кнопки "Старт", который уже описывал ранее, в рассказе о "Крутилке":

Описание кнопки "Старт" в "Меню" игры, созданном в Blender Game EngineОписание кнопки "Старт" в "Меню" игры, созданном в Blender Game Engine "Сенсоры" отвечают за нажатие на кнопку, "Контроллеры" помогают связывать "Сенсоры" с "Актуаторами", а "Актуаторы" загружают новую сцену и добавляют эффекты для текста.

 Сцену "Управление" нет смысла рассматривать подробно, так как в основном там присутствуют статичные элементы без дополнительных эффектов, а действующие в игре только стрелка "Назад в меню" и добавление звука, которое можно привязать к любой модели.

 Осталась самая главная сцена - "Игра". Основная сложность, которая отняла много времени у меня - взаимодействие основной, действующей модели со стенами:

Blender игра - подготовка сценыBlender игра - подготовка сцены

 Сначала я сделал плоскость на которой стоит модель и расположил под ней ещё одну плоскость, в несколько раз больше. Потом я включил физику в разделе "Материал", установил "Динамический" тип в появившемся разделе "Физика" и надеялся, что модель будет падать с одной плоскости на другую при выходе за ее пределы, но она продолжала движение по прямой, как будто линейная физика оставалась "Статичной". Чего я только не пробовал делать - менял физику модели, ее скелета, пробовал различные настройки, не помогало ничего. Тогда я решил поискать информацию в сети и нашел кое что интересное - оказывается у моделей со скелетом, изначально, невозможно поменять тип физики, можно только прописать это в скрипте Python. Быть может есть и другие способы изменения физики моделей со скелетом и со временем я о них узнаю, но пока нужно было искать другой способ решения ситуации в Blender- мне нужно, чтобы модель перезагружала сцену при выходе за пределы плоскости.

 Немного поразмыслив, я решил добавить стены к первой плоскости и удалить вторую, а процесс перезагрузки сцены возложить на "Столкновение" со стенами. Сначала и это не получилось, так как модель продолжала проходить сквозь стены, как статичная. Я продолжил поиск решения и нашел следующее - в разделе "Физика" есть пункт "Границы столкновения", который по-умолчанию отключен. В процессе моделирования я наткнулся ещё с одной проблемой - хотел вместо стен поставить куб и растянуть его на всю сцену - так удобнее и быстрее, чем копировать и настраивать стены, но сцена перезагружалась с самого начала, как будто куб сталкивался с моделью всегда. Проблема оказалась в том, что границы столкновения любого объекта в Blender - это внутренняя его часть. Главная модель находилась в центре куба, поэтому "сенсор" столкновения срабатывал сразу после загрузки сцены.

 Пришлось делать стены, так как их "Границы столкновения" это объекты, которые "столкнуться" с ними, а ещё добавить "Границы столкновения" для основной модели. Алгоритм для стен я задал одинаковый, для всех 4 стен:

Blender3D - связка актуатора, контроллера и сенсора, для перезагрузки сцены при столкновенииBlender3D - связка актуатора, контроллера и сенсора, для перезагрузки сцены при столкновении

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

  В завершении статьи расскажу о перемещении основной модели - я привязал всю логику ее перемещения, к ее скелету:

Логика скелета основной модели испытательного полигонаЛогика скелета основной модели испытательного полигона

 "Сенсоры" клавиатуры реагируют на нажатие определенных клавиш, а "Актуаторы" "Движение" меняют координаты модели по заданным осям, меняя положение или вращая модель. Анимация в "Актуаторе" "Действие" двигает ноги модели при нажатии клавиш клавиатуры.

 На этом статья заканчивается, функционал "Испытательного полигона" будет расширяться, поэтому "v.1", это только начало!

Опубликовать в социальных сетях