• 2.5D изометрия, как отсортировать спрайты?

    @MarkusD
    все время мелю чепуху :)
    Самым простым, и самым ненадежным, методом сортировки объектов в изометрии является рядная сортировка.
    При такой сортировке вся локация выводится по вертикальным или горизонтальным рядам сверху-вниз.
    Проблемы с такой сортировкой начинаются буквально сразу же, как только объекты сцены перестают занимать полностью весь тайл.
    Например в Red Alert 2 или Tiberian Sun пехота занимает четверть тайла. При вертикальной или горизонтальной рядной сортировке пехота по бокам тайлов будет накрываться тайлами соседних рядов.
    В тех же RA2 и TS есть очень высокие здания. При горизонтальной рядной сортировке такие здания будут накрываться другими тайлами.

    Более сложным методом сортировки будет топологическая сортировка. Чтобы выполнить эту сортировку, сперва надо построить граф затенения, в которым учитывается высота и положение по оси Z объектов на сцене.
    В изометрии оси координат развернуты таким образом, что их проекции образуют между собой равные углы по 120°. Этот момент показывает сравнительно простой механизм определения затенения.
    Любой объект сцены достаточно описать своим AABB и посчитать пересечения многоугольника проекции этого AABB с такими же многоугольниками проекций AABB других объектов сцены дальше от камеры.
    Получается, что в графе затенения записаны все отношения между объектами сцены, кто кого затеняет. И объекты, которые никого не затеняют, являются первыми в списке вывода на экран. Дальше выводятся те объекты, которые затеняют уже выведенные объекты.

    Больше деталей можно найти в самых разных статьях на приведенную тему. Например: [1], [2], [3].
    Ответ написан
    Комментировать