Войти
ПрограммированиеФорумОбщее

Сортировка в изометрии

#0
(Правка: 19:04) 19:02, 10 сен. 2020

Добрый день!
Подскажите, какой алгоритм лучше подходит для этой задачи. Объекты цельные, не разбитые на тайлы.
https://prnt.sc/uf11jl

Алгоритм https://shaunlebron.github.io/IsometricBlocks имеет проблему в случае пересечения объёмов. Это частый случай.
https://prnt.sc/uf13mq

Ещё натыкался на https://www.youtube.com/watch?v=yRZlVrinw9I, но пока не углублялся в детали.
Выглядит вроде нормально, может кто-то ломал уже голову?
https://prnt.sc/uf18d4


#1
20:25, 10 сен. 2020

Может пригодится:
https://gamedev.ru/code/forum/?id=226930
https://habr.com/ru/post/269653/

#2
1:33, 11 сен. 2020

В общем случае корректно отсортировать объекты в изометрии невозможно. Можно только для частных случаев (например, все объекты занимают на сетке строго квадратные места).

#3
11:52, 11 сен. 2020

FordPerfect
Спасибо,читал, решения основаны на https://shaunlebron.github.io/IsometricBlocks.

Sbtrn. Devil
Печалька...

А в стратегиях вроде Age Of Empires 2 тоже отталкиваются от коробок? Для каждого персонажа есть некий объём? Кто-нибудь в курсе?

#4
(Правка: 13:09) 13:08, 11 сен. 2020

Sbtrn. Devil
> В общем случае корректно отсортировать объекты в изометрии невозможно. Можно
> только для частных случаев (например, все объекты занимают на сетке строго
> квадратные места).
почему? для любых прямоугольных зданий отлично все сортируется, если начинаются всякие угловые, ввиде букв Г или П - то там - да, универсальная сортировка невозможна

#5
16:03, 11 сен. 2020

Да, для общего случая с пересечениями вряд ли получится:) Тоже бы хотел выход найти.

#6
(Правка: 21:51) 20:51, 11 сен. 2020

Рисуйте в обратном порядке , то что больше минимальной ячейки, разбивайте на меньшие.

#7
0:22, 12 сен. 2020

leonardo98
> почему? для любых прямоугольных зданий отлично все сортируется,

+ Вообще, контрпример для изометрии -

Но если все стоят на земле в прямоугольной сетке и занимают непересекающиеся прямоугольники - да, похоже, тогда можно. Хотя и не совсем тривиально - в общем случае это будет построение BSP-дерева.

#8
3:02, 12 сен. 2020

универсальный способ это хранить вместе с цветом, альфой еще и информацию о глубине. Не обязательно даже слишком точную если спрайты рисуются изначально вручную, можно в 3d редакторе сделать грубую болванку покрывающую спрайт и взять глубину из нее, отсекая лишнее по альфе.

#9
14:24, 12 сен. 2020

Sbtrn. Devil
На картинке явно не здания) хоть и прямоугольные

#10
14:45, 12 сен. 2020


А как насчет решения, которое было реализовано в Infinity engine..?

И ещё вдобавок... можно же на спрайте оставить информацию об отрезках, по которым он будет сортироваться...

#11
15:27, 13 сен. 2020

mingw
Где можно ознакомиться с решением? Нашёл открытый порт gemrb, но нет времени перебирать исходники.

С отрезками интереснее, это что-то ближе к https://www.youtube.com/watch?v=yRZlVrinw9I, только там точка и отрезки. Может где-то проскальзывала статья?

ПрограммированиеФорумОбщее