In the forum discussions here and here danske discusses the options for a car racing simulation:
I'd pick rigid bodies because I'm
not interested in deformation. Any deformation, e.g. of springs,
would be modelled explicitly.
I wouldn't use
collision detection because the parts of the car shouldn't
freely collide with each other, their movements being
constrained by constant joints instead; no contacts between the
rigid-body components should be made or broken. I'm also not
interested in hitting trees or barriers, just the internal
behavior of the system of car objects. Also, the geometry of the
component objects isn't important aside from a graphical
representation. Since there's no collision detection I don't
need to know the boundaries of the objects.
The
joint constraints would also be specific instances of contact
constraints, so no general contact would need to be solved for;
again, no contact should be made or lost from the initial
joints.
No friction; joint friction might be
interesting to play with, but I'll assume static and dynamic
friction are not significant forces. The joints are well-oiled
and don't bind. Yet again, any contact between component objects
is only through joints, and the joints have no friction, so no
frictional forces need to be computed.
The
interaction with the road is determined by specific tire/road
equations and not a generic friction algorithm; from the
simulator's point of view the car never actually touches
anything, in collision or contact, so no friction modelling is
needed.
Since I'm not interesting in the
simulation rate, I'd go with a fourth-order Runge-Kutta with a
small time step. I think the joint forces would be sufficiently
continously absent collisions that this wouldn't present any
problems requiring special handling.
If I
wanted to make it more gamish I'd probably add collision
detection but not friction.
Once I'm happy
playing with the mechanical behavior of the suspension, I might
move on to playing with aerodynamics. That might involve
developing matrices giving lift/drag/torque for a given airflow
vector, and possibly some rudimentary computation of
ground-effect, but wouldn't model the shape of the aerodynamic
surfaces or play with CFD analysis even off-line. |