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

Bullet/BulletSharp: определить момент силы

#0
(Правка: 2:30) 2:25, 22 дек. 2018

Доброго дня, форумчане!

Есть скелет персонажа, состоящий из твердых тел (боксов), связанных петлями (HingeConstraint).
Повороты суставов осуществляю  примерно в таком коде:

HingeConstraint hc;
...
hc.EnableAngularMotor(true, (NeedAngle - hc.HingeAngle), 100000000);

Третье число - максимальный импульс момента силы, ставлю побольше, с запасом.

Вопрос: как получить момент силы, примененный на кость? (Извиняюсь, если не прав в терминологии)

Вектор

 hc.RigidBodyA.TotalTorque 
всегда 0. К слову, использую BulletSharp.


#1
(Правка: 0:34) 0:32, 23 дек. 2018

hc.RigidBodyA.TotalTorque = плечо.CrossProduct( вектор силы )
Изображение
https://ru.m.wikipedia.org/wiki/%D0%9C%D0%BE%D0%BC%D0%B5%D0%BD%D1… 8%D0%BB%D1%8B
Плечо это серая штуковина на анимации  .
Как понимаеш для каждой точки будет разный момент силы , ибо плечи будут разные, а значит будет разное произведения векторов .
Как я понимаю  это у тебя анологично вектору силы (NeedAngle - hc.HingeAngle) .. Или нет ..? Ты скорее всего ищешь не момент милы , а крутящий момент !? Если все-таки нужен момент силы то тогда
1) нужен центер отнистельно которого вращаеться кость , скорей всего это там где шарнир!
2) нужна точка отнистельно которой ты будешь искать момент силы. Скорей всего это другой конец кости
3) Нужна ось относительно которой вокруг вращаеться ось , ну тобишь вектор силы , зелёный вектор на анимации !

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