So I have come across what looks to be a very strange bug in 3.4 when using the GPU solver…
The scene is as follows:
- One static rigid actor of dimensions (2.0, 0.05, 0.607) with identity global pose orientation.
- One static rigid actor of dimensions (0.9144, 0.05, 0.607) with global pose rotated 0.003 radians about it's y-axis and then 15 degrees about it's z-axis
- One dynamic rigid actor of dimensions (0.4, 0.4, 0.4) with global pose rotated PI/4 radians about it's y-axis.
All shapes use box geometry.
I don’t think that the dimensions are so important (I only provide them for completeness). What is important is that the second static actor has a small y-axis rotation and the dynamic actor also has a y-axis rotation. I have found that the problem does not occur (to the same extent) when either of these actors are not rotated in the y-axis.
I set the contact velocity to be 0.5 times the direction of the contacting static actor’s x-axis, so as to simulate a conveyor.
Below is an video of the problem when the configuration described above is used:
As you can see, the dynamic actor does not make it over the edge. However, below is an video of the exact same configuration, but with the dynamic actor not rotated about it’s y-axis:
This time the dynamic actor does make it over the edge, but skews slightly as it does so.
When using the CPU solver, the behaviour is as I’d expect:
- When the dynamic actor is rotated: http://i.imgur.com/mtgtkPW.gif
- When the dynamic actor is not rotated (note that there is no skewing at the end): http://i.imgur.com/fNQ48ar.gif
Here is the RepX for the first frame: https://gist.github.com/kermado/2b34d7e6103315baa53d4550b87ae5b4