![]() |
Здесь обсудим методики обсчета столкновений.
[CCCP] Monster Пересоздай. А я пока напомню основную проблему, которая станет перед нами при проектировании гонок: обсчёт столкновений. Проблема в том, что уравнение положения каждой точки при перемещении получается таким вот образом: http://smages.com/i/77/d0/77d037207c...a493f3b4e8.png И, собственно, тут есть три пути: либо честно брать определённый временной промежуток и рассчитывать, в какое время до него произойдёт столкновение; либо всегда рассчитывать конечное положение системы через конкретное достаточно малое время, а потом смотреть на пересечения и из них делать выводы о столкновениях; либо искать третий путь. Вот первая проблема. Думаем. Ах, да, есть ещё четвёртый путь - скомбинировать первые два. Например, в рамках одного определёного отрезка времени считать движение равномерным. Тогда все члены, связаные с ускорениями, уберутся, и жить станет чуток проще. P.S. Ой, извиняюсь, забыл над ускорением в последнем уравнении значок вектора поставить. Но перерисовывать неохота. Просто не забывайте, что ускорение - вектор. :wnk: |
pokibor
Да, все верно. Единственное, не могу поянть, что тебя пугает. Мы ведь можем применить один интересных финт ушами. При загрузке модели объекта расчитывать обрамляющий параллелепипед. Bounding Box то бишь. И сравнивать сначала его, а потом уже физическую модель. Что это даст? При обработке тех объектов, которые не столкнулись, нужно обработать всего лишь 8 точек для каждого. Есть еще один финт. Основан на запоминании длины поливинки диагонали бокса. Эта половинка - тоже, что радиус сферы, описанной вокруг модельки. Теперь отсеем те объекты. что не соприкасаются сферами. Оставшиеся посчитаем. А уж посчитать 3-4 одновременно сталкивающихся объекта из оставшихся можно запросто. |
Цитата:
Цитата:
Кстати, один из вариантов, пришедший мне на ум - организовать в месте предполагаемого столкновения де-факто воксельный движок, т.е. заменить часть граний-стен препятствий на стоящие друг за другом сферы, с которыми и рассчитывать столкновение (можно и на кубики, но сферы проще). Такая "область вокселизации" будет двигаться по мере того, как машина будет ехать от препятствия к препятствию. P.S. Кстати, не забывай, что гонки у нас 2D в принципе, а потому давай лучше говорить не о параллелепипедах и сферах, а о прямоугольниках и окружностях, так правильнее будет. |
pokibor
Ааа... Ну тогда тут вот как. Первый способ, дискретно-порциональный, предполагает простую проверку на пересечение геометриии. Второй способ предлагает обнаружить точку пересечения геометрии аналитически. Второй способ очевидно трудоемок. Первый предпочтителен в том случае, когда объект за время игрового цикла не успевает преодолеть расстояние больше чем его линейные размеры. Однако во многих случаях он не достоверен. Сосбственно я счтаю, что надо юзать аналитический. |
Цитата:
Хотя для метода Ньютона, как я понял, достаточно монотонности, но вот с нею-то у нас как раз проблема. Я не могу гарантировать, что такое вот уравненице будет монотонным, а тогда и метод Ньютона не запашет. И что скажешь по поводу вокселизации? P.S. И почему я боюсь, что кол-во желающих участвовать поуменьшится от одного вида уравнений? :sml: |
pokibor
Один вопрос тока: мы сейчас рассматриваем двумерную модель или техмерную? Плюс, у нас вроде объемы/площади должны пересекаться-то. А вокселизация в данном случае - это что? Ты хочешь объем представить кучей вокселей? |
Цитата:
Пересечение объёмов - это как раз случай строгой дескретизации времени, то, что ты первым пунктом поставил. Аналитический же подразумевает проверку, в какой момент времени движущаяся по определёному закону точка пересечёт также, возможно, движущийся по определёному закону отрезок (т.е. столкновение всегда происходит на одной из вершин многоугольника) в случае их сближения, случаем полной параллельности можно пренебречь. Цитата:
Цитата:
|
Методы определения столкновений в играх
Обсудим здесь сабж, как одну из важнейших задач, решаемых в процессе разработки.
Немного теории для общего развития: 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 |
| Часовой пояс GMT +4, время: 15:08. |
Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.