Unreal Engine 4 Community
GameDev.ru / Сообщества / UE4 Community / Форум / Bluerprint SplineMesh тормозит дико когда сплайнов много. Как вылечить?

Bluerprint SplineMesh тормозит дико когда сплайнов много. Как вылечить?

Поделиться

Страницы: 1 2 Следующая

slava_mibМодераторwww5 ноя. 20172:01#0
Сделал L-System на Bluerprint, cистема на выходе даёт несколько (обычно десяток-два-три) сплайн-мешей, которые создают дерево. Полигональность каждого такого дерева получается в сумме около 10-20 тысяч трис. Работает всё нормально и, в принципе, даже не сильно медленно.

Вот только такая проблема - когда я эти блюпринтовые акторы раскидываю по сцене (другим блюпринтом), штук 20-30 всего - фпс, когда они в кадре, проседает до нуля, когда они в кадре... Т.е. смотрю камерой от них - 90 фпс, смотрю камерой на них - в лучшем случае 1-2 фпс... Причём, 3-5 и даже 10 деревьев - работают боле-мене нормально, когда 20-30 - лаги адские, когда 50 - всё, смерть, редактор подвисает и рисует может 1 кадр в минуту или около того 8-(

Это лечится вообще хоть как-то?

P/S i7 6ядерный, 32 Gb памяти, GTX1080 и всё такое.

slava_mibМодераторwww5 ноя. 20179:08#1
Ради интереса, переписал генерацию на ProceduralMesh ("вручную" в блупринте проинтерполировал все сплайны и тем самым построил меш 100% идентичный сплайновому). Результаты получились такие:
- 500 проц-меш-деревьев генерятся, на глаз, раз в 50 быстрее, чем генерились 30 сплайновых - секунды за 4
- и эти 500 деревьев работают со скоростью 20-30 фпс
Sh.Tac.Постоялецwww5 ноя. 201715:13#2
слабо представляю себе сплайн-меш : )
но свой foliage лучше через instanced static mesh, а если есть LOD, то через hierarchical

З.Ы. вообще там только одни заигрывания с процедуркой, я бы в рантайме ничего не генерил, лучче сделать tool который генерит статические ресурсы привычные движку

Правка: 5 ноя. 2017 15:23

slava_mibМодераторwww5 ноя. 201715:21#3
> слабо представляю себе сплайн-меш : )

> но свой foliage лучше через instanced static mesh, а если есть LOD, то через hierarchical
Вопрос стоит не в том, как закостылить, а в том, нормально ли это что оно так лагает, и можно ли это как-то исправить.
Инстансед, ЛОДы и иерархии - это очевидно не решение проблемы вообще, ибо 100% аналогичная (по гемоетрии) реализация на обычном меше, без всего прочего - работает, по непонятным причинам, где-то в десятки, а при большем колич-ве объектов - в тысячи раз быстрее, чем через сплайны. Вот мне и интересно - почему так, и как это лечить, либо же это какой-то новый баг движка?

std::cinУчастникwww5 ноя. 201719:17#4
Может там геометрия динамичная и она все время обновляет данные на видеокарте?
slava_mibМодераторwww5 ноя. 201719:30#5
Мне кажется, либо так, либо отрисовка криво реализована... Больше всего мне понятно почему такое падение скорости на сплайнах, что при повышении их (деревьев) количества вдвое, с 10 до 20, фпс падает в разы, а потом ещё вдвое - с 20 до 40-50, ещё в десятки/сотни раз... Очень похоже на баг. Но  всё же пока надеюсь на свою рукожопость и на то, что кто-то делал, и придёт-расскажет как надо сделать что бы не лагало )))

> Может там геометрия динамичная и она все время обновляет данные на видеокарте?
std::cin, это как же их надо обновлять, что бы залипать на несколько минут? ))) Фиг знает, может )))

std::cinУчастникwww6 ноя. 20174:23#6
slava_mib ну тогда смотри исходники.
redboxПостоялецwww6 ноя. 201710:57#7
ну как то я особо не видел чтобы подобные реализации кто то юзал. сплайны это ж по сути деформация по WPO. а если еще они у вас раскачиваются на ветру по WPO, то это какое то дикое умножение деформаций на деформации...
Юзайте лучше просто инстансинг с готовыми модельками расстений.

кстати там же еще учет коллизии сильно влияет на перформанс.

ну и как вариант запостите вопрос на ансверхаб, может кто то с подобным сталкивался.
вот тут уже кто то обсуждал.
https://forums.unrealengine.com/unreal-engine/feedback-for-epic/4… ine-component

slava_mibМодераторwww6 ноя. 201712:53#8
> а если еще они у вас раскачиваются на ветру по WPO, то это какое то дикое умножение деформаций на деформации...
redbox, всё статическое.

> Юзайте лучше просто инстансинг с готовыми модельками расстений.
redbox, тоже не то - хочу рукожопно программерс-асрт ))

redboxПостоялецwww6 ноя. 201713:19#9
понятно ))
Sh.Tac.Постоялецwww6 ноя. 201722:13#10
slava_mib
> программерс-асрт
одно другому не мешает, из готовых мешей можно блюпринтом нагенерить в instanced всякого

Правка: 6 ноя. 2017 22:13

slava_mibМодераторwww6 ноя. 201723:06#11
> одно другому не мешает, из готовых мешей можно блюпринтом нагенерить в instanced всякого
Sh.Tac., да это-то понятно. Но в данном кокнертном случае - меня интересует конкретная проблма (понять, это баг или что, и можно ли этот баг как-то пофиксить, не обходя его).
Т.е. у меня не стоит задача заставить работать именно эти деревья (тем боле, как я уже написла выше -0 я сделал на мешах и всё просто летает), мне хочется именно понять что за глюки )))
Sh.Tac.Постоялецwww7 ноя. 20170:00#12
скорее всего баг потому что процедурка добавляется энтузиастами в основном, хотя вот сейчас сделал блейм, сам SplineMesh не нашёл, это походу откуда-то из LightMass а вот в SplineMeshComponent отметился сам Tim Sweeney, его и пытай : )

Правка: 7 ноя. 2017 0:00

MrShoorУчастникwww7 ноя. 20171:06#13
slava_mib
В UE чтоль нет профайлинга?
slava_mibМодераторwww8 ноя. 20178:40#14
> В UE чтоль нет профайлинга?
MrShoor, насколько я понял, именно для блюпринтов - нет. На каком-то из форумов натнулся на их совет "у нас сделано что бы не больше 1 млн тиков проходило в блюпринте, иначе он падает, можете ориентроваться на это" xD

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

Ну и фиг знает, не будет ли оно на мделенных компах вылетать даже на 1ом дереве ))) На моём-то i7 может за миллион их "тиков" (даже хз что это) много что сделаться, а на каком-нибудь i3 или вообще селероне - не знаю что будет...

Страницы: 1 2 Следующая

/ Форум / Unreal Engine 4 Community

2001—2017 © GameDev.ru — Разработка игр