![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Collision в 3D [Delphi, Windows]
AxxxE © (2003-11-29 19:28:00)Вощем, дело поставлено так: есть мапа в виде набора полигонов, всяких - наклонных, горизонтальных и вертикальных. Нуна отслеживать столкновение некоего обжекта со сферическим bounding box'ом (извините за выражение, но, надеюсь, смысл понятен =) ). Легче (и для меня, и для компа =) ) сделать так: каждый раз проверять пересечения вектора скорости обжекта с этими полигонами. Но как это сделать (подкиньте хоть статью)?
марсианин (2003-12-04 20:37:00) [1]1. проводишь плоскость ч-з треугольник, получаешь ее уравнение
2. находишь пресечение прямой с этой плоскостью, получаешь точку.
3. проецируем все это хозяйство на плоскость.. т.е переходим к задаче 2D. можно проецировать на плоскость треугольника.. так можно, но это не круто..
я думаю проще проецировать на плоскости XY, YZ or XZ на выбор..
выбор по принципу, так чтоб плоскость треугольника не была перпндикулярна выбранной.. спроецировать скажем на XY - это значит просто выкинуть Z..
4.теперь у нас есть 2Д координаты 3-х точек треугольника на плоскости, и точки пересечения прямой.. ну и проверяешь лежит ли эта точка внутри треугольника..
AxxxE (2003-12-03 15:08:00) [2]Я этого и прошу =).
марсианин (2003-12-01 23:21:00) [3]умеешь находить пересечение линии с треугольником в 3D?
AxxxE (2003-11-30 16:21:00) [4]Если прямая (она же вектор, в данном случае разницы нет) пересекается с полигоном, то сфера перемещается на поверхность полигона, а направление вектора скорости корректируется. Таким образом, сфера "катится" по поверхности. А карта не плоская совершенно, то бишь, неизвестно что считать за низ: шар - главный герой - катается и по "полу", и по "стенам", и по "потолку" одинаково.
марсианин (2003-11-30 13:04:00) [5]начинай с простого: научись находить пересечение линии траектории - пусть это будет прямая (ты это понимал под вектором скорости??) с 1 полигоном.. скажем треугольником в 3D.
если у тебя мап плоский боле-менее.. то есть как бы неровная сплошная поверхность, без вертикальных полигонов - задача сильно упрощается: все треугольники можно было бы спроецировать на горизонтальную плоскость, сравнивать высоту точки и высоту мапа под ней..
вообще это гемор, конечно.. статьи посмотри на gamedev.ru - там чего-то было о пересечениях..
мне интерсно, вот ты найдешь пересечение, чего дальше с ним делать? я так понимаю тебе нужно чтоб сфера отскакивала...