Optimization: re-use inverse matrix objects instead of letting getInverse() create an inverse every single animation frame