Collision Detection

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Collision Detection

Сообщение Gemini » 29.01.2009 (Чт) 16:35

Есть у кого нибудь понятные примеры коллизий?
В основном интересуют коллизии отрезок-отрезок (линия-линия), Линия - круг...

В нэте много написано но всё просто на словах и по английски... Короче непонятно...

Ещё интересно как реализовать эффект верёвки? (Как правильно привязать одну точку к другой?)

Если есть примеры было бы ООчень замечательно!


Заранее Благодарен!
В нашем деле главное ЛОГИКА.

косил косой косой косой.

StimorolD3DX
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 293
Зарегистрирован: 03.04.2007 (Вт) 18:19
Откуда: Kiev city

Re: Collision Detection

Сообщение StimorolD3DX » 30.01.2009 (Пт) 9:58

PhysX в руки и фпирёд!

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 30.01.2009 (Пт) 16:05

Спасибо, но физических двигов мне не надо.... Ручками хочу.
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Collision Detection

Сообщение Debugger » 30.01.2009 (Пт) 21:59

ИМХО, столкновения линия-линия и подобные кушают много ресурсов. Всмысле не сами они, а просто эта функция будет вызываться много раз. Используй столкновения сфера-сфера, параллелепипед - паралеллепипед и другие. То есть, которые попроще и более обобщенные.
Ну а если уж на то пошло, посмотри viewtopic.php?f=15&t=36567 - золотые топики. Оттуда в viewtopic.php?t=34491&p=6677242.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 31.01.2009 (Сб) 17:23

Пример верёвки... Но там что то не правильно... Не могу понять что?
(Работает она не реалистично...)
У вас нет доступа для просмотра вложений в этом сообщении.
В нашем деле главное ЛОГИКА.

косил косой косой косой.

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Real Collision Detection

Сообщение DODge » 31.01.2009 (Сб) 23:37

ЖЕСТЬ!!!
Всегда удивлялся, какой надо иметь склад ума, чтобы написать такое (я имею ввиду последний пример от Gemini)
Это ж надо, написать столько кода, и всё сплошь "вода" и лишние вычисления...
Теперь посмотрите мой пример (размер всего 3 Кб), написаный аж лет 7 (!) назад, ещё на QBasic 7.1, когда заняться было нечем (кстати, как вы можете уже заметить - портированный на VB6). Скажу сразу, код, относящийся непосредственно к физике, состоит всего из 15 строчек по одному оператору на каждую (включая коллизии). Естесственно, там учитываются такие вещи как momentum, gravity и friction. Сама нить состоит из 300 элементов (линий), управление на доп-клавиатуре: 4 & 6 - "ветер", 2 & 8 - "гравитация", 5 - сброс.
Сейчас на основе этого в настоящем проекте реализована физика тел (смешана со скелетной анимацией) и причём с лёгкостью может конкурировать с именитыми имитаторами физики; думаю не стоит повторяться, сколько времени убито на её разработку.
И на последок, добавлю, народ - учитесь, исходный код не выкладываю потому, что такие вещи нужно сделать самим с нуля, чтобы понять принцип взамодействия тел и окружающей среды. Благо, в сети полно документации по данным вопросам! :)
У вас нет доступа для просмотра вложений в этом сообщении.
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 01.02.2009 (Вс) 0:45

Оправдание:
Код такой грамоздкий и уё...ный потому что я его так сказать конвертировал ручками из сишного (Пытаясь полностью сохранить смысл).....
Такие вещи как a=a (при условии что a as Vertex) в Vb не работают....


DODge
И в место того что бы понты колотить (цитирую 'Физика из раздела "Раз плюнуть и просморкаться"' ) помог бы дельным советом!
А то твои слова пока остаюся водой...
В нашем деле главное ЛОГИКА.

косил косой косой косой.

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Re: Collision Detection

Сообщение DODge » 01.02.2009 (Вс) 1:41

Gemini писал(а):в место того что бы понты колотить... твои слова пока остаюся водой...

Так и есть :oops: не спорю - это называется пиар 8)

А по поводу совета, подскажу как было реализовано у меня: обыкновенный перебор всех элементов в нити с нулевого (координаты заданы мышью) по последний, в котором сохранялись относительные расстояния между ними с некой гибкостью (хотя, в принципе, её можно убрать для упрощения), затем каждый элемент перемещался на заданый отрезок расстояния по сравнению с предыдущим элементом.
Даже не знаю как проще можно объяснить, но на деле всё так и есть.
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 01.02.2009 (Вс) 2:12

DODge

Код который используется у меня в примере взят из статьи:
...............................................................................................................................................
Продвинутая физика персонажей
Алгоритмы были разработаны для игры «Hitman: Codename47».

Автор: Thomas Jakobsen(January 21, 2003)
Оригинальная статья может быть найдена на http://www.gamasutra.com/resource_guide ... n_01.shtml
................................................................................................................................................

Там использованы такие функции как:
'Интегрирование Верлета'
'Разрешение нескольких действующих связей при помощи расслабления' (Сцепка частиц)
и т.д.
------------------------------------------

И этот принцип отличается от того что используется у тебя.

Если ты разбираешься в си то..... Помоги правильно перевести код на VB.
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Collision Detection

Сообщение Nord777 » 01.02.2009 (Вс) 10:25

Gemini писал(а):В основном интересуют коллизии отрезок-отрезок (линия-линия),

Алгоритм для нахождения пересечения двух отрезков
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 01.02.2009 (Вс) 13:45

Nord777
Спасибо!
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Collision Detection

Сообщение Mikle » 02.02.2009 (Пн) 11:04

Все верно, нужно начинать с пересечения отрезков, двух сфер, боксов, с реакции коллизии ДВУХ предметов (законы Ньютона), когда придет ПОНИМАНИЕ - постепенно усложнять. А если кто-то переведет тебе с плюсов демку, это вряд ли поможет.
Я как-то делал демку, но не доделал оптимизацию, приделать сюда еще "веревки" особого труда не составит:
У вас нет доступа для просмотра вложений в этом сообщении.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 02.02.2009 (Пн) 15:01

Mikle писал(а):Все верно, нужно начинать с пересечения отрезков, двух сфер, боксов, с реакции коллизии ДВУХ предметов (законы Ньютона), когда придет ПОНИМАНИЕ - постепенно усложнять. А если кто-то переведет тебе с плюсов демку, это вряд ли поможет.
Я как-то делал демку, но не доделал оптимизацию, приделать сюда еще "веревки" особого труда не составит:


Спасибо за демку!

P.S.
Мне просто проще изучать параллельно с кодом...
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 03.02.2009 (Вт) 16:08

Вот своял не большую демку с партиклами (Не совсем хорошо работает):

(Исходник не выкладываю, слишком код сырой и не оптимизированный (стыдно))

Жду критики.
У вас нет доступа для просмотра вложений в этом сообщении.
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Collision Detection

Сообщение Mikle » 04.02.2009 (Ср) 11:36

Какой смысл писать неправильно?
Я не про ошибки, а про то, что равномерное движение вниз, это не физика.
Возражения, типа "потом прикручу инерцию" не принимаются - здесь некуда ее прикручивать, если бы из реальной физики изъять инерцию, тела бы мгновенно падали.
Сделай сначала два шарика, но чтобы они двигались правильно.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 04.02.2009 (Ср) 14:46

Mikle
Ок, учту...
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Re: Collision Detection

Сообщение Nord777 » 04.02.2009 (Ср) 19:45

Gemini Прикольный трансформер :) А в чем заключается общая идея? Для чего задумывалось?
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 05.02.2009 (Чт) 16:54

Nord777 писал(а):Gemini Прикольный трансформер :) А в чем заключается общая идея? Для чего задумывалось?


Увидел игру World of Goo. Сначала подумал что мне никогда до подобного не добраться. А потом пришла мысль а почему бы и нет???
Начал потихоньку смотреть/изучать примеры/статьи про игровую физику, наткнулся на примерчик 'Верёвки' и на основе её замутил тему...
(В примере, физики очень мало, там только гравитация + масса частиц)

Изучать сложно т.к. всё по английски и на C++
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Sneaks
Обычный пользователь
Обычный пользователь
 
Сообщения: 67
Зарегистрирован: 29.07.2006 (Сб) 12:08

Re: Collision Detection

Сообщение Sneaks » 19.02.2009 (Чт) 13:26

вот писал как то, но идея была в создании жесткой кости, но по этому принципу можно и веревку сделать
У вас нет доступа для просмотра вложений в этом сообщении.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 21.02.2009 (Сб) 19:20

