3D-игры, которые хорошо работают на большом количестве устройств, начинаются с 3D-графики, разработанной с учетом максимального использования преимуществ графических процессоров. В этом руководстве описаны оптимизации и лучшие практики для 3D-ресурсов на мобильных устройствах, которые помогут повысить производительность вашей игры и минимизировать энергопотребление.
Части этой статьи основаны на работах, предоставленных Arm Limited и защищенных авторскими правами.
Определение геометрии
Геометрия, или полигональная сетка, представляет собой набор вершин, ребер и граней, составляющих форму трехмерного объекта. Это может быть машина, оружие, окружающая среда, персонаж или любой другой визуальный объект в игре.
Рисунок 1. Вершины, ребра и треугольники куба.
Геометрия состоит из следующих частей:
Вершины: существительное во множественном числе для вершины. Эти точки определяют структуру объекта в трехмерном пространстве.
Ребра: две вершины, соединенные прямой линией.
Треугольник: три вершины, соединенные друг с другом тремя ребрами, образуют треугольник. Иногда это называют многоугольником или гранью. В 3D-программах, таких как 3ds Max, Maya или Blender, вы обычно работаете с четырехугольниками. Четырехугольники представляют собой четырехсторонний многоугольник, и его легче изменять и с ним работать. При рендеринге эти многоугольники отображаются на экране в виде треугольников.
Используйте следующие разделы, чтобы узнать больше о геометрии:
Использование треугольников и многоугольников
В этом разделе описываются лучшие практики использования треугольников и многоугольников. Сюда входят следующие рекомендации:
- Уменьшите количество треугольников
- Используйте треугольники в важных областях
- Удалить микротреугольники
- Избегайте длинных и тонких треугольников.
Уменьшите количество треугольников
Если вы добавите слишком много треугольников, производительность игры пострадает.
Используйте как можно меньше треугольников. Мы рекомендуем использовать ровно столько, чтобы получить желаемое качество. Учитывайте влияние на производительность при создании контента для мобильной игры. Обрабатывать вершины дорого. Чем меньше вершин, тем лучше общая производительность игры. Кроме того, чем меньше треугольников вы используете, тем на большем количестве устройств можно запустить игру без мощного графического процессора.
На следующем изображении показано, что можно сохранить качество, используя меньшее количество треугольников:
Рисунок 2. Сравнение двух объектов с разным количеством треугольников, которые выглядят одинаково в затененном режиме. В объекте слева были удалены края, не влияющие на силуэт.
На мобильных платформах обычное максимальное количество вершин для отдельной сетки составляет 65 535. Чтобы обеспечить максимальную совместимость, вы должны оставаться ниже этого числа.
Причина этого ограничения в том, что все графические процессоры гарантируют поддержку только 16-битных индексов, которые могут представлять диапазон от 0 до 65 535 вершин. Большинство, но не все, современных графических процессоров поддерживают 32-битные индексы, которые представляют диапазон от 0 до 4 294 967 295 вершин. Если вы превысите поддерживаемый диапазон при использовании 16-битных индексов, это приведет к отсутствию или неправильному отображению геометрии.
Всегда просматривайте и тестируйте игру на любых устройствах, на которых вы планируете выпустить ее, а не на мониторе ПК. Некоторые модели с высоким уровнем детализации могут отображаться неправильно или даже не отображаться на мобильном устройстве.
Мы рекомендуем использовать больше треугольников на объектах переднего плана и меньше на объектах фона. Это более полезно для игр со статической точкой обзора камеры (POV). В следующем примере показано правильное использование детализации различных объектов.
Рисунок 3. В этом примере показан высокий уровень детализации объектов переднего плана по сравнению с объектами заднего плана.
Максимальное количество треугольников, которые следует использовать для модели, зависит от устройства и контента. Если на экране больше объектов, используйте меньшее количество треугольников для каждой модели. Если отображаются только два или три объекта, они могут включать больше треугольников.
В следующем примере показаны две модели из разных демонстраций. В демо-версии Circuit VR есть только один персонаж-робот. Поскольку объект только один, модель робота имеет большее количество треугольников. Другая модель из демо-версии Armies. В этой демонстрации в каждом кадре присутствуют сотни солдат, поэтому у каждого солдата меньше треугольников.
Рисунок 4. Сравнение количества треугольников для двух разных вариантов использования. Слева у робота CircuitVR 11 000 треугольников. Справа у солдата армии 360 треугольников.
Пример использования треугольника
На следующем рисунке приведен пример количества треугольников, используемых в технической демонстрации Armies.
В демоверсии Armies, которая представляет собой 64-битную демонстрацию мобильных технологий, созданную в Unity, камера статична и содержит множество анимированных персонажей. Всего в каждом кадре рендерится около 210 000 треугольников. Такое количество треугольников позволяет демоверсии работать стабильно со скоростью примерно 30 кадров в секунду (FPS).
Рисунок 5. Пример рендера из технической демонстрации The Armies, показывающий количество используемых треугольников.
Самые крупные объекты сцены — пушечные башни — состоят примерно из 3000 треугольников, поскольку занимают большую часть экрана.
Каждый персонаж использует примерно по 360 треугольников. Поскольку их так много и они видны только издалека, они не используют много треугольников. С точки зрения камеры они выглядят подходящими.
Рисунок 6. Вид на солдат с низким треугольником в технической демонстрации Armies.
Используйте треугольники в важных областях
Вершины очень дороги на мобильных платформах. Чтобы предотвратить трату бюджета на обработку, размещайте вершины в областях, которые способствуют визуальному качеству игры. Мелкие детали трехмерного объекта могут быть не видны на последнем экране игры. Мелкие детали могут быть неразличимы из-за небольшого размера экрана и расположения 3D-объектов.
Вместо мелких деталей сосредоточьтесь на крупных формах, которые подчеркивают силуэт. Следующее изображение представляет собой пример фокусировки на силуэте:
Рисунок 7. Красная линия вокруг робота представляет его силуэт.
Мы рекомендуем вам использовать меньше треугольников в областях, которые не часто видны с точки зрения камеры. Например, днище автомобиля или задняя часть шкафа. Если часть объекта никогда не будет видна, удалите эту часть объекта.
Удаление части объекта должно выполняться осторожно и может ограничить возможность повторного использования объекта. Например, если вы удалите нижнюю часть сетки стола, пользователь заметит удаленную часть, если стол будет перевернут.
Не моделируйте мелкие детали с помощью треугольных сеток высокой плотности. Используйте текстуры и карты нормалей для получения мелких деталей. В следующем примере показана одна и та же сетка с картой нормалей и без нее.
Рисунок 8. Сравнение модели с примененной картой нормалей и без нее.
Удалить микротреугольники
Микротреугольники — это очень маленькие треугольники, которые не влияют на конечный визуальный эффект сцены.
У всех 3D-объектов с большим количеством полигонов возникают проблемы с микротреугольниками, когда они удаляются от камеры. Не существует стандартного определения микротреугольников, но под микротреугольниками обычно понимают треугольники размером менее 1–10 пикселей в конечном изображении. Микротреугольники плохи, потому что графическому процессору приходится выполнять всю обработку всех этих треугольников, даже если они не влияют на окончательное изображение.
Микротреугольники возникают по двум причинам:
- Слишком мелкие детали, состоящие из множества треугольников.
- Объекты, расположенные дальше от камеры, с множеством треугольников.
Рисунок 9. Влияние расстояния на микротреугольники.
На рисунке 9 у робота на переднем плане нет микротреугольников. Фоновый робот делает это, потому что размер каждого треугольника составляет всего от 1 до 10 пикселей.
Рисунок 10. Сравнение микротреугольников на высокодетализированных моделях. Большинство треугольников в выделенной области слишком малы, чтобы их можно было увидеть на экранах телефонов.
Для объекта, находящегося дальше от камеры, используйте уровень детализации (LOD). Это уменьшает сложность объекта и делает его проще. В результате получается объект, менее плотный с треугольниками.
Не моделируйте детали с множеством треугольников. Используйте текстуры и карты нормалей для получения мелких деталей. Вы можете объединить вершины и детали треугольника, которые слишком малы и не влияют на итоговое изображение.
Важно уменьшить количество микротреугольников, поскольку они могут повлиять на пропускную способность памяти. Чем больше треугольников, тем больше данных отправляется в графический процессор. На мобильном устройстве это может повлиять на время автономной работы. Повышенное энергопотребление может вызвать термический троттлинг, ограничивающий максимальную производительность графического процессора.
Избегайте длинных и тонких треугольников.
Это треугольники, которые при рендеринге в конечном изображении имеют размер менее 10 пикселей в одном измерении и простираются далеко по экрану. Длинные и тонкие треугольники обычно дороже обрабатывать, чем другие треугольники.
На следующем изображении скос колонны, если смотреть издалека, имеет вид длинного тонкого треугольника. Эти фаски не представляют проблемы, если рассматривать их вблизи.
Рисунок 11. Фаска на столбе представляет собой длинный тонкий треугольник.
Мы рекомендуем по возможности удалять со всех объектов длинные тонкие треугольники.
Длинные и тонкие треугольники блестящих объектов могут вызывать мерцание света при движении камеры. LOD может помочь удалить длинные тонкие треугольники, когда объект находится далеко от камеры.
Если возможно, постарайтесь, чтобы все треугольники были близкими к равносторонним. Это дает треугольникам больше площади и меньше ребер. Длинные и тонкие треугольники в целом работают хуже, чем треугольники большего размера. Для получения дополнительной информации о площади треугольника прочтите «Триангуляция» .
Уровень детализации
Уровень детализации (LOD) относится к методу, который снижает сложность по мере того, как объекты становятся все дальше от зрителя. Наиболее распространенная форма LOD включает в себя несколько версий сетки со все меньшим количеством вершин. LOD не только уменьшает количество обрабатываемых вершин, но и позволяет избежать проблемы микротреугольников . Это также выглядит лучше для объектов, расположенных дальше в сцене.
Мы рекомендуем вам использовать LOD, когда это возможно. Сосредоточьтесь на силуэте объекта. Лучше всего сосредоточиться на плоских участках, чтобы уменьшить количество вершин. На следующем изображении показано использование уровня детализации, примененного к модели робота.
Рисунок 12. Сравнение количества используемых вершин при изменении LOD.
На рисунке 12 трудно увидеть разницу между одним и тем же объектом, состоящим из 200 треугольников, и 2000 треугольников, находящихся на расстоянии. Объект с большим количеством треугольников увеличивает затраты ресурсов, но не улучшает внешний вид при просмотре на расстоянии.
Рисунок 13. Сравнение отдаленных моделей с разным количеством треугольников.
LOD как концепция также может применяться к сложности шейдеров и разрешению текстур. При более низком уровне детализации можно использовать другие материалы с более простыми шейдерами и меньшим количеством текстур. Вы также должны убедиться, что текстуры имеют MIP-карты, чтобы уровни текстур с более низким разрешением применялись к удаленным объектам. Эти меры повысят производительность за счет увеличения размера ваших данных.
Мы не рекомендуем LOD для игр, в которых камера и объекты статичны. Наибольшее преимущество LOD — для объектов, которые движутся к камере и от нее. Статические объекты не двигаются, поэтому LOD не приносит никакой пользы.
Рисунок 14. Сцена со статической камерой из технической демонстрации Armies, в которой не используется уровень детализации.
Коэффициенты детализации
Используйте постоянное соотношение, когда уменьшаете количество треугольников для LOD. Мы рекомендуем уменьшать треугольники на 50% для каждого уровня.
Не используйте LOD для простых объектов. Объекты, у которых уже мало треугольников, не получают выгоды от LOD. Следующий пример из технической демонстрации The Armies показывает, как выглядит игра со статическим изображением и объектами с низкими треугольниками.
Рисунок 15. Сравнение моделей при уменьшении уровня детализации.
Убедитесь, что уровни LOD изменяются на правильном расстоянии от камеры. Основывайте свой анализ на том, как они используются в игре.
Рисунок 16. Сравнение внешнего вида модели LOD 3 крупным планом и на предполагаемом расстоянии.
Не существует точной цифры того, какой уровень детализации разумно иметь для объекта. Это зависит от размера объекта и его важности. Например, персонаж в экшн-игре или автомобиль в гоночной игре могут иметь больше уровней LOD, чем небольшие фоновые объекты, такие как дерево.
Имейте в виду, что слишком высокий уровень детализации требует ресурсов процессора. ЦП требуется больше вычислительной мощности, чтобы решить, какой уровень детализации отображать. LODы также требуют памяти, что увеличивает размер файла и использование VRAM. Также требуется дополнительное время для создания и проверки моделей LOD.
Существует два способа создания LOD-сетей: вручную и автоматически.
- Вы можете вручную создавать сетки LOD с помощью любого 3D-программного обеспечения.
- Для этого удалите контуры ребер или уменьшите количество вершин на 3D-объекте.
- Это дает художнику максимальный контроль над конечным продуктом, но может занять больше времени.
- Сетки LOD могут создаваться автоматически.
- Вы можете использовать модификатор внутри 3D-пакета, например ProOptimizer в 3ds Max или «Создать сетки LOD» в Maya.
- Вы можете использовать программное обеспечение для создания LOD, такое как Simplygon или InstaLOD.
- Некоторые игровые движки имеют функцию автоматической генерации LOD, которая позволяет создавать и применять сетки LOD.
Лучшие практики
Существуют дополнительные методы сокращения ресурсов, необходимых для вашей игры, которые также сохраняют графическую точность.
Группы сглаживания или пользовательские нормали вершин.
Используйте группы сглаживания или пользовательские нормали вершин, чтобы определить жесткость края и изменить внешний вид модели. Группа сглаживания помогает улучшить затенение в низкополигональном художественном направлении. Группа сглаживания также влияет на разделение UV-островков и качество карт нормалей при запекании.
Рисунок 17. Сравнение модели с группой сглаживания и без нее.
Если вы реализуете группу сглаживания в 3D-модели, ее необходимо экспортировать из 3D-программы и импортировать в движок.
Сетчатая топология
Когда вы создаете новый 3D-ресурс, убедитесь, что он имеет правильную топологию. Чистая топология необходима для персонажей и других объектов, которые оживляются и изменяются. Топология не обязательно должна быть идеальной. Имейте в виду, что конечные пользователи не увидят каркас и что текстуры и материалы будут иметь большее влияние на внешний вид модели.
Рисунок 18. Топология, каркас и окончательная версия камня из технической демонстрации Armies.
Преувеличение формы
Вы можете преувеличить некоторые формы, чтобы облегчить интерпретацию ваших моделей. Это во многом зависит от типа и стиля вашей игры. Поскольку экраны мобильных устройств маленькие, может быть сложно запечатлеть определенные очень маленькие фигуры. Преувеличение этих форм может помочь пользователям увидеть форму даже на расстоянии.
Например, вы можете сделать персонажей с руками побольше, чтобы их было легче увидеть.
Рисунок 19. Пример модели с увеличенными пропорциями для лучшей наглядности.
,3D-игры, которые хорошо работают на большом количестве устройств, начинаются с 3D-графики, разработанной с учетом максимального использования преимуществ графических процессоров. В этом руководстве описаны оптимизации и лучшие практики для 3D-ресурсов на мобильных устройствах, которые помогут повысить производительность вашей игры и минимизировать энергопотребление.
Части этой статьи основаны на работах, предоставленных Arm Limited и защищенных авторскими правами.
Определение геометрии
Геометрия, или полигональная сетка, представляет собой набор вершин, ребер и граней, составляющих форму трехмерного объекта. Это может быть машина, оружие, окружающая среда, персонаж или любой другой визуальный объект в игре.
Рисунок 1. Вершины, ребра и треугольники куба.
Геометрия состоит из следующих частей:
Вершины: существительное во множественном числе для вершины. Эти точки определяют структуру объекта в трехмерном пространстве.
Ребра: две вершины, соединенные прямой линией.
Треугольник: три вершины, соединенные друг с другом тремя ребрами, образуют треугольник. Иногда это называют многоугольником или гранью. В 3D-программах, таких как 3ds Max, Maya или Blender, вы обычно работаете с четырехугольниками. Четырехугольники представляют собой четырехсторонний многоугольник, и его легче изменять и с ним работать. При рендеринге эти многоугольники отображаются на экране в виде треугольников.
Используйте следующие разделы, чтобы узнать больше о геометрии:
Использование треугольников и многоугольников
В этом разделе описываются лучшие практики использования треугольников и многоугольников. Сюда входят следующие рекомендации:
- Уменьшите количество треугольников
- Используйте треугольники в важных областях
- Удалить микротреугольники
- Избегайте длинных и тонких треугольников.
Уменьшите количество треугольников
Если вы добавите слишком много треугольников, производительность игры пострадает.
Используйте как можно меньше треугольников. Мы рекомендуем использовать ровно столько, чтобы получить желаемое качество. Учитывайте влияние на производительность при создании контента для мобильной игры. Обрабатывать вершины дорого. Чем меньше вершин, тем лучше общая производительность игры. Кроме того, чем меньше треугольников вы используете, тем на большем количестве устройств можно запустить игру без мощного графического процессора.
На следующем изображении показано, что можно сохранить качество, используя меньшее количество треугольников:
Рисунок 2. Сравнение двух объектов с разным количеством треугольников, которые выглядят одинаково в затененном режиме. В объекте слева были удалены края, не влияющие на силуэт.
На мобильных платформах обычное максимальное количество вершин для отдельной сетки составляет 65 535. Чтобы обеспечить максимальную совместимость, вы должны оставаться ниже этого числа.
Причина этого ограничения в том, что все графические процессоры гарантируют поддержку только 16-битных индексов, которые могут представлять диапазон от 0 до 65 535 вершин. Большинство, но не все, современных графических процессоров поддерживают 32-битные индексы, которые представляют собой диапазон от 0 до 4 294 967 295 вершин. Если вы превысите поддерживаемый диапазон при использовании 16-битных индексов, это приведет к отсутствию или неправильному отображению геометрии.
Всегда просматривайте и тестируйте игру на любых устройствах, на которых вы собираетесь выпустить ее, а не на мониторе ПК. Некоторые модели с высоким уровнем детализации могут отображаться неправильно или даже не отображаться на мобильном устройстве.
Мы рекомендуем использовать больше треугольников на объектах переднего плана и меньше на объектах фона. Это более полезно для игр со статической точкой обзора камеры (POV). В следующем примере показано правильное использование детализации различных объектов.
Рисунок 3. В этом примере показан высокий уровень детализации объектов переднего плана по сравнению с объектами заднего плана.
Максимальное количество треугольников, которое следует использовать для модели, зависит от устройства и контента. Если на экране больше объектов, используйте меньше треугольников для каждой модели. Если отображаются только два или три объекта, они могут включать больше треугольников.
В следующем примере показаны две модели из разных демонстраций. В демо-версии Circuit VR есть только один персонаж-робот. Поскольку объект только один, модель робота имеет большее количество треугольников. Другая модель из демо-версии Armies. В этой демонстрации в каждом кадре присутствуют сотни солдат, поэтому у каждого солдата меньше треугольников.
Рисунок 4. Сравнение количества треугольников для двух разных вариантов использования. Слева у робота CircuitVR 11 000 треугольников. Справа у солдата армии 360 треугольников.
Пример использования треугольника
На следующем рисунке приведен пример количества треугольников, используемых в технической демонстрации Armies.
В демо-версии Armies, которая представляет собой 64-битную демонстрацию мобильных технологий, созданную в Unity, камера статична и содержит множество анимированных персонажей. Всего в каждом кадре рендерится около 210 000 треугольников. Такое количество треугольников позволяет демоверсии работать стабильно со скоростью примерно 30 кадров в секунду (FPS).
Рис. 5. Пример рендера из технической демонстрации The Armies, показывающий количество используемых треугольников.
Самые крупные объекты сцены — пушечные башни — состоят примерно из 3000 треугольников, поскольку занимают большую часть экрана.
Каждый персонаж использует примерно по 360 треугольников. Поскольку их так много и они видны только издалека, они не используют много треугольников. С точки зрения камеры они выглядят подходящими.
Рисунок 6. Вид на солдат с низким треугольником в технической демонстрации Armies.
Используйте треугольники в важных областях
Вершины очень дороги на мобильных платформах. Чтобы предотвратить трату бюджета на обработку, размещайте вершины в областях, которые способствуют визуальному качеству игры. Мелкие детали трехмерного объекта могут быть не видны на последнем экране игры. Мелкие детали могут быть неразличимы из-за небольшого размера экрана и расположения 3D-объектов.
Вместо мелких деталей сосредоточьтесь на крупных формах, которые подчеркивают силуэт. Следующее изображение представляет собой пример фокусировки на силуэте:
Рисунок 7. Красная линия вокруг робота представляет его силуэт.
Мы рекомендуем вам использовать меньше треугольников в областях, которые не часто видны с точки зрения камеры. Например, днище автомобиля или задняя часть шкафа. Если часть объекта никогда не будет видна, удалите эту часть объекта.
Удаление части объекта должно выполняться осторожно и может ограничить возможность повторного использования объекта. Например, если вы удалите нижнюю часть сетки стола, пользователь заметит удаленную часть, если стол будет перевернут.
Не моделируйте мелкие детали с помощью треугольных сеток высокой плотности. Используйте текстуры и карты нормалей для получения мелких деталей. В следующем примере показана одна и та же сетка с картой нормалей и без нее.
Рисунок 8. Сравнение модели с примененной картой нормалей и без нее.
Удалить микротреугольники
Микротреугольники — это очень маленькие треугольники, которые не влияют на конечный визуальный эффект сцены.
У всех 3D-объектов с большим количеством полигонов возникают проблемы с микротреугольниками, когда они удаляются от камеры. Не существует стандартного определения микротреугольников, но под микротреугольниками обычно понимают треугольники размером менее 1–10 пикселей в конечном изображении. Микротреугольники плохи, потому что графическому процессору приходится выполнять всю обработку всех этих треугольников, даже если они не влияют на окончательное изображение.
Микротреугольники возникают по двум причинам:
- Слишком мелкие детали, состоящие из множества треугольников.
- Объекты, расположенные дальше от камеры, с множеством треугольников.
Рисунок 9. Влияние расстояния на микротреугольники.
На рисунке 9 у робота на переднем плане нет микротреугольников. Фоновый робот делает это, потому что размер каждого треугольника составляет всего от 1 до 10 пикселей.
Рисунок 10. Сравнение микротреугольников на высокодетализированных моделях. Большинство треугольников в выделенной области слишком малы, чтобы их можно было увидеть на экранах телефонов.
Для объекта, находящегося дальше от камеры, используйте уровень детализации (LOD). Это уменьшает сложность объекта и делает его проще. В результате получается объект, менее плотный с треугольниками.
Не моделируйте детали с множеством треугольников. Используйте текстуры и карты нормалей для получения мелких деталей. Вы можете объединить вершины и детали треугольника, которые слишком малы и не влияют на итоговое изображение.
Важно уменьшить количество микротреугольников, поскольку они могут повлиять на пропускную способность памяти. Чем больше треугольников, тем больше данных отправляется в графический процессор. На мобильном устройстве это может повлиять на срок службы батареи. Повышенное энергопотребление может вызвать термическое дросселирование, ограничивающее максимальную производительность графического процессора.
Избегайте длинных и тонких треугольников.
Это треугольники, которые при рендеринге в конечном изображении имеют размер менее 10 пикселей в одном измерении и простираются далеко по экрану. Длинные и тонкие треугольники обычно дороже обрабатывать, чем другие треугольники.
На следующем изображении скос на столбе, если смотреть издалека, имеет вид длинного тонкого треугольника. Эти фаски не представляют проблемы, если рассматривать их вблизи.
Рисунок 11. Фаска на столбе представляет собой длинный тонкий треугольник.
Мы рекомендуем по возможности удалять со всех объектов длинные тонкие треугольники.
Длинные и тонкие треугольники блестящих объектов могут вызывать мерцание света при движении камеры. LOD может помочь удалить длинные тонкие треугольники, когда объект находится далеко от камеры.
Если возможно, постарайтесь, чтобы все треугольники были близкими к равносторонним. Это дает треугольникам больше площади и меньше ребер. Длинные и тонкие треугольники в целом работают хуже, чем треугольники большего размера. Для получения дополнительной информации о площади треугольника прочтите «Триангуляция» .
Уровень детализации
Уровень детализации (LOD) относится к методу, который снижает сложность по мере того, как объекты становятся все дальше от зрителя. Наиболее распространенная форма LOD включает в себя несколько версий сетки со все меньшим количеством вершин. LOD не только уменьшает количество обрабатываемых вершин, но и позволяет избежать проблемы микротреугольников . Это также выглядит лучше для объектов, расположенных дальше в сцене.
Мы рекомендуем вам использовать LOD, когда это возможно. Сосредоточьтесь на силуэте объекта. Лучше всего сосредоточиться на плоских участках, чтобы уменьшить количество вершин. На следующем изображении показано использование уровня детализации, примененного к модели робота.
Рисунок 12. Сравнение количества используемых вершин при изменении LOD.
На рисунке 12 трудно увидеть разницу между одним и тем же объектом, состоящим из 200 треугольников, и 2000 треугольников, находящихся на расстоянии. Объект с большим количеством треугольников увеличивает затраты ресурсов, но не улучшает внешний вид при просмотре на расстоянии.
Рисунок 13. Сравнение отдаленных моделей с разным количеством треугольников.
LOD как концепция также может применяться к сложности шейдеров и разрешению текстур. При более низком уровне детализации можно использовать другие материалы с более простыми шейдерами и меньшим количеством текстур. Вы также должны убедиться, что текстуры имеют MIP-карты, чтобы уровни текстур с более низким разрешением применялись к удаленным объектам. Эти меры повысят производительность за счет увеличения размера ваших данных.
Мы не рекомендуем LOD для игр, в которых камера и объекты статичны. Наибольшее преимущество LOD — для объектов, которые движутся к камере и от нее. Статические объекты не двигаются, поэтому LOD не приносит никакой пользы.
Рисунок 14. Сцена со статической камерой из технической демонстрации Armies, в которой не используется уровень детализации.
Коэффициенты детализации
Используйте постоянное соотношение, когда уменьшаете количество треугольников для LOD. Мы рекомендуем вам уменьшать треугольники на 50% для каждого уровня.
Не используйте LOD для простых объектов. Объекты, у которых уже мало треугольников, не получают выгоды от LOD. Следующий пример из технической демонстрации The Armies показывает, как выглядит игра со статическим изображением и объектами с низкими треугольниками.
Рисунок 15. Сравнение моделей при уменьшении уровня детализации.
Убедитесь, что уровни LOD изменяются на правильном расстоянии от камеры. Основывайте свой анализ на том, как они используются в игре.
Рисунок 16. Сравнение внешнего вида модели LOD 3 крупным планом и на предполагаемом расстоянии.
Не существует точной цифры того, какой уровень детализации разумно иметь для объекта. Это зависит от размера объекта и его важности. Например, персонаж в экшн-игре или автомобиль в гоночной игре могут иметь больше уровней LOD, чем небольшие фоновые объекты, такие как дерево.
Имейте в виду, что слишком высокий уровень детализации требует ресурсов процессора. ЦП требуется больше вычислительной мощности, чтобы решить, какой уровень детализации отображать. LOD также требует затрат памяти, что увеличивает размер файла и использование VRAM. Также требуется дополнительное время для создания и проверки моделей LOD.
Существует два способа создания LOD-сетей: вручную и автоматически.
- Вы можете вручную создавать сетки LOD с помощью любого 3D-программного обеспечения.
- Для этого удалите контуры ребер или уменьшите количество вершин на 3D-объекте.
- Это дает художнику максимальный контроль над конечным продуктом, но может занять больше времени.
- Сетки LOD могут создаваться автоматически.
- Вы можете использовать модификатор внутри 3D-пакета, например ProOptimizer в 3ds Max или «Создать сетки LOD» в Maya.
- Вы можете использовать программное обеспечение для создания LOD, такое как Simplygon или InstaLOD.
- Некоторые игровые движки имеют функцию автоматической генерации LOD, которая позволяет создавать и применять сетки LOD.
Лучшие практики
Существуют дополнительные методы сокращения ресурсов, необходимых для вашей игры, которые также сохраняют точность графики.
Группы сглаживания или пользовательские нормали вершин.
Используйте группы сглаживания или пользовательские нормали вершин, чтобы определить жесткость края и изменить внешний вид модели. Группа сглаживания помогает улучшить затенение в низкополигональном художественном направлении. Группа сглаживания также влияет на разделение UV-островков и качество карт нормалей при запекании.
Рисунок 17. Сравнение модели с группой сглаживания и без нее.
Если вы реализуете группу сглаживания в 3D-модели, ее необходимо экспортировать из 3D-программы и импортировать в движок.
Сетчатая топология
Когда вы создаете новый 3D-ресурс, убедитесь, что он имеет правильную топологию. Чистая топология необходима для персонажей и других объектов, которые оживляются и изменяются. Топология не обязательно должна быть идеальной. Имейте в виду, что конечные пользователи не увидят каркас и что текстуры и материалы будут иметь большее влияние на внешний вид модели.
Рисунок 18. Топология, каркас и окончательная версия камня из технической демонстрации Armies.
Преувеличение формы
Вы можете преувеличить некоторые формы, чтобы облегчить интерпретацию ваших моделей. Это во многом зависит от типа и стиля вашей игры. Поскольку экраны мобильных устройств маленькие, может быть сложно запечатлеть определенные очень маленькие фигуры. Преувеличение этих форм может помочь пользователям увидеть форму даже на расстоянии.
Например, вы можете сделать персонажей с руками побольше, чтобы их было легче увидеть.
Рисунок 19. Пример модели с увеличенными пропорциями для лучшей наглядности.