EDIT2: The issue was finally found to be related to the absurdly small
(0.00000001) 'camera near clipping distance', which I have set to see
my own cheek-plate. It has nothing to do with offsets, levels of
detail or parenting.
You found the issue by yourself. I just want to answer the followup question:
why this should cause such a problem.
The 3D engine of the BGE uses Z-Buffer processing to "sort" the rendered pixels. This means your scene will be "sliced" between the near and far clipping distance of the camera.
Within one slice the render can't decide which face is in front of the other. So it will pick more or less a random one. That is the reason why you should avoid planes covering each other with a very small distance (e.g. a painting at a wall). This can cause Z-Fighting at pixel level.
In orthogonal mode you see the same detail level at all distances. Therefore the z-Buffer is equally distributed (all slices have the same thickness).
In perspective mode the object near to the camera are rendered with more visible details than objects more far away from the camera. The sliced near the near clipping plane are thinner while the slices near the far clipping plane are thicker.
As you setup a really close near clipping plane you get a really detailed helmet with the costs of the other characters end in very thick slices.
I assume the result was that the complete shield and the legs are within the same slice sometimes rendered in the wrong order. The slices are so wide that you can't see pixel-wide Z-Fighting (or it is not obvious in your sample images).
Obviously the near clipping plane should not be that close. When you set up a more practical value (e.g. the default value) you should avoid the z-fighting effect.
There are several different options to show the helmet.
- use an overlay scene to render the helmet (best option)
- move the faces of the helmet more far away that it is still in the camera frustum