GJK Warm Starting
Posted: Fri Mar 13, 2009 12:19 am
I'm trying to reduce the iteration count in my GJK implementation when there is temporal coherence.
The final search vector can be re-used as the initial search direction in the next call. With small frame-to-frame rotations (~10 degrees) this increases performance in my tests by 8-20%. However, the iteration count is still often greater than one.
I am only using GJK for polytopes (1 to 32 vertices) and I need the distance. It seems that we should be able to warm start and perform only one iteration in many cases. If the closest features don't change, we ought to get away with just one support point call.
Stephen Cameron seems to store the simplex vertex indices for warm starting. This sounds great but I'm concerned this may have some bad implications. For example, large relative motion may distort the cached simplex into a degenerate configuration.
Does anyone have experience with these or other techniques for GJK warm starting?
The final search vector can be re-used as the initial search direction in the next call. With small frame-to-frame rotations (~10 degrees) this increases performance in my tests by 8-20%. However, the iteration count is still often greater than one.
I am only using GJK for polytopes (1 to 32 vertices) and I need the distance. It seems that we should be able to warm start and perform only one iteration in many cases. If the closest features don't change, we ought to get away with just one support point call.
Stephen Cameron seems to store the simplex vertex indices for warm starting. This sounds great but I'm concerned this may have some bad implications. For example, large relative motion may distort the cached simplex into a degenerate configuration.
Does anyone have experience with these or other techniques for GJK warm starting?