Колобок и лабиринты Кощея (Девблог №2 - Из бренного мира в «цифру»)
Окружение для игры в принципе слепить не сложно (сложно красиво слепить, вот это да). Сфотографировать под определённым ракурсом не проблема. Вырезать из фото и покрасить модель, уже занимает какое-то время, но для получения нужного результата приемлемо. А вот с персонажами всё намного сложнее. Ведь хотелось даже с персонажами от пластилиновой сути не отходить. Если бы модель персонажа с нуля делалась в Blender, это уже оказалось халтуркой. Вариант с фотографиями персонажа под разными ракурсами с созданием 2D библиотеки видов и анимации привело бы к неоправданной задержке в разработке (ещё каждый кадр редактировать пришлось).
Поэтому был другой вариант переноса пластилинового персонажа в 3D мир. Думаю вы уже догадываетесь, что речь идёт о 3D сканировании, благо доступные технологии имеются. Такой вариант конечно требовал бюджетного решения без закупки или аренды дорогих 3D сканеров. И вариант перетаскивания в цифру при помощи фотографий это было самым оптимальным решением этой проблемы.
Процесс подготовки начался с осмысления как получше организовать съёмку, но чтобы было дёшево и сердито. Первый вариант строился на принципе — я сделяль. Ну в общем сделать все сподручные для съёмки предметы, такие как вращающаяся платформа, фон, крепление смартфона для съёмки и т.п. вполне можно было. Но по времени это так же становилось невыгодным мероприятием. Поэтому надо было затоварится нужными вещами.
Нужно было приобрести лишь три основных предмета, которые обошлись всего в полторы тысячи рублей. Куплен вращающийся министолик для предметной съёмки. К нему ещё потребовалось распечатать градусную разметку для удобства использования в дальнейшем. Кронштейн-стойка для смартфона. Основной фотоаппарат который используется для съёмок моделей, было бы проблематично использовать из-за его размера и веса. Штатив под нужды подобной фото сессии приспособить проблематично и громоздко. Поэтому был выбран вариант фото на смартфон. Ну и белый фон для съёмки чтобы окружающие предметы не засоряли фото. К последнему предмету требовалось дополнение в виде стойки для его крепления, но там стоимость была практически такой как всё выше приобретённое. Поэтому вот тут уже от самоделки было не отвертеться.
Так как у меня имелись алюминиевые трубки небольших диаметров для всяких самоделок, они и легли в основу конструкции. Требовалось по быстрому их скрепить, ну и заодно сделать так, чтобы конструкцию можно было разбирать после её использования. В Blender были сконструированы нехитрые крепления, а на 3D принтере они были впоследствии распечатаны.
Всё быстро собралось и белый фон расположился на конструкции. И вот модель Колобка расположена на столике и всё готово к съёмкам.
Для создания из фото 3D модели, требуется сделать фотосет примерно из 50 фотографий. Если же хочется точнее можно и больше, но программа 3DF Zephyr Free как понятно из названия бесплатна и пропустит только 50 фоток, а дальше плати денежку и радуйся большей точности. От того что не требовалось сверхвысокой детализации хватило и 48 фотографий. А делалось это следующим образом.
Смартфон ставился горизонтально напротив снимаемого объекта. На крутящимся столике делался оборот в 360 градусов. Каждые 45 градусов столик останавливался и производился снимок Колобка. Итого на круг получалось 8 фотографий. Потом смартфон установленный на пантограф приподнимался немного выше с наклоном на небольшой угол. Как бы укладываясь на воображаемую сферу. Оборот стола повторялся и так продолжалось пока смартфон не оказался над самой макушкой Колобка. Итого нужно было сделать шесть оборотов под разным наклоном камеры смартфона.
И вот тут я понял что лучше бы я всё же запарился с самодельным креплением смартфона, которое использовалось вместо пантографа. С ним бы вот эти углы и расстояние до объекта съёмок были бы фиксированными, а не выставляемыми приблизительно, как на купленном креплении. Так что если будет из фоток 3D модели делать, лучше сразу подготовить подобный инструмент.
После съёмок, получившийся массив фотографий переносился в Zephyr для просчёта и получения сначала вершин объекта, потом превращения этого результата в 3D меш с наложением текстуры с фотографий. Если данная тема интересна, то обучающие ролики в интеренете имеются (сам как раз по ним и всё и делал).
Стоит заметить ещё одну деталь, которую я не услышал в уроках (может в инструкциях это где-то и есть, но у нас же по хардкору — методом тыка). Иногда фотосет моделей был идеален, но программа хоть убей не могла просчитать объект как надо. Делала плоским или не хотела понимать обратную сторону объекта. Такое капризное поведение было непонятно, так всё было идеально отснято. Для эксперимента сделал на бумажном слое вращающегося стола разноцветные метки маркерами.
И да... программа начала принимать фотографии и генерировать полноценную модель. Судя по всему ей требуются помимо самого объекта ещё и видимые метки для просчёта углов. А так как столик был белым и фон белый, то вероятно зацепится алгоритму кроме модели было не за что, поэтому и глюки были.
Получение модели из программы работу не завершало, а только переносило в новое русло. Да как видно из короткого ролика с первым отсканированным Колобком, до финального результата ещё предстояло всё лишнее обрезать и отшлифовать. И это касалось не только обработки текстуры до приемлемого вида. Изначальная получившаяся модель для переноса в игру не подходит абсолютно. Ведь в игре требуется производительность. И тут небольшой ликбез для тех кто не в курсе 3D мира игр.
3D модели состоят из вершин (точек), между которыми как бы натягиваются треугольные плоскости, или просто треугольники. И вот из этих треугольников и состоит модель. Потом на эти треугольники как на бумажную склеенную модель, накладывается плоская текстура. В итоге получившийся результат мы видим в играх, фильмах, рендерах.
Ещё одно ограничение, нельзя использовать гигантское количество треугольников на моделях так как это приводит к снижению производительности при просчётах компьютером. Поэтому модели должны быть оптимизированы. А после фотограмметрии, модель получается с завышенным количеством треугольников и в первоначальном виде использовать её в игре нельзя (нет можно если очень хочется, но это будет на совести разработчика с фиговой оптимизацией). Так вот Колобок первоначально получился с почти 90 000 треугольниками. А то что вы видите на видео из игры и скриншотах, там уже около 200 треугольников на одном Колобке.
Для того чтобы получился такой результат, в Blender (3D редактор) импортировался оригинальный меш Колобка и поверх него, постепенно из треугольников создавалась новая модель (как это делалось видно на фотографиях с одним из врагов).
Потом ещё были работы с переносом текстуры с оригинального объекта. Так как оригинальная текстура это вообще какой-то ужОс с разбросанными по изображению кляксами.
Это даже в развёртку (раскройка текстуры для 3D) нормально не перенести было. Но это уже технические хитрости, а мы не на уроке 3D моделинга. :) В общем вернувшись к оригинальной не оптимизированной модели, по ней были произведены всякие докраски текстуры инструментами Blender и уже потом был перенос результата на оптимизированную модель, так же используя встроенные инструменты редактора. А уже в Krita были финальные работы над текстурой и Колобок стал таким, каким вы его видите.
Оставалась ещё анимация. Ведь просто за замороженной моделькой без движений наблюдать не интересно. Хотя рассказывать особо тут и нечего. Брались ручки-ножки-голова и крутились вертелись поочерёдно с установкой на определённых кадрах ключей анимации. Колобок в итоге начал бегать, бегать и бегать. Так от всех и убежал. Ну потом эти возюкания повторялись ещё пять раз, но уже с моделями миньонов Кощея. Как вы понимаете времени на такое творчество ушло прилично, но было интересно в процессе освоения нового элемента разработки.
Страница игры в VK Play где можете добавить в Избранное: https://vkplay.ru/play/game/kolobok_i_labirinty_koscheja/
Предыдущие частички летописи: