Главная страница
    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.033 c
6-1079489907
Gym
2004-03-17 05:18
2004.05.09
TIdFTPServer.OnStoreFile


14-1082451097
}|{yk
2004-04-20 12:51
2004.05.09
Посмейтесь над этим форумом :)


3-1081797714
Mishenka
2004-04-12 23:21
2004.05.09
Можно ли определить была ли запись в таблицу?


1-1082042322
Erik
2004-04-15 19:18
2004.05.09
Анализ структуры файла.


14-1081916514
LaidBack
2004-04-14 08:21
2004.05.09
Помогите опознать исполнителя песни:





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский