Создаем игру. Часть 9. История со смыслом
2015-03-03
Немного странно прыгать по островам, уворачиваясь от метеоритов, подбирая бонусы, не правда ли? Пришло время добавить кое-какие задачи главному герою, чтобы ему было чем заняться в этом пока бессмысленном, но суровом мире. В этой статье пойдет речь о создании опасных врагов, с которыми игроку придется вступить в ожесточенную схватку!
Создание голема
Главным врагом на этом уровне будет огненный голем. Перед началом работы в 3D, художником-концептуалистом был выполнен вот такой концепт с несколькими видами моделируемого объекта.
В результате после моделирования на основе концепта получилась следующая геометрия. Геометрия делалась сразу низко полигональной, так как запекать карту нормалей и других дополнительных текстур не планировалось.
Чтобы сэкономить время на создании черновой текстуры, на геометрию по четырем разверткам (1) был спроецирован с разных сторон концепт-арт (2) и объединен в материале по специальной маске (3).
После небольших доработок в местах швов текстура была готова для использования в материале для экспорта.
Материал, спецэффекты и анимация
Материал голема состоит из запеченной ранее диффузной текстуры (1) и небольшого эффекта горения голема (2), сделанного при помощи ноды Time, чтобы создалось впечатление присутствия его внутреннего жара. Карта спекуляра сгенерирована на лету (3) из диффузной текстуры.
Так как голем раскален изнутри, он должен дымить. Для этого к основной геометрии создана дополнительная геометрия для системы частиц.
В настройках Relations геометрии системы частиц в качестве Parent объекта указана кость грудной клетки арматуры голема. Это заставит систему частиц учитывать арматурную анимацию персонажа.
В настройках системы частиц стоит обратить внимание на раздел Rotation - там добавлена случайность к повороту частиц. В настройках движка Blend4Web - в системе координат выставлено значение World, что придаст дыму большую реалистичность в динамике. Материал аналогичен материалу дыма метеоритов, с его настройкой можете ознакомиться в одной из предыдущих статей цикла.
Что касается анимации, то кроме стандартной анимации ходьбы и простоя, были сделаны три анимации атаки, чтобы визуально разнообразить поведение голема, а также достаточно сложная анимация вылезания голема из лавы. Что касается анимации смерти, то здесь пришлось значительно усложнить процесс.
Смерть голема
Чтобы создать эффект того, что голем разваливается на куски после смерти, понадобилось сделать специальную геометрию на основе геометрии голема, предварительно порезав её на необходимое количество частей. Материал использовался тот же самый.
На самом деле для создания анимации развала было сделано две копии такой геометрии: первая одним объектом с арматурой - эта геометрия будет использоваться в игре, вторая геометрия с настройками физики Rigid Body, причем каждая часть голема представляет собой отдельный объект.
Чтобы симулировать развал голема, нужно на каждом его кусочке сделать настройки физики Rigid Body, как показано на картинке. Также понадобится основание (например простой прямоугольник) для падения.
Геометрия, на которую будет переносится физическая симуляция, имеет костную систему с количеством костей, равным количеству частей, на которые геометрия будет разваливаться. Каждая кость должна влиять по вертексным весам только на одну часть голема.
Чтобы перенести физическую симуляцию на костную анимацию, необходимо на каждую кость арматуры навесить два констрейна Copy Location и Copy Rotation. В качестве объекта Target выбрать соответствующую каждой кости часть голема. Таким образом при помощи констрейнов кость унаследует все движения, созданные при помощи симуляции.
Теперь при помощи родного запекателя анимации Blender нужно перезапечь симуляцию в костную анимацию.
Анимация на выходе после запекания получится перенасыщенная ключами, чтобы её упростить надо воспользоваться утилитой Simplify F-Curves и, настраивая параметр Error, найти наилучшее значение.
Теперь анимация смерти голема готова. Ниже можно увидеть сравнительный пример всех четырех этапов создания анимации.
Для того, чтобы разрушение выглядело более эффектным, и чтобы замаскировать исчезновение остатков голема, добавим эффект задымления при рассыпании.
Необходимо создать геометрию примерной равной площади рассыпания камней, она будет служить источником системы частиц.
Главное в настройках системы частиц было добиться от неё того, чтобы она значительное время покрывала место россыпи камней. Материал для системы частиц используется тот же, что и для дыма, постоянно исходящего от самого голема.
Голем готов для нападения и он пышет яростью!
Магические камни
Но големы - это не только источник опасностей, но и хранители очень важных элементов игры - драгоценных камней!
Всего в игре присутствует 6 типов драгоценных камней. Пять из них связаны цветом каждый со своим островом и обелиском (об этом позже) и один универсальный.
Геометрия их очень проста и описание её излишне. Для их вращения используется та же объектная анимация, что и для бутылочек с зельями.
В основе материала драгоценных камней лежит текстура типа matcap (1), которая уже использовалась на бутылочках. Она раскрашивается при помощи разных модификаций вертексного цвета, содержащегося на геометрии каждого камушка (2). А при помощи маски по Френелю на краях создан эффект оранжевых и желтых рефлексов (3). Так же, как и в материале магического зелья, здесь присутствует магический блеск (4), который добавляет эффектности камням. Для низких настроек графики он оптимизирован при помощи ноды Level Of Quality.
Обелиски
Обелиск - это сердце каждого острова. Сюда надо будет относить все честно отобранные у бездушных големов магические камни.
В состав обелиска, кроме новой геометрии с новым материалом, также входит геометрия и материал магических камней в тех местах, куда персонаж будет их монтировать в процессе игры.
Текстура для материала (1) нарисована вручную в режиме Texture Paint. Чтобы острова как-то отличались по цвету, основание геометрии подкрашено (2) по вертексному цвету.
Mагия островов
Когда все кристаллы будут вставлены в обелиск, это активизирует магию острова и он будет защищен от големов.
Для создания магического щита была сделана дополнительная геометрия вокруг каждого острова.
Каждая геометрия имеет свой индивидуальный материал с одной общей для всех нодовой группой. Разберем сначала индивидуальные материалы.
В центре нодовая группа (1), которая собственно и составляет основное тело материала. Также тут присутствует маска для альфа-канала (3) с анимированной нодой Value, которая будет проявлять магический щит в нужный момент. И блок, который будет задавать цвет для магического щита (2). Здесь две группы цветов, так как цвет будет меняться от момента, когда магический щит только начинает проявляться, до момента, когда он полностью проявится. Анимированная нода Value будет осуществлять плавное изменение цвета.
Разберем подробнее нодовую группу.
На вход (1) нодовой группе подаются: UV-развертка для текстуры с магическими знаками (3), вертексный цвет, который является просто маской для прозрачности по краям магического щита, и два цветовых значения, в которые будет подкрашиваться магический щит.
Все текстуры с магическими знаками (3) двигаются по UV-развертке (2) с помощью ноды Time. Далее они объединяются в единую маску (4) и раскрашиваются (5) при помощи цвета, полученного из входной ноды (1).
Для альфа-канала также создается немного модифицированная маска (6) и подается в выходную ноду (7).
Также в двух местах здесь присутствует нода Level Of Quality, которая позволяет упростить визуализацию для низкого качества настроек графики.
Заключение
На этом всё. Это последняя статья о создании графического контента для первого уровня игры. Теперь мир полон разных эффектов, врагов, магии и в нём появился некий смысл и цель. Осталось только добавить звук! О чем и пойдет рассказ в следующей статье.
Исходные файлы моделей находятся в составе бесплатного дистрибутива Blend4Web SDK.
Все интересующие вас вопросы по уроку вы можете задать в этой теме, и мы с радостью ответим на них.
Изменения
[2015-03-03] Изначальная публикация.