• Frol (02.08.07 21:15) [0]
    Сдраствуйте!
    вопрос у меня полуфизический.
    У меня есть колесо (одно) на него действуют разные силы они суммируются, считаются скорости ну и т.д
    когда я описал столкновение колеса с дорогой. Оно оскакивает нормально. Но когда я хочу чтобы колесо ехало по поверхости (не прыгало). не черта не получается.
  • Dib@zol © (02.08.07 22:06) [1]
    Ну и что ты хочешь от нас? Исходник?
  • Dib@zol © (02.08.07 22:53) [2]
    Конкретизируй вобщем.
  • @!!ex © (02.08.07 23:03) [3]
    > [0] Frol   (02.08.07 21:15)

    Значит в твоей модели не утена сила упругости и сила трения(если я правильно помню, именно за счет них колесо должно катиться, а не прыгать)
  • Zagaevskiy © (03.08.07 20:40) [4]
    Оно у тебя всегда отскакивать пробует наверное. То есть при любом соприкостновении с поверхностью.
  • Frol (04.08.07 12:57) [5]
    Получается, что колесо постоянно прыгает по поверхности.
    Я думую мне стоит искать баланс между трением и отскоком (что совсем не получается, колесо постоянно дергается)
  • Dib@zol © (04.08.07 14:46) [6]
    Ох чтото я сёдня слишком добрый :) На, пользуйся блн. Отлично катается, без проблем:
    http://webfile.ru/1488196
    (пароль- xdryghghjnjnkfgnbkmhbmbnmbvmcmm)
  • Frol (04.08.07 21:16) [7]
    Примного благодарен Dib@zol © за пример. Ща буду разбираться
  • Yashin © (05.08.07 00:23) [8]
    Dib@zol сам делал? rulezz прям как на нокии
  • Dib@zol © (05.08.07 10:44) [9]
    > [8] Yashin ©   (05.08.07 00:23)

    Пасиба!.. Да, делал сам. У меня просто мобилка - дерьмо. Вот я и как увидел у другана Bounce - так и загорелся идеей. Все уровни взял, двиг (свой!!!) написал - тык нет... Прикинь лень стало делать, т.к. сразу после реализации пропала охота играть :) Тут кстати на этом форуме есть ещё, также в виде исходника, предыдущий вариант двига. Только там глюкаво реализовано как раз трение, что я сейчас уже успешно исправил :)
  • Frol © (05.08.07 21:58) [10]
    А в свои игры как то неохото играть
  • boalse © (07.08.07 08:35) [11]
    врёте. я свою игруху раз эдак 60-й уже прохожу :D
    ну нравится она мне, чтож тут поделаешь
  • novill © (08.08.07 10:28) [12]
    > [6] Dib@zol ©   (04.08.07 14:46)

    Круто, только у меня тормозит :(
    И не могу скорость исправить, вроде параметр ASpd за это отвечает, я его меняю - но ничего не происходит.
  • novill © (08.08.07 10:34) [13]
    > [12] novill ©   (08.08.07 10:28)

    Соврал :) Меняется скорость, но даже при
    ASpd = 1

    медленновато. Как это исправить?
  • $00FF00 (08.08.07 11:52) [14]
    Нужно драйвера OpenGL ставить! А ASpd это скорость обновления. 15 - значение оптимальное, меньше не ставь. Лучше скачай дрова для своей видюхи.
  • novill © (09.08.07 16:24) [15]
    > [14] $00FF00   (08.08.07 11:52)

    наверно, ты прав. Скорость обновления я вернул, физику чуть подкрутил коэффиециентами...
  • $FF00FF (09.08.07 19:08) [16]

    > $00FF00   (08.08.07 11:52) [14]

    это был Dib@zol
  • Debug © (14.08.07 22:58) [17]

    > Отлично катается, без проблем:

    Что то я не заметил качения. По умолчанию считать если не прыгает и не месте не стоит, то катиться?
  • Galiaf (06.07.09 16:55) [18]
    Чтоб не размножать темы решил спросить тут же.
    Столкнулся с той же проблемой, что и автор. Увидя ссылку на исходник, весь такой довольный, бросился скачивать, а нет. Файл удален.
    В общем у меня на тело действует сила тяжести и сопротивление воздуха, за время падения тело обретает какую-то скорость(показание скорости близко к реальной). При косании земли применяю упругость, которая должна выглядет так:
    F=-xk;

    , где х-удлиннение(м), k-упругость(жесткость)(Н/м).
    Если x=0, то и силы упругости никакой, а ведь для того чтобы удержать тело на поверхности нужно к имеющейся силе прибавить обратную силу. По этому делаю так:
    F=F+|F|+xk;

    ,
    При жесткости тела k=500000Н/м(сталь, поправте если не прав) тело слишьком сильно погружается в землю, но всеже отталкивается, после чего долетает до точки сброса и все повторяется.
    Скорость и положение тела у меня считаются один раз за одну обработку физики из суммы всех сил в самом конце обработки.
    Где я допустил ошибку? Сила трения влияет на поведение тела при верикальных силах если земля перпендикулярна движению тела?
  • Дуб © (07.07.09 10:26) [19]

    > Где я допустил ошибку?

    А что именно ошибка?
  • Galiaf (07.07.09 12:59) [20]
    Упругость считается неправильно, тело не должно погружаться в землю, а как бы слегка деформироваться, тоесть деформация не будет отображаться, просто на практике будет похоже что тело чуть погружается в землю, а затем отскакивает, но и учитывая что тело твердое и упругость низкая, отскакивать оно должно не сильно, а слегка, а потом стать в устойчивое положение на землю, в этот момент сила тяжести и сила сопротивления земли должны уравновешивать друг друга. Конечно просто подобрать нужные числа - это самый простой вариант, но мне нужно добится точных(относительно) вычислений, для того, чтобы как минимум понять принцип.
  • Galiaf (07.07.09 13:51) [21]
    Тело которым я оперирую будет колесом автомобиля. И при таких нереальных результатах авто будет вечно прыгать на одном месте. Я сейчас пытаюсь разобраться как работают амортизаторы. Думаю при касании земли колесо будет изменять свое расстояние до автомобиля и воздействовать на автомобиль с силой пропорциональной пройденному расстоянию колеса до автомобиля. Правда пока я еще думаю на тем как это описать в программе. Было бы приятно услышать мнение тех кто с этим связывался.
  • Galiaf (07.07.09 15:43) [22]
    Решил сделать следующее:
    При контакте с землей длинна пружины уменьшается на степень погружения, то есть чем выше скорость при контакте тем сильнее сожмется пружина. Затем применяю силу направленную вверх равную массе умноженной на произведение массы на степень сжатия пружины с какм-то коэффизиентом
    K=0,5

    . Затем всю эту силу умножаю на еще один коэффициент
    Z=0,005

    .
    Выглядит это так:
    F:=Z*MASS*(MASS*((SPringMax-SpringL)/K))


    после применения силы разжимаем пружину:
    if SpringL<SpringMax then SpringL:=SpringL+0.1;


    Формула была подобрана экспериментально но ведет себя гораздо лутше чем мои предыдущие попытки. Происходит следующее: После падения колесо остается на уровне земли, а расстояние между колесом и автомобилем уменьшается, после чего авто отпрыгивает от поверхности и постоянно прыгает. Для того, чтобы это поправить после каждого контакта уменьшаю скорость автомобиля после примемнения силы но до расчета положения.
    Player.V[1]:=Player.V[1]*0.998;


    Теперь авто не отпрыгивает но немного подергивается, нужно устранить и это.
    При увеличении Z авто сильнее отскакивает от поверхности, а при уменьшении слишьком сильно погружается. При увеличении K отскок уменьшается, при уменьшении  - увеличивается. То есть K можно исключить и подбором Z добится того же результата.
    Думаю в первую очередь нужно узнать величину силы которая будет уравновешивать силу притяжения и величину силы которая будет при максимальном сжатии пружины гарантированно отталкивать авто(а не проваливаться). Как получить первую - понятно, а вот со второй у меня затруднения.
  • Galiaf (08.07.09 03:14) [23]
    Как я хорошо сам с собой беседую...
    Вопрос:
    Какой должна быть сила(в ньютонах) действующая на автомобиль при максимальном сжатии пружины?
    Допустим максимальное сжатие равно половине длинны, т.е. при любой скорости и массе авто при падении пружина не сожмется сильнее чем вдвое и колеса не погрузятся в землю.
    Меня интересует как точно(относительно) вычислить эту силу из скорости, массы и ускорения.
  • Дуб © (08.07.09 07:13) [24]
    > Как я хорошо сам с собой беседую...

    Да я редко сюда захожу. Звини.

    Такое ощущение, что сооружая тут текст ты еще сам для себя формулируешь задачу. Может стоит сесть один раз и четко обрисовать модель, и пожелания? А то - то железо, то резиновое колесо. Где ошибка и прочее - как у Облонских смешалось все. Со стороны так видится.

    Если диссипации не, то будет подпрыгивать откуда и упало. Диссипация малая - с медленным затуханием. Надо найти приемлемый уровень затухания, и после определенного нижнего порога - гасить в ноль. Это первое, что приходит исходя из огляда написанного.
  • Galiaf (08.07.09 19:37) [25]
    Ну это решение из ряда подбора коэффициентов "на глаз". Хотелось бы узнать как все точно вычислить, а потом можно и упращать на свое усмотрение.
  • Thrashead (24.08.09 12:37) [26]
    Если ещё актуально, то могу посоветовать ввести некоторую "мёртвую зону", в пределах которой деформации недостаточно, чтобы колесо отскочило от поверхности.

    Выше тов. Дуб предложил, вообще говоря, то же самое.
  • uw5fl (08.03.13 16:10) [27]
    есть аналогичная проблема.
    На предмет столкновений могу посоветовать книгу Ian Millington - Game Engine Physics Development (The Morgan Kauffman Series ...)
    Только плюсом надо ещё рассчитать, как поведёт себя тело ПРОИЗВОЛЬНОЙ формы при столкновении с плоскостью, то есть, какими станут его угловая и линейная скорости. Тело задано набором точек, координаты известны, массы известны.
    Запилил алг проверки коллизий треугольник-треугольник; он также возвращает коорды точек их пересечения. Требуется узнать, как:
    - надо растолкнуть тело от плоскости (или 2 тела);
    - какими будут скорости тел после столкновения.
    В упомянутой мной книге есть ответ на эти вопросы только для случая, когда тела имеют форму параллелепипеда. Заранее спасибо.
  • icWasya © (13.03.13 17:14) [28]
    Тут ещё надо учитывать, что в реальных автомобильных амортизаторах есть не только пружины. Если амортизатор состоит только из пружины, то автомобиль так и будет прыгать на каждой кочке и потом долго раскачиваться. Поэтому добавляется  элемент с повышеным трением, гидро- или пневмо- цилиндр.
    В простом случае это будет работать так.
    При сжатии амортизатора он "сопротивляется" с силой пружины плюс сила трения в цилиндре. А потом растягивается, но с силой пружины минус сила трения в цилиндре. В результате колебания затухают. Так же может быть, что эта сила трения зависит от знака деформации амортизатора - например, для сдвига из положения равновесия, сила трения большая, а для возврата в положение равновесия - маленькая. А ещё эта сила может зависеть от величины и скорости деформации. Формулу подбери сам.
Есть новые Нет новых   [118638   +34][b:0][p:0.001]