Давным-давно, в день создания первой серии New Faces был написан простенький интерпретатор языка с такой системой команд:
TIME1 s0 TIME2 NAME - назначить рисунок с названием NAME фоном кадров с TIME1 по TIME2
TIME1 sNUM CONS X Y TIME2 NAME - сделать на кадрах с TIME1 по TIME2 объектом номер NUM объект из группы файлов NAME в состоянии CONS по координатам X и Y
TIME1 r TIME2 TEXT - выдать в субтитрах реплику TEXT с TIME1 по TIME2
TIME1 mNUM X Y TIME2 - линейно и равномерно переместить объект в указанные координаты
TIME tNUM TRANSFORMATION - изменить состояние объекта по заданной схеме(включает в себя трансформации, движения персонажей). Схемы были зашиты в код интерпретатора=)
Собственно, всё, первые серии создавались с таким набором функций. Но сама программа была ужасной, работала медленно, не допускала сопровождения в силу убогого кода(т.к. была написана на одном дыхании за малое время), код был на Delphi(C++ я тогда не знал).
Давно хотелось расширить возможности программы: сначала появилась функция фиксации какого-то угла объекта(потом от неё отказался, т.к. это стало делаться на уровне картинок, а не программы, а она сама почти не использовалась и была неудобной), появились функции воспроизведения серии внешних кадров:
TIME1 1 TIME2 NUM [DIR] - с реальной скоростью
TIME1 4 TIME2 NUM [DIR] - с замедлением в 4 раза
Наконец, около года назад добавил функции циклической трансформации(шаги, горящий огонь, итд):
TIME1 dNUM TIME2 - 6 кадров, как при трансформации
TIME1 qNUM TIME2 - 5 кадров, для шагов - 6 было много.
И, наконец, вчера я стал это переписывать под С++. Сейчас имеется полностью функционирующая программа, способная делать всё, что и её предшественник + более устойчивая к ошибкам компиляции, с почти приятным кодом(ещё не почистил), которую легко сопровождать, быстрее работающая(фактически, пока отрисовывала все кадры в реалтайме) + с парой дополнений:
трансформации вынесены в текстовый файлик, теперь их удобно просматривать, добавлять новые, также их можно включать в команды d и q. + почищены мелкие баги старых команд; убирается большая часть лишних точек с краёв объектов(на картинках нового образца, содержащих цветной фон, точки фона уже совсем не видны, немного экспериментов, и станет лучше, а ведь использовался банальный пороговый фильтр).
Планирую добавить создание отдельного файла субтитров(кстати, они уже убраны с видео, отображаются в отдельном окошечке). Одна проблема библиотеки - русские буквы не рисуются её функцией вывода текста, придётся самому делать шрифт с русскими и латинскими буквами, знаками препинания, цифрами, чтобы всё выглядело однообразно.
Если бы не это, можно было бы уже сейчас подобрать базовый набор картинок и раздавать прогу всем желающим.
Скрин всех четырёх окон: изображений, субтитров, инструкций/состояний, ввода/вывода. Пример работы - вторая серия третьего сезона, готовая больше года. Советую обратить внимание на границы тф - точек левых цветов на них заметно меньше, чем при работе предыдущей версии.
TransViewer 2.0
Arvegtor
| четверг, 09 августа 2012