"Practitioners will often 'cheat' by assigning everything the same mass. This could lead to an arm having the same inertia as a foot"
It's fairly common to see totally bogus masses and inertia tensors in simulation. Especially inertia tensors. (Long thin objects have much higher moments of inertia in one axis. This is expressed as a 3x3 inertia tensor.) In my Animats "Falling Bodies" system, everything was composed of convex polyhedrons. For valid non-self-intersecting polyhedra, there's a straightforward way to integrate the total mass and the inertia tensor, developed by Brian Mirtich.[1] I used that to compute the mass properties automatically, without any help from the user. Density was assumed to be that of water unless overridden. That's a good approximation for humans and animals, but high for vehicles with lots of open interior volume.
Before finding Mirtich's paper, I was dividing convex polyhedra into tetrahedrons with one vertex at the barycenter of the polyhedron, computing the inertia tensor for each tetrahedron, translating them to the object center, and adding them up. It's clunky, but it works. Mirtich's method is much cleaner, and will work for all closed non-self-intersecting polyhedra.
There's no excuse for a simulation system not computing the mass properties. Expecting users to input an inertia tensor by hand is hopeless. (Looking at you, Gazebo.)
Here's a good basic test for proper inertia handling - a spinning top.[2] (Raw MP4 file, may need download before playing). That's from an early test of my Falling Bodies around 1996-1997. It spins smoothly, while precessing and wobbling, slows down due to the friction with the ground, and eventually falls over and rolls away. Try that in your physics engine. The better ones get it right.
I recall reading that Mirtich paper when I was doing my undergrad project. I still have a paper copy somewhere. You're definitely right in that there's really no excuse for not having proper inertia tensors. Given that paper is from '96, I would think that everybody who needs to know would know by now.
There's at least one contact model I'm fairly sure is unknown in the games industry and another I'm not sure about. A friend of mine (George Baciu) wrote a paper for an IEEE conference (Systems, Man, and Cybernetics, I think) on a method that solves the collisions using graph theory. One of the nice things about it is it handles multiple simultaneous collisions correctly. I'm annoyed because I can't find my copy of the paper or even the paper name at the moment. The other one is a volumetric contact model from Yves Gonthier's PhD thesis, "Contact Dynamics Modelling for Robotic Task Simulation" at the University of Waterloo. There's a thesis that uses it for a wheel-soil contact model and there's another thesis that validates it and presents a volumetric friction model.
Eberly's method is faster, but for rigid-body work, mass properties are precomputed once and stored. It's not necessary to run that algorithm during the simulation. Even for thousand-face polyhedra, it's not that slow to precompute mass properties.
It's fairly common to see totally bogus masses and inertia tensors in simulation. Especially inertia tensors. (Long thin objects have much higher moments of inertia in one axis. This is expressed as a 3x3 inertia tensor.) In my Animats "Falling Bodies" system, everything was composed of convex polyhedrons. For valid non-self-intersecting polyhedra, there's a straightforward way to integrate the total mass and the inertia tensor, developed by Brian Mirtich.[1] I used that to compute the mass properties automatically, without any help from the user. Density was assumed to be that of water unless overridden. That's a good approximation for humans and animals, but high for vehicles with lots of open interior volume.
Before finding Mirtich's paper, I was dividing convex polyhedra into tetrahedrons with one vertex at the barycenter of the polyhedron, computing the inertia tensor for each tetrahedron, translating them to the object center, and adding them up. It's clunky, but it works. Mirtich's method is much cleaner, and will work for all closed non-self-intersecting polyhedra.
There's no excuse for a simulation system not computing the mass properties. Expecting users to input an inertia tensor by hand is hopeless. (Looking at you, Gazebo.)
Here's a good basic test for proper inertia handling - a spinning top.[2] (Raw MP4 file, may need download before playing). That's from an early test of my Falling Bodies around 1996-1997. It spins smoothly, while precessing and wobbling, slows down due to the friction with the ground, and eventually falls over and rolls away. Try that in your physics engine. The better ones get it right.
[1] http://www.cs.berkeley.edu/~jfc/mirtich/massProps.html [2] http://animats.com/images/spinningtopsmall.mp4