Суббота, 18.11.2017, 05:45 На сайте время по Москве
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 6«123456»
Форум » Мастерская/Workshop » Проекты Tuner's Edge/Tuner's Edge Projects » Game Engine Programming by }0RIC)-(
Game Engine Programming by }0RIC)-(
ShadowДата: Среда, 15.08.2012, 12:32 | Сообщение # 11
TE Team Designer
Группа: Модераторы
Сообщений: 1719
Статус: Offline
}0RIC)-(, симулятор резинового шарика работает отлично biggrin
P.S. у меня так и не получилось загнать один в другой. Но выглядит всё боеспособно, так что продолжай cool



 
}0RIC)-(Дата: Среда, 15.08.2012, 19:28 | Сообщение # 12
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
Quote (Shadow)
у меня так и не получилось загнать один в другой

Ну дак яж это учёл))
Продолжаю работать над твердыми телами. Но прежде чем заняться их физикой, нужно придумать штуку, срабатывающую при перекрытии тел.
В книге Д.Конгера описан метод, как по мне дак не очень быстродейственный, объясню суть.

буду работать.


Сообщение отредактировал }0RIC)-( - Среда, 15.08.2012, 19:31
 
ShadowДата: Среда, 15.08.2012, 22:37 | Сообщение # 13
TE Team Designer
Группа: Модераторы
Сообщений: 1719
Статус: Offline
Quote (}0RIC)-()
объясню суть

Удивительно, но я понял. А какие другие есть методы обнаружения коллизии?



 
}0RIC)-(Дата: Четверг, 16.08.2012, 09:59 | Сообщение # 14
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
Quote (Shadow)
А какие другие есть методы обнаружения коллизии?

Вообще это не метод обнаружения коллизии, это крайние меры чтобы не допустить впечатывание на большой скорости одного объекта в другой.
Я тут поразмышлял, и понял что не взял в расчет скорость вращения объектов, ведь они могут быть и не в форме шариков:

Походу придется пользоваться методом описанным в книге...
Либо... только что нашел словосочетание "НЕПРЕРЫВНОЕ ОТСЛЕЖИВАНИЕ СТОЛКНОВЕНИЙ" в описании физ. движка PhysX. Разберемся что это.
В общем это вытягивание объема от старого положения объекта до нового:

За эти промежутки времени программа не обнаружит столкновение, а если вытянуть объем и проверить пересечение с ним:

все прекрасно обнаруживается, но опять же, это для не вращающихся объектов, ведь может произойти и такая ситуация:

в итоге в нужном месте объема вообще не будет, столкновения тем более. Буду думать.


Сообщение отредактировал }0RIC)-( - Четверг, 16.08.2012, 10:50
 
}0RIC)-(Дата: Четверг, 16.08.2012, 11:18 | Сообщение # 15
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
В общем подумав, понял что это вообще немного разное)
Метод в книге - борьба с врезанием одного объекта в другой.
Метод из PhysX - борьба с пролетом одного объекта через другой.
Появилась идея их комбинировать. Суть идеи:
Для каждого объекта помимо коллизии будет своя ограничивающая сфера (не участвующая в столкновениях)
В каждом кадре вытягиваем цилиндр (радиус которого равен радиусу сферы) из старого положения в новое:

При таком раскладе без разницы как повернуты объекты, сфера останется сферой.
Если обнаружено столкновение между такими объемами, выполняем откат объекта в эту точку, а дальше методом из книги проверяем на перекрытие, делим время на 2 и.т.д...
 
ShadowДата: Четверг, 16.08.2012, 11:37 | Сообщение # 16
TE Team Designer
Группа: Модераторы
Сообщений: 1719
Статус: Offline
Интересно, посмотрим, как это будет работать.


 
}0RIC)-(Дата: Четверг, 16.08.2012, 11:59 | Сообщение # 17
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
Shadow, Теперь бы это все реализовать, так лень biggrin
 
alexeyДата: Четверг, 16.08.2012, 12:55 | Сообщение # 18
Генерал-лейтенант
Группа: Пользователи
Сообщений: 710
Статус: Offline
}0RIC)-(, хех, я сначала даже не допер, но потом перечитал второй раз и понял все))) Удачи с реализацией)

 
}0RIC)-(Дата: Пятница, 17.08.2012, 09:09 | Сообщение # 19
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
Ну вот, вывел формулу. Формула по заданным векторам скоростей, заданным положениям объектов, находит промежуток времени, когда объекты двигаясь будут находиться на расстоянии суммы радиусов их ограничивающих сфер. Может я сморозил и ахинею, простым языком: есть 2 прямые, я нахожу точки на этих прямых, находящиеся на определенном расстоянии друг от друга. Ехе-шник прикрепил. Пока отключил физику и оставил только создание объектов, ну и тестовый код, который и находит координаты сфер. замечу только что сферы находятся на одинаковом расстоянии друг от друга. Попробую прикрутить эту формулу для материальных точек. а пока смотрим ехе:
Прикрепления: 3159567.rar(75Kb)


Сообщение отредактировал }0RIC)-( - Пятница, 17.08.2012, 09:14
 
}0RIC)-(Дата: Пятница, 17.08.2012, 09:57 | Сообщение # 20
=\Good-Racer/=
Группа: Tuner's Edge
Сообщений: 921
Статус: Offline
Немного о формуле, может кому пригодится:
есть 2 параметрических луча, с параметром t (время)

A = a*t+P1 // a - вектор, направление луча. P1- координаты начальной точки луча.
B = b*t+P2 // b - вектор, направление луча. P2- координаты начальной точки луча.



И есть радиусы сфер R1 и R2.

Нам нужно найти параметр t, где координаты этих лучей находятся на расстоянии (R1 + R2):


Вот формулы:
1)Находим вектор F = a - b (векторы a и b задают направление, поэтому отложены от начала координат)
2)Находим вектор Q = P2 - P1

3)Считаем коэффициенты a, b, c, для решения квадратного уравнения:
a = F.x*F.x + F.y*F.y + F.z*F.z // Квадрат длинны вектора F
b = F.x*Q.x + F.y*Q.y + F.z*Q.z // Проекция вектора F на Q
c = Q.x*Q.x + Q.y*Q.y + Q.z*Q.z - (R1+R2)*(R1+R2) // Квадрат длинны вектора Q минус квадрат суммы радиусов

А дальше находим 2 параметра:
t1 = (-b + sqrt(b*b - a*c))/a
t2 = (-b - sqrt(b*b - a*c))/a

Меньший параметр - то что нам нужно. Чтобы найти координаты сфер, нужно подставить меньший t в параметрические уравнения лучей.
 
Форум » Мастерская/Workshop » Проекты Tuner's Edge/Tuner's Edge Projects » Game Engine Programming by }0RIC)-(
Страница 2 из 6«123456»
Поиск:


Эксклюзивные моды для San Andreas и NFS © Все права защищены. Дизайн данного сайта Полностью Принадлежит Администратору Сайта Эксклюзивные  моды для San Andreas и NFS 2017 | Сайт оптимизирован под браузер Opera ,Firefox. Sitemap | Sitemap-forum.
Дизайн данного сайта полностью принадлежит администратору сайта.