Введение
Автофазовка - автоматическая прорисовка промежуточных кадров. С точки зрения программирования, это алгоритм. В мире существуют всего три программы для создания анимации с автофазовкой: Cacani, TweenMaker, OpenToonz. Их очень мало из-за сложности реализации данного алгоритма [2]. Я пытался найти информацию про принцип работы автофазовки с точки зрения программирования, но не нашёл, потому что этой информации мало в интернете.
Проблема: в мире существует мало программ для создания анимации с автофазовкой из-за сложности данного алгоритма.
Актуальность: в мире популярна 2D анимация, но не популярна автофазовка. Напрасно, ведь она способна сильно упростить труд аниматора.
Цель работы: разработка программы для создания анимации и популяризация знаний о принципе работы данного алгоритма.
Задачи:
Выбрать язык программирования.
Выбрать и изучить библиотеки.
Написать программу.
Выложить её на GitHub.
В качестве источников литературы использовались документация по Win32Api с официального сайта Microsoft [3] и ответы на вопросы в Stackoverflow. За год до появления у меня идеи о создании такого проекта я изучал основы С++ по видеоурокам [1]. К концу выполнения работы я изучил основы создания приложений для Windows.
Основная часть
Автофазовка
Как использовать автофазовку вы можете узнать в видео [2]. Я кратко изложу основы и принципы работы автофазовки.
Каждая кривая линия состоит из прямых линий (рис. 1). У каждой прямой линии есть информация о её координатах, цвете и толщине. Вычисление средних линий является частью автофазовки. Длина средней линии равняется среднему значению длин двух линий. Длина - целое число (integer). Далее расположена картинка, а после неё - объяснение изображённого на ней.
Рис. 1. Автофазовка
На схеме изображены две линии разной длины. Если во время рисования линии курсор мыши перемещать быстро, то в линии будет мало точек. Если рисовать линию медленно, то точек будет много. В качестве примера показаны две линии: "А" и "В". Линия "А" длиннее, но точек у неё меньше. Такое вполне возможно.
Через точки линий "А" и "В" проведены красные линии. Через центры красных линий проведена средняя линия.
Для вычисления средней линии нужно вычислять средние значения координат точек двух линий. У линии "A" меньше точек, поэтому каждая её точка может несколько раз использоваться для вычисления точек средней линии. В качестве примера у линии "А" из центра исходит два отрезка, которые заканчиваются в разных точках линии "В". У линии "B" больше точек, поэтому не все они могут использоваться для вычисления средней линии.
Программа для создания анимации с автофазовкой «2DsMax»
Для создания своей программы я выбрал язык С++, потому что на нём можно создавать программы, используя классы, как типы значений, а не ссылок. Я выбрал библиотеку Win32Api, потому что она является основой в разработке оконных приложений для Windows. Я назвал свою программу "2DsMax".
Если провести по экрану курсором мыши с зажатой левой клавишей, то нарисуется линия (рис. 2). Можно использовать графический планшет, потому что программа учитывает силу нажатия пера.
Рис. 2. Линии
Если навести курсор мыши на линии и нажать на правую клавишу, то откроется меню настройки (рис. 3) линии, в котором можно поменять толщину или цвет линии.
Рис. 3. Меню настройки.
Нажав на линию средней клавишей мыши, можно выделить её. Выбрав режим редактирования, можно перемещать, поворачивать или масштабировать линии, или отдельные их части. Выбранная линия всегда жёлтая.
Рис. 4. Квадрат
Рис. 5. Выделенный квадрат
Рис. 6. Выбор режима редактирования
Рис. 7. Перемещение квадрата
Программа может работать с файлами "2DsMax" для сохранения и загрузки анимации. В файлах с расширением "2DsMax" хранятся данные о каждом кадре, линии и её точках. Пожалуйста, посетите мой репозиторий. Только там вы сможете подробно ознакомиться с 2DsMax.
Источник вдохновения
До того, как у меня появилась идея о создании такого проекта, я смотрел обзоры разных программ для создания анимации. Таким образом, мне случайно попалось видео про автофазовку [2], и я решил создать проект на эту тему. Закончив первую версию своей программы, я решил сравнить её с аналогами. Их три: Cacani, TweenMaker, OpenToonz. Давайте посмотрим на то, как они следуют философии отрытого исходного кода.
1. Cacani: платная.
2. TweenMaker: бесплатная, но закрытая.
3. OpenToonz: бесплатная и открытая.
Из этого следует, что лучшим аналогом является OpenToonz, потому что у него открытый исходный код.
Исследование
Создан онлайн опрос, в котором приняло участие 45 человек.
Рис. 8. Результаты опроса
3. Заключение
Выводы:
1. Мало людей знают, что такое автофазовка.
2. Мало программ с автофазовкой существует.
Результаты:
1. Написана программа для создания анимации с автофазовкой.
2. Выложена на GitHub.
В будущем я планирую переписать свою программу, используя QT6 на Python и С++, чтобы моя программа была мультиплатформена, и ее можно было запускать на разных операционных системах и платформах.
4. Список используемых источников
1. Основы C++. Программирование для начинающих
2. https://youtu.be/c5rLERwDydU?si=VlDbKiwo2ND2YeyX
3. Справочник по программированию для API Win32 - Win32 apps | Microsoft Learn