The outline solution I’m using it somehow similar, as in it needs to duplicate the geometry.
But the second geometry is not scaled, it uses an unshaded Material that is actually using the polygon offset of opengl, and the wireframe mode.
wireMaterial.getAdditionalRenderState().setWireframe(true); //we want wireframe
wireMaterial.getAdditionalRenderState().setBlendMode(BlendMode.Alpha);//that's just because we add an alpha pulse to the selection later, this is not mandatory
wireMaterial.getAdditionalRenderState().setLineWidth(2); //you can play with this param to increase the line thickness
wireMaterial.getAdditionalRenderState().setPolyOffset(-3f,-3f); //this is trick one, offsetting the polygons
wireMaterial.getAdditionalRenderState().setFaceCullMode(RenderState.FaceCullMode.Front); // trick 2 we hide the front faces to not see the wireframe on top of the geom
This setting gives a 1 pixel outline, increasing linewidth increase the outline width. Also the outline width is constant whether you’re near of far from the object.
It gives decent result, though you can see the trick in some cases.
As you can see the outline on the head is not just an outline of the silhouette, but that’s good enough for my need.