package Savage.ShipsMilitary.PatrolCraftNavalAcademyBrazil;

import org.web3d.x3d.jsail.Core.*;
import org.web3d.x3d.jsail.fields.*;
import org.web3d.x3d.jsail.Geometry3D.*;
import org.web3d.x3d.jsail.Grouping.*;
import org.web3d.x3d.jsail.Navigation.*;
import org.web3d.x3d.jsail.Networking.*;
import org.web3d.x3d.jsail.Rendering.*;
import org.web3d.x3d.jsail.Shape.*;
import org.web3d.x3d.jsail.Texturing.*;

// Javadoc metadata annotations follow, see below for X3DJSAIL Java source code.
/**
 * <p> Brazilian Naval Academy Training Ship. </p>
 <p> Related links: Catalog page <a href="../../../../ShipsMilitary/PatrolCraftNavalAcademyBrazil/SuperstructureIndex.html" target="_blank">Superstructure</a>,  source <a href="../../../../ShipsMilitary/PatrolCraftNavalAcademyBrazil/Superstructure.java">Superstructure.java</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank">X3D Resources</a>, <a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank">X3D Scene Authoring Hints</a>, and <a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank">X3D Tooltips</a>. </p>
	<table style="color:black; border:0px solid; border-spacing:10px 0px;">
        <caption>Scene Meta Information</caption>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center; padding:10px 0px;"><i>meta tags</i></td>
			<td style="text-align:left;   padding:10px 0px;">&nbsp; Document Metadata </td>
		</tr>

		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> title </i> </td>
			<td> <a href="../../../../ShipsMilitary/PatrolCraftNavalAcademyBrazil/Superstructure.x3d">Superstructure.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> description </i> </td>
			<td> Brazilian Naval Academy Training Ship </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> creator </i> </td>
			<td> Claudio Coreixas </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> created </i> </td>
			<td> 20 October 2009 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> modified </i> </td>
			<td> 20 October 2019 </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> reference </i> </td>
			<td> <a href="http://www.en.mar.mil.br" target="_blank">http://www.en.mar.mil.br</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> subject </i> </td>
			<td> ships </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> identifier </i> </td>
			<td> <a href="https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/Superstructure.x3d" target="_blank">https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/Superstructure.x3d</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> generator </i> </td>
			<td> X3D-Edit, <a href="https://www.web3d.org/x3d/tools/X3D-Edit" target="_blank">https://www.web3d.org/x3d/tools/X3D-Edit</a> </td>
		</tr>
		<tr>
			<td style="text-align:right; vertical-align: text-top;"> <i> license </i> </td>
			<td> <a href="../../../../ShipsMilitary/PatrolCraftNavalAcademyBrazil/../../license.html">../../license.html</a> </td>
		</tr>
		<tr style="background-color:silver; border-color:silver;">
			<td style="text-align:center;" colspan="2">  &nbsp; </td>
		</tr>
	</table>

	<p>
		This program uses the
		<a href="https://www.web3d.org/specifications/java/X3DJSAIL.html" target="_blank">X3D Java Scene Access Interface Library (X3DJSAIL)</a>.
		It has been produced using the 
		<a href="https://www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">X3dToJava.xslt</a>
		stylesheet
	       (<a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/X3dToJava.xslt" target="_blank">version control</a>)
                which is used to create Java source code from an original <code>.x3d</code> model.
	</p>

	* @author Claudio Coreixas
 */

