![]() |
#1 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта
|
[CCCP] Monster Пересоздай. А я пока напомню основную проблему, которая станет перед нами при проектировании гонок: обсчёт столкновений. Проблема в том, что уравнение положения каждой точки при перемещении получается таким вот образом: ![]() И, собственно, тут есть три пути: либо честно брать определённый временной промежуток и рассчитывать, в какое время до него произойдёт столкновение; либо всегда рассчитывать конечное положение системы через конкретное достаточно малое время, а потом смотреть на пересечения и из них делать выводы о столкновениях; либо искать третий путь. Вот первая проблема. Думаем. Ах, да, есть ещё четвёртый путь - скомбинировать первые два. Например, в рамках одного определёного отрезка времени считать движение равномерным. Тогда все члены, связаные с ускорениями, уберутся, и жить станет чуток проще. P.S. Ой, извиняюсь, забыл над ускорением в последнем уравнении значок вектора поставить. Но перерисовывать неохота. Просто не забывайте, что ускорение - вектор. ![]()
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) Последний раз редактировалось [CCCP] Monster; 04.12.2007 в 00:35. |
||
![]() |
|
![]() |
#2 | ||
Пугатель
![]() Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,111
Репутация: 1096
|
pokibor
Да, все верно. Единственное, не могу поянть, что тебя пугает. Мы ведь можем применить один интересных финт ушами. При загрузке модели объекта расчитывать обрамляющий параллелепипед. Bounding Box то бишь. И сравнивать сначала его, а потом уже физическую модель. Что это даст? При обработке тех объектов, которые не столкнулись, нужно обработать всего лишь 8 точек для каждого. Есть еще один финт. Основан на запоминании длины поливинки диагонали бокса. Эта половинка - тоже, что радиус сферы, описанной вокруг модельки. Теперь отсеем те объекты. что не соприкасаются сферами. Оставшиеся посчитаем. А уж посчитать 3-4 одновременно сталкивающихся объекта из оставшихся можно запросто.
__________________
![]() Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
![]() |
|
![]() |
#3 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта
|
Цитата:
![]() Цитата:
Кстати, один из вариантов, пришедший мне на ум - организовать в месте предполагаемого столкновения де-факто воксельный движок, т.е. заменить часть граний-стен препятствий на стоящие друг за другом сферы, с которыми и рассчитывать столкновение (можно и на кубики, но сферы проще). Такая "область вокселизации" будет двигаться по мере того, как машина будет ехать от препятствия к препятствию. P.S. Кстати, не забывай, что гонки у нас 2D в принципе, а потому давай лучше говорить не о параллелепипедах и сферах, а о прямоугольниках и окружностях, так правильнее будет.
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) Последний раз редактировалось pokibor; 03.12.2007 в 17:25. |
||
![]() |
|
![]() |
#4 | ||
Пугатель
![]() Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,111
Репутация: 1096
|
pokibor
Ааа... Ну тогда тут вот как. Первый способ, дискретно-порциональный, предполагает простую проверку на пересечение геометриии. Второй способ предлагает обнаружить точку пересечения геометрии аналитически. Второй способ очевидно трудоемок. Первый предпочтителен в том случае, когда объект за время игрового цикла не успевает преодолеть расстояние больше чем его линейные размеры. Однако во многих случаях он не достоверен. Сосбственно я счтаю, что надо юзать аналитический.
__________________
![]() Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
![]() |
|
![]() |
#5 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта
|
Значит, ты за определение момента пересечения одним отрезком другого... Как можно видеть, в таком случае будет система из двух нелинейных уравнений второго порядка. Так вот, проблема тут состоит в том, что решение таких систем всегда должно быть изолировано при своём поске, т.к. на заданом отрезке не должно быть других решений.
Хотя для метода Ньютона, как я понял, достаточно монотонности, но вот с нею-то у нас как раз проблема. Я не могу гарантировать, что такое вот уравненице будет монотонным, а тогда и метод Ньютона не запашет. И что скажешь по поводу вокселизации? P.S. И почему я боюсь, что кол-во желающих участвовать поуменьшится от одного вида уравнений? ![]()
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) |
||
![]() |
|
![]() |
#6 | ||
Пугатель
![]() Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,111
Репутация: 1096
|
pokibor
Один вопрос тока: мы сейчас рассматриваем двумерную модель или техмерную? Плюс, у нас вроде объемы/площади должны пересекаться-то. А вокселизация в данном случае - это что? Ты хочешь объем представить кучей вокселей?
__________________
![]() Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
![]() |
|
![]() |
#7 | |||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта
|
Цитата:
Пересечение объёмов - это как раз случай строгой дескретизации времени, то, что ты первым пунктом поставил. Аналитический же подразумевает проверку, в какой момент времени движущаяся по определёному закону точка пересечёт также, возможно, движущийся по определёному закону отрезок (т.е. столкновение всегда происходит на одной из вершин многоугольника) в случае их сближения, случаем полной параллельности можно пренебречь. Цитата:
Цитата:
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) |
|||
![]() |
|
![]() |
#8 | ||
Пугатель
![]() Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,111
Репутация: 1096
|
Методы определения столкновений в играх
Обсудим здесь сабж, как одну из важнейших задач, решаемых в процессе разработки.
Немного теории для общего развития: http://www.gamedev.ru/articles/?id=30108 http://www.gamedev.ru/articles/?id=30109 http://www.gamedev.ru/articles/?id=30111 http://www.gamedev.ru/articles/?id=70108
__________________
![]() Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
![]() |
|
![]() |
|
|