В общем, о LOD я впервые задумался, когда в моём проекте количество объектов перевалило за несколько сотен, а FPS начало резко падать из-за дальности прорисовки. Сначала были попытки с дальностью прорисовки, битмапингом, FOG и просто уменьшением колличества объектов. Конечно многое из этого помогло, но сцена перестала выглядеть эффектно, пропал весь антураж и картинка превратилась в "чёрно-белую пародию на Аватар". Позже я оставил идею оптимизации до лучших времён, когда проект будет хотя бы готов на несколько десятков процентов. Но настало лето. Времени у меня появилось достаточно для того чтобы осмыслить жизнь, заняться спортом, придумать что-то оригинальное и просто поваляться на диване, размышляя об том как я всё это буду делать. И вот оно, прозрение, кажется что-то гениальное пришло в мою голову. И этим гениальным была идея осуществления моего плана по оптимизации проекта. О этот сладкий вкус осознания того что ты придумал нечто новое, и о горечь осознания рельности. Позже, пораскинув мозгами я понял, что идея по сути не так и гениальна, и стать новым гением от игровой индустрии у меня нет и шанса, ведь то что я придумал, скорее всего уже придумал кто-то другой, и я просто не натыкался на это. И вот, господа игроделы, настало время всё разложить по префабам, и раскрыть вам мой гениальный замысел: Идея такова, написать скрипт который делит всю сцену на пять групп - важные объекты, чуть менее важные объекты, середнячки, тоже требуется, грузиться в последнюю очередь. Далее скрипт вешается на пустой объект во все пять групп распледеляются объекты и весь замысел в том что каждая группа имеет свои параметры прорисовки. Например первая группа прогружается сразу и целиком, вторая чуть меньше и тд. А теперь вопросы: 1. Можно ли такое реализовать через скрипт? 2. Может быть уже есть готовый пример такого LOD?
Делить модели на группы по важности нет смысла. Нужно делать несколько версий моделей, разного качества. Каждая из версий отличается детализацией геометрии, качеством текстур и применяемыми шейдерами. Первый уровень LOD с максимальным качеством модели, отображается скриптом игроку с близкого расстояния, до 5..10м. Второй уровень детализации, отображаемый игроку примерно с 5..10м до 20...30м. Менее детализированная геометрия, хуже качество текстур, попроще шейдер в виде обычного Diffuse. Но при этом качество отображаемой картинки на экране не должно заметно отличаться от первого уровня LOD Третий уровень делается в самом худшем качестве и отображается игроку на расстоянии от 20...30м. Количество поликов по сравнению с первым уровнем должно быть раз в 100 меньше, разрешение текстур минимально возможное. На все это добро вешается скрипт LOD-а, который автоматически подгружает нужный из префабов, в зависимости от того, насколько далеко находится игрок от объекта.
Quote (Chel-Game)
2. Может быть уже есть готовый пример такого LOD?
ProektEK выкладывал систему LOD для Unity3D. Возможно, понадобится обновить скрипт под последнюю версию движка. Поиск | Правила | Новые сообщения
когда в моём проекте количество объектов перевалило за несколько сотен, а FPS начало резко падать из-за дальности прорисовки.
Cдаеться мне други мои, что лод тут абсолютно не виновен и не при деле. Юня, *слава юнитекам* спокойно может схавать 3 000 000 поликов на средних машинах... FPS у тебя падает судя по всему из за неправильной организации материалов и их кол-ва. А раз ты не указал в своем анализе производительности кол-во drawCalls, осмелюсь предположить что ты вообще про них не в курсе.
Что касательно идеи такого построения ЛОДов, зачем изобретать кривой велосипед, если уже существуют ровные? X.cor.R (Prologue)
Дело в том, что в сцене очень большое колличество деревьев, поскольку действие происходит в лесу, все модели хорошего качества и если не снизить колличество объектов или понизить дальность прорисовки то получается не очень красивый вид.
в сцене очень большое колличество деревьев, поскольку действие происходит в лесу, все модели хорошего качества
Это ни о чем не говорит... для того чтоб исправить проблему нужно сделать правильный анализ, выяснить причину (поставить верный диагноз). Для этого нужны точные исходные данные. Сколько деревьев? Сколько трисов в каждом дереве? Сколько материалов? При грамотном построении сцены легко можно поставить 1000000 деревьев, иметь при этом всего 10 drawCalls и FPS равный 2000 (и это без ЛОДов). А при неграмотном 100 деревьями повесить комп насмерть... и никакие ЛОДы тут не помогут. X.cor.R (Prologue)