public class Superstructure
{
	/** Default constructor to create this object. */
	public Superstructure ()
	{
	  initialize();
	}

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
            try { // catch-all
  x3dModel = new X3D().setProfile(X3D.PROFILE_IMMERSIVE).setVersion(X3D.VERSION_3_2)
  .setHead(new head()
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("Superstructure.x3d"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("Brazilian Naval Academy Training Ship"))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Claudio Coreixas"))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("20 October 2009"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("20 October 2019"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("http://www.en.mar.mil.br"))
    .addMeta(new meta().setName(meta.NAME_SUBJECT    ).setContent("ships"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/Superstructure.x3d"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("X3D-Edit, https://www.web3d.org/x3d/tools/X3D-Edit"))
    .addMeta(new meta().setName(meta.NAME_LICENSE    ).setContent("../../license.html")))
  .setScene(new Scene()
    .addChild(new WorldInfo().setTitle("Superstructure.x3d"))
    .addChild(new Viewpoint().setDescription("view of superstructure").setPosition(5.0,1.5,10.0))
    .addChild(new Shape()
      .setAppearance(new Appearance("deck01")
        .setMaterial(new Material().setDiffuseColor(0.55,0.55,0.55)))
      .setGeometry(new IndexedFaceSet("deck012IFS").setDEF("deck012IFS").setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {1,3,4,2,-1,3,5,6,4,-1,5,7,8,6,-1,7,9,10,8,-1,9,11,12,10,-1,11,13,14,12,-1,13,15,16,14,-1,15,17,18,16,-1,17,19,20,18,-1,19,21,22,20,-1,21,23,24,22,-1,23,25,26,24,-1})
        .setCoord(new Coordinate("deck012COORD").setPoint(getdeck012COORD_5_16_point()))))
    .addChild(new Shape()
      .setAppearance(new Appearance("wings")
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new IndexedFaceSet("deck01IFS").setDEF("deck01IFS").setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {11,13,29,27,-1,13,15,31,29,-1,15,17,33,31,-1,17,19,35,33,-1,19,21,37,35,-1,21,23,39,37,-1,23,25,41,39,-1,25,43,57,41,-1,43,45,59,57,-1,45,47,61,59,-1,47,49,63,61,-1,49,51,65,63,-1,51,53,67,65,-1,53,55,69,67,-1,12,14,30,28,-1,14,16,32,30,-1,16,18,34,32,-1,18,20,36,34,-1,20,22,38,36,-1,22,24,40,38,-1,24,26,42,40,-1,26,44,58,42,-1,44,46,60,58,-1,46,48,62,60,-1,48,50,64,62,-1,50,52,66,64,-1,52,54,68,66,-1,54,56,70,68,-1})
        .setCoord(new Coordinate().setPoint(getCoordinate_5_21_point()))))
    .addChild(new Shape("Deck02")
      .setGeometry(new IndexedFaceSet("deck02IFS").setDEF("deck02IFS").setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {1,3,35,33,-1,1,33,34,13,-1,13,34,36,15,-1,3,15,36,35,-1,3,37,38,15,-1,3,5,39,37,-1,15,38,40,17,-1,39,5,17,40,-1,5,41,42,17,-1,5,7,43,41,-1,17,42,44,19,-1,43,7,19,44,-1,7,45,46,19,-1,7,9,47,45,-1,19,46,48,21,-1,47,9,21,48,-1,9,49,50,21,-1,9,11,51,49,-1,21,50,52,23,-1,51,11,23,52,-1,23,11,53,54,-1,11,12,55,53,-1,23,54,56,24,-1,55,12,24,56,-1,12,75,76,24,-1,12,10,73,75,-1,24,76,74,22,-1,73,10,22,74,-1,10,71,72,22,-1,10,8,69,71,-1,22,72,70,20,-1,69,8,20,70,-1,8,67,68,20,-1,8,6,65,67,-1,20,68,66,18,-1,65,6,18,66,-1,6,4,61,63,-1,6,63,64,18,-1,18,64,62,16,-1,61,4,16,62,-1,4,59,60,16,-1,4,2,57,59,-1,16,60,58,14,-1,57,2,14,58,-1,2,29,30,14,-1,2,79,31,29,-1,14,30,32,80,-1,31,79,80,32,-1,77,27,28,78,-1,78,28,26,13,-1,25,1,13,26,-1,77,1,25,27,-1})
        .setCoord(new Coordinate("deck02COORD").setPoint(getdeck02COORD_5_24_point())))
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74))))
    .addChild(new Shape("windowsDeck02")
      .setGeometry(new IndexedFaceSet("windowsdeck02IFS").setDEF("windowsdeck02IFS").setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {33,35,36,34,-1,57,58,60,59,-1,37,39,40,38,-1,61,62,64,63,-1,27,25,26,28,-1,45,47,48,46,-1,69,70,72,71,-1,49,51,52,50,-1,53,55,56,54,-1,73,74,76,75,-1,31,32,30,29,-1})
        .setCoord(new Coordinate("windowsdeck02COORD").setPoint(getwindowsdeck02COORD_5_29_point())))
      .setAppearance(new Appearance()
        .setMaterial(new Material("Glass1").setAmbientIntensity(0.37773332).setDiffuseColor(0.0,0.36666667,0.76666665).setShininess(0.76666665).setSpecularColor(1.0,1.0,1.0).setTransparency(0.58))))
    .addChild(new Shape("Deck03")
      .setGeometry(new IndexedFaceSet("deck03IFS").setDEF("deck03IFS").setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {0,2,4,5,3,1,-1})
        .setCoord(new Coordinate("deck03IFSCOORD").setPoint(new MFVec3f(new double[] {4.85,2.6,0.575,4.85,2.6,-0.575,6.216,2.6,0.575,6.216,2.6,-0.575,6.325,2.6,0.25,6.325,2.6,-0.25}))))
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.55,0.55,0.55))))
    .addChild(new Shape("superstructure")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new IndexedFaceSet("superstructureIFS").setDEF("superstructureIFS").setConvex(false).setCreaseAngle(1.5).setSolid(false).setCoordIndex(getsuperstructureIFS_4_41_coordIndex())
        .setCoord(new Coordinate().setPoint(getCoordinate_5_41_point()))))
    .addChild(new Shape("windowsSuperstructure")
      .setAppearance(new Appearance()
        .setMaterial(new Material("Glass").setAmbientIntensity(0.37773332).setDiffuseColor(0.0,0.36666667,0.76666665).setShininess(0.76666665).setSpecularColor(1.0,1.0,1.0).setTransparency(0.58)))
      .setGeometry(new IndexedFaceSet("windowsIFS").setDEF("windowsIFS").setConvex(false).setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {57,58,56,55,-1,115,116,118,117,-1,51,53,54,52,-1,71,75,77,73,-1,72,76,78,74,-1,87,89,90,88,-1,83,84,86,85,-1,91,92,94,93,-1,97,98,96,95,-1,101,102,100,99,-1,107,108,110,109,-1,103,104,106,105,-1})
        .setCoord(new Coordinate("windowsCOORD").setPoint(getwindowsCOORD_5_46_point()))))
    .addChild(new Shape("Pipe")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new IndexedFaceSet("pipeIFS").setDEF("pipeIFS").setConvex(false).setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {6,5,9,10,-1,2,7,9,5,1,-1,2,3,8,7,-1,9,7,8,10,-1,1,5,6,4,-1,4,6,10,8,3,-1})
        .setCoord(new Coordinate("pipeCOORD").setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,4.01,1.9,0.25,4.85,1.9,0.25,4.85,1.9,-0.25,4.01,1.9,-0.25,4.21,2.68,0.25,4.21,2.68,-0.25,4.85,2.6,0.25,4.85,2.6,-0.25,4.75,2.7,0.25,4.75,2.7,-0.25,4.68,2.9,0.16,4.68,2.9,-0.16,2.0,2.0,2.0})))))
    .addChild(new Shape("PipeTop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.0,0.0,0.0)))
      .setGeometry(new IndexedFaceSet("pipeIFS2").setDEF("pipeIFS2").setConvex(false).setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {11,9,10,12,-1,11,5,9,-1,6,12,10,-1})
        .setCoord(new Coordinate("pipeCOORD2").setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,4.01,1.9,0.25,4.85,1.9,0.25,4.85,1.9,-0.25,4.01,1.9,-0.25,4.21,2.68,0.25,4.21,2.68,-0.25,4.85,2.6,0.25,4.85,2.6,-0.25,4.75,2.7,0.25,4.75,2.7,-0.25,4.68,2.9,0.16,4.68,2.9,-0.16})))))
    .addChild(new Shape("fwdSkylight")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new IndexedFaceSet("fwdSkylightIFS").setDEF("fwdSkylightIFS").setConvex(false).setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {1,3,4,2,-1,3,7,8,4,-1,2,11,12,6,-1,2,4,17,11,-1,4,8,18,17,-1,8,6,12,18,-1,13,15,16,14,-1,9,5,7,10,-1,7,25,28,10,-1,9,10,28,27,-1,23,27,28,25,-1,25,21,22,26,-1,21,19,20,22,-1,22,20,29,35,-1,22,35,36,26,-1,26,36,30,24,-1,20,24,30,29,-1,31,32,34,33,-1})
        .setCoord(new Coordinate("fwdSkylightCOORD").setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,6.3,1.213,0.45,6.3,1.4,0.45,6.75,1.231,0.45,6.75,1.4,0.45,6.3,1.213,0.25,6.3,1.5,0.25,6.75,1.231,0.25,6.75,1.5,0.25,6.3,1.6,0.25,6.75,1.6,0.25,6.35,1.4125,0.425,6.35,1.4875,0.275,6.5,1.4125,0.425,6.5,1.4875,0.275,6.55,1.4125,0.425,6.55,1.4875,0.275,6.7,1.4125,0.425,6.7,1.4875,0.275,6.3,1.213,-0.45,6.3,1.4,-0.45,6.75,1.231,-0.45,6.75,1.4,-0.45,6.3,1.213,-0.25,6.3,1.5,-0.25,6.75,1.231,-0.25,6.75,1.5,-0.25,6.3,1.6,-0.25,6.75,1.6,-0.25,6.35,1.4125,-0.425,6.35,1.4875,-0.275,6.5,1.4125,-0.425,6.5,1.4875,-0.275,6.55,1.4125,-0.425,6.55,1.4875,-0.275,6.7,1.4125,-0.425,6.7,1.4875,-0.275})))))
    .addChild(new Shape("aftSkylight")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new IndexedFaceSet("fwdSkylightIFS2").setDEF("fwdSkylightIFS2").setConvex(false).setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {1,3,4,2,-1,2,6,5,1,-1,2,11,12,6,-1,2,4,17,11,-1,4,8,18,17,-1,8,6,12,18,-1,13,15,16,14,-1,24,20,19,23,-1,21,19,20,22,-1,22,20,29,35,-1,22,35,36,26,-1,26,36,30,24,-1,20,24,30,29,-1,31,32,34,33,-1})
        .setCoord(new Coordinate("fwdSkylightCOORD2").setPoint(new MFVec3f(new double[] {-4.65,0.0,-0.25,1.65,1.2,0.2,1.65,1.4,0.2,2.1,1.2,0.2,2.1,1.4,0.2,1.65,1.2,0.0,1.65,1.5,0.0,2.1,1.2,0.0,2.1,1.5,0.0,1.65,1.6,0.0,2.1,1.6,0.0,1.7,1.4125,0.175,1.7,1.4875,0.025,1.85,1.4125,0.175,1.85,1.4875,0.025,1.9,1.4125,0.175,1.9,1.4875,0.025,2.05,1.4125,0.175,2.05,1.4875,0.025,1.65,1.2,-0.2,1.65,1.4,-0.2,2.1,1.2,-0.2,2.1,1.4,-0.2,1.65,1.2,0.0,1.65,1.5,0.0,2.1,1.2,0.0,2.1,1.5,0.0,1.65,1.6,0.0,2.1,1.6,0.0,1.7,1.4125,-0.175,1.7,1.4875,-0.025,1.85,1.4125,-0.175,1.85,1.4875,-0.025,1.9,1.4125,-0.175,1.9,1.4875,-0.025,2.05,1.4125,-0.175,2.05,1.4875,-0.025})))))
    .addChild(new Shape("bowHatch")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new IndexedFaceSet("bowHatchIFS").setDEF("bowHatchIFS").setConvex(false).setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {1,2,12,11,-1,2,3,13,12,-1,3,4,14,13,-1,4,5,15,14,-1,5,6,16,15,-1,6,16,15,5,-1,6,7,17,16,-1,7,8,18,17,-1,8,9,19,18,-1,9,10,20,19,-1,10,30,40,20,-1,30,29,39,40,-1,29,28,38,39,-1,28,27,37,38,-1,27,26,36,37,-1,26,25,35,36,-1,25,24,34,35,-1,24,23,33,34,-1,23,22,32,33,-1,22,21,31,32,-1,21,1,11,31,-1,15,16,56,55,-1,20,40,41,60,-1,35,46,45,36,-1,31,11,51,50,-1,11,12,13,14,15,55,54,53,52,51,-1,16,17,18,19,20,60,59,58,57,56,-1,40,39,38,37,36,45,44,43,42,41,-1,35,34,33,32,31,50,49,48,47,46,-1,55,56,76,75,-1,60,41,61,80,-1,45,46,66,65,-1,50,51,71,70,-1,51,52,72,71,-1,52,53,73,72,-1,53,54,74,73,-1,54,55,75,74,-1,56,57,77,76,-1,57,58,78,77,-1,58,59,79,78,-1,59,60,80,79,-1,41,42,62,61,-1,42,43,63,62,-1,43,44,64,63,-1,44,45,65,64,-1,46,47,48,49,50,70,69,68,67,66,-1})
        .setCoord(new Coordinate().setPoint(getCoordinate_5_71_point()))))
    .addChild(new Shape("aftHatch")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new IndexedFaceSet("aftHatchIFS").setDEF("aftHatchIFS").setConvex(false).setCreaseAngle(1.5).setSolid(false).setCoordIndex(new int[] {1,2,22,21,-1,2,3,23,22,-1,3,4,24,23,-1,4,5,25,24,-1,5,6,26,25,-1,6,7,27,26,-1,7,8,28,27,-1,8,9,29,28,-1,9,10,30,29,-1,10,11,31,30,-1,11,12,32,31,-1,12,13,33,32,-1,13,14,34,33,-1,14,15,35,34,-1,15,16,36,35,-1,16,17,37,36,-1,17,18,38,37,-1,18,19,39,38,-1,19,20,40,39,-1,20,1,21,40,-1})
        .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {0.0,0.0,0.0,1.200,1.2,-0.750,1.196,1.2,-0.769,1.185,1.2,-0.785,1.169,1.2,-0.796,1.150,1.2,-0.800,1.050,1.2,-0.800,1.031,1.2,-0.796,1.015,1.2,-0.785,1.004,1.2,-0.769,1.000,1.2,-0.750,1.000,1.2,-0.450,1.004,1.2,-0.431,1.015,1.2,-0.415,1.031,1.2,-0.404,1.050,1.2,-0.400,1.150,1.2,-0.400,1.169,1.2,-0.404,1.185,1.2,-0.415,1.196,1.2,-0.431,1.200,1.2,-0.450,1.200,1.4,-0.750,1.196,1.4,-0.769,1.185,1.4,-0.785,1.169,1.4,-0.796,1.150,1.4,-0.800,1.050,1.4,-0.800,1.031,1.4,-0.796,1.015,1.4,-0.785,1.004,1.4,-0.769,1.000,1.4,-0.750,1.000,1.4,-0.450,1.004,1.4,-0.431,1.015,1.4,-0.415,1.031,1.4,-0.404,1.050,1.4,-0.400,1.150,1.4,-0.400,1.169,1.4,-0.404,1.185,1.4,-0.415,1.196,1.4,-0.431,1.200,1.4,-0.450})))))
    .addChild(new Transform().setTranslation(6.07,2.04,1.002)
      .addChild(new Inline().setUrl(new String[] {"CallSign.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/CallSign.x3d"})))
    .addChild(new Transform().setTranslation(6.07,2.04,-1.002)
      .addChild(new Inline().setUrl(new String[] {"CallSign.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/CallSign.x3d"})))
    .addChild(new Transform().setTranslation(8.15,1.466,0.0)
      .addChild(new Inline().setUrl(new String[] {"TightDoorFwd.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/TightDoorFwd.x3d"})))
    .addChild(new Transform().setTranslation(1.1,1.4,-0.6)
      .addChild(new Inline().setUrl(new String[] {"TightDoorAft.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/TightDoorAft.x3d"})))
    .addChild(new Transform().setTranslation(5.675,1.5875,0.85)
      .addChild(new Transform().setRotation(0.0,1.0,0.0,3.14)
        .addChild(new Inline().setUrl(new String[] {"TightDoorMainDeckStbd.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/TightDoorMainDeckStbd.x3d"}))))
    .addChild(new Transform().setTranslation(4.575,1.5875,0.82)
      .addChild(new Transform().setRotation(0.0,1.0,0.0,3.101)
        .addChild(new Inline().setUrl(new String[] {"TightDoorMainDeckStbd.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/TightDoorMainDeckStbd.x3d"}))))
    .addChild(new Transform().setTranslation(5.025,1.5875,-0.841)
      .addChild(new Transform().setRotation(0.0,1.0,0.0,0.039)
        .addChild(new Inline().setUrl(new String[] {"TightDoorMainDeckPort.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/TightDoorMainDeckPort.x3d"}))))
    .addChild(new Transform().setTranslation(2.725,1.5875,-0.73)
      .addChild(new Transform().setRotation(0.0,1.0,0.0,0.039)
        .addChild(new Inline().setUrl(new String[] {"TightDoorMainDeckPort.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/TightDoorMainDeckPort.x3d"}))))
    .addChild(new Inline().setUrl(new String[] {"BridgeDoorStbd.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/BridgeDoorStbd.x3d"}))
    .addChild(new Inline().setUrl(new String[] {"BridgeDoorPort.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/BridgeDoorPort.x3d"}))
    .addChild(new Group("fwdSkylightHatch")
      .addChild(new Transform().setTranslation(6.425,1.45,0.35)
        .addChild(new Transform().setRotation(1.0,0.0,0.0,0.4636)
          .addChild(new Inline().setUrl(new String[] {"SkylightHatch.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/SkylightHatch.x3d"}))))
      .addChild(new Transform().setTranslation(6.425,1.45,-0.35)
        .addChild(new Transform().setRotation(0.0,1.0,0.0,3.14)
          .addChild(new Transform().setRotation(1.0,0.0,0.0,0.4636)
            .addChild(new Inline().setUrl(new String[] {"SkylightHatch.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/SkylightHatch.x3d"})))))
      .addChild(new Transform().setTranslation(6.625,1.45,-0.35)
        .addChild(new Transform().setRotation(0.0,1.0,0.0,3.14)
          .addChild(new Transform().setRotation(1.0,0.0,0.0,0.4636)
            .addChild(new Inline().setUrl(new String[] {"SkylightHatch.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/SkylightHatch.x3d"})))))
      .addChild(new Transform().setTranslation(6.625,1.45,0.35)
        .addChild(new Transform().setRotation(1.0,0.0,0.0,0.4636)
          .addChild(new Inline().setUrl(new String[] {"SkylightHatch.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/SkylightHatch.x3d"})))))
    .addChild(new Group("aftSkylightHatch")
      .addChild(new Transform().setTranslation(1.975,1.45,0.1)
        .addChild(new Transform().setRotation(1.0,0.0,0.0,0.4636)
          .addChild(new Inline().setUrl(new String[] {"SkylightHatch.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/SkylightHatch.x3d"}))))
      .addChild(new Transform().setTranslation(1.975,1.45,-0.1)
        .addChild(new Transform().setRotation(0.0,1.0,0.0,3.14)
          .addChild(new Transform().setRotation(1.0,0.0,0.0,0.4636)
            .addChild(new Inline().setUrl(new String[] {"SkylightHatch.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/SkylightHatch.x3d"})))))
      .addChild(new Transform().setTranslation(1.775,1.45,0.1)
        .addChild(new Transform().setRotation(1.0,0.0,0.0,0.4636)
          .addChild(new Inline().setUrl(new String[] {"SkylightHatch.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/SkylightHatch.x3d"}))))
      .addChild(new Transform().setTranslation(1.775,1.45,-0.1)
        .addChild(new Transform().setRotation(0.0,1.0,0.0,3.14)
          .addChild(new Transform().setRotation(1.0,0.0,0.0,0.4636)
            .addChild(new Inline().setUrl(new String[] {"SkylightHatch.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/SkylightHatch.x3d"}))))))
    .addChild(new Shape("roundFinishBow")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.01,0.0,0.0092,0.0038,0.0071,0.0071,0.0038,0.0092,0.0,0.01,-0.0038,0.0092,-0.0071,0.0071,-0.0092,0.0038,-0.01,0.0,-0.0092,-0.0038,-0.0071,-0.0071,-0.0038,-0.0092,0.0,-0.01,0.0038,-0.0092,0.0071,-0.0071,0.0092,-0.0039,0.01,0.0})).setSolid(false).setSpine(new MFVec3f(new double[] {7.2,1.236,1.1,7.35,1.55,1.075,8.0,1.56,0.97,8.5,1.6,0.82,9.0,1.62,0.64,9.4,1.65,0.38,9.84,1.673125,0.088,9.86,1.674375,0.065,9.874,1.67525,0.04,9.88,1.675625,0.02,9.881,1.675688,0.0,9.88,1.675625,-0.02,9.874,1.67525,-0.04,9.86,1.674375,-0.065,9.84,1.673125,-0.088,9.4,1.65,-0.38,9.0,1.62,-0.64,8.5,1.6,-0.82,8.0,1.56,-0.97,7.35,1.55,-1.075,7.2,1.236,-1.1}))))
    .addChild(new Shape("roundFinishPort01")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.01,0.0,0.0092,0.0038,0.0071,0.0071,0.0038,0.0092,0.0,0.01,-0.0038,0.0092,-0.0071,0.0071,-0.0092,0.0038,-0.01,0.0,-0.0092,-0.0038,-0.0071,-0.0071,-0.0038,-0.0092,0.0,-0.01,0.0038,-0.0092,0.0071,-0.0071,0.0092,-0.0039,0.01,0.0})).setSolid(false).setSpine(new MFVec3f(new double[] {7.35,1.55,1.075,7.0,1.53,1.12}))))
    .addChild(new Shape("roundFinishPort01MiddleTop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {7.3,1.44,1.075,7.0,1.44,1.12}))))
    .addChild(new Shape("roundFinishPort01MiddleBottom")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {7.24,1.34,1.075,7.0,1.34,1.12}))))
    .addChild(new Shape("roundFinishStb01")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.01,0.0,0.0092,0.0038,0.0071,0.0071,0.0038,0.0092,0.0,0.01,-0.0038,0.0092,-0.0071,0.0071,-0.0092,0.0038,-0.01,0.0,-0.0092,-0.0038,-0.0071,-0.0071,-0.0038,-0.0092,0.0,-0.01,0.0038,-0.0092,0.0071,-0.0071,0.0092,-0.0039,0.01,0.0})).setSolid(false).setSpine(new MFVec3f(new double[] {7.35,1.55,-1.075,7.0,1.53,-1.12}))))
    .addChild(new Shape("roundFinishStb01MiddleTop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {7.3,1.44,-1.075,7.0,1.44,-1.12}))))
    .addChild(new Shape("roundFinishStb01MiddleBottom")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {7.24,1.34,-1.075,7.0,1.34,-1.12}))))
    .addChild(new Shape("roundFinishPort02Top")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.01,0.0,0.0092,0.0038,0.0071,0.0071,0.0038,0.0092,0.0,0.01,-0.0038,0.0092,-0.0071,0.0071,-0.0092,0.0038,-0.01,0.0,-0.0092,-0.0038,-0.0071,-0.0071,-0.0038,-0.0092,0.0,-0.01,0.0038,-0.0092,0.0071,-0.0071,0.0092,-0.0039,0.01,0.0})).setSolid(false).setSpine(new MFVec3f(new double[] {6.6,1.525,1.15,6.0,1.5,1.15,5.0,1.5,1.15,4.0,1.5,1.15,3.0,1.5,1.08,2.0,1.5,1.01,1.5,1.5,0.955}))))
    .addChild(new Shape("roundFinishPort02MiddleTop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {6.6,1.435,1.15,6.0,1.41,1.15,5.0,1.41,1.15,4.0,1.41,1.15,3.0,1.41,1.08,2.0,1.41,1.01,1.5,1.41,0.955}))))
    .addChild(new Shape("roundFinishPort02MiddleBottom")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {6.6,1.335,1.15,6.0,1.31,1.15,5.0,1.31,1.15,4.0,1.31,1.15,3.0,1.31,1.08,2.0,1.31,1.01,1.5,1.31,0.955}))))
    .addChild(new Shape("roundFinishStb02")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.01,0.0,0.0092,0.0038,0.0071,0.0071,0.0038,0.0092,0.0,0.01,-0.0038,0.0092,-0.0071,0.0071,-0.0092,0.0038,-0.01,0.0,-0.0092,-0.0038,-0.0071,-0.0071,-0.0038,-0.0092,0.0,-0.01,0.0038,-0.0092,0.0071,-0.0071,0.0092,-0.0039,0.01,0.0})).setSolid(false).setSpine(new MFVec3f(new double[] {6.6,1.525,-1.14,6.0,1.5,-1.14,5.0,1.5,-1.14,4.0,1.5,-1.14,3.0,1.5,-1.07,2.0,1.5,-1.0,1.5,1.463,-0.945}))))
    .addChild(new Shape("roundFinishStb02MiddleTop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {6.6,1.435,-1.14,6.0,1.41,-1.14,5.0,1.41,-1.14,4.0,1.41,-1.14,3.0,1.41,-1.07,2.0,1.41,-1.0,1.5,1.373,-0.945}))))
    .addChild(new Shape("roundFinishStb02MiddleBottom")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {6.6,1.335,-1.14,6.0,1.31,-1.14,5.0,1.31,-1.14,4.0,1.31,-1.14,3.0,1.31,-1.07,2.0,1.31,-1.0,1.5,1.273,-0.945}))))
    .addChild(new Shape("roundFinishPoop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.01,0.0,0.0092,0.0038,0.0071,0.0071,0.0038,0.0092,0.0,0.01,-0.0038,0.0092,-0.0071,0.0071,-0.0092,0.0038,-0.01,0.0,-0.0092,-0.0038,-0.0071,-0.0071,-0.0038,-0.0092,0.0,-0.01,0.0038,-0.0092,0.0071,-0.0071,0.0092,-0.0039,0.01,0.0})).setSolid(false).setSpine(new MFVec3f(new double[] {1.1,1.5,0.95,1.0,1.5,0.94,0.45,1.5,0.85,0.3,1.5,0.55,0.23,1.5,0.25,0.2,1.5,0.0,0.23,1.5,-0.25,0.3,1.5,-0.55,0.45,1.5,-0.85,1.0,1.5,-0.94,1.1,1.5,-0.95}))))
    .addChild(new Shape("roundFinishPoopMiddleTop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {1.1,1.41,0.95,1.0,1.41,0.94,0.45,1.41,0.85,0.3,1.41,0.55,0.23,1.41,0.25,0.2,1.41,0.0,0.23,1.41,-0.25,0.3,1.41,-0.55,0.45,1.41,-0.85,1.0,1.41,-0.94,1.1,1.41,-0.95}))))
    .addChild(new Shape("roundFinishPoopMiddleBottom")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {1.1,1.31,0.95,1.0,1.31,0.94,0.45,1.31,0.85,0.3,1.31,0.55,0.23,1.31,0.25,0.2,1.31,0.0,0.23,1.31,-0.25,0.3,1.31,-0.55,0.45,1.31,-0.85,1.0,1.31,-0.94,1.1,1.31,-0.95}))))
    .addChild(new Shape("roundFinishDeck02StbTop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.01,0.0,0.0092,0.0038,0.0071,0.0071,0.0038,0.0092,0.0,0.01,-0.0038,0.0092,-0.0071,0.0071,-0.0092,0.0038,-0.01,0.0,-0.0092,-0.0038,-0.0071,-0.0071,-0.0038,-0.0092,0.0,-0.01,0.0038,-0.0092,0.0071,-0.0071,0.0092,-0.0039,0.01,0.0})).setSolid(false).setSpine(new MFVec3f(new double[] {2.28,2.2,-0.321,2.28,2.2,0.69,3.0,2.2,0.74,4.0,2.2,0.79,5.0,2.2,0.83,5.5,2.2,0.84,5.65,2.2,0.99,6.05,2.2,1.0}))))
    .addChild(new Shape("roundFinishDeck02StbMiddleTop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {2.22,2.1,-0.321,2.22,2.1,0.69,3.0,2.1,0.74,4.0,2.1,0.79,5.0,2.1,0.83,5.5,2.1,0.84,5.65,2.1,0.99,5.9663,2.1,1.0}))))
    .addChild(new Shape("roundFinishDeck02StbMiddleBottom")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {2.16,2.0,-0.321,2.16,2.0,0.69,3.0,2.0,0.74,4.0,2.0,0.79,5.0,2.0,0.83,5.5,2.0,0.84,5.65,2.0,0.99,5.883,2.0,1.0}))))
    .addChild(new Shape("roundFinishWingStb")
      .setAppearance(new Appearance()
        .setTexture(new ImageTexture().setUrl(new String[] {"wood03.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/wood03.jpg"})))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0,-0.01,0.02,-0.01,0.02,-0.001,-0.02,0.001,-0.02,-0.01,0.0,-0.01})).setSolid(false).setSpine(new MFVec3f(new double[] {6.200,2.200,0.550,6.226,2.200,0.553,6.250,2.200,0.563,6.271,2.200,0.579,6.287,2.200,0.600,6.297,2.200,0.624,6.300,2.200,0.650,6.300,2.200,0.900,6.297,2.200,0.926,6.287,2.200,0.950,6.271,2.200,0.971,6.250,2.200,0.987,6.226,2.200,0.997,6.2,2.2,1.0,5.900,2.200,1.000,5.650,2.200,1.000,5.5,2.2,0.85}))))
    .addChild(new Shape("roundFinishDeck02PortTop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.01,0.0,0.0092,0.0038,0.0071,0.0071,0.0038,0.0092,0.0,0.01,-0.0038,0.0092,-0.0071,0.0071,-0.0092,0.0038,-0.01,0.0,-0.0092,-0.0038,-0.0071,-0.0071,-0.0038,-0.0092,0.0,-0.01,0.0038,-0.0092,0.0071,-0.0071,0.0092,-0.0039,0.01,0.0})).setSolid(false).setSpine(new MFVec3f(new double[] {2.28,2.2,-0.546,2.28,2.2,-0.69,3.0,2.2,-0.74,4.0,2.2,-0.79,5.0,2.2,-0.83,5.5,2.2,-0.84,5.65,2.2,-0.99,6.05,2.2,-1.0}))))
    .addChild(new Shape("roundFinishDeck02PortMiddleTop")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {2.22,2.1,-0.546,2.22,2.1,-0.69,3.0,2.1,-0.74,4.0,2.1,-0.79,5.0,2.1,-0.83,5.5,2.1,-0.84,5.65,2.1,-0.99,5.9663,2.1,-1.0}))))
    .addChild(new Shape("roundFinishDeck02PortMiddleBottom")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {2.16,2.0,-0.546,2.16,2.0,-0.69,3.0,2.0,-0.74,4.0,2.0,-0.79,5.0,2.0,-0.83,5.5,2.0,-0.84,5.65,2.0,-0.99,5.883,2.0,-1.0}))))
    .addChild(new Shape("roundFinishWingPort")
      .setAppearance(new Appearance()
        .setTexture(new ImageTexture().setUrl(new String[] {"wood03.jpg","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/wood03.jpg"})))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0,0.001,0.02,0.001,0.02,0.01,-0.02,0.01,-0.02,0.001,0.0,0.001})).setSolid(false).setSpine(new MFVec3f(new double[] {6.200,2.200,-0.550,6.226,2.200,-0.553,6.250,2.200,-0.563,6.271,2.200,-0.579,6.287,2.200,-0.600,6.297,2.200,-0.624,6.300,2.200,-0.650,6.300,2.200,-0.900,6.297,2.200,-0.926,6.287,2.200,-0.950,6.271,2.200,-0.971,6.250,2.200,-0.987,6.226,2.200,-0.997,6.200,2.200,-1.000,5.900,2.200,-1.000,5.650,2.200,-1.000,5.500,2.200,-0.850}))))
    .addChild(new Shape("roundFinishDeck03Top")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0070,0.0000,0.0065,0.0027,0.0050,0.0049,0.0027,0.0065,0.0000,0.0070,-0.0027,0.0065,-0.0049,0.0050,-0.0065,0.0027,-0.0070,0.0000,-0.0065,-0.0027,-0.0050,-0.0049,-0.0027,-0.0065,0.0000,-0.0070,0.0027,-0.0065,0.0049,-0.0050,0.0065,-0.0027,0.0070,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {4.98,2.9,0.499,4.98,2.9,0.539,4.981,2.9,0.54,6.05,2.9,0.54,6.15,2.9,0.25,6.15,2.9,-0.25,6.05,2.9,-0.54,4.981,2.9,-0.54,4.98,2.9,-0.539,4.98,2.9,0.274}))))
    .addChild(new Shape("roundFinishDeck03TopMiddle")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {4.9475,2.825,0.499,4.9475,2.825,0.539,4.9485,2.825,0.54,6.0915,2.825,0.54,6.19375,2.825,0.25,6.19375,2.825,-0.25,6.0915,2.825,-0.54,4.9485,2.825,-0.54,4.9475,2.825,-0.539,4.9475,2.825,0.274}))))
    .addChild(new Shape("roundFinishDeck03MiddleMiddle")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCcw(false).setConvex(false).setCrossSection(new MFVec2f(new double[] {0.004,0.0,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0,0.004,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.004,0.0,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0,-0.004,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.004,0.0})).setSolid(false).setSpine(new MFVec3f(new double[] {4.915,2.75,0.499,4.915,2.75,0.539,4.916,2.75,0.54,6.133,2.75,0.54,6.2375,2.75,0.25,6.2375,2.75,-0.25,6.133,2.75,-0.54,4.916,2.75,-0.54,4.915,2.75,-0.539,4.915,2.75,0.274}))))
    .addChild(new Shape("roundFinishDeck03BottomMiddle")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {4.8825,2.675,0.499,4.8825,2.675,0.539,4.8835,2.675,0.54,6.1745,2.675,0.54,6.28125,2.675,0.25,6.28125,2.675,-0.25,6.1745,2.675,-0.54,4.8835,2.675,-0.54,4.8825,2.675,-0.539,4.8825,2.675,0.274}))))
    .addChild(new Shape("deck03Pillars")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0070,0.0000,0.0065,0.0027,0.0050,0.0049,0.0027,0.0065,0.0000,0.0070,-0.0027,0.0065,-0.0049,0.0050,-0.0065,0.0027,-0.0070,0.0000,-0.0065,-0.0027,-0.0050,-0.0049,-0.0027,-0.0065,0.0000,-0.0070,0.0027,-0.0065,0.0049,-0.0050,0.0065,-0.0027,0.0070,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {5.53,2.6,0.54,5.53,2.9,0.54}))))
    .addChild(new Transform().setTranslation(0.0,0.0,-1.08)
      .addChild(new Shape().setUSE("deck03Pillars")))
    .addChild(new Transform().setTranslation(0.25,0.0,-1.08)
      .addChild(new Shape().setUSE("deck03Pillars")))
    .addChild(new Transform().setTranslation(0.25,0.0,0.0)
      .addChild(new Shape().setUSE("deck03Pillars")))
    .addChild(new Transform().setTranslation(-0.25,0.0,-1.08)
      .addChild(new Shape().setUSE("deck03Pillars")))
    .addChild(new Transform().setTranslation(-0.25,0.0,0.0)
      .addChild(new Shape().setUSE("deck03Pillars")))
    .addChild(new Shape("deck03Pillars2")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0070,0.0000,0.0065,0.0027,0.0050,0.0049,0.0027,0.0065,0.0000,0.0070,-0.0027,0.0065,-0.0049,0.0050,-0.0065,0.0027,-0.0070,0.0000,-0.0065,-0.0027,-0.0050,-0.0049,-0.0027,-0.0065,0.0000,-0.0070,0.0027,-0.0065,0.0049,-0.0050,0.0065,-0.0027,0.0070,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {4.86,2.6,0.54,4.98,2.9,0.54}))))
    .addChild(new Transform().setTranslation(0.0,0.0,-1.08)
      .addChild(new Shape().setUSE("deck03Pillars2")))
    .addChild(new Transform().setTranslation(0.0,0.0,-0.041)
      .addChild(new Shape().setUSE("deck03Pillars2")))
    .addChild(new Transform().setTranslation(0.0,0.0,-0.266)
      .addChild(new Shape().setUSE("deck03Pillars2")))
    .addChild(new Transform().setTranslation(0.0,0.0,-0.7)
      .addChild(new Shape().setUSE("deck03Pillars2")))
    .addChild(new Shape("deck03Pillars3")
      .setAppearance(new Appearance()
        .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
      .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0070,0.0000,0.0065,0.0027,0.0050,0.0049,0.0027,0.0065,0.0000,0.0070,-0.0027,0.0065,-0.0049,0.0050,-0.0065,0.0027,-0.0070,0.0000,-0.0065,-0.0027,-0.0050,-0.0049,-0.0027,-0.0065,0.0000,-0.0070,0.0027,-0.0065,0.0049,-0.0050,0.0065,-0.0027,0.0070,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {6.21,2.6,0.54,6.044,2.9,0.54}))))
    .addChild(new Transform().setTranslation(0.0,0.0,-1.08)
      .addChild(new Shape().setUSE("deck03Pillars3")))
    .addChild(new Transform().setTranslation(0.109,0.0,-0.29)
      .addChild(new Shape().setUSE("deck03Pillars3")))
    .addChild(new Transform().setTranslation(0.109,0.0,-0.79)
      .addChild(new Shape().setUSE("deck03Pillars3")))
    .addChild(new Group("mainDeckPillars")
      .addChild(new Shape("Pillar")
        .setAppearance(new Appearance()
          .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
        .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0,-0.01,0.001,-0.01,0.001,0.01,-0.001,0.01,-0.001,-0.01,0.0,-0.01})).setSolid(false).setSpine(new MFVec3f(new double[] {1.5,1.2,0.955,1.5,1.5,0.955}))))
      .addChild(new Transform().setTranslation(0.5,0.0,0.046)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(0.5,0.0,-1.946)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(0.0,0.0,-1.900)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(1.0,0.0,0.095)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(1.0,0.0,-1.995)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(1.55,0.0,0.135)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(1.55,0.0,-2.035)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(2.05,0.0,0.155)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(2.05,0.0,-2.055)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(2.55,0.0,0.195)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(2.55,0.0,-2.1)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(3.05,0.0,0.195)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(3.05,0.0,-2.095)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(3.65,0.0,0.195)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(3.65,0.0,-2.095)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(4.15,0.0,0.195)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(4.15,0.0,-2.095)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(4.65,0.01,0.195)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(4.65,0.01,-2.095)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(5.1,0.01,0.195)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(5.1,0.01,-2.095)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(5.5,0.03,0.165)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(5.5,0.03,-2.065)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(-0.4,0.0,-0.005)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(-0.4,0.00,-1.895)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(-0.7,0.00,-0.055)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(-0.7,0.00,-1.845)
        .addChild(new Shape().setUSE("Pillar")))
      .addChild(new Transform().setTranslation(-1.05,0.00,-0.105)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,-0.2)
          .addChild(new Shape().setUSE("Pillar"))))
      .addChild(new Transform().setTranslation(-1.05,0.00,-1.795)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,0.2)
          .addChild(new Shape().setUSE("Pillar"))))
      .addChild(new Transform().setTranslation(-1.2,0.00,-0.405)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,-0.85)
          .addChild(new Shape().setUSE("Pillar"))))
      .addChild(new Transform().setTranslation(-1.2,0.00,-1.505)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,0.85)
          .addChild(new Shape().setUSE("Pillar"))))
      .addChild(new Transform().setTranslation(-1.27,0.00,-0.705)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,1.3)
          .addChild(new Shape().setUSE("Pillar"))))
      .addChild(new Transform().setTranslation(-1.27,0.00,-1.205)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,-1.3)
          .addChild(new Shape().setUSE("Pillar")))))
    .addChild(new Transform().setTranslation(4.15,0.70,0.034)
      .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,-0.75)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(4.15,0.70,-1.945)
      .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,0.75)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(4.0,0.70,-0.115)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(4.0,0.70,-1.795)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(3.6,0.70,-0.125)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(3.6,0.70,-1.785)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(3.1,0.70,-0.147)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(3.1,0.70,-1.763)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(2.6,0.70,-0.16)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(2.6,0.70,-1.75)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(2.1,0.70,-0.19)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(2.1,0.70,-1.72)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(1.6,0.70,-0.21)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(1.6,0.70,-1.7)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(1.1,0.70,-0.24)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(1.1,0.70,-1.67)
      .addChild(new Transform().setCenter(1.5,1.2,0.955)
        .addChild(new Shape().setUSE("Pillar"))))
    .addChild(new Transform().setTranslation(0.65,0.70,-0.305)
      .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,0.0,1.0,-0.39)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,1.57)
          .addChild(new Shape("Pillar3")
            .setAppearance(new Appearance()
              .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
            .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0,-0.01,0.001,-0.01,0.001,0.01,-0.001,0.01,-0.001,-0.01,0.0,-0.01})).setSolid(false).setSpine(new MFVec3f(new double[] {1.5,1.2,0.955,1.5,1.53,0.955})))))))
    .addChild(new Transform().setTranslation(0.65,0.70,-1.605)
      .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,0.0,1.0,-0.39)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,1.57)
          .addChild(new Shape("Pillar4")
            .setAppearance(new Appearance()
              .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
            .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0,-0.01,0.001,-0.01,0.001,0.01,-0.001,0.01,-0.001,-0.01,0.0,-0.01})).setSolid(false).setSpine(new MFVec3f(new double[] {1.5,1.2,0.955,1.5,1.53,0.955})))))))
    .addChild(new Transform().setTranslation(0.65,0.70,-1.276)
      .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,0.0,1.0,-0.39)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,1.57)
          .addChild(new Shape("Pillar5")
            .setAppearance(new Appearance()
              .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
            .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0,-0.01,0.001,-0.01,0.001,0.01,-0.001,0.01,-0.001,-0.01,0.0,-0.01})).setSolid(false).setSpine(new MFVec3f(new double[] {1.5,1.2,0.955,1.5,1.53,0.955})))))))
    .addChild(new Transform().setTranslation(0.65,0.70,-1.501)
      .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,0.0,1.0,-0.39)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,1.57)
          .addChild(new Shape("Pillar6")
            .setAppearance(new Appearance()
              .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
            .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0,-0.01,0.001,-0.01,0.001,0.01,-0.001,0.01,-0.001,-0.01,0.0,-0.01})).setSolid(false).setSpine(new MFVec3f(new double[] {1.5,1.2,0.955,1.5,1.53,0.955})))))))
    .addChild(new Transform().setTranslation(0.65,0.70,-0.635)
      .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,0.0,1.0,-0.39)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,1.57)
          .addChild(new Shape("Pillar7")
            .setAppearance(new Appearance()
              .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
            .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0,-0.01,0.001,-0.01,0.001,0.01,-0.001,0.01,-0.001,-0.01,0.0,-0.01})).setSolid(false).setSpine(new MFVec3f(new double[] {1.5,1.2,0.955,1.5,1.53,0.955})))))))
    .addChild(new Transform().setTranslation(0.65,0.70,-0.955)
      .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,0.0,1.0,-0.39)
        .addChild(new Transform().setCenter(1.5,1.2,0.955).setRotation(0.0,1.0,0.0,1.57)
          .addChild(new Shape("Pillar8")
            .setAppearance(new Appearance()
              .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
            .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0,-0.01,0.001,-0.01,0.001,0.01,-0.001,0.01,-0.001,-0.01,0.0,-0.01})).setSolid(false).setSpine(new MFVec3f(new double[] {1.5,1.2,0.955,1.5,1.53,0.955})))))))
    .addChild(new Transform()
      .addChild(new Shape("ladderFinish01")
        .setAppearance(new Appearance()
          .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
        .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {1.825,1.3,-0.546,1.773,1.33,-0.546,2.138,2.2,-0.546,2.28,2.2,-0.546})))))
    .addChild(new Transform()
      .addChild(new Shape("ladderFinish02")
        .setAppearance(new Appearance()
          .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
        .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {1.825,1.3,-0.321,1.773,1.33,-0.321,2.138,2.2,-0.321,2.28,2.2,-0.321})))))
    .addChild(new Transform()
      .addChild(new Shape("ladderFinish03")
        .setAppearance(new Appearance()
          .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
        .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {4.575,2.0,0.499,4.523,2.03,0.499,4.888,2.9,0.499,4.98,2.9,0.499})))))
    .addChild(new Transform()
      .addChild(new Shape("ladderFinish04")
        .setAppearance(new Appearance()
          .setMaterial(new Material().setDiffuseColor(0.82,0.78,0.74)))
        .setGeometry(new Extrusion().setCrossSection(new MFVec2f(new double[] {0.0040,0.0000,0.0037,0.0015,0.0028,0.0028,0.0015,0.0037,0.0000,0.0040,-0.0015,0.0037,-0.0028,0.0028,-0.0037,0.0015,-0.0040,0.0000,-0.0037,-0.0015,-0.0028,-0.0028,-0.0015,-0.0037,0.0000,-0.0040,0.0015,-0.0037,0.0028,-0.0028,0.0037,-0.0015,0.0040,0.0000})).setSolid(false).setSpine(new MFVec3f(new double[] {4.575,2.0,0.274,4.523,2.03,0.274,4.888,2.9,0.274,4.98,2.9,0.274})))))
    .addChild(new Inline().setUrl(new String[] {"NavigationLights.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/NavigationLights.x3d"}))
    .addChild(new Transform().setScale(0.46,0.46,0.46).setTranslation(2.7,1.9,0.0)
      .addChild(new Transform().setRotation(0.0,1.0,0.0,1.57)
        .addChild(new Inline().setUrl(new String[] {"Mtr50.x3d","https://www.web3d.org/x3d/content/examples/Savage/ShipsMilitary/PatrolCraftNavalAcademyBrazil/Mtr50.x3d"})))));
            }
            catch (Exception ex)
            {       
                System.err.println ("*** Further hints on X3DJSAIL errors and exceptions at");
                System.err.println ("*** https://www.web3d.org/specifications/java/X3DJSAIL.html");
                throw (ex);
            }
	}
	// end of initialize() method





		/** Define subarrays using type int[] */
		private int[] getsuperstructureIFS_4_41_coordIndex_1()
		{
			int[] value = {25,1,27,-1,1,55,56,27,-1,1,3,57,55,-1,27,56,58,29,-1,3,29,58,57,-1,3,5,31,29,-1,5,63,64,31,-1,5,7,65,63,-1,31,64,66,33,-1,65,7,33,66,-1,7,71,73,33,-1,7,9,75,71,-1,33,73,77,35,-1,75,9,35,77,-1,9,79,80,35,-1,9,111,81,79,-1,35,80,82,112,-1,81,111,112,82,-1,111,87,88,112,-1,111,11,89,87,-1,112,88,90,37,-1,89,11,37,90,-1,11,13,39,37,-1,13,15,41,39,-1,15,17,43,41,-1,17,19,45,43,-1,19,21,47,45,-1,21,23,49,47,-1,49,96,104,50,-1,49,23,95,96,-1,23,24,103,95,-1,24,50,104,103,-1,97,99,100,98,-1,101,109,110,102,-1,107,105,106,108,-1,38,40,14,12,-1,40,42,16,14,-1,42,44,18,16,-1,44,46,20,18,-1,46,48,22,20,-1,48,50,24,22,-1,12,93,94,38,-1,12,10,83,93,-1,38,94,84,36,-1,91,85,86,92,-1,83,10,36,84,-1,10,76,78,36,-1,10,113,72,76,-1,36,78,74,114,-1,72,113,114,74,-1,6,4,30,32,-1,4,61,62,30,-1,4,2,59,61,-1,30,62,116,28,-1,60,59,117,118,-1,59,2,115,117,-1,115,2,28,116,-1,2,26,28,-1,2,1,51,52,-1,2,52,54,28,-1,28,54,53,27,-1,51,1,27,53,-1,114,70,34,-1,70,68,34,-1,68,32,34,-1,67,6,32,68,-1,113,8,69,-1,69,8,67,-1,8,6,67,-1};
			return value;
		}


		/** Define subarrays using type double[] */
		private double[] getCoordinate_5_41_point_1()
		{
			double[] value = {2.1,1.2,0.0,2.1,1.2,0.7,2.1,1.2,-0.7,3.0,1.2,0.75,3.0,1.2,-0.75,4.0,1.2,0.8,4.0,1.2,-0.8,5.0,1.2,0.84,5.0,1.2,-0.84,5.5,1.2,0.85,5.5,1.2,-0.85,6.200,1.200,0.850,6.200,1.200,-0.850,6.226,1.200,0.847,6.226,1.200,-0.847,6.250,1.200,0.837,6.250,1.200,-0.837,6.271,1.200,0.821,6.271,1.200,-0.821,6.287,1.200,0.800,6.287,1.200,-0.800,6.297,1.200,0.776,6.297,1.200,-0.776,6.300,1.200,0.750,6.300,1.200,-0.750,1.800,1.200,0.670,1.800,1.200,-0.670,2.100,1.900,0.700,2.100,1.900,-0.700,3.000,1.900,0.750,3.000,1.900,-0.750,4.000,1.900,0.800,4.000,1.900,-0.800,5.000,1.900,0.840,5.000,1.900,-0.840,5.500,1.900,0.850,5.500,1.900,-0.850,6.200,1.900,0.850,6.200,1.900,-0.850,6.226,1.900,0.847,6.226,1.900,-0.847,6.250,1.900,0.837,6.250,1.900,-0.837,6.271,1.900,0.821,6.271,1.900,-0.821,6.287,1.900,0.800,6.287,1.900,-0.800,6.297,1.900,0.776,6.297,1.900,-0.776,6.300,1.900,0.750,6.300,1.900,-0.750,2.100,1.625,0.100,2.100,1.625,-0.100,2.100,1.825,0.100,2.100,1.825,-0.100,2.500,1.625,0.720,2.500,1.825,0.720,2.700,1.625,0.730,2.700,1.825,0.730,2.600,1.350,-0.725,2.600,1.825,-0.725,2.850,1.350,-0.740,2.850,1.825,-0.740,4.450,1.350,0.813,4.450,1.825,0.813,4.700,1.350,0.825,4.700,1.825,0.825,4.900,1.350,-0.832,4.900,1.825,-0.832,5.150,1.350,-0.844,5.150,1.825,-0.844,5.250,1.625,0.846,5.250,1.625,-0.846,5.250,1.825,0.846,5.250,1.825,-0.846,5.450,1.625,0.849,5.450,1.625,-0.849,5.450,1.825,0.849,5.450,1.825,-0.849,5.550,1.350,0.85,5.550,1.825,0.85,5.800,1.350,0.85,5.800,1.825,0.85,5.600,1.625,-0.85,5.600,1.825,-0.85,5.800,1.625,-0.85,5.800,1.825,-0.85,5.900,1.625,0.85,5.900,1.825,0.85,6.100,1.625,0.85,6.100,1.825,0.85,5.900,1.625,-0.85,5.900,1.825,-0.85,6.100,1.625,-0.85,6.100,1.825,-0.85,6.300,1.625,0.55,6.300,1.825,0.55,6.300,1.625,0.35,6.300,1.825,0.35,6.300,1.625,0.25};
			return value;
		}
		private double[] getCoordinate_5_41_point_2()
		{
			double[] value = {6.300,1.825,0.25,6.300,1.625,0.05,6.300,1.825,0.05,6.300,1.625,-0.55,6.300,1.825,-0.55,6.300,1.625,-0.35,6.300,1.825,-0.35,6.300,1.625,-0.25,6.300,1.825,-0.25,6.300,1.625,-0.05,6.300,1.825,-0.05,5.850,1.200,0.85,5.850,1.900,0.85,5.150,1.200,-0.844,5.150,1.900,-0.844,2.250,1.625,-0.71,2.250,1.825,-0.71,2.450,1.625,-0.724,2.450,1.825,-0.724};
			return value;
		}


		/** Define subarrays using type double[] */
		private double[] getwindowsCOORD_5_46_point_1()
		{
			double[] value = {2.1,1.2,0.0,2.1,1.2,0.7,2.1,1.2,-0.7,3.0,1.2,0.75,3.0,1.2,-0.75,4.0,1.2,0.8,4.0,1.2,-0.8,5.0,1.2,0.84,5.0,1.2,-0.84,5.5,1.2,0.85,5.5,1.2,-0.85,6.200,1.200,0.850,6.200,1.200,-0.850,6.226,1.200,0.847,6.226,1.200,-0.847,6.250,1.200,0.837,6.250,1.200,-0.837,6.271,1.200,0.821,6.271,1.200,-0.821,6.287,1.200,0.800,6.287,1.200,-0.800,6.297,1.200,0.776,6.297,1.200,-0.776,6.300,1.200,0.750,6.300,1.200,-0.750,1.800,1.200,0.670,1.800,1.200,-0.670,2.100,1.900,0.700,2.100,1.900,-0.700,3.000,1.900,0.750,3.000,1.900,-0.750,4.000,1.900,0.800,4.000,1.900,-0.800,5.000,1.900,0.840,5.000,1.900,-0.840,5.500,1.900,0.850,5.500,1.900,-0.850,6.200,1.900,0.850,6.200,1.900,-0.850,6.226,1.900,0.847,6.226,1.900,-0.847,6.250,1.900,0.837,6.250,1.900,-0.837,6.271,1.900,0.821,6.271,1.900,-0.821,6.287,1.900,0.800,6.287,1.900,-0.800,6.297,1.900,0.776,6.297,1.900,-0.776,6.300,1.900,0.750,6.300,1.900,-0.750,2.100,1.625,0.100,2.100,1.625,-0.100,2.100,1.825,0.100,2.100,1.825,-0.100,2.500,1.625,0.720,2.500,1.825,0.720,2.700,1.625,0.730,2.700,1.825,0.730,2.600,1.350,-0.725,2.600,1.825,-0.725,2.850,1.350,-0.740,2.850,1.825,-0.740,4.450,1.350,0.813,4.450,1.825,0.813,4.700,1.350,0.825,4.700,1.825,0.825,4.900,1.350,-0.832,4.900,1.825,-0.832,5.150,1.350,-0.844,5.150,1.825,-0.844,5.250,1.625,0.846,5.250,1.625,-0.846,5.250,1.825,0.846,5.250,1.825,-0.846,5.450,1.625,0.849,5.450,1.625,-0.849,5.450,1.825,0.849,5.450,1.825,-0.849,5.550,1.350,0.85,5.550,1.825,0.85,5.800,1.350,0.85,5.800,1.825,0.85,5.600,1.625,-0.85,5.600,1.825,-0.85,5.800,1.625,-0.85,5.800,1.825,-0.85,5.900,1.625,0.85,5.900,1.825,0.85,6.100,1.625,0.85,6.100,1.825,0.85,5.900,1.625,-0.85,5.900,1.825,-0.85,6.100,1.625,-0.85,6.100,1.825,-0.85,6.300,1.625,0.55,6.300,1.825,0.55,6.300,1.625,0.35,6.300,1.825,0.35,6.300,1.625,0.25};
			return value;
		}
		private double[] getwindowsCOORD_5_46_point_2()
		{
			double[] value = {6.300,1.825,0.25,6.300,1.625,0.05,6.300,1.825,0.05,6.300,1.625,-0.55,6.300,1.825,-0.55,6.300,1.625,-0.35,6.300,1.825,-0.35,6.300,1.625,-0.25,6.300,1.825,-0.25,6.300,1.625,-0.05,6.300,1.825,-0.05,5.850,1.200,0.85,5.850,1.900,0.85,5.150,1.200,-0.844,5.150,1.900,-0.844,2.250,1.625,-0.71,2.250,1.825,-0.71,2.450,1.625,-0.724,2.450,1.825,-0.724,1.0,1.0,1.0};
			return value;
		}


		/** Large attribute array: Coordinate DEF='deck012COORD' point field, scene-graph level=5, element #16, 216 total numbers made up of 72 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getdeck012COORD_5_16_point()
		{
			MFVec3f deck012COORD_5_16_point = new MFVec3f(new double[] {2.1,1.9,0.0,2.1,1.9,0.700,2.1,1.9,-0.700,3.0,1.9,0.750,3.0,1.9,-0.750,4.0,1.9,0.800,4.0,1.9,-0.800,5.0,1.9,0.840,5.0,1.9,-0.840,5.5,1.9,0.850,5.5,1.9,-0.850,5.65,1.9,1.000,5.65,1.9,-1.000,6.2,1.9,1.000,6.2,1.9,-1.000,6.226,1.9,0.997,6.226,1.9,-0.997,6.250,1.9,0.987,6.250,1.9,-0.987,6.271,1.9,0.971,6.271,1.9,-0.971,6.287,1.9,0.950,6.287,1.9,-0.950,6.297,1.9,0.926,6.297,1.9,-0.926,6.300,1.9,0.900,6.300,1.9,-0.900,5.900,2.3,1.000,5.900,2.3,-1.000,6.2,2.3,1.000,6.2,2.3,-1.000,6.226,2.3,0.997,6.226,2.3,-0.997,6.250,2.3,0.987,6.250,2.3,-0.987,6.271,2.3,0.971,6.271,2.3,-0.971,6.287,2.3,0.950,6.287,2.3,-0.950,6.297,2.3,0.926,6.297,2.3,-0.926,6.300,2.3,0.900,6.300,2.3,-0.900,6.300,1.9,0.650,6.300,1.9,-0.650,6.297,1.9,0.624,6.297,1.9,-0.624,6.287,1.9,0.600,6.287,1.9,-0.600,6.271,1.9,0.579,6.271,1.9,-0.579,6.250,1.9,0.563,6.250,1.9,-0.563,6.226,1.9,0.553,6.226,1.9,-0.553,6.200,1.9,0.550,6.200,1.9,-0.550,6.300,2.3,0.650,6.300,2.3,-0.650,6.297,2.3,0.624,6.297,2.3,-0.624,6.287,2.3,0.600,6.287,2.3,-0.600,6.271,2.3,0.579,6.271,2.3,-0.579,6.250,2.3,0.563,6.250,2.3,-0.563,6.226,2.3,0.553,6.226,2.3,-0.553,6.200,2.3,0.550,6.200,2.3,-0.550,0.0,0.0,0.0});
			return deck012COORD_5_16_point;
		}
		/** Large attribute array: Coordinate point field, scene-graph level=5, element #21, 213 total numbers made up of 71 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getCoordinate_5_21_point()
		{
			MFVec3f Coordinate_5_21_point = new MFVec3f(new double[] {2.1,1.9,0.0,2.1,1.9,0.7,2.1,1.9,-0.7,3.0,1.9,0.75,3.0,1.9,-0.75,4.0,1.9,0.8,4.0,1.9,-0.8,5.0,1.9,0.84,5.0,1.9,-0.84,5.5,1.9,0.85,5.5,1.9,-0.85,5.8,1.9,1.0,5.8,1.9,-1.0,6.2,1.9,1.0,6.2,1.9,-1.0,6.226,1.9,0.997,6.226,1.9,-0.997,6.25,1.9,0.987,6.25,1.9,-0.987,6.271,1.9,0.971,6.271,1.9,-0.971,6.287,1.9,0.95,6.287,1.9,-0.95,6.297,1.9,0.926,6.297,1.9,-0.926,6.3,1.9,0.9,6.3,1.9,-0.9,6.05,2.2,1.0,6.05,2.2,-1.0,6.2,2.2,1.0,6.2,2.2,-1.0,6.226,2.2,0.997,6.226,2.2,-0.997,6.25,2.2,0.987,6.25,2.2,-0.987,6.271,2.2,0.971,6.271,2.2,-0.971,6.287,2.2,0.95,6.287,2.2,-0.95,6.297,2.2,0.926,6.297,2.2,-0.926,6.3,2.2,0.9,6.3,2.2,-0.9,6.3,1.9,0.65,6.3,1.9,-0.65,6.297,1.9,0.624,6.297,1.9,-0.624,6.287,1.9,0.6,6.287,1.9,-0.6,6.271,1.9,0.579,6.271,1.9,-0.579,6.25,1.9,0.563,6.25,1.9,-0.563,6.226,1.9,0.553,6.226,1.9,-0.553,6.2,1.9,0.55,6.2,1.9,-0.55,6.3,2.2,0.65,6.3,2.2,-0.65,6.297,2.2,0.624,6.297,2.2,-0.624,6.287,2.2,0.6,6.287,2.2,-0.6,6.271,2.2,0.579,6.271,2.2,-0.579,6.25,2.2,0.563,6.25,2.2,-0.563,6.226,2.2,0.553,6.226,2.2,-0.553,6.2,2.2,0.55,6.2,2.2,-0.55});
			return Coordinate_5_21_point;
		}
		/** Large attribute array: Coordinate DEF='deck02COORD' point field, scene-graph level=5, element #24, 243 total numbers made up of 81 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getdeck02COORD_5_24_point()
		{
			MFVec3f deck02COORD_5_24_point = new MFVec3f(new double[] {4.85,1.9,0.0,4.85,1.9,0.55,4.85,1.9,-0.55,5.2,1.9,0.55,5.2,1.9,-0.55,5.5,1.9,0.55,5.5,1.9,-0.55,5.9,1.9,0.55,5.9,1.9,-0.55,6.2,1.9,0.55,6.2,1.9,-0.55,6.3,1.9,0.25,6.3,1.9,-0.25,4.85,2.6,0.55,4.85,2.6,-0.55,5.2,2.6,0.55,5.2,2.6,-0.55,5.5,2.6,0.55,5.5,2.6,-0.55,5.9,2.6,0.55,5.9,2.6,-0.55,6.2,2.6,0.55,6.2,2.6,-0.55,6.3,2.6,0.25,6.3,2.6,-0.25,4.85,2.325,0.5,4.85,2.525,0.5,4.85,2.325,0.3,4.85,2.525,0.3,4.85,2.325,-0.5,4.85,2.525,-0.5,4.85,2.325,-0.3,4.85,2.525,-0.3,4.95,2.325,0.55,4.95,2.525,0.55,5.15,2.325,0.55,5.15,2.525,0.55,5.25,2.325,0.55,5.25,2.525,0.55,5.45,2.325,0.55,5.45,2.525,0.55,5.575,2.0,0.55,5.575,2.525,0.55,5.825,2.0,0.55,5.825,2.525,0.55,5.95,2.325,0.55,5.95,2.525,0.55,6.15,2.325,0.55,6.15,2.525,0.55,6.213,2.275,0.511,6.213,2.525,0.511,6.285,2.275,0.295,6.285,2.525,0.295,6.3,2.275,0.175,6.3,2.525,0.175,6.3,2.275,-0.175,6.3,2.525,-0.175,4.95,2.325,-0.55,4.95,2.525,-0.55,5.15,2.325,-0.55,5.15,2.525,-0.55,5.25,2.325,-0.55,5.25,2.525,-0.55,5.45,2.325,-0.55,5.45,2.525,-0.55,5.575,2.0,-0.55,5.575,2.525,-0.55,5.825,2.0,-0.55,5.825,2.525,-0.55,5.95,2.325,-0.55,5.95,2.525,-0.55,6.15,2.325,-0.55,6.15,2.525,-0.55,6.213,2.275,-0.511,6.213,2.525,-0.511,6.285,2.275,-0.295,6.285,2.525,-0.295,4.85,1.9,0.25,4.85,2.6,0.25,4.85,1.9,-0.25,4.85,2.6,-0.25});
			return deck02COORD_5_24_point;
		}
		/** Large attribute array: Coordinate DEF='windowsdeck02COORD' point field, scene-graph level=5, element #29, 246 total numbers made up of 82 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getwindowsdeck02COORD_5_29_point()
		{
			MFVec3f windowsdeck02COORD_5_29_point = new MFVec3f(new double[] {4.85,1.9,0.0,4.85,1.9,0.55,4.85,1.9,-0.55,5.2,1.9,0.55,5.2,1.9,-0.55,5.5,1.9,0.55,5.5,1.9,-0.55,5.9,1.9,0.55,5.9,1.9,-0.55,6.2,1.9,0.55,6.2,1.9,-0.55,6.3,1.9,0.25,6.3,1.9,-0.25,4.85,2.6,0.55,4.85,2.6,-0.55,5.2,2.6,0.55,5.2,2.6,-0.55,5.5,2.6,0.55,5.5,2.6,-0.55,5.9,2.6,0.55,5.9,2.6,-0.55,6.2,2.6,0.55,6.2,2.6,-0.55,6.3,2.6,0.25,6.3,2.6,-0.25,4.85,2.325,0.5,4.85,2.525,0.5,4.85,2.325,0.3,4.85,2.525,0.3,4.85,2.325,-0.5,4.85,2.525,-0.5,4.85,2.325,-0.3,4.85,2.525,-0.3,4.95,2.325,0.55,4.95,2.525,0.55,5.15,2.325,0.55,5.15,2.525,0.55,5.25,2.325,0.55,5.25,2.525,0.55,5.45,2.325,0.55,5.45,2.525,0.55,5.575,2.0,0.55,5.575,2.525,0.55,5.825,2.0,0.55,5.825,2.525,0.55,5.95,2.325,0.55,5.95,2.525,0.55,6.15,2.325,0.55,6.15,2.525,0.55,6.213,2.275,0.511,6.213,2.525,0.511,6.285,2.275,0.295,6.285,2.525,0.295,6.3,2.275,0.175,6.3,2.525,0.175,6.3,2.275,-0.175,6.3,2.525,-0.175,4.95,2.325,-0.55,4.95,2.525,-0.55,5.15,2.325,-0.55,5.15,2.525,-0.55,5.25,2.325,-0.55,5.25,2.525,-0.55,5.45,2.325,-0.55,5.45,2.525,-0.55,5.575,2.0,-0.55,5.575,2.525,-0.55,5.825,2.0,-0.55,5.825,2.525,-0.55,5.95,2.325,-0.55,5.95,2.525,-0.55,6.15,2.325,-0.55,6.15,2.525,-0.55,6.213,2.275,-0.511,6.213,2.525,-0.511,6.285,2.275,-0.295,6.285,2.525,-0.295,4.85,1.9,0.25,4.85,2.6,0.25,4.85,1.9,-0.25,4.85,2.6,-0.25,0.0,0.0,0.0});
			return windowsdeck02COORD_5_29_point;
		}
		/** Large attribute array: IndexedFaceSet DEF='superstructureIFS' coordIndex field, scene-graph level=4, element #41, 337 total numbers.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFInt32 getsuperstructureIFS_4_41_coordIndex()
		{
			MFInt32 superstructureIFS_4_41_coordIndex = new MFInt32()/*2.finalize*/
				.append(new MFInt32(getsuperstructureIFS_4_41_coordIndex_1()));
			return superstructureIFS_4_41_coordIndex;
		}
		/** Large attribute array: Coordinate point field, scene-graph level=5, element #41, 357 total numbers made up of 119 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getCoordinate_5_41_point()
		{
			MFVec3f Coordinate_5_41_point = new MFVec3f()/*2.finalize*/
				.append(new MFVec3f(getCoordinate_5_41_point_1()))
				.append(new MFVec3f(getCoordinate_5_41_point_2()));
			return Coordinate_5_41_point;
		}
		/** Large attribute array: Coordinate DEF='windowsCOORD' point field, scene-graph level=5, element #46, 360 total numbers made up of 120 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getwindowsCOORD_5_46_point()
		{
			MFVec3f windowsCOORD_5_46_point = new MFVec3f()/*2.finalize*/
				.append(new MFVec3f(getwindowsCOORD_5_46_point_1()))
				.append(new MFVec3f(getwindowsCOORD_5_46_point_2()));
			return windowsCOORD_5_46_point;
		}
		/** Large attribute array: Coordinate point field, scene-graph level=5, element #71, 243 total numbers made up of 81 3-tuple values.
		 * Reassemble split array as single method to improve readability and runnability.
		 * Provide large array values via separate methods, hoping to avoid 'code too large' Java compilation errors. 
		 * Individual Java methods (including aggregated initializations) are limited to 64KB.
		 * @see https://stackoverflow.com/questions/2407912/code-too-large-compilation-error-in-java
		 * @see https://stackoverflow.com/questions/11437905/java-too-many-constants-jvm-error
		 */
		private MFVec3f getCoordinate_5_71_point()
		{
			MFVec3f Coordinate_5_71_point = new MFVec3f(new double[] {0.0,0.0,0.0,7.900,1.266,0.240,7.908,1.266,0.278,7.929,1.267,0.311,7.962,1.268,0.332,8.000,1.27,0.340,8.300,1.276,0.340,8.338,1.276,0.332,8.371,1.277,0.311,8.392,1.278,0.278,8.400,1.278,0.240,7.900,1.416,0.240,7.908,1.416,0.278,7.929,1.416,0.311,7.962,1.416,0.332,8.000,1.416,0.340,8.300,1.416,0.340,8.338,1.416,0.332,8.371,1.416,0.311,8.392,1.416,0.278,8.400,1.416,0.240,7.900,1.266,-0.240,7.908,1.266,-0.278,7.929,1.267,-0.311,7.962,1.268,-0.332,8.000,1.27,-0.340,8.300,1.276,-0.340,8.338,1.276,-0.332,8.371,1.277,-0.311,8.392,1.278,-0.278,8.400,1.278,-0.240,7.900,1.416,-0.240,7.908,1.416,-0.278,7.929,1.416,-0.311,7.962,1.416,-0.332,8.000,1.416,-0.340,8.300,1.416,-0.340,8.338,1.416,-0.332,8.371,1.416,-0.311,8.392,1.416,-0.278,8.400,1.416,-0.240,8.275,1.416,-0.075,8.271,1.416,-0.094,8.260,1.416,-0.110,8.244,1.416,-0.121,8.225,1.416,-0.125,8.075,1.416,-0.125,8.056,1.416,-0.121,8.040,1.416,-0.110,8.029,1.416,-0.094,8.025,1.416,-0.075,8.025,1.416,0.075,8.029,1.416,0.094,8.040,1.416,0.110,8.056,1.416,0.121,8.075,1.416,0.125,8.225,1.416,0.125,8.244,1.416,0.121,8.260,1.416,0.110,8.271,1.416,0.094,8.275,1.416,0.075,8.275,1.466,-0.075,8.271,1.466,-0.094,8.260,1.466,-0.110,8.244,1.466,-0.121,8.225,1.466,-0.125,8.075,1.466,-0.125,8.056,1.466,-0.121,8.040,1.466,-0.110,8.029,1.466,-0.094,8.025,1.466,-0.075,8.025,1.466,0.075,8.029,1.466,0.094,8.040,1.466,0.110,8.056,1.466,0.121,8.075,1.466,0.125,8.225,1.466,0.125,8.244,1.466,0.121,8.260,1.466,0.110,8.271,1.466,0.094,8.275,1.466,0.075});
			return Coordinate_5_71_point;
		}

	/** The initialized model object, created within initialize() method. */
	private X3D x3dModel;

	/** 
	 * Provide a 
	 * <a href="https://dzone.com/articles/java-copy-shallow-vs-deep-in-which-you-will-swim" target="_blank">shallow copy</a>
	 * of the X3D model.
	 * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html">X3D</a>
	 * @return Superstructure model
	 */
	public X3D getX3dModel()
	{	  
		return x3dModel;
	}
	   
    /** 
     * Default main() method provided for test purposes, uses CommandLine to set global ConfigurationProperties for this object.
     * @param args array of input parameters, provided as arguments
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#handleArguments-java.lang.String:A-">X3D.handleArguments(args)</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#validationReport--">X3D.validationReport()</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html">CommandLine</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE">CommandLine.USAGE</a>
     * @see <a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html">ConfigurationProperties</a>
     */
    public static void main(String args[])
    {
        System.out.println("Build this X3D model, showing validation diagnostics...");
        X3D thisExampleX3dModel = new Superstructure().getX3dModel();
//      System.out.println("X3D model construction complete.");
	
        // next handle command line arguments
        boolean hasArguments = (args != null) && (args.length > 0);
        boolean validate = true; // default
        boolean argumentsLoadNewModel = false;
        String  fileName = new String();

        if (args != null)
        {
                for (String arg : args)
                {
                        if (arg.toLowerCase().startsWith("-v") || arg.toLowerCase().contains("validate"))
                        {
                                validate = true; // making sure
                        }
                        if (arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3D) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_CLASSICVRML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_X3DB) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_VRML97) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_EXI) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_GZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_ZIP) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_HTML) ||
                                arg.toLowerCase().endsWith(X3D.FILE_EXTENSION_XHTML))
                        {
                                argumentsLoadNewModel = true;
                                fileName = arg;
                        }
                }
        }
        if      (argumentsLoadNewModel)
                System.out.println("WARNING: \"Savage.ShipsMilitary.PatrolCraftNavalAcademyBrazil.Superstructure\" model invocation is attempting to load file \"" + fileName + "\" instead of simply validating itself... file loading ignored.");
        else if (hasArguments) // if no arguments provided, this method produces usage warning
                thisExampleX3dModel.handleArguments(args);
	
        if (validate)
        {
            //  System.out.println("--- TODO fix duplicated outputs ---"); // omit when duplicated outputs problem is solved/refactored
		String validationResults = thisExampleX3dModel.validationReport();
            //  System.out.println("-----------------------------------"); // omit when duplicated outputs problem is solved/refactored
                System.out.print("Savage.ShipsMilitary.PatrolCraftNavalAcademyBrazil.Superstructure self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

                // experimental: test X3DJSAIL output files
                // ShipsMilitary/PatrolCraftNavalAcademyBrazil/Superstructure_JavaExport.* file validation is checked when building X3D Example Archives
                String filenameX3D  = "ShipsMilitary/PatrolCraftNavalAcademyBrazil/Superstructure_JavaExport.x3d"; 
                String filenameX3DV = "ShipsMilitary/PatrolCraftNavalAcademyBrazil/Superstructure_JavaExport.x3dv"; 
                String filenameJSON = "ShipsMilitary/PatrolCraftNavalAcademyBrazil/Superstructure_JavaExport.json";
                thisExampleX3dModel.toFileX3D        (filenameX3D);
                thisExampleX3dModel.toFileClassicVRML(filenameX3DV);
// TODO         thisExampleX3dModel.toFileJSON       (filenameJSON);
        }
    }
}
