Форум: "Игры";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.07 c