Вексель представляет собой значение на координатной сетке в трехмерном пространстве в ограниченном объеме. Традиционно понятие вокселя связано с его визуальным отображением - значение на сетке представляется кубом, после чего при моделировании могут отражаться его прочие свойства (они могут задаваться цветом или выражаться в поведении этого вокселя при взаимодействии). Работа с воксельной сеткой обеспечивает универсальную модель для представления и обработки трехмерных данных в реальном времени. Воксели могут применяться при необходимости отображения некоторых свойств в пространстве и проведения некоторых вычислений, запросов и операций с ними. Практическими примерами применения воксельных структур являются моделирование ландшафта, свойств материалов, физические симуляции, визуализация и анализ результатов компьютерной томографии.
Данная работа будет рассматривать создание физической системы и расширение функциональных возможностей программного решения, предоставляющего собой мультимедиа 3D движок с воксельной интеграцией. Исходя из этой цели были представлены соответствующие задачи, которые будут решены в работе:
• проанализировать исходное состояние системы на предмет структурных недостатков на пути к реализации поставленной цели;
• представить решение обнаруженных проблем;
• спроектировать и реализовать в специфике движка модель физического взаимодействия;
• расширить возможности отладки системы при разработке;
• расширить функциональные возможности системы характерными для 3D движка элементами.
В рамках проекта была реализована физическая система, предоставляющая возможности обнаружения столкновений между целевыми видами объектов, включая произвольные сущности, оперирующие определениями представленных в движке коллайдеров. Решение позволяет обрабатывать запросы на пересечение между всеми интегрированными формами коллайдеров: ландшафтом и сущностями воксельной модели, а также произвольными пользовательскими объектами, предоставляет логику автоматического обнаружения и разрешения событий столкновений.
Система поддерживает базовую симуляцию твердых тел, в том числе со специализированными расчетами параметров для воксельных сущностей. Созданное решение интегрировано с иерархией объектов сцены с целью улучшить и упростить опыт взаимодействия с механизмами движка посредством единообразного представления его систем через ECS.
При разработке был выявлен и устранен ряд проблем и недостатков, учтены особенности взаимодействия с графическим API и реализованы структурные решения по оптимизации как конвейера отрисовки воксельных моделей, так и прочих ключевых процессов движка.
В рамках дополнительного расширения функциональных возможностей движка были реализованы системы базового графического пользовательского интерфейса, симуляции динамических частиц. Были созданы и улучшены системы по гибкому взаимодействию с движком, его тестированию и отладке. На всех уровнях задействован специфический инструментарий стека (атрибуты, перечисления), расширенный по необходимости собственными решениями (такими как структура очередей в многопоточной синхронизации, шаблонные списки).
Как следствие, поставленные задачи были выполнены:
• в ходе первичного анализа были выявлены структурные недостатки, препятствующие реализации решения в рамках ожидаемого уровня производительности для интерактивного 3D движка, работающего в реальном времени;
• обнаруженные проблемы были решены посредством внесения изменений в структуру и взаимодействие в рамках затронутых процессов;
• была реализована модель физического взаимодействия с описанной ранее спецификой;
• возможности отладки и тестирования системы при разработке расширены выделенными инструментами;
• функциональные возможности 3D движка были расширены комплексом систем.
Следовательно цель работы по созданию физической модели в структуре движка и дальнейшем расширении его функциональности можно считать достигнутой.
1. Ericson C. Real-Time Collision Detection / C. Ericson - USA : Elsevier, 2005 - P. 40525.
2. Millington I. Game Physics Engine Development / I. Millington - USA : Elsevier, 2007 - P.143-370.
3. Huynh J. Separating Axis Theorem for Oriented Bounding Boxes / J. Huynh - [Б. м.], 2009. - URL: https://jkh.me/files/tutorials/Separating%20Axis%20Theorem%20for%20Oriented %20Bounding%20Boxes.pdf (дата обращения: 19.04.2025).
4. Gilbert E. A fast procedure for computing the distance between complex objects in threedimensional space / E. Gilbert, D. Johnson, S. Keerthi - [IEEE Journal on Robotics and Automation], 1988. - URL: https://ieeexplore.ieee.org/document/2083?arnumber=2083 - P.193203.
5. Amanatides J. A fast voxel traversal algorithm for ray tracing / J. Amanatides, A. Woo - Eurographics, 1987 - URL: http://www.cs.yorku.ca/~amana/research/grid.pdf - P.3-10 (дата обращения 23.04.2025).
6. Harkonen T. Advantages and implementation of entity-component-systems / T. Harkonen - [Б. м.], 2019 - URL: https://trepo.tuni.fi/bitstream/handle/123456789/27593/H% C3%A4rk%C3%B6nen.pdf - P.1-24 (дата обращения 25.04.2025).