I’m currently making a train chassis with rolling wheelsets and full bogie suspension. I’ve used normal cylinders with a flange, but this causes constant rocking and sideslip movement of the wheels in high speed conditions, leading to massive amounts of hunting oscillation, even on completely straight track.
However, if you know a bit about trains, you would know that the wheel profile of a standard set of train wheels are slightly conical, to create a self aligning movement that guides the train without the full dependency of flanges.
The closest thing we have to a cone in terms of Roblox BaseParts is a Ball, so we’ll use that to mimic the conical geometry of the wheels.
And it works great! 310 SPS with nearly zero hunting oscillation!
Now, most trains tend to travel over some sort of grade crossing (where wheels meet pavement, wood, etc).
So, let’s see what happens when we run our train over one of these.
This should be the intended behavior (this uses the first iteration of the train chassis shown at the top of this post).
Due to the fixed geometry of the spheres, they rest lower than the pavement on a typical grade crossing, which is level or slightly raised above the rails. Let’s see what happens when we try negating the protruding portion of the sphere to match the wheel’s bounds. These Unions have PreciseConvexDecomposition applied.
Now, the train may be able to go through grade crossings, but the hunting of the wheels and the general stability of the train has worsened. The wheels now rotate with a slight offset, evident by the movement of the suspension and the bogies. The hunting of the wheels has increased so much, that the train can’t even break 15 SPS.
I really need workarounds to this, or for Roblox to implement more types of BaseParts. Cones, semispheres, etc. would be really helpful in cases like these.
MeshParts do not have precise collisions. Roblox BaseParts have perfect geometrical collisions despite their jagged appearance. Unioning them completely removes this. Implementation of a semisphere or cone BasePart would remedy this issue.
I applied Precise CollisionFidelity for the negated spheres, and that’s what you see in the final video. The problem is that the jagged appearance of the spheres becomes realized as a collision when you apply a UnionOperation to a BasePart, essentially losing the collision’s geometric perfection.
Perhaps for the circular model, you could overlay the spherical model of the wheels as an invisible part, add the regular wheels as façade, then create a cylinder of the same diameter as the circle of the circular wheels. Then, using geometric and trigonometric principles, set them along the correct edges of the grade crossing such that it interacts as intended with the wheels, negate the cylinders from the grade crossing (and optionally, keep the negative parts as non-interactable,) and you should have a model of the grade crossing which interacts well with the invisible circular wheels while having the appearance of normal wheels. Or, to circumvent the need for more math, shrink the edges of the grade crossing and fill in the sides with the same material and such that the wheel does not interact with them. This isn’t the most optimal workaround, but it is what I could think of on the fly.
Problem is that I want to make the grade crossing in a way that vehicles won’t get stuck on it or have a large speed bump effect. Making a variety of BaseParts can allow for different wheel geometries to run very smoothly. A semisphere BasePart would certainly help vehicles that currently use Ball BaseParts for wheels, as they provide more clearance for the vehicle in places like a tight alleyway, or in this case, train wheels.