Частота кадров Unity3D упала после импорта модели Blender
Я делаю 3D-игру с Unity для Android. В игре присутствует главный герой и около 10 противников, возможно, на экране одновременно, все из которых используют одну и ту же модель (префабы для "противников" отличаются только одним материалом для других цветов).
Модель была разработана с использованием MakeHuman и Blender.
На ПК (поскольку рендеринг намного быстрее) проблем не возникает, но при тестировании на устройстве Android время рендеринга падает до 25-30 кадров в секунду, когда на экране 3-4 или более тел, создавая действительно "запаздывающее" чувство (я ожидаю частоту кадров около 60 кадров в секунду).
До импорта модели Blender я использовал сферы-заполнители, и такого поведения не было. Поскольку я впервые использую Blender и такие 3D-модели, я не уверен, соответствует ли моя модель ожидаемым размерам для мобильной игры. Моя текущая модель состоит из: 5 956 Verts, 10 456 Faces, 10 819 Tris с размером файла около 6,5 МБ (сначала он был сгенерирован еще больше, но MakeHuman сгенерировал его еще больше, но мне удалось значительно его сжать и оптимизировать, но все же без значительных эффектов),
Я пробовал разные решения, включая объединение всех сеток в модели, отключение теней, использование как можно меньшего количества материалов и т. Д. Все попытки были без каких-либо или очень ограниченных улучшений.
Любые идеи приветствуются. Ура!
2 ответа
Для мобильной игры я бы посоветовал вам повторно объединить модель (хотя это не очень хорошая работа, но результаты намного лучше, чем, например, у decimate-модификатора), чем испечь карты нормалей для нее из модели с высоким разрешением.
Моя текущая модель состоит из: 5,956 Verts, 10,456 Faces, 10,819 Tris с размером файла около 6,5 МБ
Звучит слишком много для меня.
Кроме того, имейте в виду, что если вы делаете что-либо такое вычисление столкновений, каждая дополнительная сложность занимает экспоненциально больше времени