@JimFord
Разработчик

Unity terrain — несколько терраинов в одну для оптимизации?

Создал карту примерно в 7 кв. километров для будущего онлайн шутера с открытым миром в движке Unity. Карту создавал из множества кусков terrain (вышло около 100, знаю - много). После чего стал наполнять карту деталями (здания, дороги, растительность и пр) и редактор стал дико тормозить. Довольно большие просадки фпс вызываю деревья (их около 8-10 видов), но больше всего выедает сама карта из многих кусков терраина (пробовал отключать на сцене здания, деревья, всё по очереди - здания пока без текстур, на деревьях и деталях ландшафта типа камней и поваленных деревьев висят LOD - их влияние на ФПС минимально). Отключаю все терраины - быстродействие приходит в норму, можно работать в редакторе и запускать игру, если этого не делать, ФПС около 1.

Из любопытства попробовал в той же сцене создать сопоставимый по размера терраин, но одним куском,примерно воссоздал рельеф. Фпс не ниже 30 даже если стоять на высоте и камере доступен вид на 6-7 км, т.е. почти до конца карты, без каких-либо мероприятий по оптимизации вроде применения GPU Instancer на префабах и деревьях(только их родные лоды) и Occlusion Culling в самом Unity.

Вывод напросился сам собой - если карта из многих кусков по каким-то причинам там тормозит всю сцену, можно попытаться объединить все куски в один, получить одну data. Это в принципе облегчит многие задачи, но на момент создания карты , я этого не знал и вот у меня довольно подробно проработанная вручную карта с рельефом, которая дико тормозит и не дает дальше работать.

Я попробовал использовать ассет Stitchscape, но то ли я не разобрался, то ли он не в состоянии объединить data нескольких терраинов в одну, выделяются в редакторе "сшитые" терраинты все равно отдельными кусками. Он только сглаживает стыки, но в этом практически нет нужды, Unity сам это делает достаточно хорошо.

Прочел где-то,что можно попробовать снять raw карты высот с кусков терраина, объединить их в фотошопе в одну и импортировать в Unity , применив в единому куску терраина. Деревья и текстуры в этом случае придется выставлять и рисовать заново, чего не хотелось бы(использовал стандартные инструменты Unity terrain). Но самое дикое,это объединить около сотни кусков в одну карту в Photoshop, я при одной мысли об этом начинаю стареть, пробивается седина и суставы ломит...

Есть ли какой-то способ вернуть фпс в нормальное русло, объединив ли множество терраинов в один, или еще как-то?
  • Вопрос задан
  • 621 просмотр
Пригласить эксперта
Ответы на вопрос 1
@ALTech1
Лично я поработав с Unity Terrain решил отказаться от него. Да удобно, но при изменении формы создается слишком много полигонов. Occlusion Culling может помочь, но мне кажется в вашем случае сильного результата не даст. На вашем месте сделал бы ретопологию моделей, с меньшим количеством вершин и сам ландшафт сделал бы сам в том же Blender. Так вы будете контролировать количество полигонов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы