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

Анимация и ODE

#0
3:53, 19 июля 2006

Объясните в кратце двоишнику :)

у меня есть кукла с некой анимацией ходьбы, она будет ходить по комнате, и цыплять ногами разные объекты

как правильно реализуется связь между ODE и анимированным персонажем?

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


#1
4:30, 19 июля 2006

Рэгдолы обычно используют для трупов. А так, чтобы переставлять им ноги, да ещё и равновесие держать при этом - это требуется нехилый Искусственный Интеллект. В общем забей.

#2
6:02, 19 июля 2006

да нет не Рэегдол просто мне нужно чтобы персонаж ходил себе, но если че нибудь зацепит чтоб он его отдвинул чтоли

#3
6:23, 19 июля 2006

Тебе придётся поправить немного ODE, сделать возможность включить режим, когда полоджение тела задаётся извне, а все связи работают, только не оказывают никакого влияния на данное тело. Положение частей куклы будет приходить из анимации. Более сложный вариант использовать фильтры колижена (не знаю может ли это ОДЕ или тоже придётся немного поправить), т.е. по статике твоя кукла будет двигаться как капсула игрока, а разные объекты цеплять непосредственно своими частями.

#4
12:02, 19 июля 2006

>Тебе придётся поправить немного ODE, сделать возможность включить режим, когда полоджение тела задаётся >извне, а все связи работают, только не оказывают никакого влияния на данное тело
не надо там ничего править, просто geom без body сделать

#5
15:38, 19 июля 2006

keltar
ok попробую

#6
21:06, 12 авг. 2006

столько кутерьмы по таким основам!!! ужас. хорошо что keltar вовремя появился :)
2 ns_neo_
а ты уровень как собирался делать? делаеш тело, геометрию и присоеденяеш их друг к дружке? Тогда твой уровень (карта) будет падать вместе с тобой. А можно сделать ещё проще (что бы не нагружать вычесления на мапу). Смотри:
делаеш два пространства. В одном у тебя игрок со всемя кубами (игрок сложен из нескольких десятков геометрий), а во втором - мапа и всё что не может двигаться, и нискогеометризованный игрок (например, цилиндр). Значит муваеш одновременно двох игроков (в двох пространствах), причём позицию игрока формирует цилиндр во втором, а кубиков - кубики в первом. Таким образом не будешь нагружать машину на просчёт со столкновением с ландшафтом. Главное, чтобы соотвествие было. Тоесть, позиция в цилиндра в первом спейсе должно быть равно во втором.

#7
21:31, 24 сен. 2006

Кажется на ode.org был совет на эту тему - надо создать динамичное тело с геометрией (обычно сферой) и либо возвращать на место его матрицу поворота каждый шаг, либо создавать жоинт с пустотой (NULL), ограничивающие углы поворота (первое предпочтительнее)

#8
0:51, 25 сен. 2006

я вобщем сделал так:
создал капсулу и присвоил ей
dGeomSetCollideBits(pBodyGeomTransform, 0x10000000);
dGeomSetCategoryBits(pBodyGeomTransform, 0x10000000);

dGeomSetCollideBits(pBodyGeom, 0x10000000);
dGeomSetCategoryBits(pBodyGeom, 0x10000000);

у пола (Plane) по умолчанию все биты включены

и сделал в том же мире в том же пространстве куклу из боксов но с

dGeomSetCollideBits(pPhisicsInfo->pPartInfo[boneId]->pBodyGeomTransform, 0xFFFFFFFF);
dGeomSetCategoryBits(pPhisicsInfo->pPartInfo[boneId]->pBodyGeomTransform, 0xFFFFFFFF);

dGeomSetCollideBits(pPhisicsInfo->pPartInfo[boneId]->pBobyGeom, 0xFFFFFFFF);
dGeomSetCategoryBits(pPhisicsInfo->pPartInfo[boneId]->pBobyGeom, 0xFFFFFFFF);

а в инфо положил данные что это за часть тела, или вообще объект или коллижен бокс сцены.

ну и у всех объектов биты коллижена как у куклы

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

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

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