Articulated Vehicles, PhysX 3.2.2

This was easy to do in PhysX 2.X, with wheel shapes.
Is there a correct way to do this in PhysX 3.2.2, or do you have to “haxx it”?

Creating a vehicle using the PhysX Vehicle, which contains an articulated link for steering(like a wheel loader ). Also making oscillating axis for the wheels to rest on.

Hello,

I’m afraid I don’t completely understand the problem. Could you please provide some more details?

In 3.x we support custom constraints through the PxConstraintConnector class. In the meantime, it might be worth your while taking a look at how this is used in vehicles and joints in the vehicles and extensions code.

Regarding the oscillating axis, do you mean that the vehicle wheels rest on a dynamic or moving kinematic? That is supported.

Thanks,

Gordon

Precisely! By oscillating axis I mean that the each wheel pair is resting on a dynamic actor, which rotates around the Z-Axis.

For the steering part I provided a picture of what I’m trying to achieve.

http://img829.imageshack.us/img829/7937/conceptd.jpg

Thanks for the diagram. I can see what you are trying to do now.

To do this you will likely need to make two two-wheeled vehicles and then join them together with a revolute joint. You might not want a revolute joint exactly but the specifics of the joint are entirely your choice.

The first thing is to make a two-wheeled vehicle. You can do this by creating a 4-wheeled vehicle and then disabling two of the wheels with disableWheel(). It’s important the disabled wheels are not connected to the differential, assuming you choose PxVehicleDrive4W. There’s actually some documentation for creating 3-wheeled vehicles in the vehicles section of the PhysXGuide. I recommend reading that to get an idea of what is involved.

It is completely up to you if you create two instances of PxVehicleDrive4W; one PxVehicleDrive4W and one PxVehicleNoDrive; or two instances of PxVehicleNoDrive. It really depends on how you want to drive each individual section of your articulated vehicle.

Now, each physx vehicle has a physx rigid actor. All that remains is to connect the actors with a joint. I’m guessing that the type of joint you need will already be implemented in PhysXExtensions. PxRevoluteJoint might be a good place to start.

I hope this helps you get started. If you hit any problems please post on the forums.

Thanks,

Gordon

Oh ofcourse! Thanks! That really helped me out.