Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

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

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

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


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

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


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

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

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

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

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


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

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

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

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

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


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

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


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

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


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

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


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

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


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

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


 
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-х точек треугольника на плоскости, и точки пересечения прямой.. ну и проверяешь лежит ли эта точка внутри треугольника..


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

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

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

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

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



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

Форум: "Игры";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.04 c
4-1079255619
Tack83
2004-03-14 12:13
2004.05.09
CheckBox - крестиком


1-1082466625
ss300
2004-04-20 17:10
2004.05.09
Переход от одного поля на другое нажатием на Enter


8-1076677977
Grinder
2004-02-13 16:12
2004.05.09
mp3 in program


1-1082408571
Mishenka
2004-04-20 01:02
2004.05.09
Диалог для даты и времени


14-1082376034
Alex*
2004-04-19 16:00
2004.05.09
Глюк INDY или в моей версии Delphi чего-то не хватает





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский