Привет!
Продолжим начатое и будем разбирать частые просчеты при создании моделей для игр.
Часть 1
Часть 2
Поговорим об еще одном способе оптимизировать нашу модель. И в этом нам снова поможет наш добрый друг - цилиндр. Вот и он:
Этот цилиндр имеет 32 грани. Причем, на верхней и нижней его частях количество граней одинаково. Это связано с тем, что радиус "крышек" одинаков, а значит, разница в количестве граней бросится игроку в глаза. Так что, текущее его состояние оптимально. Но что, если верхняя его часть будет меньшего размера чем основание?
В этом случае одинаковое число граней на обеих "крышках" будет неоправданно. Почему? Во-первых, одинаковое число граней приведет к "бросанию в глаза". Меньшее расстояние между точками на верхней части создаст иллюзию более "круглого" круга. И на его фоне менее круглый нижний круг покажется слишком низкополигональным. Во-вторых, если форма выглядит достаточно круглой с нужного нам расстояния, то и незачем там находиться лишним полигонам. *слишком круглый абзац - удалить :)*
Если постараться обобщить и не вдаваться в крайности, редкие случаи и тому подобное, то мысль должна звучать так: Чем меньше объект, тем меньше на нем должно быть полигонов. Это же касается и элементов одного объекта. Если, к примеру, радиус одной окружности в рамках объекта меньше другой, то и количество граней у этой окружности должно быть меньше. Так говорил Заратустра.
Теперь посмотрим на примеры подобного типа оптимизации.
1. Внутренние окружности:
Как мы видим, внутренняя стенка "стакана" имеет меньшее количество граней, чем внешняя. При этом, внутреннее дно урезано еще больше. Это обосновано тем, что дно будет находиться дальше от глаз игрока. Да и увидеть его вряд ли получится. Ибо внутри все, скорее всего, будет затенено.
2. Перекрытые объекты:
В этом случае верхнее и нижнее кольца цилиндра имеют одинаковый размер, но, при этом, верх имеет меньшее число граней. Связано это с тем, что куб в игре перекроет верх цилиндра, и, если главный герой игры не может ползать, то эту часть он никогда и не увидит. А вот нижнюю, стоящую на земле - вполне. Таким образом, мы экономим на тех местах, которые игрок не увидит.
3. Кольца, трубы и т.п.
В данном случае мы видим, что можно экономить еще и тогда, когда игроку будет сложно определить форму объекта. Внутренняя часть кольца мало того, что имеет меньшее количество граней, так еще и сечение трубы не является равномерным. А все потому, что игрок никак не сможет определить степень округлости сечения, если не видит само сечение как в нашем случае. А после запекания нормали и тем более не сможет.
Есть еще множество примеров подобного усечения полигонажа, но общий принцип во всех схож. Меньше размер = меньше полигонаж.
В следующем посте поговорим про правильную топологию и оптимизацию сферических объектов.
Оставайтесь на связи 🙂