Как визуализировать BSP-дерево без разделения

У меня есть BSP-дерево для сортировки по глубине в изометрической игре (я перепробовал бессчетное количество других методов) оно вроде близко, но в моей игре я не могу разделить ассеты. Итак, элементы, которые перехватывают текущую плоскость, я просто добавляю их как в узлы «позади», так и «вперед» (как предложено в http://www.seas.upenn.edu/~cis568/presentations/bsp-techniques.pdf).

Когда я перемещаюсь по дереву (от самой низкой глубины к самой высокой), я визуализирую спрайт только один раз (при первом приближении к нему), но это, кажется, помещает некоторые спрайты слишком низко в порядке отображения.

Мы будем очень признательны за любое понимание этого. Это (в основном) C для iOS, кстати.

Заранее спасибо (и я пытаюсь ответить на некоторые вопросы здесь, но вы чертовски быстры!).


person ICanChange    schedule 08.08.2012    source источник


Ответы (1)


Я не думаю, что дерево BSP поможет вам разобраться с (буквальными) проблемами сортировки спрайтов, распространенными при рендеринге изометрических тайлов. Особенно, если у вас есть арки, такие как двери, всегда будет точка, где персонаж просто появляется под/над аркой. Деревья BSP помогают быстро сортировать видимые области в трехмерном мире, но изометрическая карта представляет собой двухмерное многослойное представление, в котором другие эффекты, такие как размер отдельных изображений плитки, играют более важную роль, чем положение в пространстве.

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

Альтернативой является добавление блокировки, чтобы игрок и другие объекты никогда не могли подойти слишком близко к областям, где рендеринг спрайтов обычно не работает из-за проблем с сортировкой. Но это работает только в том случае, если оно встроено с самого начала (размер тайлов, размер мировых коллизий).

person LearnCocos2D    schedule 08.08.2012
comment
Большое спасибо за вашу помощь, к счастью, у меня нет предметов, которые требуют прохождения объекта под ними. Многие из моих объектов занимают больше, чем 1x1, и я не могу позволить себе роскошь их разбивать. Насколько я понимаю, реальный ответ состоит в том, чтобы по существу сравнивать все со всем. потому что для решения нет абсолютного уравнения (например, расстояние от начала координат). Казалось, что BSP-дерево было эффективным способом сделать это. По сути, у меня есть куча элементов с сеткой x, y, ширины и высоты, и мне нужно расположить их в обратном порядке (алгоритм художников). БОЛЬШОЕ СПАСИБО! - person ICanChange; 09.08.2012