2010-05-28 3 views
2

Я работаю с physx (пытаясь добавить ik в ragdoll) на данный момент. По какой-то причине все суставы из рагдолла без трения, и, как результат, тряпья склонны «качаться», особенно когда они висят в воздухе и связаны с несколькими движущимися кинематическими актерами.PhysX: Соединительные трения/«жесткие» соединения

Я хотел бы добавить трение к суставам и сделать их «жесткими». Представьте себе дверь (с чрезвычайно ржавым шарниром), которую нужно выталкивать несколько раз, чтобы ее можно было открыть, т. Е. Она вращается вокруг шарнира, но не сильно, быстро останавливается и требуется большая сила, чтобы заставить ее вращаться. Или подумайте о художественных манекенах (см. Изображения Google для фотографий) - их конечности перемещаются, но они не раскачиваются свободно.

К сожалению, я не могу найти ничего, связанного с трением в физике. Я проверил документацию, google и заголовки и не нашел ничего полезного.

Итак, как мне реализовать жесткие стыки/трение с флюсом? (Я думаю) Я видел игры с физикой без этой проблемы, поэтому, видимо, должен быть какой-то способ сделать это.

P.S. Я не говорю о совместной/решающей нестабильности здесь. Рагдолл стабилен (более или менее), а суставы чтят степени свободы (суставные ограничения), но суставы не имеют трения, и я хотел бы добавить к ним трения.

ответ

1

Я задал вопрос на NVidia форумах в последнее время, которые могут быть связаны с этим: link

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

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

+0

Ну, демпфирование сработало. Установка высокой плотности демпфирующей пружины на лимитах и ​​соединениях хорошо работает на соединениях Revolution/d6, не так хорошо на сферических соединениях. Поэтому я наконец получил жесткую тряпку. Это, конечно, не трение в традиционном смысле, но оно обеспечивает тот же эффект. Это похоже на «недокументированную функцию», но я серьезно сомневаюсь, что она когда-нибудь сломается - весна с высоким демпфированием и нулевой силой должна вести себя таким образом. – SigTerm

+0

@SigTerm: Это обнадеживает, я беспокоюсь, что он может сломаться с будущим обновлением.Рад, что это помогло, если не совсем то, что вы хотите. – identitycrisisuk

0

Я нашел this forum thread о шатких суставах в Physx, не знаю, видели ли вы его, но я надеюсь, что это поможет.

+0

Нет, это не тот случай - ragdoll стабилен, но мне нужно сделать его более «жестким». Я обновил вопрос. – SigTerm

0

Почему бы вам не попробовать, что:

d6Desc.swingDrive.driveType.raiseFlagMask (NX_D6JOINT_DRIVE_VELOCITY); d6Desc.swingDrive.forceLimit = 0.1f; d6Desc.twistDrive.driveType.raiseFlagMask (NX_D6JOINT_DRIVE_VELOCITY); d6Desc.twistDrive.forceLimit = 0.1f; d6Desc.driveAngularVelocity.x = 0; d6Desc.driveAngularVelocity.y = 0; d6Desc.driveAngularVelocity.z = 0;

Вы перемещаете скорость до 0 с малой силой, таким образом движение будет уменьшено, и вы будете останавливаться, двигаясь по полу. Это не совсем так, как трение, но рядом.

Смежные вопросы