Страница 1 из 1

Как правильно готовить статик геометрию для Unity?

СообщениеДобавлено: 07 июн 2018, 17:06
jr900
Привет всем!
Есть у меня один открытый уровень в исходниках в 3ds Max-е, хочу перенести его в Unity. Там есть террейн, дома, постройки и.т.д

Вопрос - как оптимально объединять/разделять объекты для лучшей оптимизации, с учетом того, что в дальнейшем будет юзаться Occlusion Culling?

Вот к примеру: есть деревенька на уровне - несколько домов, несколько заборов, разбросанные пропсы. Те-же заборы объединять в один меш? Но как я понимаю, для Occlusion Culling лучше оставлять объекты отдельно, чтобы одни могли перекрывать другие.

Есть вообще фундаментальные правила подготовки статической геометрии на больших уровнях для экспорта в Юнити?

Буду рад любой информации и личному опыту. Спасибо.

Re: Как правильно готовить статик геометрию для Unity?

СообщениеДобавлено: 07 июн 2018, 18:00
alt3d
Объединяй по материалам.
Это поможет батчингу.

Остальное - делаешь как удобно.
Если у тебя там не ГТА5, сильно заморачиваться не стоит.
Особенно в начале, потратишь на переделку кучу времени )

Re: Как правильно готовить статик геометрию для Unity?

СообщениеДобавлено: 07 июн 2018, 18:21
jr900
Спасибо за ответ, но тут с материалами еще полная неопределенность как делать.
Дело в том, что никаких атласов текстур тут нету, есть несколько десятков одиночных текстур, используемых на всем уровне. Ну к примеру, на одном доме пару десятков текстур в саб-материалах, эти же текстуры используются в других объектах, на другом доме часть таких-же текстур плюс другие ну и так далее. Надеюсь понятно.

Если объединять меши по текстурам (будущим материалам) то получится дикие совершенно куски объектов. В принципе, с этим можно и смириться, но свет потом нормально будет запекаться и GI реалтайм просчитываться??

Re: Как правильно готовить статик геометрию для Unity?

СообщениеДобавлено: 08 июн 2018, 20:45
OctoLumen
Разделяйте на объекты, т.е.:

1) В Максе имеем уровень с деревенькой и заборами

2) Делим на крупные объекты - дома, заборы, водные полигоны (включая лужи), деревья и т.д.

3) Каждый объект представляем себе как он будет виден со стороны камеры - если камера будет близко находиться к объектам (человек идет по улице деревни, вид от 1-го лица) - то проще всего сделать ЛОДы; если камера высоко\далеко и быстро движется (самолет летит над деревней), то либо ЛОДы, либо ДроуДистанс, который реализуется скриптом на детали объектов, которые можно дальше определенного расстояния отключать для показа

[пример]: объект размером в 30х30м, с расстояния 110м - можно убирать все детали размером 1-2м - Юнити это сделает сам, когда они станут меньше 1 пикселя, но эффективнее вот так - разумеется, юниты могут быть произвольными, я привел пример пропорции для камеры с ФОВ == 80 градусов

4) Материалы сейчас бэтчатся при загрузке сцены самым оптимальным способом, никаких особых выигрышей ручными настройками добиться на производительных таргет-платформах почти не выйдет

5) окклюжн каллинг - дефолтный метод поведения камеры, можно его отключить или кинуть свой шейдер если нужно рендерить невидимые (обратные по углу к камере) полигоны, но это редко когда нужно, в остальном как и в Максе окклюжн каллинг всегда включен

... ну и еще годы и годы опыта и советов, пробуйте - "узкие мезта" (в плане просадок фпс + юнити аналитикс насчет дроуколлов и треугольников) вылезут со временем и придумаете свою версию оптимизации ;-) Ну или спрашивайте - по мере поступления - попробуем подсказать )

Re: Как правильно готовить статик геометрию для Unity?

СообщениеДобавлено: 09 июн 2018, 09:01
alt3d
OctoLumen писал(а):Разделяйте на объекты, т.е.:
4) Материалы сейчас бэтчатся при загрузке сцены самым оптимальным способом, никаких особых выигрышей ручными настройками добиться на производительных таргет-платформах почти не выйдет


Может версии старше 5-ой и могут, но в моей пока не очень.
На скрине по ссылке видно что меш объединенный по материалам выигрывают по времени затрачиваемом на рендер.
Ну и по драуколам лучше статистика при скомбайненых мешах
https://hkar.ru/Uoi4

OctoLumen писал(а):5) окклюжн каллинг - дефолтный метод поведения камеры, можно его отключить или кинуть свой шейдер если нужно рендерить невидимые (обратные по углу к камере) полигоны, но это редко когда нужно, в остальном как и в Максе окклюжн каллинг всегда включен

то что вы описали это frustrum culling, а окклюжен - это совсем другая штука, требующая отдельного просчета в редакторе
Опять же, может в версиях 2018 и выше все поменялось, и юнитехи как-то умудрились автоматом отсекать загораживающие друг-друга полигоны :)


jr900 писал(а):Спасибо за ответ, но тут с материалами еще полная неопределенность как делать.

Поэтому я и говорю - делайте пока как удобно вам в данный конкретный момент.
Ближе к завершению работы уже будет видно что и как оптимизировать

Re: Как правильно готовить статик геометрию для Unity?

СообщениеДобавлено: 13 июн 2018, 10:12
jr900
Что интересно - экспортировал два домика: один цельным мешем, другой порезанный на текстуры (материалы) - так вот, на порезанном правильно запеклось GI, а на цельном - засветы на стыках стен и потолка.