PhysX: трение в суставах / жесткие суставы

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

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

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

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

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


person SigTerm    schedule 28.05.2010    source источник


Ответы (3)


Недавно я задал вопрос на форумах nvidia, который может быть связан с этим: ссылка

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

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

person identitycrisisuk    schedule 28.05.2010
comment
Что ж, демпфирование сработало. Установка высокой силы демпфирующей пружины на ограничителях и шарнирах хорошо работает на шарнирах вращения / d6, но не так хорошо на шарнирах. Так что наконец-то я получил тугую тряпичную куклу. Это, конечно, не трение в традиционном смысле, но дает тот же эффект. Это похоже на недокументированную особенность, но я серьезно сомневаюсь, что она когда-либо сломается - пружина с высоким демпфированием и нулевой силой должна вести себя так. - person SigTerm; 28.05.2010
comment
@SigTerm: Это обнадеживает, меня беспокоит то, что он может выйти из строя с будущим обновлением. Рад, что это помогло, если не совсем то, что вам нужно. - person identitycrisisuk; 01.06.2010

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

person Ólafur Waage    schedule 28.05.2010
comment
Нет, дело не в этом - тряпичная кукла устойчива, но мне нужно сделать ее более жесткой. Я обновил вопрос. - person SigTerm; 28.05.2010

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

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 с небольшой силой, таким образом движение будет уменьшено, и ваши объекты перестанут двигаться по полу. Это не совсем похоже на трение, но близко.

person Entretoize    schedule 17.10.2010