ПрограммированиеФорум2D графика и изометрия

Выделение секторов на тайловой карте

#0
12:03, 6 ноя 2013

Есть тайловая карта.

В отдельном файле цветами мир поделен на сектора.

часть:
Изображение


Могу нарисовать границу строго по тайлам, но это будет не красиво.

Поэтому хочется чтобы граница была как то так:
Изображение


Также должна быть возможность выделения сектора с его подсветкой.
допустим это будет реализовано через отдельную текстуру x и y в которой будут определять цвет сектора на карте секторов, а цвет тот цвет в который надо его раскрасить.

Но как при такой реализации правильно закрасить половины тайлов с диагональной границей?
Может есть более удобный путь?

#1
15:43, 6 ноя 2013

Посмотри тут Тайлинг ландшафтов
и рисуй границу в зависимости от типов соседних тайлов.

#2
16:12, 6 ноя 2013

не, мне нужно не переходные тайлы, это все есть и работает.

нужно именно выделение секторов делящих некоторые тайлы пополам.

да, это все должно быть через шейдер...

#3
16:32, 6 ноя 2013

треугольниками рисуй - любые формы, любая детализация
выделение сектора - определяешь в каком треугольнике координаты мыши
подсветка тоже - можно определить ребра, которые принадлежат границе

можешь заранее нарисованные текстуры выводить со 'странами', в альфа канале или в другой текстуре индекс страны

можно как SnUrik предложил + всякие вариации
анализировать соседей и накладывать поверх 'декоративные' границы/переходы между 2-я средами

#4
16:55, 6 ноя 2013

_Wizard_, не совсем понимаю...

есть огромный мир 2048*4096 тайлов, который рисуется шейдером

рисовать 16 000 000 треугольников только для карты (2D) не очень хочется.

#5
17:51, 6 ноя 2013

рисуй не переходный тайл, а границу, типо если  3 соседних тайла такого же типа как рассматриваемый - рисуешь диагонально разделенный тайл, если все соседние тайлы другого типа - рисуешь, к примеру, круг и т.д.

Leopard257
> _Wizard_, не совсем понимаю...
> есть огромный мир 2048*4096 тайлов, который рисуется шейдером
> рисовать 16 000 000 треугольников только для карты (2D) не очень хочется.
так он у тебя весь сразу виден и рисуется одним куском о_О?
тогда юзай сглаживание при выводе;
или отдельно храни многоугольники территорий и выводи поверх.

#6
18:47, 6 ноя 2013

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

секторов около 20000 на карте

#7
18:53, 6 ноя 2013

Leopard257
у тебя треугольник не обязательно должен занимать 1 ячейку - тебе надо отрисовать области, вот и рисуй произвольный 2д/3д меш с нужной детализацией

отрисовывать карту целиком можно еще проще - 1 квад с текстурой мира + несколько детализирующих текстур/слоев/масок смешивания и т.д.

определяем над какой областью находимся аналитически - проверяешь на попадание в определенные треугольник + вякие оптимизации с quad деревьями
для подсветки границы можно заранее найти список внешних ребер

ПрограммированиеФорум2D графика и изометрия

Тема в архиве.