2

我目前正在使用 physx(试图将 ik 添加到 ragdoll)。出于某种原因,所有布娃娃关节都是无摩擦的,因此,布娃娃往往会“摇晃”,尤其是当它悬挂在空中并连接到几个移动的运动演员时。

我想增加关节的摩擦力并使它们“僵硬”。想象一扇门(铰链非常生锈)需要被踢几次才能打开——即它围绕铰链旋转,但不多,很快停止,并且需要很大的力才能使其旋转。或者想想艺术人体模型(图片见谷歌图片)——它们的四肢四处移动,但它们不能自由摆动。

不幸的是,我在 physx 中找不到与关节摩擦有关的任何内容。我检查了文档、谷歌和标题,但找不到任何有用的东西。

那么,如何使用 physx 实现刚性关节/关节摩擦?(我认为)我见过没有这个问题的 physx 游戏,所以显然应该有一些方法可以做到这一点。

PS我不是在这里谈论联合/求解器的不稳定性。布娃娃是稳定的(或多或少),关节尊重自由度(关节限制),但关节没有摩擦,我想给它们增加摩擦。

4

3 回答 3

1

我最近在 nvidia 论坛上问了一个可能与此有关的问题:link

不幸的是,我没有得到我的问题的真正答案,但设法做我想做的事情,如果您只添加阻尼常数而不添加弹簧常数,则在接头中使用弹簧可能会对您有所帮助。这适用于我的情况,但我无法解释为什么,虽然我很高兴使用它,但我不完全确定是否推荐它。

我不知道您是否还可以为布娃娃的所有单独部分添加角度阻尼,这会使它们在开始移动后更快地减速,但它可能看起来不正确。可能是您必须尝试的事情之一。

于 2010-05-28T13:08:25.953 回答
0

我在 Physx 中找到了这个关于摆动关节的论坛帖子,不知道你是否看过,但我希望它有所帮助。

于 2010-05-28T12:20:36.057 回答
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,这样运动会减少,你的物体会停止在地板上移动。它不完全像摩擦,而是接近。

于 2010-10-17T15:05:15.510 回答