ПРОЦЕДУРНА ГЕНЕРАЦІЯ ВОКСЕЛЬНИХ ЛАНДШАФТІВ НА ОСНОВІ ІЗОПОВЕРХОНЬ ІЗ ЗАСТОСУВАННЯМ БАГАТОПОТОКОВОСТІ
Анотація
Швидкий розвиток технологій вимагає вдосконалювати підходи до розробки програмного забезпечення. При створенні реального середовища у симуляторах і тренажерах важливою частиною є моделювання рельєфу місцевості або ландшафту. Технологія «unreal» дозволяє створювати власні рушії для розв’язання прикладних завдань, тому дослідження останніх розробок, а саме Unreal Engine 5, для генерації тривимірних моделей ландшафту в режимі реального часу є актуальною задачею.
В статті наводиться аналіз існуючих проблем при моделюванні рельєфів місцевості в режимі реального часу. Ландшафт будується у вигляді воксельної моделі, яка формується на основі значень ізоповерхні. Значення ізоповерхні визначаються скалярним полем. Для візуалізації моделі застосовується кубічне відображення. Для позбавлення від надлишку інформації пропонується скористатися жадібним алгоритмом, який призводить до генерації полігональної сітки зі зменшеною кількістю геометрії. Перехід від воксельного ландшафту до полігонів здійснюється двома шляхами на основі алгоритмів поверхневих сіток та маршируючих кубів. Наводяться псевдокоди алгоритмів. Для позбавлення від затримки головного потоку пропонується розділити завдання по візуалізації за різними потоками. Визначено задачі, які можна виконувати на головному і на додатковому потоках. Воксельний ландшафт будується на основі шматків поверхні, що зменшує навантаженість на відеокарту.
Розроблено програмне забезпечення та проведено його тестування з однаковими параметрами налаштування для різних алгоритмів. Наведено результати тестування та показано зменшення затримки головного потоку при застосуванні принципу багатопотоковості. Для процедурної генерації ландшафту застосована відкрита бібліотека FastNoiseLite, для створення зручного інтерфейсу налаштувань використовується система графічного скриптингу Visual Scripting Blueprint, для розробки плагіну C++ та Visual Studio 2019.
Ключові слова: тривимірна модель, воксельний рушій, технології Unreal Engine, багатопотоковість, алгоритм маршируючих кубів, алгоритм поверхневих сіток.