Есть пиксельная маска(область хотспота) нужно мышкой которая имеет радиус клика - выбрать этот предмет,
как лучше всего сделать эту проверку? а то брутфорсом чтото не хочется :)
Для пиксельной маски иметь bouding box. Сначала проверять по нему, если попал то проверить по пиксельной маске.
HOG?
>радиус клика
Это что за радиус такой?
>выбрать этот предмет
Какой еще предмет?
>как лучше всего сделать эту проверку?
Какую проверку?
Из того что ты написал ничего не понятно даже телепатам.
VIP_Artemka
HOG
BB это оптимизация - а вот сама проверка?
когда у меня поинт - то тут проблем вообще нет.
а вот когда у меня круг - то мне что для каждой точки круга проверять? (брутфорс)
IROV..
все просто, надо маску объектов заранее нарастить на радиус круга :)
IROV..
>а вот когда у меня круг - то мне что для каждой точки круга проверять? (брутфорс)
Это то есть каждую точку с круга проверять с массивом точек маски?
А если делать копию маски, в нее по этой же маске рендерить круг и сверять первую маску со второй?
В случае, если ты собираешься тыкать указателем мыши сложной формы по не менее простой геометрии несколько миллионов раз в секунду, то можно построить на битовой маске модели и указателя по sparse voxel octree и проецировать их друг на друга, отыскивая коллизии. Также можно эксплойтить временную когерентность, сохраняя ссылки на узлы, которые пересеклись при прошлом клике, это поможет достичь сублогарифмической скорости от размеров маски указателя и модели.
А в случае если тебе надо мышью пикнуть какой-то спрайт, то лучше не парить людям мозг и проверить попиксельно.
Просто сделай саму маску жирнее, как советует LuckyMan.
Suslik +200 )))
BUzer
Насколько жирнее?
Усложняем - радиус может менятся )
Suslik
А если мне нужно отловить, не только клик, но и движение - Over|Out?
IROV..
> Усложняем - радиус может менятся )
Разноцветная (черно - серо - светло-серая) маска.
пиксельную маску хранишь как Distance field, тогда клик мышкой - одно чтение пикселя под курсором и сравнение значения с радиусом клика.
veth
интересный способ - динамики не хватает :)
З.Ы. я уже решил эту проблему, пойже раскажу если никто не предложит этот вариант (там есть динамика)
Тема в архиве.