Checked all the rendering and collision callback code and have a clearer picture of what is happening.
A ring of objects is made. Each object is a sort of equilateral Y. As these aren't convex polygons, 3 cpShapes are needed per cpBody. Ten of these objects are arranged in a ring and set inwards towards each other such that two prongs of each Y collide simultaneously near the centre. For instance, the bottom Y of the ring would be upright and sent upwards, while the top Y of the ring would be inverted and sent downwards. From this, shouldn't we expect the first cpArbiters encountered to only generate one collision point each?
When the initial contact is made between all of the Ys, each cpArbiter reports 3 collision points instead. One point is always in an expected position at the meeting point of two prongs. The other two are reported near the centre of one of the colliding Ys. These incorrect collision points always line up exactly with the central kinks of some Y. It seems that one of the colliding cpShapes is picked by the cpAbiter, and all of it's vertices are reported as collisions.
This only happens when the arms of each Y are sufficiently thin enough. With thick enough arms, everything works fine. This behaviour appears when the points of the arms are about eight times further from the centre of a Y than the kinks. Additionally, this behaviour only seems to happen in the very first collisions of this setup, when two prongs collide at once, and at other rare times.
So based on this, and the fact that every other collision renders fine, it doesn't seem to be a rendering bug.
A few pictures.
Before anything has collided. Orange is the boundary of an object with one cpBody. Pink lines delineate the convex cpShapes.
- 2013-04-15-191142_1024x768_scrot.png (51.77 KiB) Viewed 5117 times
Red lines stretch from centre of an object to blue boxes at the collisions. After the first erroneous positions are reported, we see that the right and middle objects both have two erroneous points. These points correspond to the vertices of the colliding cpShape to the left. The collisions near the centre of the Ys should most certainly not be happening yet.
- 2013-04-15-191148_1024x768_scrot.png (54.28 KiB) Viewed 5117 times
A while later, another collision reports a pair of erroneous points.
- 2013-04-15-191233_1024x768_scrot.png (53.46 KiB) Viewed 5117 times
So... what's going on here?