基本的に、デフォルトでサーフェス シェイプが戦術シンボルの上にレンダリングされるようにしたいと考えています。Worldwind の例で再現された問題を次に示します。
public class TestApp extends ApplicationTemplate {
public static class AppFrame extends ApplicationTemplate.AppFrame {
public AppFrame() {
// Symbol
RenderableLayer symbolLayer = new RenderableLayer();
TacticalSymbol symbol = new MilStd2525TacticalSymbol("suzp-----------", Position.fromDegrees(0.0, 0.0));
symbol.setAltitudeMode(WorldWind.CLAMP_TO_GROUND);
symbol.setShowLocation(false);
symbolLayer.addRenderable(symbol);
// Shape
RenderableLayer shapeLayer = new RenderableLayer();
SurfaceCircle circle = new SurfaceCircle(Position.fromDegrees(0.0, 0.0), 100e4);
shapeLayer.addRenderable(circle);
getWwd().getModel().getLayers().add(symbolLayer);
getWwd().getModel().getLayers().add(shapeLayer);
}
}
public static void main(String[] args) {
start("World Wind Testing", AppFrame.class);
}
}
レイヤーを追加する順序に関係なく、戦術シンボルは常にサーフェス シェイプの上にレンダリングされます。これは、形状のレンダリングが異なるためだと思います。
"レイヤーは、レイヤー リストで定義されている順序で表示されます。(ただし、レイヤー内の 3D 形状は、近い順に表示されます"
Tactical Symbol を拡張し、 OrderedRenderableインターフェイスを実装し、 makeOrderedRenderable()メソッドをオーバーライドすることで、この問題を解決できる予感がありますが、他のレイヤーを壊さずに目的の機能を実現するためにどの特定の変更を加える必要があるかはわかりません。