Введение 4
1. Постановка задачи 6
2. Обзор 7
2.1. Обзор существующих решений в области систем частиц . 8
2.1.1. Система частиц в Unity 8
2.1.2. Система частиц в Unreal Engine 4 9
2.1.3. Система частиц в Source Engine 2013 11
2.1.4. Система частиц в Amazon Lumberyard 12
2.1.5. Система частиц в ChilliSource 13
2.2. Обзор системы частиц в движке Saber3D 14
2.3. Выводы 15
3. Рефакторинг 17
3.1. Разделение пользовательского интерфейса 17
3.2. Нарушения закона Деметры 18
3.3. Удаление старой реализации 18
4. Реализация новой функциональности 19
4.1. Неравномерное изменение масштаба частицы 19
4.2. Изменение ориентации по вектору направления 20
4.3. Отслеживание текущей статистики частиц 22
4.4. Переопределение свойств материала частиц 23
4.5. Полезные функции из существующих решений 25
5. Апробация 27
Заключение 28
Список литературы 29
Системы частиц уже десятки лет являются важной частью видеоигр
и компьютерной графики в целом. Первая публикация на тему систем
частиц была написана после завершения работы над визуальными эффектами для кинофильма «Star Trek II» [9]. В ней Уильям Ривз описал
основные операции движения и основные данные, представляющие частицу. Системы частиц используют множество частиц, чтобы моделировать объекты или явления с нечеткими границами. В качестве частиц
могут использоваться точки, треугольники, текстуры и трёхмерные модели. В течение определенного периода времени частицы порождаются, некоторые их параметры изменяются согласно заданному сценарию,
после чего частицы удаляются из системы. При помощи частиц становится возможным, например, моделировать огонь, дым, взрывы, воду,
вращающиеся галактики, волосы, облака и другие явления. Системы,
использующие в качестве частиц трехмерные модели, называются геометрическими.
Уже около 20 лет компания Saber Interactive ведет работу над собственным игровым движком Saber3D [14], [10]. Впервые он использовался в игре Will Rock (2003 год), и с тех пор постоянно обновляется и
развивается для использования в современных продуктах. В процессе
работы над обновлением различных компонентов движка была создана новая система геометрических частиц. Создание и настройка систем
геометрических частиц движка Saber3D выполняется в редакторе игровых уровней — программе, позволяющей, например, создавать игровые
карты, размещать на них модели и настраивать освещение. Арт-отделу
необходим максимальный контроль над системой, но в данный момент
в редакторе нет возможности, например, изменять размер частиц вдоль
осей неравномерно, нельзя сделать так, чтобы частицы во время полета
были ориентированы в соответствии с вектором направления. В редакторе уровней также отсутствуют инструменты, позволяющие переопределять свойства материала частиц. Кроме того, в редакторе не хватает
функциональности, помогающей производить отладку частиц. Итак, на
4данный момент система геометрических частиц движка Saber3D обладает недостаточной функциональностью, из-за чего становится невозможным использовать ее для создания сложных игровых эффектов.
Таким образом, требуется расширить текущую функциональность
системы геометрических частиц движка Saber3D. Для этого необходимо решить ряд задач, связанных с настройкой свойств материала,
ориентации частицы в пространстве и ее размеров, а также с выводом
отладочной информации. Наличие в редакторе уровней перечисленной
функциональности позволит арт-отделу полноценно использовать систему частиц при создании сложных игровых эффектов. Стоит также
отметить, что помимо программной реализации новой функциональности необходимо добавить элементы взаимодействия пользователя с
новой функциональностью в интерфейс управления системой частиц в
редакторе игровых уровней.
В ходе данной работы были получены следующие результаты.
• Изучена реализация системы геометрических частиц в движке
Saber3D. В процессе исследования выявлены участки кода, нуждающиеся в рефакторинге.
• Проведен рефакторинг участков кода движка Saber3D, ответственных за покадровую обработку частиц, что повысило сопровождаемость текущей системы геометрических частиц движка Saber3D.
• Реализована следующая функциональность для системы геометрических частиц движка Saber3D:
– неравномерное изменение масштаба частиц по трем осям;
– изменение ориентации модели частицы во время полета в соответствии с текущим вектором направления;
– окно, показывающее текущую статистику частиц на сцене;
– переопределение нескольких SFX свойств материала частиц в
редакторе уровней при помощи текстового поля или сплайна;
– реализована дополнительная функциональность, взятая из
существующих аналогов, по добавлению отладочных осей с
заданием их масштаба для отслеживания ориентации частиц.
• Разработанный код прошел ревью инженерами-программистами
графики компании ООО “Сабер Интерактив СГС” и был интегрирован в основную ветвь исходного кода движка Saber3D. Добавленная функциональность успешно прошла апробацию программистами и арт-отделом компании.