Войти
ПрограммированиеФорумФизика

Физика ходьбы

Страницы: 1 2 Следующая »
#0
20:12, 2 окт. 2006

Подскажите, как реализуется сабж в играх с реальной физикой. Каким образом можно задавать какую-то фиксированную максимальную скорость для идущего персонажа? Просто ограничивать скорость сверху нельзя - мало ли какие еще силы на персонажа действуют. Ограничивать трением тоже вроде бы нельзя, во-первых скорость будет колебаться, во-вторых непонятно какое трение может быть у идущего персонажа, ведь он же идет, а не скользит. С трением еще один вопрос: нужно ли менять трение и идущего/стоящего персонажа?
Как все это делается?


#1
20:32, 2 окт. 2006

Трение поверхности задаёт максимальное ускорение. При ходьбе трение такое же, как и при стоянии, так как стопа относительно земли покоится. Покоится до некоторого предела усилий. Если пытаться ускоряться быстрее этого предела, то просто будешь буксовать.

Максимальная же скорость задаётся периодом колебания ног и шириной шага. А период колебания ног зависит от длины по закону  T ~ sqrt(L). Ширина шага зависит от длины ног и от угла их растворения, который в свою очередь ограничен pi радианами. Поэтому персонаж для пущего ускорения может форсировать ещё и период путём приложения усилий (но этого лучше не делать, так как усилий затрачивается просто море).

#2
20:58, 2 окт. 2006

Kvap
Мм.. ну это в реальности все так, но неужели в играх все настолько реалистично повторяют? С колебанием и со всем остальным?

#3
21:44, 2 окт. 2006

С колебанием можно Sin и Cos юзать.
Или можно прицепить камеру к голове перса, тогда все ложится на дизайнеров

#4
22:29, 2 окт. 2006

В играх чаще всего персонажа двигает не физика, а игровая логика. Пришло в MMOG сообщение от сервера - а у тебя, брат, лаг в секунду, ты теперь в 10 метрах стоишь. И задача прослойки над рендером - сгладить и нарисовать. В какой-нить RTS чаще тайловые позиции, дискретные, и высокий уровень двигает юниты по-всякому.

То есть сверху функция SetPosAndSpeed, снизу хитрые блендеры анимаций, которые бег смешивают с ходьбой или стрейфы в разных направлениях в зависимости от направления скорости.

Делать зависимость игровой логики от низкого уровня не есть правильно. И никто так не делает. Реально никто не делает.

#5
23:30, 2 окт. 2006

IronPeter
> И никто так не делает. Реально никто не делает.
Вот это интересно... Ведь есть CharacterStudio - нельза ли его интегрировать в движок? (Может кто знает - не так ли случаем в Oblivion'е сделано?).
И, кстати, IK для ходьбы тоже никто не отменял... смотри Doom3.

olegf
Если очень хочется заморочиться - можно такую систему разработать. Начинай изучай Inverse Kinematics.

#6
23:56, 2 окт. 2006

>И, кстати, IK для ходьбы тоже никто не отменял... смотри Doom3

Исходников Doom3 у меня нет, так что авторитетно сказать не могу. IK для ходьбы - это обычно примочка в стиле как правильно ногу на землю поставить. Это примочка снизу, а не сверху. Функция верхнего уровня анимационной системы - это чаще всего SetPos. Иначе непонятно как фидбек назад тянуть. Захотел AI побежать и хочет узнать, когда добежит. И шо он делает?

Для персонажей "физика" - это чаще всего раздумия на коллижн капсулы с упрощенной геометрией уровня. И ragdoll, когда персонаж дохлый и неинтересен гейммеханике. Иначе убиться писать гейммеханику.

#7
0:31, 3 окт. 2006

IronPeter
Я имел именно именно игры с физикой. Понятно что в каком-нибудь ВоВе нет никакой физики вообще.

Что касается перемещения персонажа с помощью логики, то тут появляется простая и непреодолимая проблема - как эта логика будет взаимодействовать с физикой? Т.е подошел, например, персонаж к ящику, логика толкает его вперед, на ящик. Что делать? Если логика важнее - персонаж пройдет через ящик. Если физика важнее - то мы опять там где были. Но это все происходит, если в игре присутствует настоящая физика. Которой в стратегии, тем более тайловой, конечно нет.

SoulTaker
Так как раз наоборот, заморачиваться совсем не хочется.. Хочется просто узнать, как это все реализовано в играх с физикой, хотя бы в том же обливионе.

#8
1:21, 3 окт. 2006

IronPeter
В Heavy Duty игровая логика управляет по сути только ускорениями :)
И там много кода по теме "вовремя затормозить, что бы не проскочить".

#9
7:03, 3 окт. 2006

olegf
> Т.е подошел, например, персонаж к ящику, логика толкает его вперед, на ящик. Что делать?
Все зависит от ящика. Если неподвижный или тяжелый - идет сообщениие в логику и движение останавливается (продолжается по касательной).
Если на физике и легкий - то или отбрасываем ящик или случайно, или от капсулы, или от волумов коллизий регдола.

#10
14:24, 3 окт. 2006

>Что касается перемещения персонажа с помощью логики, то тут появляется простая и непреодолимая проблема - как эта логика будет взаимодействовать с физикой

Вызывать функции трассировки мира с капсулой персонажа, получать от физики events в стиле HIT. И в каком-нить супер-навороченном современном шутере логика не выходит за эти рамки.  Берешь физический мир и вставляешь туда капсулу бесконечной массы, которая двигается "сверху". И все живет. Хочешь отдавать управление физике - делай объекту конечную массу и получай от физики хинты. Но двигай сам. 

В принципе, геймплей стараются не завязывать на физику не только в ВОВ, стратегиях. Но и в шутерных движках. Разных монстрах вроде UE3. Если шутерный движок, то он должен работать мультиплеер. Он должен выдавать на разных машинах одинаковые результаты.  Тяжелую физику запускать на сервере не хочется. 

#11
15:38, 3 окт. 2006

CoolDev
Причем тут регдол..?

IronPeter
Но ведь видно же, что например в ХЛ2 персонаж управляется чисто физикой. Учитывая то количество взаимодействий, в которых сам персонаж участвует как физический объект. Всякие кирпичи с качельками итд. И масса у него во всех этих взаимодействиях явно вполне человеческая.

#12
17:38, 3 окт. 2006

olegf
> Причем тут регдол..?
Ок, немного неточно выразился - мешь коллизий (или боксы), натянутый на скелет. Когда перс помирает к этому мешу добавляются физ. тела, и тогда все это превращается в регдолл.

#13
18:27, 3 окт. 2006

CoolDev
Дык когда перс помирает конечно его можно физикой обрабатывать, мы же им управлять уже не можем ).

Вопрос в том, как управлять им пока он жив. Т.е главная проблема - как совмещать логику (задание персонажу произвольной скорости какими-нибудь скилами) и физику взаимодействия такого перса с реальными физическими объектами. Как в ХЛ2 опять же.

#14
0:24, 4 окт. 2006

То есть ты хочешь что бы движения персонажей управлялись "процедурно" типа как в MechWarrior только плюс физика.

Страницы: 1 2 Следующая »
ПрограммированиеФорумФизика

Тема в архиве.