Dead Space 2 — создание костюма Advanced Suit (часть 2)
Продолжение статьи о создании костюма Айзека Кларка
Предыдущие части:
- Часть 1 - Dead Space 2 — создание костюма Advanced Suit (часть 1)
Электроника и её программирование для модуля спины (RIG)
В качестве основы для начинки модуля спины я использовал плату Arduino Uno (оригинальную версию). Она требовалась для управления подсветкой RIG (индикация уровня жизни и уровня стазис модуля персонажа).
Также использовались два сервопривода SG90 для управления закрылками на плечах.
В качестве подсветки использовалась управляемая RGB светодиодная лента WS2801 - что позволяет программировать различные анимационные эффекты, включать нужные сегменты и прочее – что является идеальным аппаратным решением для реализации функционала присутствующего у персонажа в игре.
Для управления различными режимами модуля (положение и анимация плечевых «закрылок»,уровня здоровья и анимационных эффектов было выбрано делать дублирующее решение.
В частности решено было использовать IR датчики для возможности управления с использованием обычного пульта дистанционного управления (применение которых читатель широко встречает в быту).
Для этого в коде для были собраны коды нажатий для пульта, после чего для этих кодов в цикле стало возможным назначить необходимые действия (к примеру проиграть «анимацию» движения закрылок с помощью сервоприводов, включить нужный тип подсветки и так далее.
Но как ещё один способ управления был выбран беспроводной модуль NRF2401 - которые позволяют осуществить двунаправленную коммуникацию для ноды вплоть до 8 устройств, что позволит управлять отдельными модулями на большем расстоянии и не зависеть от визуальных помех, а также синхронно выполнять действия для различных электронных блоков костюма – в частности объединять управление подсветкой шлема и спинного модуля, синхронизировать открыта забрала шлема и движения закрылок и так далее.
(Но в итоге наладить работу работу модуля не удалось из-за его перегрева).
Используемый вариант кода опубликован мной в общедоступном репозитории на Github — https://github.com/m0rg0t/DeadSpace2_rig_cosplay
Далее немного более подробно разберем отдельные фрагменты кода и работу с вышеперечисленными модулями и устройствами.
Работа с сервоприводами
Для работы с сервоприводами (и в частности с SG90) используется библиотека Servo
#include <Servo.h>
Далее необходимо объявить переменные которые будут ответственны за необходимые сервоприводы
Servo myservoLeft;
Servo myservoRight;
Далее в функции setup мы устанавливаем на каких пинах ардуино у нас повешен data провод сервопривода, к примеру:
void setup() {
myservoLeft.attach(4);
myservoRight.attach(3);
}
После чего мы можем управлять сервоприводом, отправляя необходимый угол поворота посредством команды
myservoLeft.write(50);
Где 50 — это нужный нам градус поворота.
При этом сервопривод производит этот поворот «моментально» — и поэтому если нам нужно более плавное изменение положения сервопривода, то нам требуется постепенно менять угол поворота делая между ними задержки времени, к примеру:
for ( int i = start; i > pos; i--)
{
myservoLeft.write(i);
delay(time);
}
Где start — стартовое положение серво, pos - конечная позиция и time — задержка между состояниями сервопривода. (В данном случае цикл работает для стартовой позиции больше конечной позиции).
Работа с управляемой светодиодной лентой WS2801
Для работы с сервоприводами (и в частности с SG90) используется библиотека Servo
#include <FastLED.h>
Далее необходимо объявить переменные которые будут ответственны за массив светодиодов, их количество и Data и Clock пины к которым мы подключаем ленту к arduino
#define NUM_LEDS 17/
CRGB leds[NUM_LEDS];
#define CLOCK_PIN 6
#define DATA_PIN 5
Далее в функции setup мы устанавливаем на каких пинах ардуино у нас повешен data провод сервопривода, к примеру:
void setup() {
FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN>(leds, NUM_LEDS);
}
После чего мы можем управлять лентой, устанавливая нудный цвет в массиве светодиодов leds (где индекс в массиве — номер нужного светодиода).
К примеру мы можем включить определенный сегмент ленты (с красным цветом)
leds[7] = CRGB( 255, 0, 0);
leds[6] = CRGB( 255, 0, 0);
leds[8] = CRGB( 255, 0, 0);
Или показать «бегущий» сегмент светящийся по ленте
for(int dot = 0; dot < NUM_LEDS; dot++) {
if (dot>1) {
leds[dot-1] = CRGB( 0, 255, 0);
}
leds[dot] = CRGB( 0, 150, 150);
FastLED.show(); //обновляем ленту
delay(50); //делаем задержку
leds[dot] = CRGB::Black;
leds[dot-1] = CRGB::Black;
//выключаем светодиоды для следующего обновления
}
Изготовление сьюта
После того как разработанная ткань была изготовлена, мы с моим отцом приступили к изготовлению искомого сьюта (на данном этапе потребовалась помощь в связи с недостатком требуемых навыков для сборки сьюта из бифлекса, плюс требовалась подгонка в связи с неизбежным отклонениями от первоначальной выкройки из за различия в тканях и их эластичности, что весьма сложно без использования манекена с подходящими параметрами).
После первоначальной сборки были помечены места с излишками ткани (к примеру в области ног и рук присутствовали избытки ткани, внесены поправки в области спины и так далее).
После следующей проверки была установлена молния на спине (закрываемая спинным модулем), и сьют был окончательно сшит с использованием тянущегося варианта шва и добавлены липучки для приклепления кусков брони на костюм.
Изготовление спинной и фронтальной брони
Для спинной и фронтальной брони использовались шаблоны созданные на основе 3d моделей. В качестве материалов использовалась ЕВА, кожа и прозрачный ПЭТ пластик для светящихся элементов.
Для создания центрального светящегося блока я использовал картонную втулку для того чтобы сформовать ПЭТ пластик строительным феном в виде трубки.
Для кожаных элементов брони было произведено тиснение необходимого узора и для подвижных частей прикреплены самые обычные петли.
И остальные кусочки брони (с ними все примерно также - вырезаем части по разработанных шаблонам, склеиваем и прочее и прочее)
И в итоге получаем такие заготовки
Броня на руки
На основе изготовленных чертежей на первых этапах создания костюма я начал размещать на коже растительного дубления кусочки брони находящиеся на руках.
Кожа в качестве материала была выбрана по причине прочности и стойкости (так как на элементы рук приходится большая нагрузка), а также возможности нанести необходимый узор с помощью тиснения.
После завершения тиснения нужных узоров я приступил к покраске элементов с использованием акриловых красок ( подробнее в разделе о покраске).
Ссылки на полезные материалы созданные в ходе работы над костюмам
— Фирма для печати на ткани — https://kunjut.com/
— Исходный код —https://github.com/m0rg0t/DeadSpace2_rig_cosplay
— https://yadi.sk/d/99gb81cUzQZcgg — созданные материалы (шаблоны, чертежи и прочее)
— https://github.com/m0rg0t/DeadSpace2_rig_cosplay - код для шлема и RIG спины
Продолжение в следующих частях
- Часть 1 Dead Space 2 — создание костюма Advanced Suit (часть 1)