Создание 3D движка - это процесс разработки программного обеспечения, которое позволяет создавать, отображать и управлять трехмерными моделями в интерактивном режиме. Такие движки используются в различных областях, включая компьютерные игры, архитектурное проектирование, визуализацию данных и многие другие.
Разработка 3D движка требует глубокого понимания математики, физики и компьютерной графики. Она также требует знания программирования на различных языках, таких как С++, Java, Python и других. Создание 3D движка начинается с выбора подходящей архитектуры и алгоритмов, которые будут использоваться для обработки трехмерных данных. Далее необходимо разработать систему отображения, которая позволит выводить модели на экран. Важным этапом является создание системы управления камерой, которая будет позволять пользователю перемещаться внутри трехмерной среды.
В процессе разработки 3D движка также необходимо учитывать производительность и оптимизацию. Ведь чем более сложные и детализированные модели будут использоваться, тем больше ресурсов понадобится для их отображения. Поэтому оптимизация производительности является важным фактором при разработке 3D движков.
Целью работы является создание игрового движка на основе языка С++ [1]. Движок должен предоставлять возможность создания игрового приложения.
Задачи:
1) разобрать материалы по настройке IDE [2],
2) изучить алгоритмы для реализации 3D графики [3],
3) проанализировать аналоги,
4) разобрать материалы по работе с физикой и анимацией,
5) разработать игровой движок [4],
6) создать игру на основе игрового движка,
7) протестировать проект.
Несколько преимуществ собственного движка:
□ создание собственного игрового движка позволяет разработчикам создавать уникальные игры, которые могут отличаться от других игр на рынке;
□ игровой движок, созданный под конкретную игру, может быть более гибким и лучше соответствовать потребностям игры, чем универсальный игровой движок;
□ разработка движка позволяет разработчикам оптимизировать его для конкретной игры и платформы. Это может привести к лучшей производительности и меньшему количеству ошибок;
□ разработчики имеют полный контроль над всеми аспектами игры, включая движок, что может быть важным для реализации определенных функций или достижения определенного визуального стиля.
Разработка 3D движка для игр является актуальной и важной задачей в современной компьютерной индустрии. С ростом популярности видеоигр и их использования как средства развлечения и культурного обмена, требуется все более совершенный и мощный 3D движок, который бы обеспечивал высокую скорость работы, реалистичность отображения и поддержку различных платформ.
Исследования, направленные на создание 3D движка для игр, могут быть использованы для создания более качественных и интерактивных игровых миров, улучшения графических возможностей и увеличения производительности игровых приложений.
ВВЕДЕНИЕ 4
1. Инструменты разработки 7
1.1. Microsoft Visual Studio 7
1.2. C++ 7
1.3. SFML 8
1.4. CMake 9
2. Проектирование 10
3. Разработка проекта 12
3.1. Функционал проекта 12
3.2. Реализация 3D графики 13
3.2.1. Проецирование точек на плоскость экрана 13
3.2.2. Матрица проекций 16
3.2.3. Матрица экранного пространства, матрица масштабирования, перемещения, поворота и мировая система координат 17
3.3. Камера и клиппинг 20
3.4. Реализации физики 27
3.4.1. Алгоритм GJK 28
3.4.2. Алгоритм EPA 31
3.5. Реализация анимации 32
3.5.1. Линейная анимация 32
3.5.2. Кривые Безье и bounce анимация 33
4. Разработка игры 36
4.1. Структура 36
4.2. Реализация игрового мира 37
4.3. Управление персонажем 38
4.4. Реализация основной игровой механики 39
5. Тестирование 41
ЗАКЛЮЧЕНИЕ 42
СПИСОК ЛИТЕРАТУРЫ 47
ПРИЛОЖЕНИЕ 48
1) Ленгьель, Э. Mathematics for 3D Game Programming and Computer Graphics / Эрик Ленгьель. – Бостон: 2012. – URL: https://canvas.projekti.info/ebooks/Mathematics%20for%203D%20Game%20Prog ramming%20and%20Computer%20Graphics,%20Third%20Edition.pdf (дата обращения 16.03.2023). - ISBN: 978-1-4354-5886-4. – Текст: электронный.
2) Данн, Ф. 3D Math Primer for Graphics and Game Development / Ф Данн, Я. Парбери – Лондон: 2011 – URL: https://gamemath.com/book/intro.html (дата обращения 16.03.2023). - ISBN: 978-1-4398-6981-9. -Текст: электронный.
3) Ленгьель, Э. Part 2: Foundations of Game Engine Development / Эрик Ленгьель. – Бостон, 2019. - ISBN: 978-0-9858117-4-7– Текст: непосредственный.
4) Ленгьель, Э. Part 1: Foundations of Game Engine Development / Эрик Ленгьель. – Бостон, 2016. - ISBN: 978-0-9858117-5-4– Текст: непосредственный.
5) Прата, С. Язык программирования C++. Лекции и упражнения / С. Прата. – Кентфилд, 2012. - ISBN: 978-5-8459-1950-2 – Текст: непосредственный.