2

現在、physx(ラグドールにikを追加しようとしています)を使用しています。何らかの理由で、すべてのラグドールジョイントは摩擦がなく、その結果、特に空中に吊るされて複数の動く運動学的アクターに接続されている場合、ラグドールは「ぐらつく」傾向があります。

ジョイントに摩擦を加えて「硬く」したいと思います。開くために数回蹴る必要があるドア(非常に錆びたヒンジ付き)を想像してみてください。つまり、ドアはヒンジの周りを回転しますが、それほど速く停止せず、回転させるには大きな力が必要です。または、アートマネキンについて考えてみてください(写真についてはGoogle画像を参照してください)。手足は動きますが、自由に動き回ることはできません。

残念ながら、physxでは関節摩擦に関連するものは何も見つかりません。ドキュメント、グーグル、ヘッダーを確認しましたが、役立つものは見つかりませんでした。

では、physxで硬い関節/関節摩擦を実装するにはどうすればよいですか?(私は思う)私はその問題のないphysxゲームを見たので、どうやらそれをする方法があるはずです。

PSここではジョイント/ソルバーの不安定性について話していません。ラグドールは安定していて(多かれ少なかれ)、関節は自由度(関節の限界)を尊重しますが、関節には摩擦がないので、摩擦を加えたいと思います。

4

3 に答える 3

1

私は最近、これに関連している可能性のあるnvidiaフォーラムで質問をしました:リンク

残念ながら、質問に対する本当の答えは得られませんでしたが、やりたいことができました。ばね定数なしで減衰定数を追加するだけの場合は、ジョイントにばねを使用すると役立つ場合があります。これは私の場合は機能しますが、その理由を説明することはできません。それを使用して満足している間は、それを推奨するかどうか完全にはわかりません。

ラグドールの個々のパーツすべてに角度ダンピングを追加して、動き始めた後の速度を速くすることができるかどうかはわかりませんが、正しく表示されない可能性があります。おそらくあなたが実験しなければならないものの1つです。

于 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 に答える