sw.setCapability(Switch.ALLOW_SWITCH_WRITE);
DistanceLOD lod = new DistanceLOD(new float[] { font.getFont().getSize()*10*(float)BoardModel.HEX_DIAMETER });
lod.addSwitch(sw);
lod.setSchedulingBounds(BoardModel.bounds);
Appearance app = new Appearance();
app.setColoringAttributes(new ColoringAttributes(fg, ColoringAttributes.SHADE_FLAT));
sw.addChild(new Shape3D(geom, app));
app = new Appearance();
Color3f lodfg = new Color3f(fg);
lodfg.scale(2/3f);
lodfg.add(C.grey10);
app.setColoringAttributes(new ColoringAttributes(lodfg, ColoringAttributes.SHADE_FLAT));
sw.addChild(makeQuad(lower.x, lower.y+(upper.y-lower.y)/4, upper.x-lower.x, (upper.y-lower.y)/2, 0, app));
addChild(sw);
addChild(lod);
setTransform(new Transform3D(C.nullRot, new Vector3d(0,0,0.1), 1.0));
if (bg != null) {
app = new Appearance();
app.setColoringAttributes(new ColoringAttributes(bg, ColoringAttributes.SHADE_FLAT));
app.setPolygonAttributes(new PolygonAttributes(PolygonAttributes.POLYGON_FILL, PolygonAttributes.CULL_BACK, 10.0f));
addChild(makeQuad(lower.x-0.5, lower.y-0.1, upper.x-lower.x+1, upper.y-lower.y+.6, -.1, app));
}
}