Brainy Studio - Ние създаваме игри! Методи за оптимизиране на високополигонални 3D модели

Написано от Евгений Ромин.

Статията е подготвена специално за конференцията Innotech - http://conference.msa.pstu.ru/

Автори: Александър Бояршинов и Евгений Ромин.

Целта на тази статия е да прегледаняколко метода за оптимизиране на много детайлни 3D модели и да ги приложи на практика, като част от работата по студентски проект на WitchCraft.

Алгоритми за премахване на невидими ръбове и линии. Има три класа такива алгоритми [1]:

  • Алгоритми, които работят в екранното пространство. Те се основават на изчисляване на попадането на лицата в зрителното поле на наблюдателя от определена точка.
  • Алгоритми, които работят директно в пространството на обектите (сцена). Често в моделите има лица, които са разположени вътре в обекта или на обратната страна, скрити от наблюдателя. За изчисляване на видимите повърхности се използва сравнението и изчисляването на местоположението на всички обекти в сцената и премахването на всички невидими лица.
  • Алгоритми със списък от приоритети. Те са хибридна модификация на първите два и работят с последователно използване на двата алгоритъма.

brainy

Фиг. 1 Пример за използване на алгоритми за премахване на лица, невидими за потребителя в нормален режим

Предимствата на алгоритмите за премахване на невидими ръбове и линии включват високо ниво на оптимизация и липса на видими за наблюдателя загуби на качество. Недостатъците са ниска скорост на обработка, висока консумация на изчислителни ресурси и липса на обработка в реално време на повечето устройства.

игри

Фиг. 2 Методът за намаляване на полигона на примера на герой и избор на оптимална конфигурация.

Към добродетелитевключват лекота на използване и висока скорост на обработка. Недостатъците обаче са изкривяване на модела, ако методът се прилага силно или неправилно, и необходимостта от преначертаване на текстури, ако текстура вече е приложена към основния модел.

Алгоритми за ръчно създаване на нискополигонални модели. Нискополигоналните модели се използват, когато не се изисква висока детайлност, ако може да се получи приемливо качество на изображението с помощта на добре развити текстури, нормални карти и други визуални ефекти. Най-често такива модели се използват за спестяване на изчислителни ресурси в 3D приложения, където има нужда от показване на модели и анимации в реално време [2].

Когато създавате нискополигонални модели, трябва да се стремите към минималния възможен брой върхове и ръбове, за да създадете обектен модел, който е достатъчно подобен на реален прототип. Има няколко начина за създаване на визуално представяне на триизмерен обект с минимална загуба на качество [3]:

Задаване на оптимален брой полигони (достатъчни за запазване на формата на обекта, но не прекомерни). Трябва да се вземат предвид обхватът на модела и наличните изчислителни ресурси.

методи

Фиг. 3 Примери за дефиниране на примитив с различен брой многоъгълници.

„Закръгляване“ чрез намаляване на броя на лицата отстрани на цилиндрични обекти. Някои сцени, използващи такива обекти, не предполагат необходимостта от висока детайлност на повърхността на самия цилиндър. В такива случаи трябва да се използва закръгляване, тъй като визуалното възприятие на цилиндъра е слабо зависимо от неговите лица.

игри

Фиг. 4 Примери за използване на методите "Сливане на върхове" и "Закръгляване".

  • Използване на триъгълни многоъгълници замоделиране на сфери. Въпреки по-сложното подреждане на многоъгълници в сравнение със сфера от четириъгълни многоъгълници, сфера от триъгълници ви позволява да се справите с по-малко многоъгълници при по-ниска степен на приближение.
  • методи

    Фиг. 5 Демонстрация на разликата между сфери от триъгълни и четириъгълни многоъгълници

    Предимствата на ръчното създаване на нискополигонални модели включват много високо крайно качество и минимален брой полигони. Основните недостатъци са високата интензивност на труда и много ниската скорост на симулация.

    brainy

    Фиг. 6 Сравнение на високополигонален модел чаша (246 лица) и нискополигонален модел (50 лица).

    За да се оцени ефективността на оптимизиране на високодетайлни 3D модели, беше създадена сцена от различни типове обекти, към които бяха приложени описаните по-горе методи и алгоритми.

    brainy

    Фиг.7 Оптимизирана сцена за работа на устройства с ниски изчислителни ресурси.

    Например, алгоритъм за премахване на невидими ръбове и линии беше приложен към сгради, алгоритъм за редуциране на полигони беше използван за оптимизиране на героите, а интериорните елементи бяха премоделирани с помощта на техники за създаване на нискополигонални обекти. По този начин беше възможно да се постигне значително намаляване на броя на полигоните в сцената, което е ясно показано в таблица 1.

    игри

    Фиг. 8 Графика на CPU и GPU натоварване преди и след оптимизация

    Заключение

    В резултат на използването на методите за оптимизация, описани в статията, високополигоналната сцена беше преобразувана в сцена с ниски детайли. Крайният резултат от манипулациите е намаляване на натоварването на централния и графичния процесор с 28% и 42%съответно. Това направи възможно стартирането на сцената на мобилно устройство с ограничени изчислителни ресурси, което показва ефективността на тези методи и перспективите за развитие на посоката като цяло.