Войти
ПрограммированиеФорумФизика

Коллизия по альфе?

#0
10:54, 4 окт. 2006

Собстно, как сделать коллизию в 2д по альфа-каналу?

Кхм..надеюсь ясно выразился :)


#1
11:57, 4 окт. 2006

>Кхм..надеюсь ясно выразился :)

Нет:)

Напиши какой граф API используешь или какой движок.

#2
23:01, 4 окт. 2006

Vitorio
OGL юзаю.

Идея простая - если у меня есть альфа-канал, а коллижн по поликонам, то оно при коллиде выглядит мягко-говоря не очень..

#3
0:23, 5 окт. 2006

V0id
Все равно не ясно... Чего ты от альфы добиваешся?

#4
1:21, 5 окт. 2006

Breezy
Получается что-то типа попиксельных коллизий, если это можно так назвать.

#5
9:01, 5 окт. 2006

FreemaN
Это конечно замечательно... ночто потом с этой попиксельной колизией делать?

#6
9:54, 5 окт. 2006

Breezy
Хм..как-бы это обьяснить..

Ну смотри, есть текстура машинки с альфой..так? Создаем полигон (2д - квад), и накладываем на него эту текстуру. Када машинка ездит по трассе, то из-за альфы мы видим трассу (там где в текстуре в альфа-канале 1,1,1)..так? Все типа круто, но когда начинаем коллидиться, то коллизии мы считаем по полигонам..а так как машинка - это не весь полигон, то когда мы бьемся вершиной полигона об что-то, то смотриться как будто машинка ударилась чем-то невидимым...
Вот и нужно делать коллизию по альфе..Или подгонять конкретный полигон под альфу, что имхо бред..

#7
10:22, 5 окт. 2006

Вот тут немного обсуждалась тема http://www.gamedev.ru/code/forum/?id=49940

#8
11:10, 5 окт. 2006

V0id
Делать по полигонам помойму меньший бред чем по альфе, как ты собираешся получить значения и места столкновений?

#9
11:37, 5 окт. 2006

V0id
Забей, лучше сделай полигональную форму машинки специально для коллижена (какой-нибудь многоугольник).

#10
0:03, 6 окт. 2006

Костян
Ценх! Нашел кое-что интерестное, типа маски..нуна будет думать :)

Breezy
Так вот я и спрашиваю - как? :)

BUzer
У меня 2Д..гонки..и это вот для каждой машинки полигончик как-то вырисовывать? Да еще и непонятно где его рисовать - делать какие-то загрузчики меша, когда для создания машинки мне нужна всего лишь только ее текстурка..

#11
8:28, 6 окт. 2006

V0id
>Так вот я и спрашиваю - как?
Костян вроде ссылку доходчивую прислал. Как? Сравнить участок пикселей с экрана(их еще добыть отудова надо)
Так вот, этот способ применим только на один экран(вне экрана считать уже не по приколу...). Помойму прорще будет определить контур у машинки(линии), и втупую проверить пересечение 2-х контуров...

#12
10:57, 6 окт. 2006

Breezy, причём тут экран? Всё делается в памяти. Вообще можно для этого аппаратное ускорение заюзать - отвести специальный рендер таргет для проверки колижна. Если ректы двух спрайтов пересеклись, то рендерить их маски в один проход, установив их в разные сэмплеры с MODULATE смешиванием, потом делаем occlusion query, если хоть один пиксель отрендерился, значит есть столкновение. Должно быть довольно быстро. Это в общих чертах конечно, и я это не реализовывал, но афтару флаг в руки - ему надо пусть пробует реализовать ;)

ПрограммированиеФорумФизика

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