Физика
Fido Themes (ru.game.design)
От: Denis Andreev <Denis.Andreev@p27.f57.n5050.z2.fidonet.org>
Тема: Физика
Дата: 5 марта 2001 г. 7:42
> ЗЫ Кто то знает ссылки (или названия) на документацию по Quake1/2/3
> энгине
конечно есть (ссылок не помню).
есть "unofficial Quake engine manual(specification?)"
есть Michael Abrash (id Software) "The Quake Graphics Engine" (GDC
4.2.96)
> Хотелось бы также какие нить семплы узреть (ну или
> сайты где они есть). А то я нашёл немного доков но уж очень оно всё
> какое то кривое и не структурированное.
http://www.planetquake.com/code3arena/
http://www.quake3stuff.com/
> ЗЫЫ Жутко интересуют семплы, или готовые движки реализующую физику
> (столкновения, силы, моменты вращения и т.д.).
http://www.mathengine.com/
там есть еще полезная дока в PDF, где расписаны все их формулы.
> бильярда или чёт аналогичного (со сложными случаями
> соударений) Скажите хоть названия прог если кто знает.
там дофига всего найдешь про это. есть демка STUNS -- машина по трассе со
всеми столкновениями и т.д.
> Hадо спроектировать единообразную (без программирования спецальных
> случаев, почему? да потому что это всего лишь частный случай более
> общей проблемы) модель соударений бильярдных шаров, а в качестве теста
> рассмотрим такую ситуацию: О---> O| Шар летит на другой
> шар прижатый к бортику, в момент t после удара ситуация будет
> такой: <--О <-О | А если б шар у бортика не был плотно к нему
> прижат то ситуация была б такой <--О O| (Тоесть 1шар бы
> ударился о 2шар передав ему весь импульс, сам бы остановился, второй
> шар ударился бы об бортик и отбился бы налетев на 1 шар отдал бы
> ему весь свой импульс и сам бы остановился где и был в начале, а
> первый шар бы продолжил лететь.)
все элементарно просто: закон сохранения импульса + закон сохранения энергии
+ закон сохранения момента импульса. опиши шары как сферы, напиши для них эти
законы до и после удара, получишь искомые формулы.
> Может кто таким занимался, подскажите пожалуста если сможете.
занимались, но делать не стали: дальше теории дело не пошло, да и теорию-то
до конца не стали доводить.
Denis

От: Vladislav Volovik <333@org.lviv.net>
Тема: Re: Физика
Дата: 6 марта 2001 г. 5:04
Hello! "Denis Andreev" <Denis.Andreev@p27.f57.n5050.z2.fidonet.org>
wrote:
>
> > Hадо спроектировать единообразную (без программирования спецальных
> > случаев, почему? да потому что это всего лишь частный случай более
> > общей проблемы) модель соударений бильярдных шаров, а в качестве теста
> > рассмотрим такую ситуацию: О---> O| Шар летит на другой
> > шар прижатый к бортику, в момент t после удара ситуация будет
> > такой: <--О <-О | А если б шар у бортика не был плотно к нему
> > прижат то ситуация была б такой <--О O| (Тоесть 1шар бы
> > ударился о 2шар передав ему весь импульс, сам бы остановился, второй
> > шар ударился бы об бортик и отбился бы налетев на 1 шар отдал бы
> > ему весь свой импульс и сам бы остановился где и был в начале, а
> > первый шар бы продолжил лететь.)
>
> все элементарно просто: закон сохранения испулся + закон сохранения энергии
+
> закон сохранения момента импулся. опиши шары как сфер, напиши для них эти
> законы
> до и после удара, полуиши искомые формулы.
Вот в том и прикол, что всё далеко не так просто, и тот пример что я привёл
это подтверждает. Собственно говоря, физику явления я себе представляю очень
хорошо, и формулы тоже эти все уже ручками пощупал (этих, кстати, законов, тут
совсем недостаточно, хотя они и определяющие). Проблема не в этом, проблема
именно в программировании, и особенно в программировании таких случаев как я
описал в пред. письме (когда объекты прижаты друг к другу, а также (это совсем
другая проблема) когда растояния между объектами и их скорости такие, что взаимодействия
между ними происходит быстрее чем время квантования движка (кто с этим разбирался
тот поймёт), особенно когда эти взаим. вызывают "цепную реакцию").
Обычно все реализации физики (в том числе и в mathengine, насколько я смог понять
по быстрому ознакомлению) в таких случаях просто плюют на эти, во первых редкие(обычно),
а во вторых не влияющие на гемплай случаи, и допускают некорректные ситуации
вроде прохождения границ одного объекта сквозь границу другого объекта (пусть
и на мизерную глубину), а также вобще не как не отрабатывают удар по прижатым
друг к другу, но не скреплённым, объектам. Это всё хорошо, вот тока у меня как
раз такой случай, когда такие ситуации, во-первых являются очень частыми, а
во вторых здорово украшают гемплей.
Ещё кстате, один, неприятный (в принципе как для программиста то приятный,
ибо мозгами шевелить иногда, это здорово :) случай: Имеем хокейное поле, у него
углы в виде четверть-окружностей, и имеем летящую вдоль борта (и рядом с бортом)
шайбу. Тут ваще физика простая до чёртиков, не надо ни закона сохр. импульса
ни энергии, ток силы знай себе правильно в каждый момент времени направляй на
углах. Но это всё здорово пока делаешь тестовый примерчик, а вот когда хочешь
всё единообразно и красиво закодировать то... (просто обычно такая ситуация
будет "примитивно" закодированным движком в опред. момент трактоваться
как столкновение, со всеми вытекающими) не, ясно что можно, собственно говоря,
я вобщем уже здорово к этому близок, и всё по немногу продвигается без застреваний,
просто вот возникло желание в эхе спросить, мож новые идеи бы
люди подсказали, ну да ладно.За ответ всё равно спасибо. (Кстате в этом примере,
внутренняя суть, таже, что и в том, что я в пред. письме кидал - тесный контакт
объектов, а от сюда и совсем иное поведение при взаимодействиях)
>
> > Может кто таким занимался, подскажите пожалуста если сможете.
> занимались, но делать не стали: дальше теории дело не пошло, да и теорию-то
> до конца не стали доводить.
Теория ясно, что не сложная, ну, то есть, для кого как :) главное что просто
уже записана и есть где почитать. Все приколы начинаются не на этом этапе, дилема
в том что мы пытаемся дискретизировать законы непрерывного мира, от сюда и куча
проблем.
==================>>>> vladislav_e@mail.ru >>>>==================
Posted: 07.03.2k1
Author: FidoNet
<www.fido7.ru>
|
 |
 |
|