Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Collision в 3D   Найти похожие ветки 

 
AxxxE   (2003-11-29 19:28) [0]

Вощем, дело поставлено так: есть мапа в виде набора полигонов, всяких - наклонных, горизонтальных и вертикальных. Нуна отслеживать столкновение некоего обжекта со сферическим bounding box"ом (извините за выражение, но, надеюсь, смысл понятен =) ). Легче (и для меня, и для компа =) ) сделать так: каждый раз проверять пересечения вектора скорости обжекта с этими полигонами. Но как это сделать (подкиньте хоть статью)?


 
марсианин   (2003-11-30 13:04) [1]

начинай с простого: научись находить пересечение линии траектории - пусть это будет прямая (ты это понимал под вектором скорости??) с 1 полигоном.. скажем треугольником в 3D.

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

вообще это гемор, конечно.. статьи  посмотри на gamedev.ru - там чего-то было о пересечениях..

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


 
AxxxE   (2003-11-30 16:21) [2]

Если прямая (она же вектор, в данном случае разницы нет) пересекается с полигоном, то сфера перемещается на поверхность полигона, а направление вектора скорости корректируется. Таким образом, сфера "катится" по поверхности. А карта не плоская совершенно, то бишь, неизвестно что считать за низ: шар - главный герой - катается и по "полу", и по "стенам", и по "потолку" одинаково.


 
марсианин   (2003-12-01 23:21) [3]

умеешь находить пересечение линии с треугольником в 3D?


 
AxxxE   (2003-12-03 15:08) [4]

Я этого и прошу =).


 
марсианин   (2003-12-04 20:37) [5]

1. проводишь плоскость ч-з треугольник, получаешь ее уравнение

2. находишь пресечение прямой с этой плоскостью, получаешь точку.

3. проецируем все это хозяйство на плоскость.. т.е переходим к задаче 2D. можно проецировать на плоскость треугольника.. так можно, но это не круто..
я думаю проще проецировать на плоскости XY, YZ or XZ на выбор..
выбор по принципу, так чтоб плоскость треугольника не была перпндикулярна выбранной.. спроецировать скажем на XY - это значит просто выкинуть Z..

4.теперь у нас есть 2Д координаты 3-х точек треугольника на плоскости, и точки пересечения прямой.. ну и проверяешь лежит ли эта точка внутри треугольника..



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
1-1079711005
Cosinus
2004-03-19 18:43
2004.04.11
Меню для иконки в трее


14-1082469169
Monte_Cristo
2004-04-20 17:52
2004.04.11
Оптимизатор Delphi


1-1082707727
serg128
2004-04-23 12:08
2004.04.11
Как связать TExcelWorkBook с объектом xApp = GetActiveObject(xl);


1-1082476978
jiuraf
2004-04-20 20:02
2004.04.11
Как скопироватьсодержимое RichEdit1 В RichEdit2?


6-1075464303
Гвость
2004-01-30 15:05
2004.04.11
Компонент NMPOP3