Render.ru

Оптимизация сцены

Павел Кузьмин (Pavlente)

Пользователь сайта
Рейтинг
2
#1
Здравствуйте, столкнулся со следующей проблемой:
При создание довольно большого количества примитивов прямоугольник инстансами через массив и копирование (декор на фасаде дома) начинает лагать вьюпорт при выделении всех объектов, а по мимо этого ужасно долго сохраняется сцена. Polys: 133 760 Verts: 121 202. Вес сцены ~ 8-9 Мб. Из-за чего это происходит и как это побороть? Очень сильно мешает сохранение сцены длиной в 5 минут, а если создать зеркальную копию (что требуется), то сцена не может сохраниться и больше 15 минут.
 

Павел Кузьмин (Pavlente)

Пользователь сайта
Рейтинг
2
#3
Попробуйте объединить (Attach) все эти объекты в один. Ну или в два-три.
Спасибо! Помогло! Но есть вопрос, а можно как-то со сохранить зависимость между элементами и при этом не потерять в производительности?
 

ЛМА

Смотритель
Рейтинг
1 181
#4
Но есть вопрос, а можно как-то со сохранить зависимость между элементами и при этом не потерять в производительности?
Если объекты обязательно должны быть отдельно, то размножать только инстансом.
А так если вообще говорить о оптимизации, то: после всех манипуляций конвертировать в меш (этот формат много легче чем поли), всегда стараться размножать инстансами, не делать слишком многоуровневых группировок (группа в группе, а те тоже в группе, и т.д.), объединять объекты в один (например все объекты с одним и тем же материалом, например большое здание с кучей окон - можно выделить по материалу все стекла и объединить в один объект, тоже со всеми рамами и т.п. в итоге будет всего несколько объектов вместо большой кучи) или составляющими один размножаемый элемент, использовать прооптимизер для уменьшения полигонов в объекте до уровня визуально не искажающим геометрию объекта.

Как пример - предположим у нас есть некое большое помещение с большим количеством одинаковой мебели, например офис или общественная столовая/ресторан. Можно собрать один комплект такой мебели - стол, стулья рядом с ним, на столе некий антураж. Затем все это сгруппировать (при этом сами составляющие тоже могут состоять из групп) и размножить все это копией. Вьюпорт может начать тормозить. А можно сделать по другому: весь комплект полностью разгруппировать, все высокополигональные объекты из этого комплекта оптимизировать, удалить невидимые снаружи объекты (например высокополигональное наполнение закрытого холодильника, такое тоже бывает - скачиваешь модель холодильника, а у него внутри куча моделей продуктов, все это ставишь в сцену не разобравшись и потом удивляешься откуда столько полигонов взялось) и затем объединить все составляющие комплект объекты в один объект с мультиматериалом, конвертировать его в меш и потом размножить инстансом. Вьюпорт после этого будет работать намного быстрее, сцена будет весить меньше (иногда очень прилично меньше).
 
Последнее редактирование:

Павел Кузьмин (Pavlente)

Пользователь сайта
Рейтинг
2
#5
Если объекты обязательно должны быть отдельно, то размножать только инстансом.
А так если вообще говорить о оптимизации, то: после всех манипуляций конвертировать в меш (этот формат много легче чем поли), всегда стараться размножать инстансами, не делать слишком многоуровневых группировок (группа в группе, а те тоже в группе, и т.д.), объединять объекты в один (например все объекты с одним и тем же материалом, например большое здание с кучей окон - можно выделить по материалу все стекла и объединить в один объект, тоже со всеми рамами и т.п. в итоге будет всего несколько объектов вместо большой кучи) или составляющими один размножаемый элемент, использовать прооптимизер для уменьшения полигонов в объекте до уровня визуально не искажающим геометрию объекта.

Как пример - предположим у нас есть некое большое помещение с большим количеством одинаковой мебели, например офис или общественная столовая/ресторан. Можно собрать один комплект такой мебели - стол, стулья рядом с ним, на столе некий антураж. Затем все это сгруппировать (при этом сами составляющие тоже могут состоять из групп) и размножить все это копией. Вьюпорт может начать тормозить. А можно сделать по другому: весь комплект полностью разгруппировать, все высокополигональные объекты из этого комплекта оптимизировать, удалить невидимые снаружи объекты (например высокополигональное наполнение закрытого холодильника, такое тоже бывает - скачиваешь модель холодильника, а у него внутри куча моделей продуктов, все это ставишь в сцену не разобравшись и потом удивляешься откуда столько полигонов взялось) и затем объединить все составляющие комплект объекты в один объект с мультиматериалом, конвертировать его в меш и потом размножить инстансом. Вьюпорт после этого будет работать намного быстрее, сцена будет весить меньше (иногда очень прилично меньше).
Спасибо, раньше сталкивался только с оптимизацией слишком высоко полигональных объектов, размеров карт и т.д., но не с повторяющимися объектами. Буду использовать в работе ваши советы, выручили.
 

ЛМА

Смотритель
Рейтинг
1 181
#6
На всякий случай, как лично я понимаю все это дело.
Процессор и видеокарта при работе в вьюпорте оперируют не только координатами вершин полигонов некого объекта, но и всей остальной информацией связанной с этим объектом - координаты и свойства пивота, свойства объекта, координаты текстурной карты , модификаторы если они есть, и всем остальным что там есть еще, и . Т.е. само по себе количество полигонов это еще не все, что нагружает железо, иногда количество полигонов вообще не самое тяжелое в этом объеме информации. Соответственно, когда вы размножаете объект копией, то вы увеличиваете количество информации на количество копий. А когда размножаете инстансом, то увеличиваете информацию только на данные о координатах и свойствах пивота, все остальное берется из оригинала. А если вы объедините все эти объекты в один, то вы удалите эту информацию о координатах и свойствах кучи пивотов, т.е. сделаете всю эту изначальную кучу объектов в разы легче.

Так же количество информации о пивотах можно прибить объединением инстанс объектов в группу, тогда вместо кучи пивотов будет один общий пивот группы.
 
Сверху