Brainy Studio - Ние създаваме игри! Методи за оптимизиране на високополигонални 3D модели
Написано от Евгений Ромин.
Статията е подготвена специално за конференцията Innotech - http://conference.msa.pstu.ru/
Автори: Александър Бояршинов и Евгений Ромин.
Целта на тази статия е да прегледаняколко метода за оптимизиране на много детайлни 3D модели и да ги приложи на практика, като част от работата по студентски проект на WitchCraft.
Алгоритми за премахване на невидими ръбове и линии. Има три класа такива алгоритми [1]:
- Алгоритми, които работят в екранното пространство. Те се основават на изчисляване на попадането на лицата в зрителното поле на наблюдателя от определена точка.
- Алгоритми, които работят директно в пространството на обектите (сцена). Често в моделите има лица, които са разположени вътре в обекта или на обратната страна, скрити от наблюдателя. За изчисляване на видимите повърхности се използва сравнението и изчисляването на местоположението на всички обекти в сцената и премахването на всички невидими лица.
- Алгоритми със списък от приоритети. Те са хибридна модификация на първите два и работят с последователно използване на двата алгоритъма.
Фиг. 1 Пример за използване на алгоритми за премахване на лица, невидими за потребителя в нормален режим
Предимствата на алгоритмите за премахване на невидими ръбове и линии включват високо ниво на оптимизация и липса на видими за наблюдателя загуби на качество. Недостатъците са ниска скорост на обработка, висока консумация на изчислителни ресурси и липса на обработка в реално време на повечето устройства.
Фиг. 2 Методът за намаляване на полигона на примера на герой и избор на оптимална конфигурация.
Към добродетелитевключват лекота на използване и висока скорост на обработка. Недостатъците обаче са изкривяване на модела, ако методът се прилага силно или неправилно, и необходимостта от преначертаване на текстури, ако текстура вече е приложена към основния модел.
Алгоритми за ръчно създаване на нискополигонални модели. Нискополигоналните модели се използват, когато не се изисква висока детайлност, ако може да се получи приемливо качество на изображението с помощта на добре развити текстури, нормални карти и други визуални ефекти. Най-често такива модели се използват за спестяване на изчислителни ресурси в 3D приложения, където има нужда от показване на модели и анимации в реално време [2].
Когато създавате нискополигонални модели, трябва да се стремите към минималния възможен брой върхове и ръбове, за да създадете обектен модел, който е достатъчно подобен на реален прототип. Има няколко начина за създаване на визуално представяне на триизмерен обект с минимална загуба на качество [3]:
Задаване на оптимален брой полигони (достатъчни за запазване на формата на обекта, но не прекомерни). Трябва да се вземат предвид обхватът на модела и наличните изчислителни ресурси.
Фиг. 3 Примери за дефиниране на примитив с различен брой многоъгълници.
„Закръгляване“ чрез намаляване на броя на лицата отстрани на цилиндрични обекти. Някои сцени, използващи такива обекти, не предполагат необходимостта от висока детайлност на повърхността на самия цилиндър. В такива случаи трябва да се използва закръгляване, тъй като визуалното възприятие на цилиндъра е слабо зависимо от неговите лица.
Фиг. 4 Примери за използване на методите "Сливане на върхове" и "Закръгляване".
Фиг. 5 Демонстрация на разликата между сфери от триъгълни и четириъгълни многоъгълници
Предимствата на ръчното създаване на нискополигонални модели включват много високо крайно качество и минимален брой полигони. Основните недостатъци са високата интензивност на труда и много ниската скорост на симулация.
Фиг. 6 Сравнение на високополигонален модел чаша (246 лица) и нискополигонален модел (50 лица).
За да се оцени ефективността на оптимизиране на високодетайлни 3D модели, беше създадена сцена от различни типове обекти, към които бяха приложени описаните по-горе методи и алгоритми.
Фиг.7 Оптимизирана сцена за работа на устройства с ниски изчислителни ресурси.
Например, алгоритъм за премахване на невидими ръбове и линии беше приложен към сгради, алгоритъм за редуциране на полигони беше използван за оптимизиране на героите, а интериорните елементи бяха премоделирани с помощта на техники за създаване на нискополигонални обекти. По този начин беше възможно да се постигне значително намаляване на броя на полигоните в сцената, което е ясно показано в таблица 1.
Фиг. 8 Графика на CPU и GPU натоварване преди и след оптимизация
Заключение
В резултат на използването на методите за оптимизация, описани в статията, високополигоналната сцена беше преобразувана в сцена с ниски детайли. Крайният резултат от манипулациите е намаляване на натоварването на централния и графичния процесор с 28% и 42%съответно. Това направи възможно стартирането на сцената на мобилно устройство с ограничени изчислителни ресурси, което показва ефективността на тези методи и перспективите за развитие на посоката като цяло.