<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">package X3dForAdvancedModeling.GltfSampleModels;

import org.web3d.x3d.jsail.Core.*;
import org.web3d.x3d.jsail.fields.*;
import org.web3d.x3d.jsail.Grouping.*;
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.
/**
 * &lt;p&gt; This model tests the various alpha modes available in glTF 2.0 rendering. There are three settings for alphaMode: "OPAQUE" (the default), "BLEND", and "MASK". Of these, "MASK" takes an additional alphaCutoff value that modifies it. &lt;/p&gt;
 &lt;p&gt; Related links: Catalog page &lt;a href="../../../GltfSampleModels/AlphaBlendModeTestIndex.html" target="_blank"&gt;AlphaBlendModeTest&lt;/a&gt;,  source &lt;a href="../../../GltfSampleModels/AlphaBlendModeTest.java"&gt;AlphaBlendModeTest.java&lt;/a&gt;, &lt;a href="https://www.web3d.org/x3d/content/examples/X3dResources.html" target="_blank"&gt;X3D Resources&lt;/a&gt;, &lt;a href="https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html" target="_blank"&gt;X3D Scene Authoring Hints&lt;/a&gt;, and &lt;a href="https://www.web3d.org/x3d/content/X3dTooltips.html" target="_blank"&gt;X3D Tooltips&lt;/a&gt;. &lt;/p&gt;
	&lt;table style="color:black; border:0px solid; border-spacing:10px 0px;"&gt;
        &lt;caption&gt;Scene Meta Information&lt;/caption&gt;
		&lt;tr style="background-color:silver; border-color:silver;"&gt;
			&lt;td style="text-align:center; padding:10px 0px;"&gt;&lt;i&gt;meta tags&lt;/i&gt;&lt;/td&gt;
			&lt;td style="text-align:left;   padding:10px 0px;"&gt;&amp;nbsp; Document Metadata &lt;/td&gt;
		&lt;/tr&gt;

		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; title &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="../../../GltfSampleModels/AlphaBlendModeTest.x3d"&gt;AlphaBlendModeTest.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; description &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; This model tests the various alpha modes available in glTF 2.0 rendering. There are three settings for alphaMode: "OPAQUE" (the default), "BLEND", and "MASK". Of these, "MASK" takes an additional alphaCutoff value that modifies it. &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; created &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; 17 July 2021 &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; modified &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; 4 July 2024 &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; creator &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; Ed Mackey &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; source &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; AlphaBlendModeTest.gltf &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/AlphaBlendModeTest" target="_blank"&gt;https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/AlphaBlendModeTest&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://khronos/gltf" target="_blank"&gt;https://khronos/gltf&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://en.wikipedia.org/glTF" target="_blank"&gt;https://en.wikipedia.org/glTF&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d4" target="_blank"&gt;https://www.web3d.org/x3d4&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; specificationSection &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; X3D 4.0 Architecture, ISO/IEC 19775-1:2023, 9 Networking component, 12 Shape component, 12.4.2 Appearance &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; specificationSection &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; X3D 4.0 Architecture, ISO/IEC 19775-1:2023, clause 9 Networking component, Table 9.3 - Networking component support levels &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; specificationUrl &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/networking.html#t-supportLevels" target="_blank"&gt;https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/networking.html#t-supportLevels&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; specificationUrl &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#Appearance" target="_blank"&gt;https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#Appearance&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; reference &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://castle-engine.io/creating_data_model_formats.php#section_gltf" target="_blank"&gt;https://castle-engine.io/creating_data_model_formats.php#section_gltf&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="color:burntorange"&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; warning &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; commented out Tangent nodes, removed flipVertically=true, removed gravityTransform=false since those constructs are not valid X3D4 &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; generator &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; view3dscene, &lt;a href="https://castle-engine.io/view3dscene.php" target="_blank"&gt;https://castle-engine.io/view3dscene.php&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; generator &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; X3D-Edit 4.0, &lt;a href="https://savage.nps.edu/X3D-Edit" target="_blank"&gt;https://savage.nps.edu/X3D-Edit&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; identifier &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AlphaBlendModeTest.x3d" target="_blank"&gt;https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AlphaBlendModeTest.x3d&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr&gt;
			&lt;td style="text-align:right; vertical-align: text-top;"&gt; &lt;i&gt; license &lt;/i&gt; &lt;/td&gt;
			&lt;td&gt; &lt;a href="https://www.web3d.org/x3d/content/examples/license.html" target="_blank"&gt;https://www.web3d.org/x3d/content/examples/license.html&lt;/a&gt; &lt;/td&gt;
		&lt;/tr&gt;
		&lt;tr style="background-color:silver; border-color:silver;"&gt;
			&lt;td style="text-align:center;" colspan="2"&gt;  &amp;nbsp; &lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;

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

	* @author Ed Mackey
 */

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

	/** Create and initialize the X3D model for this object. */
	public final void initialize()
	{
            try { // catch-all
  x3dModel = new X3D().setProfile(X3D.PROFILE_INTERCHANGE).setVersion(X3D.VERSION_4_0)
  .setHead(new head()
    .addComponent(new component().setName("Lighting").setLevel(3))
    .addComponent(new component().setName("Shape").setLevel(2))
    .addMeta(new meta().setName(meta.NAME_TITLE      ).setContent("AlphaBlendModeTest.x3d"))
    .addMeta(new meta().setName(meta.NAME_DESCRIPTION).setContent("This model tests the various alpha modes available in glTF 2.0 rendering. There are three settings for alphaMode: \"OPAQUE\" (the default), \"BLEND\", and \"MASK\". Of these, \"MASK\" takes an additional alphaCutoff value that modifies it."))
    .addMeta(new meta().setName(meta.NAME_CREATED    ).setContent("17 July 2021"))
    .addMeta(new meta().setName(meta.NAME_MODIFIED   ).setContent("4 July 2024"))
    .addMeta(new meta().setName(meta.NAME_CREATOR    ).setContent("Ed Mackey"))
    .addMeta(new meta().setName(meta.NAME_SOURCE     ).setContent("AlphaBlendModeTest.gltf"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/AlphaBlendModeTest"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://khronos/gltf"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://en.wikipedia.org/glTF"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://www.web3d.org/x3d4"))
    .addMeta(new meta().setName(meta.NAME_SPECIFICATIONSECTION).setContent("X3D 4.0 Architecture, ISO/IEC 19775-1:2023, 9 Networking component, 12 Shape component, 12.4.2 Appearance"))
    .addMeta(new meta().setName(meta.NAME_SPECIFICATIONSECTION).setContent("X3D 4.0 Architecture, ISO/IEC 19775-1:2023, clause 9 Networking component, Table 9.3 - Networking component support levels"))
    .addMeta(new meta().setName(meta.NAME_SPECIFICATIONURL).setContent("https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/networking.html#t-supportLevels"))
    .addMeta(new meta().setName(meta.NAME_SPECIFICATIONURL).setContent("https://www.web3d.org/specifications/X3Dv4/ISO-IEC19775-1v4-IS/Part01/components/shape.html#Appearance"))
    .addMeta(new meta().setName(meta.NAME_REFERENCE  ).setContent("https://castle-engine.io/creating_data_model_formats.php#section_gltf"))
    .addMeta(new meta().setName(meta.NAME_WARNING    ).setContent("commented out Tangent nodes, removed flipVertically=true, removed gravityTransform=false since those constructs are not valid X3D4"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("view3dscene, https://castle-engine.io/view3dscene.php"))
    .addMeta(new meta().setName(meta.NAME_GENERATOR  ).setContent("X3D-Edit 4.0, https://savage.nps.edu/X3D-Edit"))
    .addMeta(new meta().setName(meta.NAME_IDENTIFIER ).setContent("https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AlphaBlendModeTest.x3d"))
    .addMeta(new meta().setName(meta.NAME_LICENSE    ).setContent("https://www.web3d.org/x3d/content/examples/license.html")))
  .setScene(new Scene()
    .addChild(new WorldInfo().setInfo(new String[] {"glTF Sample Model"}).setTitle("AlphaBlendModeTest.x3d"))
    .addChild(new Transform("GreenArrows").setTranslation(0.5,1.06815052032471,0.00499999988824129)
      .addChild(new Group("GreenArrowsMesh")
        .addChild(new Shape().setBboxCenter(1.54500007629395,0.000892192125320435,0.0).setBboxSize(3.09000015258789,0.96497642993927,0.0)
          .setAppearance(new Appearance("MatOpaque").setAlphaMode("OPAQUE")
            .setMaterial(new PhysicalMaterial().setBaseTextureMapping("TEXCOORD_0").setMetallic(0).setRoughness(0.800000011920929)
              .setBaseTexture(new ImageTexture().setUrl(new String[] {"AlphaBlendLabels.png","https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AlphaBlendLabels.png"}))))
          .setGeometry(new IndexedTriangleSet().setCcw(true).setColorPerVertex(true).setIndex(new int[] {0,1,2,3,4,5,6,7,8}).setNormalPerVertex(true).setSolid(false)
            .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {1.5,0.0,0.0,1.5900000333786,-0.0949999988079071,0.0,1.5900000333786,0.0949999988079071,0.0,0.0,0.388380408287048,0.0,0.0900000333786011,0.293380409479141,0.0,0.0900000333786011,0.483380407094955,0.0,3.0,-0.386596024036407,0.0,3.09000015258789,-0.481596022844315,0.0,3.09000015258789,-0.2915960252285,0.0})))
            .setNormal(new Normal().setVector(new MFVec3f(new double[] {0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0})))
            .addComments(" Tangent vector='0.999847650527954 -0.0174568109214306 0 0.999847650527954 -0.0174568109214306 0 0.999847650527954 -0.0174568109214306 0 0.999847650527954 -0.0174568109214306 0 0.999847650527954 -0.0174568109214306 0 0.999847650527954 -0.0174568109214306 0 0.999847650527954 -0.0174567885696888 0 0.999847650527954 -0.0174567885696888 0 0.999847650527954 -0.0174567885696888 0'/ ")
            .setTexCoord(new MultiTextureCoordinate()
              .addTexCoord(new TextureCoordinate().setMapping("TEXCOORD_0").setPoint(new MFVec2f(new double[] {0.81337970495224,0.612273097038269,0.816906034946442,0.615767359733582,0.816906034946442,0.60866117477417,0.81337970495224,0.612273097038269,0.816906034946442,0.615767359733582,0.816906034946442,0.60866117477417,0.81337970495224,0.612273097038269,0.816906034946442,0.615767359733582,0.816906034946442,0.60866117477417}))))))))
    .addChild(new Transform("DecalBlend").setRotation(-1.00000047683716,0.0,0.0,0.982794523239136).setTranslation(0.0,0.0,0.409020990133286)
      .addChild(new Group("DecalBlendMesh")
        .addChild(new Shape().setBboxCenter(-1.10000002384186,0.0,0.00999999977648258).setBboxSize(0.216000080108643,0.228000000119209,0.0)
          .setAppearance(new Appearance("MatBlend").setAlphaMode("BLEND")
            .setMaterial(new PhysicalMaterial().setBaseTextureMapping("TEXCOORD_0").setMetallic(0).setRoughness(0.800000011920929)
              .setBaseTexture(new ImageTexture().setUrl(new String[] {"AlphaBlendLabels.png","https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AlphaBlendLabels.png"}))))
          .setGeometry(new IndexedTriangleSet().setCcw(true).setColorPerVertex(true).setIndex(new int[] {0,1,2,0,3,1}).setNormalPerVertex(true).setSolid(false)
            .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {-0.991999983787537,0.114000000059605,0.00999999977648258,-1.20800006389618,-0.114000000059605,0.00999999977648258,-0.991999983787537,-0.114000000059605,0.00999999977648258,-1.20800006389618,0.114000000059605,0.00999999977648258})))
            .setNormal(new Normal().setVector(new MFVec3f(new double[] {0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0})))
            .addComments(" Tangent vector='1 0 0 1 0 0 1 0 0 1 0 0'/ ")
            .setTexCoord(new MultiTextureCoordinate()
              .addTexCoord(new TextureCoordinate().setMapping("TEXCOORD_0").setPoint(new MFVec2f(new double[] {0.982500016689301,0.662500023841858,0.892499923706055,0.757500052452087,0.982500016689301,0.757500052452087,0.892499923706055,0.662500023841858}))))))))
    .addChild(new Transform("DecalOpaque").setRotation(-1.00000047683716,0.0,0.0,0.982794523239136).setTranslation(0.0,0.0,0.409020751714706)
      .addChild(new Group("DecalOpaqueMesh")
        .addChild(new Shape().setBboxCenter(0.0,0.0,0.00499972701072693).setBboxSize(6.57999992370605,0.312000006437302,0.0100005269050598)
          .setAppearance(new Appearance().setUSE("MatOpaque"))
          .setGeometry(new IndexedTriangleSet().setCcw(true).setColorPerVertex(true).setIndex(new int[] {0,1,2,0,3,1,4,5,6,4,7,5,8,9,10,8,11,9,12,13,14,12,15,13,16,17,18,16,19,17,20,21,22,20,23,21,24,25,26,24,27,25,28,29,30,28,31,29}).setNormalPerVertex(true).setSolid(false)
            .setCoord(new Coordinate().setPoint(getCoordinate_7_48_point()))
            .setNormal(new Normal().setVector(new MFVec3f(new double[] {0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0})))
            .addComments(" Tangent vector='1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0'/ ")
            .setTexCoord(new MultiTextureCoordinate()
              .addTexCoord(new TextureCoordinate().setMapping("TEXCOORD_0").setPoint(getTextureCoordinate_8_50_point())))))))
    .addChild(new Transform("TestCutoff75").setTranslation(3.0,0.0,0.0)
      .addChild(new Group("TestCutoff75Mesh")
        .addChild(new Shape().setBboxCenter(0.0,1.0349999666214,0.0).setBboxSize(1.10000002384186,1.8699996471405,0.0)
          .setAppearance(new Appearance("MatCutoff75").setAlphaCutoff(0.75).setAlphaMode("MASK")
            .setMaterial(new PhysicalMaterial().setBaseTextureMapping("TEXCOORD_0").setMetallic(0).setRoughness(0.800000011920929)
              .setBaseTexture(new ImageTexture().setUrl(new String[] {"AlphaBlendLabels.png","https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AlphaBlendLabels.png"}))))
          .setGeometry(new IndexedTriangleSet().setCcw(true).setColorPerVertex(true).setIndex(new int[] {0,1,2,0,3,1}).setNormalPerVertex(true).setSolid(false)
            .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {0.550000011920929,1.96999979019165,0.0,-0.550000011920929,0.100000083446503,0.0,0.550000011920929,0.100000083446503,0.0,-0.550000011920929,1.96999979019165,0.0})))
            .setNormal(new Normal().setVector(new MFVec3f(new double[] {0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0})))
            .addComments(" Tangent vector='1 0 0 1 0 0 1 0 0 1 0 0'/ ")
            .setTexCoord(new MultiTextureCoordinate()
              .addTexCoord(new TextureCoordinate().setMapping("TEXCOORD_0").setPoint(new MFVec2f(new double[] {0.675000011920929,0.050000011920929,0.125000223517418,0.985000014305115,0.675000011920929,0.985000014305115,0.125000223517418,0.050000011920929}))))))))
    .addChild(new Transform("TestCutoffDefault").setTranslation(1.5,0.0,0.0)
      .addChild(new Group("TestCutoffDefaultMesh")
        .addChild(new Shape().setBboxCenter(0.0,1.0349999666214,0.0).setBboxSize(1.10000002384186,1.8699996471405,0.0)
          .setAppearance(new Appearance("MatCutoffDefault").setAlphaMode("MASK")
            .setMaterial(new PhysicalMaterial().setBaseTextureMapping("TEXCOORD_0").setMetallic(0).setRoughness(0.800000011920929)
              .setBaseTexture(new ImageTexture().setUrl(new String[] {"AlphaBlendLabels.png","https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AlphaBlendLabels.png"}))))
          .setGeometry(new IndexedTriangleSet().setCcw(true).setColorPerVertex(true).setIndex(new int[] {0,1,2,0,3,1}).setNormalPerVertex(true).setSolid(false)
            .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {0.550000011920929,1.96999979019165,0.0,-0.550000011920929,0.100000083446503,0.0,0.550000011920929,0.100000083446503,0.0,-0.550000011920929,1.96999979019165,0.0})))
            .setNormal(new Normal().setVector(new MFVec3f(new double[] {0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0})))
            .addComments(" Tangent vector='1 0 0 1 0 0 1 0 0 1 0 0'/ ")
            .setTexCoord(new MultiTextureCoordinate()
              .addTexCoord(new TextureCoordinate().setMapping("TEXCOORD_0").setPoint(new MFVec2f(new double[] {0.675000011920929,0.050000011920929,0.125000223517418,0.985000014305115,0.675000011920929,0.985000014305115,0.125000223517418,0.050000011920929}))))))))
    .addChild(new Transform("TestCutoff25")
      .addChild(new Group("TestCutoff25Mesh")
        .addChild(new Shape().setBboxCenter(0.0,1.0349999666214,0.0).setBboxSize(1.10000002384186,1.8699996471405,0.0)
          .setAppearance(new Appearance("MatCutoff25").setAlphaCutoff(0.25).setAlphaMode("MASK")
            .setMaterial(new PhysicalMaterial().setBaseTextureMapping("TEXCOORD_0").setMetallic(0).setRoughness(0.800000011920929)
              .setBaseTexture(new ImageTexture().setUrl(new String[] {"AlphaBlendLabels.png","https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/AlphaBlendLabels.png"}))))
          .setGeometry(new IndexedTriangleSet().setCcw(true).setColorPerVertex(true).setIndex(new int[] {0,1,2,0,3,1}).setNormalPerVertex(true).setSolid(false)
            .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {0.550000011920929,1.96999979019165,0.0,-0.550000011920929,0.100000083446503,0.0,0.550000011920929,0.100000083446503,0.0,-0.550000011920929,1.96999979019165,0.0})))
            .setNormal(new Normal().setVector(new MFVec3f(new double[] {0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0})))
            .addComments(" Tangent vector='1 0 0 1 0 0 1 0 0 1 0 0'/ ")
            .setTexCoord(new MultiTextureCoordinate()
              .addTexCoord(new TextureCoordinate().setMapping("TEXCOORD_0").setPoint(new MFVec2f(new double[] {0.675000011920929,0.050000011920929,0.125000223517418,0.985000014305115,0.675000011920929,0.985000014305115,0.125000223517418,0.050000011920929}))))))))
    .addChild(new Transform("TestBlend").setTranslation(-1.5,0.0,0.0)
      .addChild(new Group("TestBlendMesh")
        .addChild(new Shape().setBboxCenter(0.0,1.0349999666214,0.0).setBboxSize(1.10000002384186,1.8699996471405,0.0)
          .setAppearance(new Appearance().setUSE("MatBlend"))
          .setGeometry(new IndexedTriangleSet().setCcw(true).setColorPerVertex(true).setIndex(new int[] {0,1,2,0,3,1}).setNormalPerVertex(true).setSolid(false)
            .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {0.550000011920929,1.96999979019165,0.0,-0.550000011920929,0.100000083446503,0.0,0.550000011920929,0.100000083446503,0.0,-0.550000011920929,1.96999979019165,0.0})))
            .setNormal(new Normal().setVector(new MFVec3f(new double[] {0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0})))
            .addComments(" Tangent vector='1 0 0 1 0 0 1 0 0 1 0 0'/ ")
            .setTexCoord(new MultiTextureCoordinate()
              .addTexCoord(new TextureCoordinate().setMapping("TEXCOORD_0").setPoint(new MFVec2f(new double[] {0.675000011920929,0.050000011920929,0.125000223517418,0.985000014305115,0.675000011920929,0.985000014305115,0.125000223517418,0.050000011920929}))))))))
    .addChild(new Transform("TestOpaque").setTranslation(-3.0,0.0,0.0)
      .addChild(new Group("TestOpaqueMesh")
        .addChild(new Shape().setBboxCenter(0.0,1.0349999666214,0.0).setBboxSize(1.10000002384186,1.8699996471405,0.0)
          .setAppearance(new Appearance().setUSE("MatOpaque"))
          .setGeometry(new IndexedTriangleSet().setCcw(true).setColorPerVertex(true).setIndex(new int[] {0,1,2,0,3,1}).setNormalPerVertex(true).setSolid(false)
            .setCoord(new Coordinate().setPoint(new MFVec3f(new double[] {0.550000011920929,1.96999979019165,0.0,-0.550000011920929,0.100000083446503,0.0,0.550000011920929,0.100000083446503,0.0,-0.550000011920929,1.96999979019165,0.0})))
            .setNormal(new Normal().setVector(new MFVec3f(new double[] {0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0,0.0,0.0,1.0})))
            .addComments(" Tangent vector='1 0 0 1 0 0 1 0 0 1 0 0'/ ")
            .setTexCoord(new MultiTextureCoordinate()
              .addTexCoord(new TextureCoordinate().setMapping("TEXCOORD_0").setPoint(new MFVec2f(new double[] {0.675000011920929,0.050000011920929,0.125000223517418,0.985000014305115,0.675000011920929,0.985000014305115,0.125000223517418,0.050000011920929}))))))))
    .addChild(new Transform("Bed")
      .addChild(new Group("BedMesh")
        .addChild(new Shape().setBboxCenter(0.0,1.09976673126221,-0.0999999940395355).setBboxSize(8.60000038146973,2.39953327178955,1.29999995231628)
          .setAppearance(new Appearance("MatBed").setAlphaMode("OPAQUE")
            .setMaterial(new PhysicalMaterial().setBaseTextureMapping("TEXCOORD_0").setMetallicRoughnessTextureMapping("TEXCOORD_0").setNormalTextureMapping("TEXCOORD_0").setOcclusionTextureMapping("TEXCOORD_0")
              .setNormalTexture(new ImageTexture().setUrl(new String[] {"MatBed_normal.jpg","https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/MatBed_normal.jpg"}))
              .setBaseTexture(new ImageTexture().setUrl(new String[] {"MatBed_baseColor.jpg","https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/MatBed_baseColor.jpg"}))
              .setMetallicRoughnessTexture(new ImageTexture().setUrl(new String[] {"MatBed_occlusionRoughnessMetallic.jpg","https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/MatBed_occlusionRoughnessMetallic.jpg"}))
              .setOcclusionTexture(new ImageTexture().setUrl(new String[] {"MatBed_occlusionRoughnessMetallic.jpg","https://www.web3d.org/x3d/content/examples/X3dForAdvancedModeling/GltfSampleModels/MatBed_occlusionRoughnessMetallic.jpg"}))))
          .setGeometry(new IndexedTriangleSet().setCcw(true).setColorPerVertex(true).setIndex(new int[] {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,0,39,1,3,40,4,41,42,43,9,44,10,12,45,13,15,46,16,18,47,19,48,49,50,51,52,53,54,55,56,24,57,25,58,59,60,30,61,31,33,62,34,63,64,65,66,67,68,69,70,71}).setNormalPerVertex(true).setSolid(true)
            .setCoord(new Coordinate().setPoint(getCoordinate_7_113_point()))
            .setNormal(new Normal().setVector(getNormal_7_114_vector()))
            .addComments(" Tangent vector='0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -3.38101017405279E-7 0 -1 -3.38101017405279E-7 0 -1 -3.38101017405279E-7 0 0.554700255393982 -0.832050263881683 0 0.554700255393982 -0.832050263881683 0 0.554700255393982 -0.832050263881683 0 0 1 0 0 1 0 0 1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 4.47135903414164E-7 -1 -1.13207150320704E-8 4.47135903414164E-7 -1 -1.13207150320704E-8 4.47135903414164E-7 -1 -1.13207150320704E-8 0 0 1 0 0 1 0 0 1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 4.47135903414164E-7 1 5.41777041007663E-8 4.47135903414164E-7 1 5.41777041007663E-8 4.47135903414164E-7 1 5.41777041007663E-8 0 -1 0 0 -1 0 0 -1 -1.73042025153336E-7 0 -1 -1.73042025153336E-7 0 -1 -1.73042025153336E-7 0 0.554700255393982 -0.832050263881683 0 0 1 0 0 -1 0 0 -1 7.48032583412165E-16 -1 -5.47749792190189E-8 7.48032583412165E-16 -1 -5.47749792190189E-8 7.48032583412165E-16 -1 -5.47749792190189E-8 -7.48037824428526E-16 -1 -5.47750964585703E-8 -7.48037824428526E-16 -1 -5.47750964585703E-8 -7.48037824428526E-16 -1 -5.47750964585703E-8 -9.73755618360883E-8 -1 -3.5527136788005E-15 -9.73755618360883E-8 -1 -3.5527136788005E-15 -9.73755618360883E-8 -1 -3.5527136788005E-15 0 0 1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 0 0 -1 -4.11530394940685E-17 1 2.73874896095094E-8 -4.11530394940685E-17 1 2.73874896095094E-8 -4.11530394940685E-17 1 2.73874896095094E-8 4.11514413811251E-17 1 2.73875482292851E-8 4.11514413811251E-17 1 2.73875482292851E-8 4.11514413811251E-17 1 2.73875482292851E-8 -1.08195070680495E-8 1 3.5527136788005E-15 -1.08195070680495E-8 1 3.5527136788005E-15 -1.08195070680495E-8 1 3.5527136788005E-15'/ ")
            .setTexCoord(new MultiTextureCoordinate()
              .addTexCoord(new TextureCoordinate().setMapping("TEXCOORD_0").setPoint(getTextureCoordinate_8_115_point()))))))));
            }
            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





		/** Large attribute array: Coordinate point field, scene-graph level=7, element #48, 96 total numbers made up of 32 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_7_48_point()
		{
			MFVec3f Coordinate_7_48_point = new MFVec3f(new double[] {-0.991999983787537,0.114000022411346,-5.36441802978516E-7,-1.20799994468689,-0.114000007510185,-5.36441802978516E-7,-0.991999983787537,-0.114000007510185,-5.36441802978516E-7,-1.20799994468689,0.114000022411346,-5.36441802978516E-7,-2.49199962615967,0.114000022411346,-5.36441802978516E-7,-2.70800018310547,-0.114000007510185,-5.36441802978516E-7,-2.49199962615967,-0.114000007510185,-5.36441802978516E-7,-2.70800018310547,0.114000022411346,-5.36441802978516E-7,-2.49199986457825,0.114000000059605,0.00999999046325684,-2.70799994468689,-0.114000000059605,0.00999999046325684,-2.49199986457825,-0.114000000059605,0.00999999046325684,-2.70799994468689,0.114000000059605,0.00999999046325684,0.28999999165535,0.156000003218651,-2.38418579101563E-7,-0.290000051259995,-0.156000003218651,-2.38418579101563E-7,0.28999999165535,-0.156000003218651,-2.38418579101563E-7,-0.290000051259995,0.156000003218651,-2.38418579101563E-7,1.78999996185303,0.155999973416328,-2.38418579101563E-7,1.21000003814697,-0.156000003218651,-2.38418579101563E-7,1.78999996185303,-0.156000003218651,-2.38418579101563E-7,1.21000003814697,0.155999973416328,-2.38418579101563E-7,3.28999996185303,0.15599998831749,-2.38418579101563E-7,2.71000003814697,-0.155999928712845,-2.38418579101563E-7,3.28999996185303,-0.155999928712845,-2.38418579101563E-7,2.71000003814697,0.15599998831749,-2.38418579101563E-7,-1.20999991893768,0.15599998831749,-2.38418579101563E-7,-1.79000008106232,-0.155999928712845,-2.38418579101563E-7,-1.20999991893768,-0.155999928712845,-2.38418579101563E-7,-1.79000008106232,0.15599998831749,-2.38418579101563E-7,-2.71000003814697,0.15599998831749,-5.36441802978516E-7,-3.28999996185303,-0.155999928712845,-5.36441802978516E-7,-2.71000003814697,-0.155999928712845,-5.36441802978516E-7,-3.28999996185303,0.15599998831749,-5.36441802978516E-7});
			return Coordinate_7_48_point;
		}
		/** Large attribute array: TextureCoordinate point field, scene-graph level=8, element #50, 64 total numbers made up of 32 2-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 MFVec2f getTextureCoordinate_8_50_point()
		{
			MFVec2f TextureCoordinate_8_50_point = new MFVec2f(new double[] {0.870000004768372,0.545000076293945,0.780000030994415,0.639999985694885,0.870000004768372,0.639999985694885,0.780000030994415,0.545000076293945,0.982500016689301,0.545000076293945,0.892499923706055,0.639999985694885,0.982500016689301,0.639999985694885,0.892499923706055,0.545000076293945,0.870000004768372,0.662500023841858,0.780000030994415,0.757500052452087,0.870000004768372,0.757500052452087,0.780000030994415,0.662500023841858,0.974999964237213,0.404999911785126,0.830000042915344,0.482999980449677,0.974999964237213,0.482999980449677,0.830000042915344,0.404999911785126,0.974999964237213,0.294999957084656,0.830000042915344,0.373000025749207,0.974999964237213,0.373000025749207,0.830000042915344,0.294999957084656,0.974999964237213,0.180000007152557,0.830000042915344,0.257999956607819,0.974999964237213,0.257999956607819,0.830000042915344,0.180000007152557,0.974999964237213,0.0899999737739563,0.830000042915344,0.167999923229218,0.974999964237213,0.167999923229218,0.830000042915344,0.0899999737739563,0.974999964237213,0.0197774171829224,0.830000042915344,0.0977773666381836,0.974999964237213,0.0977773666381836,0.830000042915344,0.0197774171829224});
			return TextureCoordinate_8_50_point;
		}
		/** Large attribute array: Coordinate point field, scene-graph level=7, element #113, 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 getCoordinate_7_113_point()
		{
			MFVec3f Coordinate_7_113_point = new MFVec3f(new double[] {-4.30000019073486,0.100000023841858,0.25,-4.30000019073486,-0.100000023841858,-0.75,-4.30000019073486,-0.100000023841858,0.550000011920929,-4.30000019073486,0.100000023841858,-0.75,4.30000019073486,-0.100000023841858,-0.75,-4.30000019073486,-0.100000023841858,-0.75,4.30000019073486,-0.100000023841858,-0.75,4.30000019073486,0.100000023841858,0.25,4.30000019073486,-0.100000023841858,0.550000011920929,4.30000019073486,0.100000023841858,0.25,-4.30000019073486,-0.100000023841858,0.550000011920929,4.30000019073486,-0.100000023841858,0.550000011920929,4.30000019073486,-0.100000023841858,-0.75,-4.30000019073486,-0.100000023841858,0.550000011920929,-4.30000019073486,-0.100000023841858,-0.75,-4.30000019073486,0.100000023841858,-0.75,4.30000019073486,0.100000023841858,0.25,4.30000019073486,0.100000023841858,-0.75,4.05662631988525,2.29953336715698,-0.567234933376312,-4.05662631988525,2.29953336715698,-0.46723484992981,4.05662631988525,2.29953336715698,-0.46723484992981,-4.18814420700073,0.0995333567261696,-0.567234992980957,4.05662631988525,2.29953336715698,-0.567234933376312,4.18814420700073,0.0995333567261696,-0.567234992980957,-4.18814420700073,2.1680154800415,-0.567234933376312,-4.18814420700073,0.0995333567261696,-0.467234909534454,-4.18814420700073,2.1680154800415,-0.46723484992981,4.18814420700073,0.0995333567261696,-0.567234992980957,4.18814420700073,2.1680154800415,-0.46723484992981,4.18814420700073,0.0995333567261696,-0.467234909534454,-4.05662631988525,2.29953336715698,-0.567234933376312,-4.18814420700073,2.1680154800415,-0.46723484992981,-4.05662631988525,2.29953336715698,-0.46723484992981,4.05662631988525,2.29953336715698,-0.46723484992981,4.18814420700073,2.1680154800415,-0.567234933376312,4.05662631988525,2.29953336715698,-0.567234933376312,4.18814420700073,0.0995333567261696,-0.467234909534454,-4.05662631988525,2.29953336715698,-0.46723484992981,-4.18814420700073,0.0995333567261696,-0.467234909534454,-4.30000019073486,0.100000023841858,-0.75,4.30000019073486,0.100000023841858,-0.75,4.30000019073486,-0.100000023841858,-0.75,4.30000019073486,0.100000023841858,-0.75,4.30000019073486,0.100000023841858,0.25,-4.30000019073486,0.100000023841858,0.25,4.30000019073486,-0.100000023841858,0.550000011920929,-4.30000019073486,0.100000023841858,0.25,-4.05662631988525,2.29953336715698,-0.567234933376312,4.18814420700073,2.1680154800415,-0.567234933376312,4.18814420700073,0.0995333567261696,-0.567234992980957,4.05662631988525,2.29953336715698,-0.567234933376312,-4.18814420700073,0.0995333567261696,-0.567234992980957,-4.18814420700073,2.1680154800415,-0.567234933376312,-4.05662631988525,2.29953336715698,-0.567234933376312,-4.05662631988525,2.29953336715698,-0.567234933376312,4.05662631988525,2.29953336715698,-0.567234933376312,-4.18814420700073,0.0995333567261696,-0.567234992980957,-4.18814420700073,0.0995333567261696,-0.567234992980957,4.18814420700073,0.0995333567261696,-0.567234992980957,4.18814420700073,2.1680154800415,-0.567234933376312,4.18814420700073,2.1680154800415,-0.46723484992981,-4.18814420700073,2.1680154800415,-0.567234933376312,4.18814420700073,2.1680154800415,-0.46723484992981,-4.18814420700073,2.1680154800415,-0.46723484992981,-4.18814420700073,0.0995333567261696,-0.467234909534454,-4.05662631988525,2.29953336715698,-0.46723484992981,4.18814420700073,0.0995333567261696,-0.467234909534454,4.18814420700073,2.1680154800415,-0.46723484992981,4.05662631988525,2.29953336715698,-0.46723484992981,4.05662631988525,2.29953336715698,-0.46723484992981,-4.05662631988525,2.29953336715698,-0.46723484992981,4.18814420700073,0.0995333567261696,-0.467234909534454});
			return Coordinate_7_113_point;
		}
		/** Large attribute array: Normal vector field, scene-graph level=7, element #114, 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 getNormal_7_114_vector()
		{
			MFVec3f Normal_7_114_vector = new MFVec3f(new double[] {-1,0,0,-1,0,0,-1,0,0,0,0,-0.999999940395355,0,0,-0.999999940395355,0,0,-0.999999940395355,1,0,0,1,0,0,1,0,0,0,0.832050263881683,0.554700314998627,0,0.832050263881683,0.554700314998627,0,0.832050263881683,0.554700314998627,0,-1,0,0,-1,0,0,-1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,2.70930176071715E-8,-1,0,2.70930176071715E-8,-1,0,2.70930176071715E-8,-1,-1,0,0,-1,0,0,-1,0,0,0.999999940395355,0,0,0.999999940395355,0,0,0.999999940395355,0,0,-0.70710676908493,0.70710676908493,0,-0.70710676908493,0.70710676908493,0,-0.70710676908493,0.70710676908493,0,0.70710676908493,0.70710676908493,0,0.70710676908493,0.70710676908493,0,0.70710676908493,0.70710676908493,0,0,-2.70930176071715E-8,1,0,-2.70930176071715E-8,1,0,-2.70930176071715E-8,1,-1,0,0,0,0,-0.999999940395355,1,0,0,1,0,0,1,0,0,0,0.832050263881683,0.554700314998627,0,-1,0,0,1,0,0,1,0,2.88156449812504E-8,2.88156449812504E-8,-1,2.88156449812504E-8,2.88156449812504E-8,-1,2.88156449812504E-8,2.88156449812504E-8,-1,-2.88156449812504E-8,2.88156449812504E-8,-1,-2.88156449812504E-8,2.88156449812504E-8,-1,-2.88156449812504E-8,2.88156449812504E-8,-1,0,2.70930193835284E-8,-0.999999940395355,0,2.70930193835284E-8,-0.999999940395355,0,2.70930193835284E-8,-0.999999940395355,-1,0,0,1,0,0,1,0,0,1,0,0,-0.70710676908493,0.70710676908493,0,0.70710676908493,0.70710676908493,0,2.88156449812504E-8,-2.88156449812504E-8,1,2.88156449812504E-8,-2.88156449812504E-8,1,2.88156449812504E-8,-2.88156449812504E-8,1,-2.88156449812504E-8,-2.88156449812504E-8,1,-2.88156449812504E-8,-2.88156449812504E-8,1,-2.88156449812504E-8,-2.88156449812504E-8,1,0,-2.70930193835284E-8,0.999999940395355,0,-2.70930193835284E-8,0.999999940395355,0,-2.70930193835284E-8,0.999999940395355});
			return Normal_7_114_vector;
		}
		/** Large attribute array: TextureCoordinate point field, scene-graph level=8, element #115, 144 total numbers made up of 72 2-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 MFVec2f getTextureCoordinate_8_115_point()
		{
			MFVec2f TextureCoordinate_8_115_point = new MFVec2f(new double[] {0.971722424030304,0.881944417953491,0.997429311275482,0.997685194015503,0.997429311275482,0.847222208976746,0.922879099845886,0.00231480598449707,0.94858580827713,0.997685194015503,0.948585987091064,0.00231480598449707,0.997429311275482,0.692129611968994,0.971722424030304,0.807870388031006,0.997429311275482,0.842592597007751,0.616966366767883,0.997685194015503,0.578406155109406,0.00231492519378662,0.578405976295471,0.997685194015503,0.750642418861389,0.997685194015503,0.917737543582916,0.00231492519378662,0.750642597675323,0.00231492519378662,0.745501101016998,0.00231492519378662,0.616966366767883,0.997685194015503,0.745500922203064,0.997685194015503,0.966580867767334,0.982463240623474,0.953727602958679,0.0434294939041138,0.953727424144745,0.982463240623474,0.573264598846436,0.0282074213027954,0.290488332509995,0.982463240623474,0.573264420032501,0.997685194015503,0.971722483634949,0.448092341423035,0.984575927257538,0.6875,0.984575927257538,0.448092341423035,0.984575927257538,0.443462729454041,0.971722424030304,0.204055070877075,0.971722424030304,0.443462729454041,0.966581046581268,0.0434294939041138,0.953727602958679,0.0282074809074402,0.953727602958679,0.0434294939041138,0.953727424144745,0.982463240623474,0.966580867767334,0.997685194015503,0.966580867767334,0.982463240623474,0.0025706912856549,0.997685194015503,0.285346955060959,0.0434293746948242,0.002570865675807,0.0282074213027954,0.971722424030304,0.997685194015503,0.922878921031952,0.997685194015503,0.997429311275482,0.692129611968994,0.971722424030304,0.692129611968994,0.971722424030304,0.807870388031006,0.616966545581818,0.00231492519378662,0.917737364768982,0.997685194015503,0.616966545581818,0.00231492519378662,0.966581046581268,0.0434294939041138,0.30739289522171,0.997685194015503,0.573264420032501,0.997685194015503,0.290488332509995,0.982463240623474,0.573264598846436,0.0282074213027954,0.307393074035645,0.0282074213027954,0.290488481521606,0.0434293746948242,0.290488481521606,0.0434293746948242,0.290488332509995,0.982463240623474,0.573264598846436,0.0282074213027954,0.971722424030304,0.6875,0.984575927257538,0.443462729454041,0.984575927257538,0.204055070877075,0.971722424030304,0.204055070877075,0.966581046581268,0.0282074809074402,0.953727424144745,0.997685194015503,0.268442392349243,0.0282074213027954,0.002570865675807,0.0282074213027954,0.285346955060959,0.0434293746948242,0.0025706912856549,0.997685194015503,0.268442213535309,0.997685194015503,0.285346835851669,0.982463240623474,0.285346835851669,0.982463240623474,0.285346955060959,0.0434293746948242,0.0025706912856549,0.997685194015503});
			return TextureCoordinate_8_115_point;
		}

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

	/** 
	 * Provide a 
	 * &lt;a href="https://dzone.com/articles/java-copy-shallow-vs-deep-in-which-you-will-swim" target="_blank"&gt;shallow copy&lt;/a&gt;
	 * of the X3D model.
	 * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html"&gt;X3D&lt;/a&gt;
	 * @return AlphaBlendModeTest 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 &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#handleArguments-java.lang.String:A-"&gt;X3D.handleArguments(args)&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/Core/X3D.html#validationReport--"&gt;X3D.validationReport()&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html"&gt;CommandLine&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/CommandLine.html#USAGE"&gt;CommandLine.USAGE&lt;/a&gt;
     * @see &lt;a href="https://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/ConfigurationProperties.html"&gt;ConfigurationProperties&lt;/a&gt;
     */
    public static void main(String args[])
    {
        System.out.println("Build this X3D model, showing validation diagnostics...");
        X3D thisExampleX3dModel = new AlphaBlendModeTest().getX3dModel();
//      System.out.println("X3D model construction complete.");
	
        // next handle command line arguments
        boolean hasArguments = (args != null) &amp;&amp; (args.length &gt; 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: \"X3dForAdvancedModeling.GltfSampleModels.AlphaBlendModeTest\" 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("X3dForAdvancedModeling.GltfSampleModels.AlphaBlendModeTest self-validation test confirmation: ");
                if (!validationResults.equals("success"))
                    System.out.println();
                System.out.println(validationResults.trim());

                // experimental: test X3DJSAIL output files
                // GltfSampleModels/AlphaBlendModeTest_JavaExport.* file validation is checked when building X3D Example Archives
                String filenameX3D  = "GltfSampleModels/AlphaBlendModeTest_JavaExport.x3d"; 
                String filenameX3DV = "GltfSampleModels/AlphaBlendModeTest_JavaExport.x3dv"; 
                String filenameJSON = "GltfSampleModels/AlphaBlendModeTest_JavaExport.json";
                thisExampleX3dModel.toFileX3D        (filenameX3D);
                thisExampleX3dModel.toFileClassicVRML(filenameX3DV);
// TODO         thisExampleX3dModel.toFileJSON       (filenameJSON);
        }
    }
}
</pre></body></html>