I want to make a wire scattered on the ground, how can I simulate it with a physical system or is there any related information.
Hi,
We dont have a great solution for that, currently the only recommended way to simulate this with PhysX is using capsules and joints between those. You can check the physics rope demo. Window->Simulation->Demos->Rope.
Regards,
Ales
I tried “Ropes” in the Demo, but I encountered some strange physics. I saw that “Limit” and “Drive” were added to the Demo, but during my production, I didn’t find these two options. How to add them? When I add “SphericalJoint”, I cannot add “Limit” and “Drive”. Hope to get your help.
[image]
Ah I see the confusion, this is because in the demo the ropes are configured to not use UsdPhysicsSphericalJoint directly but rather use generic D6 joint configured as a Spherical joint.
So do that from UX you create a PhysicsJoint - thats a D6 joint where you can lock/limit individual axis and then you can add drives per axis.
Sorry for the confusion, regards,
Ales
@AlesBorovicka
I added “D6” but why is my wire disconnected, kind of like a spring? I’ve tried a lot of parameters but can’t seem to get it to work.
Did you locked the translation axis? Also check your units and mass, the object mass might be large and heavy.
You can also use just the regular SphericalJoint which is easier to setup, there you setup just the cone limits directly, you dont add drives or individual limits. Limit is already part of the joint itself.
@AlesBorovicka
I used “D6” and increased “mass”. Even if the mass adjustment is very small, the effect is the same. Still the same as a spring. If I constrain the “Z” axis, it looks fine, but doesn’t look like a rope anymore because the Z axis is constrained.
I used “SphericalJoint” and it looked good, but I encountered another problem. If I move it, it will keep moving on its own, and the movement will become larger and larger until it falls apart and breaks. I uploaded my video file.
Is there a solution? Thank you so much.
20230927101652.zip (1.6 MB)
If I’m using “D6” or “SphericalJoint”, how can I add some “damping”? The rope is suspended in the air. Once it moves, it will not stop until it breaks. Is it because there is no resistance? But I can’t find where to add resistance. I tried increasing the “damping” in the Limit of the D6 Joint a lot, but it didn’t seem to have any effect.
Spherical joint does not have drive, you would have to use the D6 and add per axis drive.
Note that the damping values that you use from the demo were tuned for the given capsules. If you want to replicate it you need to replicate its mass too, the mass for the capsule was 0.02kg.
@AlesBorovicka As you said, I want to add a driver to the D6 and add “damping” to the driver, but I can’t find any way to add a driver.
I see the drives in the Add list, so in the example of the ropes, here is the python code:
dofs = ["rotY", "rotZ"]
for d in dofs:
limitAPI = UsdPhysics.LimitAPI.Apply(d6Prim, d)
limitAPI.CreateLowAttr(-self._coneAngleLimit)
limitAPI.CreateHighAttr(self._coneAngleLimit)
# joint drives for rope dynamics:
driveAPI = UsdPhysics.DriveAPI.Apply(d6Prim, d)
driveAPI.CreateTypeAttr("force")
driveAPI.CreateDampingAttr(self._rope_damping)
driveAPI.CreateStiffnessAttr(self._rope_stiffness)
Meaning you would have to add Y,Z rotation drive and set the damping and stiffness.
self._rope_damping = 10.0
self._rope_stiffness = 1.0
The D6 drives are setup per axis.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.