Written by Evgeniy Romin.
Стаття підготовлена спеціально для конференції Innotech - http://conference.msa.pstu.ru/
Автори: Бояршинов Олександр і Ромин Євген.
На сучасному етапі розвитку 3D редакторів і засобів моделювання стало досить легко створювати деталізовані 3D моделі для використання в різних додатках працюють з тривимірною графікою. Особливо активно високо деталізовані моделі використовуються у виробництві спецефектів для кінофільмів або в іграх. Однак при спробі використовувати ці моделі в інтерактивних додатках для мобільних пристроїв, симуляторах і ГІС виникають проблеми. Основні перешкоди полягають в необхідності виділення великого обсягу обчислювальних ресурсів, складності обробки об'єктів. Також наявність великого числа полігонів в сцені або в моделі обмежує можливість запуску програми на пристроях з низькою обчислювальною потужністю. Таким чином існує проблема вимагає оптимізації вже готових тривимірних деталізованих моделей для використання в додатках на пристроях з низькою обчислювальною потужністю.
Метою цієї статті є огляд декількох методів оптимізації високо деталізованих 3D моделей і застосування їх на практиці, в рамках роботи над студентським проектом WitchCraft.
Алгоритми видалення невидимих граней і ліній. Виділяють три класи таких алгоритмів [1]:
- Алгоритми, що працюють в просторі екрану. Вони засновані на розрахунку попадання граней в зону видимості спостерігача з певної точки.
- Алгоритми, що працюють безпосередньо в просторі об'єктів (сцени). Найчастіше в моделях існують межі, які розташовуються усередині об'єкта, або на зворотному боці прихованої від спостерігача. Для обчислення видимих поверхонь використовується порівняння та розрахунок розташування всіх об'єктів знаходяться в сцені і видалення всіх невидимих граней.
- Алгоритми, зі списком пріоритетів. Є гібридною модифікацією перших двох і працюють використовуючи обидва алгоритму поперемінно.
Мал. 1 Приклад використання алгоритмів видалення граней невидимих для користувача в звичайному режимі
До переваг алгоритмів видалення невидимих граней і ліній можна віднести високий рівень оптимізації і відсутність втрат якості видимого для спостерігача. Недоліками ж є низька швидкість обробки, високе споживання обчислювальних ресурсів і відсутність можливості обробки в реальному часі на більшості пристроїв.
Алгоритми редукції полігонів (Polygon Reduction). Редукція - процес спрощення 3D моделі шляхом зменшення кількості полігонів. Принцип роботи методу полягає в заміщенні групи полігонів одним, найбільш близьким до вихідної групи по розташуванню вершин. Більшість 3D редакторів мають можливість задавати інтенсивність редукції, що дозволяє вибрати потрібне співвідношення між рівнем опрацювання моделі і економією обчислювальної потужності.
Мал. 2 Метод редукції полігонів на прикладі персонажа і вибір оптимальної конфігурації.
До переваг відносять легкість використання і високу швидкість обробки. Однак недоліками є спотворення моделі при сильному або неправильному застосуванні методу і необхідність перемальовування текстур, якщо на первинну модель вже була накладена текстура.
Алгоритми ручного створення нізкополігональних моделей. Нізкополігональних (low-poly) моделі використовуються коли не потрібна висока деталізація, якщо прийнятну якість зображення можна отримати, за допомогою опрацьованих текстур, карт нормалей і інших візуальних ефектів. Найчастіше такі моделі використовуються для економії обчислювальних ресурсів в 3D додатках, де є необхідність відображення моделей і анімації в режимі реального часу [2].
При створенні нізкополігональних моделей слід прагне за мінімально можливу кількість вершин і ребер створити модель об'єкта достатньо схожу на реальний прототип. Існує кілька способів створення візуального представлення тривимірного об'єкту з мінімальними втратами якості [3]:
Завдання оптимальної кількості полігонів (достатня для збереження форми об'єкта, але не зайве). Слід враховувати область застосування моделі та доступні ресурси обчислювальної техніки.
Мал. 3 Приклади завдання примітиву різними кількостями полігонів.
- Злиття сусідніх близьких вершин. У ряді випадків модель може мати кілька вершин зосереджених на малій відстані один від одного або знаходяться на одній прямій. Найоптимальнішим рішенням в даному випадку буде об'єднання всіх вершин в одну, що зменшить кількість не функціональних полігонів.
"Закруглення" шляхом зниження кількості граней на сторонах циліндричних об'єктів. Деякі сцени з використанням таких об'єктів не мають на увазі необхідність високої деталізації самої поверхні циліндра. Саме в таких випадках слід застосовувати скругление так як візуальне сприйняття циліндра слабо залежить від його граней.
Мал. 4 Приклади використання методів «Злиття вершин» і «Заокруглення».
- Використання трикутних полігонів для моделювання сфер. Незважаючи на більш складне розташування полігонів в порівнянні зі сферою з чотирикутних полігонів, сфера з трикутників дозволяє обійтися меншим числом полігонів при меншій мірі апроксимації.
Мал. 5 Демонстрація відмінності сфер з трикутних і чотирикутних полігонів
До переваг ручного створення нізкополігональних моделей відносять дуже висока фінальне якість і мінімальна кількість полігонів. Ключовими недоліками є висока трудомісткість і дуже низька швидкість моделювання.
Мал. 6 Порівняння високополігональні моделі гуртки (246 граней) і нізкополігональних (50 граней).
Для того щоб оцінити ефективність оптимізації високо деталізованих 3D моделей була створена сцена з різних типів об'єктів, до яких були застосовані описані вище методи і алгоритми.
Рис.7 Оптимізована сцена для запуску на пристроях з низькою кількістю обчислювальних ресурсів.
Наприклад, до будівель був застосований алгоритм видалення невидимих граней і ліній, для оптимізації персонажів використовувався алгоритм редукції полігонів, а предмети інтер'єру були заново змодельовані з використанням технік створення нізкополігональних об'єктів. Таким чином вдалося добитися значного зменшення кількості полігонів в сцені, що наочно показано в таблиці №1.
Тести і оцінки продуктивності проводилися на базі Unity 3D - мультиплатформенні інструменті для розробки двох-і тривимірних додатків. В кінцевому підсумку скорочення числа полігонів з 21292 іаввишки до 6050 дало значний приріст продуктивності і зменшенні навантаження на центральний і графічний процесор пристрою.
Мал. 8 Графік навантаження на центральний і графічний процесор до і після оптимізації
висновок
В результаті використання методів оптимізації описаних в статті високополігональні сцена була перетворена в низько деталізовану. Кінцевим результатом маніпуляцій стало зменшення навантаження центрального і графічного процесора на 28% і 42% відповідно. Це дало можливість запуску сцени на мобільному пристрої з обмеженими обчислювальними ресурсами, що свідчить про ефективність даних методів і перспективи розвитку напрямку в цілому.
Список літератури
- «Алгоритми видалення невидимих ліній і поверхонь» http://www.astro.tsu.ru/KGaG/text/5_6.html
- «Low-poly models / Поняття низько-полігональних моделей» http://www.gamedev.ru/art/terms/lowpoly
- «Low Poly Tricks, Tips & Techniques» http://www.loonygames.com/content/1.6/totb/index5.php