Sneaks писал(а):вот писал как то, но идея была в создании жесткой кости, но по этому принципу можно и веревку сделать


Понравилось....

А где же исходники?
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 18.03.2009 (Ср) 13:11

Продолжение темы частиц:

Вот сделал частицы LinkConstraint (Соединение частиц между собой).

Проблема в том, что после двойного соединения частиц связи начинают 'психовать'.
1. Расставляю частицы по кругу
2. Соединяю последовательно
3. Соединяю дополнительно распорками.

При: 2+3 = связи психуют
При: 2 или 3 отдельно все работает как должно....


Приложил пример.... (Посмотрите кому не лень, а то я всю голову себе уже сломал!)
У вас нет доступа для просмотра вложений в этом сообщении.
В нашем деле главное ЛОГИКА.

косил косой косой косой.

|( () ( T |/| |(
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 211
Зарегистрирован: 01.10.2005 (Сб) 15:49

Re: Collision Detection

Сообщение |( () ( T |/| |( » 18.03.2009 (Ср) 20:27

Как оказалось, причина проста...
Сделай ResLenght массивам, и храни длинну каждой связи.
С=[::::::::::> ™ e398wallpapers.narod.ru

|( () ( T |/| |(
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 211
Зарегистрирован: 01.10.2005 (Сб) 15:49

Re: Collision Detection

Сообщение |( () ( T |/| |( » 18.03.2009 (Ср) 20:47

P.S. Вот, кстати, потеме. Так сказать, математическая модель веревки на столе, може кто для себя чего-нибудь полезного почерпнёт.
У вас нет доступа для просмотра вложений в этом сообщении.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Collision Detection

Сообщение MIT » 18.03.2009 (Ср) 21:22

[offtop]
Наткнулся пару дней назад на просто гениальною игрушку - Crayon Physics Deluxe - вот где действительно работают подобные технологии. Категорически советую заценить каждому :)
[/offtop]
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 19.03.2009 (Чт) 12:13

|( () ( T |/| |( писал(а):Как оказалось, причина проста...
Сделай ResLenght массивам, и храни длинну каждой связи.


Так у меня и так для каждой частицы длинна храниться...
Код: Выделить всё
restlength = Goo(i).ResLenght

или я не понял?
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 19.03.2009 (Чт) 12:14

MIT писал(а):[offtop]
Наткнулся пару дней назад на просто гениальною игрушку - Crayon Physics Deluxe - вот где действительно работают подобные технологии. Категорически советую заценить каждому :)
[/offtop]


Эта игрушка Вообще ТЕМА! Но до этого пока далеко...
В нашем деле главное ЛОГИКА.

косил косой косой косой.

|( () ( T |/| |(
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 211
Зарегистрирован: 01.10.2005 (Сб) 15:49

Re: Collision Detection

Сообщение |( () ( T |/| |( » 19.03.2009 (Чт) 23:02

Так у меня и так для каждой частицы длинна храниться...

Я говорил о связи, у тебя ведь гуу может именть несколтко связей, а длину ты хрониш только для одной.
Но чтоб ты не замарачивался вылаживаю рабочию дароботку.
[offtop]
Меня, почемуто не впечетлила... уровни прикольно появляються, а так нечиго особенного.
А вот World of Goo, это тема.
[/offtop]
У вас нет доступа для просмотра вложений в этом сообщении.
С=[::::::::::> ™ e398wallpapers.narod.ru

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 20.03.2009 (Пт) 9:22

|( () ( T |/| |(
Спасибо! Я вообще протормозил. Смотрю в книгу вижу фигу! :oops:
В нашем деле главное ЛОГИКА.

косил косой косой косой.

|( () ( T |/| |(
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 211
Зарегистрирован: 01.10.2005 (Сб) 15:49

Re: Collision Detection

Сообщение |( () ( T |/| |( » 21.03.2009 (Сб) 18:31

Спасибо! Я вообще протормозил. Смотрю в книгу вижу фигу!

Незачто. Как говориться, если что обращайся. :)
Интересно посмотреть что у тебя получиться.
С=[::::::::::> ™ e398wallpapers.narod.ru

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Re: Collision Detection

Сообщение Gemini » 23.03.2009 (Пн) 17:47

Обязательно выложу, если что-то интересное сделаю!
(Но, это будет не скоро...)
В нашем деле главное ЛОГИКА.

косил косой косой косой.


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 52

    TopList