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

Вниз

Collision check -> Sphere vs World -> Реализация   Найти похожие ветки 

 
Кефир87   (2005-06-10 00:37) [0]

Я пораскинул мОзгами и понял что этот метод проверки столкновений действительно очень удобен. Но вот когда дело дошло до реализации я потерялся... Вот у меня структура мира такая... Условно говоря мир состоит из фейсов заданных 4мя координатами (прямоугольник), нормалью (для освещения и для СС) и еще кое что есть что не важно... Например:


Vector = record
 nx,ny,nz:glfloat;
end;

Coord = record
 x,y,z:glfloat;
end;

Face = record
 c1     : Coord;
 c2     : Coord;
 c3     : Coord;
 c4     : Coord;
 normal : Vector;
end;

Sphere = record
 pos : Coord;
 rad : GlFloat;
end;


Ну и собственно сфера задана позицией PGLFloat и радиусом...
В подробности организайии цикла не вникаем... Там у меня списки сфер и фейсов... Для каждой сферы нужно проверять столкновения (условно говоря) для всех фесов...
Сама проверка...
w : Face - текущий фейс
s : Sphere - текущая сфера...
Вот тут то я и теряюсь... Все понимаю а сказать не могу...
Если сравнивать расстояние от вершин до центра сферы с радиусом то если вершины расположенны далеко друг от друга сфера свободно продет сквозь фейс...

Надеюсь вопрос ясен...

Код что я привел условный... Все гораздо сложнее. Но это для примера...


 
Zer0 ©   (2005-06-10 00:58) [1]

"3D Object Intersection
This page gives a grid of intersection routines for various popular objects, pointing to resources in books and on the web."
[ http://www.realtimerendering.com/int/ ]
код на сях [ http://www.acm.org/jgt/papers/KarabassiEtAl99/collision.html ] откуда можно понять суть алгоритма


 
grouzd[E]v ©   (2005-06-10 00:59) [2]

Уфф.. Сам начал коллизии писать, причем также, но у меня проще - сферы со сферами (пока), а так советую посмотреть урок от NeHe. А вообще-то здесь нужна стереометрия, а мы ее только начали =((


 
Zer0 ©   (2005-06-10 01:05) [3]

совсем забыл! фунцыя называетсо SphereTriangleIntersectionTest.

зы в этом файлике есть много полезных алгоритмов.


 
XProger ©   (2005-06-10 01:24) [4]

Кефир87, как-то делал в своё время в XEngine. Сам себя проклинал за то что выбрал четырёхуголные полигоны :)
http://XProger.narod.ru/XEngine_Source.rar - исходник
http://XProger.narod.ru/Files/XEngine_v0.15.rar - сама игра

Сам исходный код большей части математики был скомунизден с одного С++ примерчика :)


 
Darthman ©   (2005-06-10 13:04) [5]

Сфера со сферой это ж просто :) расстояние меньше суммы радиусов. Сам делал. Никаких проблем не втретил.


 
grouzd[E]v ©   (2005-06-10 13:07) [6]

TO Darth : Да я знаю, что просто, я это сделал, а теперь пробую столкнуть  сферу с полигоном


 
Кефир87   (2005-06-10 14:41) [7]


> Сам себя проклинал за то что выбрал четырёхуголные полигоны
> :)

А я вот не понимаю почему? У меня на самом деле фейсы рисуются 4мя, двуми треугольниками или одним квадом в зависимости от оддаленности... Но я думаю дело в освещении?


 
XProger ©   (2005-06-10 15:30) [8]

Проклинал когда конвертировал модели уровней созданные в 3ds MAX в свои 4-угольники.
1) Кривые нормали (т.е. там в конверторе приходилось ставить кучу условий)
2) Плоскость строится по 3 точкам! А 4 точки не всегда в одной плоскости лежат...


 
Кефир87   (2005-06-21 22:52) [9]

Помоему из этого:

> Плоскость строится по 3 точкам! А 4 точки не всегда в одной
> плоскости лежат...

Следует это:

> Кривые нормали

Я это прекрасно понимаю. Но стену-то удобнее описать (именно описать) четырехугольником...

Я тут сделал некое убогое подобие проверки столкновений для стен которые лежат только вдоль какой-либо из осей координат... Дальше париться не захотелось. Потом как-нибудь.


 
ViK ©   (2005-06-21 23:34) [10]

Посмотри здесь
http://gdlinks.hut.ru/cdfaq/
очень хорошая статья про столкновение всего со всем, в том числе и про сферу с плоскостью.



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

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

Наверх




Память: 0.49 MB
Время: 0.038 c
14-1129225940
partizan
2005-10-13 21:52
2005.11.06
Векторно-матричный метод решение СЛАР


1-1129547919
WondeRu
2005-10-17 15:18
2005.11.06
ActiveX Form by GUID?


1-1129516871
MrFix
2005-10-17 06:41
2005.11.06
Работа с Word из Delphi


14-1129187760
TButton
2005-10-13 11:16
2005.11.06
Я вспомнил!!!


11-1110873009
hotes
2005-03-15 10:50
2005.11.06
Вопрос по KolOGL12