public AppFrame() { // Add detail hint slider panel this.getControlPanel().add(makeDetailHintControlPanel(), BorderLayout.SOUTH); RenderableLayer layer = new RenderableLayer(); // Create and set an attribute bundle. ShapeAttributes attrs = new BasicShapeAttributes(); attrs.setInteriorMaterial(Material.YELLOW); attrs.setInteriorOpacity(0.7); attrs.setEnableLighting(true); attrs.setOutlineMaterial(Material.RED); attrs.setOutlineWidth(2d); attrs.setDrawInterior(true); attrs.setDrawOutline(false); // Create and set an attribute bundle. ShapeAttributes attrs2 = new BasicShapeAttributes(); attrs2.setInteriorMaterial(Material.PINK); attrs2.setInteriorOpacity(1); attrs2.setEnableLighting(true); attrs2.setOutlineMaterial(Material.WHITE); attrs2.setOutlineWidth(2d); attrs2.setDrawOutline(false); // ********* sample Cones ******************* // Cone with equal axes, ABSOLUTE altitude mode Cone cone3 = new Cone(Position.fromDegrees(40, -120, 80000), 100000, 50000); cone3.setAltitudeMode(WorldWind.ABSOLUTE); cone3.setAttributes(attrs); cone3.setVisible(true); cone3.setValue(AVKey.DISPLAY_NAME, "Cone with equal axes, ABSOLUTE altitude mode"); layer.addRenderable(cone3); // Cone with equal axes, RELATIVE_TO_GROUND Cone cone4 = new Cone(Position.fromDegrees(37.5, -115, 50000), 50000, 50000, 50000); cone4.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); cone4.setAttributes(attrs); cone4.setVisible(true); cone4.setValue(AVKey.DISPLAY_NAME, "Cone with equal axes, RELATIVE_TO_GROUND altitude mode"); layer.addRenderable(cone4); // Cone with equal axes, CLAMP_TO_GROUND Cone cone5 = new Cone(Position.fromDegrees(35, -110, 50000), 50000, 50000, 50000); cone5.setAltitudeMode(WorldWind.CLAMP_TO_GROUND); cone5.setAttributes(attrs); cone5.setVisible(true); cone5.setValue(AVKey.DISPLAY_NAME, "Cone with equal axes, CLAMP_TO_GROUND altitude mode"); layer.addRenderable(cone5); // Cone with a texture, using Cone(position, height, radius) constructor Cone cone9 = new Cone(Position.fromDegrees(0, -90, 600000), 1200000, 600000); cone9.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); cone9.setImageSources("gov/nasa/worldwindx/examples/images/500px-Checkerboard_pattern.png"); cone9.setAttributes(attrs); cone9.setVisible(true); cone9.setValue(AVKey.DISPLAY_NAME, "Cone with a texture"); layer.addRenderable(cone9); // Scaled Cone with default orientation Cone cone = new Cone(Position.ZERO, 1000000, 500000, 100000); cone.setAltitudeMode(WorldWind.ABSOLUTE); cone.setAttributes(attrs); cone.setVisible(true); cone.setValue(AVKey.DISPLAY_NAME, "Scaled Cone with default orientation"); layer.addRenderable(cone); // Scaled Cone with a pre-set orientation Cone cone2 = new Cone( Position.fromDegrees(0, 30, 750000), 1000000, 500000, 100000, Angle.fromDegrees(90), Angle.fromDegrees(45), Angle.fromDegrees(30)); cone2.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); cone2.setAttributes(attrs2); cone2.setValue(AVKey.DISPLAY_NAME, "Scaled Cone with a pre-set orientation"); cone2.setVisible(true); layer.addRenderable(cone2); // Scaled Cone with a pre-set orientation Cone cone6 = new Cone( Position.fromDegrees(30, 30, 750000), 1000000, 500000, 100000, Angle.fromDegrees(90), Angle.fromDegrees(45), Angle.fromDegrees(30)); cone6.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); cone6.setImageSources("gov/nasa/worldwindx/examples/images/500px-Checkerboard_pattern.png"); cone6.setAttributes(attrs2); cone6.setValue(AVKey.DISPLAY_NAME, "Scaled Cone with a pre-set orientation"); cone6.setVisible(true); layer.addRenderable(cone6); // Scaled Cone with a pre-set orientation Cone cone7 = new Cone( Position.fromDegrees(60, 30, 750000), 1000000, 500000, 100000, Angle.fromDegrees(90), Angle.fromDegrees(45), Angle.fromDegrees(30)); cone7.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); cone7.setAttributes(attrs2); cone7.setVisible(true); cone7.setValue(AVKey.DISPLAY_NAME, "Scaled Cone with a pre-set orientation"); layer.addRenderable(cone7); // Scaled, oriented Cone in 3rd "quadrant" (-X, -Y, -Z) Cone cone8 = new Cone( Position.fromDegrees(-45, -180, 750000), 1000000, 500000, 100000, Angle.fromDegrees(90), Angle.fromDegrees(45), Angle.fromDegrees(30)); cone8.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); cone8.setAttributes(attrs2); cone8.setVisible(true); cone8.setValue( AVKey.DISPLAY_NAME, "Scaled, oriented Cone in the 3rd 'quadrant' (-X, -Y, -Z)"); layer.addRenderable(cone8); // Add the layer to the model. insertBeforeCompass(getWwd(), layer); }
protected void makeShapes() { RenderableLayer layer = new RenderableLayer(); layer.setName("Rigid Shapes"); // Create and set an attribute bundle. ShapeAttributes attrs = new BasicShapeAttributes(); attrs.setInteriorMaterial(Material.YELLOW); attrs.setInteriorOpacity(0.7); attrs.setEnableLighting(true); attrs.setOutlineMaterial(Material.RED); attrs.setOutlineWidth(2d); attrs.setDrawInterior(true); attrs.setDrawOutline(false); // Create and set a second attribute bundle. ShapeAttributes attrs2 = new BasicShapeAttributes(); attrs2.setInteriorMaterial(Material.PINK); attrs2.setInteriorOpacity(1); attrs2.setEnableLighting(true); attrs2.setOutlineMaterial(Material.WHITE); attrs2.setOutlineWidth(2d); attrs2.setDrawOutline(false); // Pyramid with equal axes, ABSOLUTE altitude mode. Pyramid pyramid = new Pyramid(Position.fromDegrees(40, -120, 220000), 200000, 200000, 200000); pyramid.setAltitudeMode(WorldWind.ABSOLUTE); pyramid.setAttributes(attrs); pyramid.setValue(AVKey.DISPLAY_NAME, "Pyramid with equal axes, ABSOLUTE altitude mode"); layer.addRenderable(pyramid); // Cone with equal axes, RELATIVE_TO_GROUND. Cone cone = new Cone(Position.fromDegrees(37.5, -115, 200000), 200000, 200000, 200000); cone.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); cone.setAttributes(attrs); cone.setValue(AVKey.DISPLAY_NAME, "Cone with equal axes, RELATIVE_TO_GROUND altitude mode"); layer.addRenderable(cone); // Wedge with equal axes, CLAMP_TO_GROUND. Wedge wedge = new Wedge( Position.fromDegrees(35, -110, 200000), Angle.fromDegrees(225), 200000, 200000, 200000); wedge.setAltitudeMode(WorldWind.CLAMP_TO_GROUND); wedge.setAttributes(attrs); wedge.setValue(AVKey.DISPLAY_NAME, "Wedge with equal axes, CLAMP_TO_GROUND altitude mode"); layer.addRenderable(wedge); // Box with a texture. Box box = new Box(Position.fromDegrees(0, -90, 600000), 600000, 600000, 600000); box.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); ArrayList<Object> imageSources = new ArrayList<Object>(); imageSources.add("images/32x32-icon-nasa.png"); imageSources.add(null); imageSources.add("gov/nasa/worldwindx/examples/images/500px-Checkerboard_pattern.png"); imageSources.add(null); imageSources.add("images/64x64-crosshair.png"); imageSources.add(null); box.setImageSources(imageSources); box.setAttributes(attrs); box.setValue(AVKey.DISPLAY_NAME, "Box with a texture"); layer.addRenderable(box); // Sphere with a texture. Ellipsoid sphere = new Ellipsoid(Position.fromDegrees(0, -110, 600000), 600000, 600000, 600000); sphere.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); sphere.setImageSources("gov/nasa/worldwindx/examples/images/500px-Checkerboard_pattern.png"); sphere.setAttributes(attrs); sphere.setValue(AVKey.DISPLAY_NAME, "Sphere with a texture"); layer.addRenderable(sphere); // Cylinder with a texture. Cylinder cylinder = new Cylinder(Position.fromDegrees(0, -130, 600000), 600000, 600000, 600000); cylinder.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); cylinder.setImageSources( "gov/nasa/worldwindx/examples/images/500px-Checkerboard_pattern.png"); cylinder.setAttributes(attrs); cylinder.setValue(AVKey.DISPLAY_NAME, "Cylinder with a texture"); layer.addRenderable(cylinder); // Cylinder with default orientation. cylinder = new Cylinder(Position.ZERO, 600000, 500000, 300000); cylinder.setAltitudeMode(WorldWind.ABSOLUTE); cylinder.setAttributes(attrs); cylinder.setValue(AVKey.DISPLAY_NAME, "Cylinder with default orientation"); layer.addRenderable(cylinder); // Ellipsoid with a pre-set orientation. Ellipsoid ellipsoid = new Ellipsoid( Position.fromDegrees(0, 30, 750000), 1000000, 500000, 100000, Angle.fromDegrees(90), Angle.fromDegrees(45), Angle.fromDegrees(30)); ellipsoid.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); ellipsoid.setAttributes(attrs2); ellipsoid.setValue(AVKey.DISPLAY_NAME, "Ellipsoid with a pre-set orientation"); layer.addRenderable(ellipsoid); // Ellipsoid with a pre-set orientation. ellipsoid = new Ellipsoid( Position.fromDegrees(30, 30, 750000), 1000000, 500000, 100000, Angle.fromDegrees(90), Angle.fromDegrees(45), Angle.fromDegrees(30)); ellipsoid.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); ellipsoid.setImageSources( "gov/nasa/worldwindx/examples/images/500px-Checkerboard_pattern.png"); ellipsoid.setAttributes(attrs2); ellipsoid.setValue(AVKey.DISPLAY_NAME, "Ellipsoid with a pre-set orientation"); layer.addRenderable(ellipsoid); // Ellipsoid with a pre-set orientation. ellipsoid = new Ellipsoid( Position.fromDegrees(60, 30, 750000), 1000000, 500000, 100000, Angle.fromDegrees(90), Angle.fromDegrees(45), Angle.fromDegrees(30)); ellipsoid.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); ellipsoid.setAttributes(attrs2); ellipsoid.setValue(AVKey.DISPLAY_NAME, "Ellipsoid with a pre-set orientation"); layer.addRenderable(ellipsoid); // Ellipsoid oriented in 3rd "quadrant" (-X, -Y, -Z). ellipsoid = new Ellipsoid( Position.fromDegrees(-45, -180, 750000), 1000000, 500000, 100000, Angle.fromDegrees(90), Angle.fromDegrees(45), Angle.fromDegrees(30)); ellipsoid.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND); ellipsoid.setAttributes(attrs2); ellipsoid.setValue(AVKey.DISPLAY_NAME, "Ellipsoid oriented in 3rd \"quadrant\" (-X, -Y, -Z)"); layer.addRenderable(ellipsoid); // Add the layer to the model and update the layer panel. insertBeforePlacenames(getWwd(), layer); }