<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Preformatted Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLPreformattedChar
        {mso-style-name:"HTML Preformatted Char";
        mso-style-priority:99;
        mso-style-link:"HTML Preformatted";
        font-family:"Courier New";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><o:p> </o:p></p><pre style='background:white'><i><span style='font-size:9.0pt;color:gray'># -*- coding: UTF-8 -*-<br></span></i><b><span style='font-size:9.0pt;color:navy'>from </span></b><span style='font-size:9.0pt;color:black'>jnius </span><b><span style='font-size:9.0pt;color:navy'>import </span></b><span style='font-size:9.0pt;color:black'>autoclass<br></span><b><span style='font-size:9.0pt;color:navy'>from </span></b><span style='font-size:9.0pt;color:black'>X3Dautoclass </span><b><span style='font-size:9.0pt;color:navy'>import </span></b><span style='font-size:9.0pt;color:black'>*<br>X3D0 =  X3DObject()<br>X3D0.setProfile(</span><b><span style='font-size:9.0pt;color:green'>"Immersive"</span></b><span style='font-size:9.0pt;color:black'>)<br>X3D0.setVersion(</span><b><span style='font-size:9.0pt;color:green'>"3.3"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1 = headObject()<br><br><br>head1.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""comment #1"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>head1.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""comment #2"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>head1.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""comment #3"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>head1.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""comment #4"""</span></b><span style='font-size:9.0pt;color:black'>))<br>component2 = componentObject()<br>component2.setName(</span><b><span style='font-size:9.0pt;color:green'>"Navigation"</span></b><span style='font-size:9.0pt;color:black'>)<br>component2.setLevel(</span><span style='font-size:9.0pt;color:blue'>3</span><span style='font-size:9.0pt;color:black'>)<br><br>head1.addComponent(component2)<br>component3 = componentObject()<br>component3.setName(</span><b><span style='font-size:9.0pt;color:green'>"Layering"</span></b><span style='font-size:9.0pt;color:black'>)<br>component3.setLevel(</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>)<br><br>head1.addComponent(component3)<br>unit4 = unitObject()<br>unit4.setName(</span><b><span style='font-size:9.0pt;color:green'>"AngleUnitConversion"</span></b><span style='font-size:9.0pt;color:black'>)<br>unit4.setCategory(</span><b><span style='font-size:9.0pt;color:green'>"angle"</span></b><span style='font-size:9.0pt;color:black'>)<br>unit4.setConversionFactor(</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>)<br><br>head1.addUnit(unit4)<br>unit5 = unitObject()<br>unit5.setName(</span><b><span style='font-size:9.0pt;color:green'>"LengthUnitConversion"</span></b><span style='font-size:9.0pt;color:black'>)<br>unit5.setCategory(</span><b><span style='font-size:9.0pt;color:green'>"length"</span></b><span style='font-size:9.0pt;color:black'>)<br>unit5.setConversionFactor(</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>)<br><br>head1.addUnit(unit5)<br>meta6 = metaObject()<br>meta6.setName(</span><b><span style='font-size:9.0pt;color:green'>"title"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta6.setContent(</span><b><span style='font-size:9.0pt;color:green'>"HelloWorldProgramOutput.x3d"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta6)<br>meta7 = metaObject()<br>meta7.setName(</span><b><span style='font-size:9.0pt;color:green'>"description"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta7.setContent(</span><b><span style='font-size:9.0pt;color:green'>"Example HelloWorldProgram creates an X3D model using the X3D Java Scene Access Interface (SAI) Library"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta7)<br>meta8 = metaObject()<br>meta8.setName(</span><b><span style='font-size:9.0pt;color:green'>"reference"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta8.setContent(</span><b><span style='font-size:9.0pt;color:green'>"http://www.web3d.org/specifications/java/X3DJSAIL.html"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta8)<br>meta9 = metaObject()<br>meta9.setName(</span><b><span style='font-size:9.0pt;color:green'>"generator"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta9.setContent(</span><b><span style='font-size:9.0pt;color:green'>"HelloWorldProgramOutput.java"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta9)<br>meta10 = metaObject()<br>meta10.setName(</span><b><span style='font-size:9.0pt;color:green'>"created"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta10.setContent(</span><b><span style='font-size:9.0pt;color:green'>"6 September 2016"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta10)<br>meta11 = metaObject()<br>meta11.setName(</span><b><span style='font-size:9.0pt;color:green'>"modified"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta11.setContent(</span><b><span style='font-size:9.0pt;color:green'>"18 December 2017"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta11)<br>meta12 = metaObject()<br>meta12.setName(</span><b><span style='font-size:9.0pt;color:green'>"generator"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta12.setContent(</span><b><span style='font-size:9.0pt;color:green'>"X3D Java Scene Access Interface Library (X3DJSAIL)"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta12)<br>meta13 = metaObject()<br>meta13.setName(</span><b><span style='font-size:9.0pt;color:green'>"generator"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta13.setContent(</span><b><span style='font-size:9.0pt;color:green'>"http://www.web3d.org/specifications/java/examples/HelloWorldProgram.java"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta13)<br>meta14 = metaObject()<br>meta14.setName(</span><b><span style='font-size:9.0pt;color:green'>"generator"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta14.setContent(</span><b><span style='font-size:9.0pt;color:green'>"Netbeans http://www.netbeans.org"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta14)<br>meta15 = metaObject()<br>meta15.setName(</span><b><span style='font-size:9.0pt;color:green'>"creator"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta15.setContent(</span><b><span style='font-size:9.0pt;color:green'>"Don Brutzman"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta15)<br>meta16 = metaObject()<br>meta16.setName(</span><b><span style='font-size:9.0pt;color:green'>"reference"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta16.setContent(</span><b><span style='font-size:9.0pt;color:green'>"https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/examples/HelloWorldProgramOutput.x3d"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta16)<br>meta17 = metaObject()<br>meta17.setName(</span><b><span style='font-size:9.0pt;color:green'>"reference"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta17.setContent(</span><b><span style='font-size:9.0pt;color:green'>"Console output, ClassicVRML encoding, VRML97 encoding and pretty-print documentation:"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta17)<br>meta18 = metaObject()<br>meta18.setName(</span><b><span style='font-size:9.0pt;color:green'>"reference"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta18.setContent(</span><b><span style='font-size:9.0pt;color:green'>"HelloWorldProgramOutput.txt"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta18)<br>meta19 = metaObject()<br>meta19.setName(</span><b><span style='font-size:9.0pt;color:green'>"reference"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta19.setContent(</span><b><span style='font-size:9.0pt;color:green'>"HelloWorldProgramOutput.x3dv"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta19)<br>meta20 = metaObject()<br>meta20.setName(</span><b><span style='font-size:9.0pt;color:green'>"reference"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta20.setContent(</span><b><span style='font-size:9.0pt;color:green'>"HelloWorldProgramOutput.wrl"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta20)<br>meta21 = metaObject()<br>meta21.setName(</span><b><span style='font-size:9.0pt;color:green'>"reference"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta21.setContent(</span><b><span style='font-size:9.0pt;color:green'>"HelloWorldProgramOutput.html"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta21)<br>meta22 = metaObject()<br>meta22.setName(</span><b><span style='font-size:9.0pt;color:green'>"X3dValidator"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta22.setContent(</span><b><span style='font-size:9.0pt;color:green'>"https://savage.nps.edu/X3dValidator?url=http://www.web3d.org/specifications/java/examples/HelloWorldProgramOutput.x3d"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta22)<br>meta23 = metaObject()<br>meta23.setName(</span><b><span style='font-size:9.0pt;color:green'>"identifier"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta23.setContent(</span><b><span style='font-size:9.0pt;color:green'>"http://www.web3d.org/specifications/java/examples/HelloWorldProgramOutput.x3d"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta23)<br>meta24 = metaObject()<br>meta24.setName(</span><b><span style='font-size:9.0pt;color:green'>"license"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta24.setContent(</span><b><span style='font-size:9.0pt;color:green'>"../license.html"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta24)<br>meta25 = metaObject()<br>meta25.setName(</span><b><span style='font-size:9.0pt;color:green'>"SpecialTest"</span></b><span style='font-size:9.0pt;color:black'>)<br>meta25.setContent(</span><b><span style='font-size:9.0pt;color:green'>"tested sat: name value cannot contain embedded space character"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>head1.addMeta(meta25)<br>X3D0.setHead(head1)<br>Scene26 = SceneObject()<br><br>ViewpointGroup27 = ViewpointGroupObject()<br>ViewpointGroup27.setDescription(</span><b><span style='font-size:9.0pt;color:green'>"Available viewpoints"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Viewpoint28 = ViewpointObject()<br>Viewpoint28.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"DefaultView"</span></b><span style='font-size:9.0pt;color:black'>)<br>Viewpoint28.setDescription(</span><b><span style='font-size:9.0pt;color:green'>"Hello X3DJSAIL"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ViewpointGroup27.addChild(Viewpoint28)<br>Viewpoint29 = ViewpointObject()<br>Viewpoint29.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"TopDownView"</span></b><span style='font-size:9.0pt;color:black'>)<br>Viewpoint29.setDescription(</span><b><span style='font-size:9.0pt;color:green'>"top-down view from above"</span></b><span style='font-size:9.0pt;color:black'>)<br>Viewpoint29.setOrientation([</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,-</span><span style='font-size:9.0pt;color:blue'>1.570796</span><span style='font-size:9.0pt;color:black'>])<br>Viewpoint29.setPosition([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>100</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>])<br><br>ViewpointGroup27.addChild(Viewpoint29)<br>Scene26.addChild(ViewpointGroup27)<br>WorldInfo30 = WorldInfoObject()<br>WorldInfo30.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"WorldInfoDEF"</span></b><span style='font-size:9.0pt;color:black'>)<br>WorldInfo30.setTitle(</span><b><span style='font-size:9.0pt;color:green'>"HelloWorldProgram produced by X3D Java SAI Library (X3DJSAIL)"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(WorldInfo30)<br>WorldInfo31 = WorldInfoObject()<br>WorldInfo31.setUSE(</span><b><span style='font-size:9.0pt;color:green'>"WorldInfoDEF"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(WorldInfo31)<br>WorldInfo32 = WorldInfoObject()<br>WorldInfo32.setUSE(</span><b><span style='font-size:9.0pt;color:green'>"WorldInfoDEF"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(WorldInfo32)<br>LayerSet33 = LayerSetObject()<br>LayerSet33.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"scene.addChildLayerSetObjectTest"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(LayerSet33)<br>Transform34 = TransformObject()<br>Transform34.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"LogoGeometryTransform"</span></b><span style='font-size:9.0pt;color:black'>)<br>Transform34.setTranslation([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>])<br><br>Anchor35 = AnchorObject()<br>Anchor35.setDescription(</span><b><span style='font-size:9.0pt;color:green'>"select for X3D Java SAI Library (X3DJSAIL) description"</span></b><span style='font-size:9.0pt;color:black'>)<br>Anchor35.setUrl([</span><b><span style='font-size:9.0pt;color:green'>"../X3DJSAIL.html"</span></b><span style='font-size:9.0pt;color:black'>,</span><b><span style='font-size:9.0pt;color:green'>"http://www.web3d.org/specifications/java/X3DJSAIL.html"</span></b><span style='font-size:9.0pt;color:black'>])<br><br>Shape36 = ShapeObject()<br>Shape36.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"BoxShape"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Appearance37 = AppearanceObject()<br><br>Material38 = MaterialObject()<br>Material38.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"GreenMaterial"</span></b><span style='font-size:9.0pt;color:black'>)<br>Material38.setDiffuseColor([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>])<br>Material38.setEmissiveColor([</span><span style='font-size:9.0pt;color:blue'>0.8</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>])<br>Material38.setTransparency(</span><span style='font-size:9.0pt;color:blue'>0.1</span><span style='font-size:9.0pt;color:black'>)<br><br>Appearance37.setMaterial(Material38)<br>ImageTexture39 = ImageTextureObject()<br>ImageTexture39.setUrl([</span><b><span style='font-size:9.0pt;color:green'>"images/X3dJavaSceneAccessInterfaceSaiLibrary.png"</span></b><span style='font-size:9.0pt;color:black'>,</span><b><span style='font-size:9.0pt;color:green'>"http://www.web3d.org/specifications/java/examples/images/X3dJavaSceneAccessInterfaceSaiLibrary.png"</span></b><span style='font-size:9.0pt;color:black'>])<br><br>Appearance37.setTexture(ImageTexture39)<br>Shape36.setAppearance(Appearance37)<br>Box40 = BoxObject()<br>Box40.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"test-NMTOKEN_regex.0123456789"</span></b><span style='font-size:9.0pt;color:black'>)<br>Box40.setCssClass(</span><b><span style='font-size:9.0pt;color:green'>"textured"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Shape36.setGeometry(Box40)<br>Anchor35.addChild(Shape36)<br>Transform34.addChild(Anchor35)<br>Scene26.addChild(Transform34)<br>Shape41 = ShapeObject()<br>Shape41.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"LineShape"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Appearance42 = AppearanceObject()<br><br>Material43 = MaterialObject()<br>Material43.setEmissiveColor([</span><span style='font-size:9.0pt;color:blue'>0.6</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.19607843</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.8</span><span style='font-size:9.0pt;color:black'>])<br><br>Appearance42.setMaterial(Material43)<br>Shape41.setAppearance(Appearance42)<br>IndexedLineSet44 = IndexedLineSetObject()<br>IndexedLineSet44.setCoordIndex([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>3</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>4</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>])<br><br>Coordinate45 = CoordinateObject()<br>Coordinate45.setPoint([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,-</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,-</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,-</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,-</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>])<br><br>IndexedLineSet44.setCoord(Coordinate45)<br>Shape41.setGeometry(IndexedLineSet44)<br>Scene26.addChild(Shape41)<br>PositionInterpolator46 = PositionInterpolatorObject()<br>PositionInterpolator46.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"BoxPathAnimator"</span></b><span style='font-size:9.0pt;color:black'>)<br>PositionInterpolator46.setKey([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.125</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.375</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.625</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.875</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>])<br>PositionInterpolator46.setKeyValue([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,-</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,-</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,-</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,-</span><span style='font-size:9.0pt;color:blue'>2</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>])<br><br>Scene26.addChild(PositionInterpolator46)<br>TimeSensor47 = TimeSensorObject()<br>TimeSensor47.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"OrbitClock"</span></b><span style='font-size:9.0pt;color:black'>)<br>TimeSensor47.setCycleInterval(</span><span style='font-size:9.0pt;color:blue'>8</span><span style='font-size:9.0pt;color:black'>)<br>TimeSensor47.setLoop(</span><span style='font-size:9.0pt;color:navy'>True</span><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(TimeSensor47)<br>ROUTE48 = ROUTEObject()<br>ROUTE48.setFromField(</span><b><span style='font-size:9.0pt;color:green'>"fraction_changed"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE48.setFromNode(</span><b><span style='font-size:9.0pt;color:green'>"OrbitClock"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE48.setToField(</span><b><span style='font-size:9.0pt;color:green'>"set_fraction"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE48.setToNode(</span><b><span style='font-size:9.0pt;color:green'>"BoxPathAnimator"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(ROUTE48)<br>ROUTE49 = ROUTEObject()<br>ROUTE49.setFromField(</span><b><span style='font-size:9.0pt;color:green'>"value_changed"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE49.setFromNode(</span><b><span style='font-size:9.0pt;color:green'>"BoxPathAnimator"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE49.setToField(</span><b><span style='font-size:9.0pt;color:green'>"set_translation"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE49.setToNode(</span><b><span style='font-size:9.0pt;color:green'>"LogoGeometryTransform"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(ROUTE49)<br>Transform50 = TransformObject()<br>Transform50.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"TextTransform"</span></b><span style='font-size:9.0pt;color:black'>)<br>Transform50.setTranslation([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,-</span><span style='font-size:9.0pt;color:blue'>1.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>])<br><br>Shape51 = ShapeObject()<br><br>Appearance52 = AppearanceObject()<br><br>Material53 = MaterialObject()<br>Material53.setUSE(</span><b><span style='font-size:9.0pt;color:green'>"GreenMaterial"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Appearance52.setMaterial(Material53)<br>Shape51.setAppearance(Appearance52)<br>Text54 = TextObject()<br>Text54.setString([</span><b><span style='font-size:9.0pt;color:green'>"X3D Java"</span></b><span style='font-size:9.0pt;color:black'>,</span><b><span style='font-size:9.0pt;color:green'>"SAI Library"</span></b><span style='font-size:9.0pt;color:black'>,</span><b><span style='font-size:9.0pt;color:green'>"X3DJSAIL"</span></b><span style='font-size:9.0pt;color:black'>])<br><br><br>Text54.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""escaped quotation marks example 3: He said, </span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>Immel did it!</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Text54.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""escaped quotation marks example 4: He said, &quot;Immel did it!&quot;"""</span></b><span style='font-size:9.0pt;color:black'>))<br>MetadataSet55 = MetadataSetObject()<br>MetadataSet55.setName(</span><b><span style='font-size:9.0pt;color:green'>"EscapedQuotationMarksMetadataSet"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>MetadataString56 = MetadataStringObject()<br>MetadataString56.setName(</span><b><span style='font-size:9.0pt;color:green'>"escapedQuotesTest1"</span></b><span style='font-size:9.0pt;color:black'>)<br>MetadataString56.setValue([</span><b><span style='font-size:9.0pt;color:green'>"escaped quotation marks example 1: He said, </span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>Immel did it!</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>])<br><br>MetadataSet55.addValue(MetadataString56)<br>MetadataString57 = MetadataStringObject()<br>MetadataString57.setName(</span><b><span style='font-size:9.0pt;color:green'>"escapedQuotesTest2"</span></b><span style='font-size:9.0pt;color:black'>)<br>MetadataString57.setValue([</span><b><span style='font-size:9.0pt;color:green'>"escaped quotation marks example 2: He said, &quot;Immel did it!&quot;"</span></b><span style='font-size:9.0pt;color:black'>])<br><br>MetadataSet55.addValue(MetadataString57)<br>Text54.setMetadata(MetadataSet55)<br>FontStyle58 = FontStyleObject()<br>FontStyle58.setJustify([</span><b><span style='font-size:9.0pt;color:green'>"MIDDLE"</span></b><span style='font-size:9.0pt;color:black'>,</span><b><span style='font-size:9.0pt;color:green'>"MIDDLE"</span></b><span style='font-size:9.0pt;color:black'>])<br><br>Text54.setFontStyle(FontStyle58)<br>Shape51.setGeometry(Text54)<br>Transform50.addChild(Shape51)<br>Collision59 = CollisionObject()<br><br><br>Collision59.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""test containerField='proxy'"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Shape60 = ShapeObject()<br>Shape60.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"ProxyShape"</span></b><span style='font-size:9.0pt;color:black'>)<br><br><br>Shape60.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""alternative XML encoding: Text string='</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>One, Two, Three</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"\" \"</span></b><b><span style='font-size:9.0pt;color:green'>He said, </span></b><b><span style='font-size:9.0pt;color:navy'>\\</span></b><b><span style='font-size:9.0pt;color:green'>&quot;Immel did it!</span></b><b><span style='font-size:9.0pt;color:navy'>\\</span></b><b><span style='font-size:9.0pt;color:green'>&quot;</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>'"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Shape60.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""alternative Java source: .setString(new String [] {</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>One, Two, Three</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>, </span></b><b><span style='font-size:9.0pt;color:navy'>\"\"</span></b><b><span style='font-size:9.0pt;color:green'>, </span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>He said, </span></b><b><span style='font-size:9.0pt;color:navy'>\\\"</span></b><b><span style='font-size:9.0pt;color:green'>Immel did it!</span></b><b><span style='font-size:9.0pt;color:navy'>\\\"\"</span></b><b><span style='font-size:9.0pt;color:green'>})"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Shape60.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""reference: http://www.web3d.org/x3d/content/examples/Basic/X3dSpecifications/StringArrayEncodingExamplesIndex.html"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Text61 = TextObject()<br>Text61.setString([</span><b><span style='font-size:9.0pt;color:green'>"One, Two, Three"</span></b><span style='font-size:9.0pt;color:black'>,</span><b><span style='font-size:9.0pt;color:green'>""</span></b><span style='font-size:9.0pt;color:black'>,</span><b><span style='font-size:9.0pt;color:green'>"He said, </span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>Immel did it!</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>])<br><br>Shape60.setGeometry(Text61)<br>Collision59.setProxy(Shape60)<br>Transform50.addChild(Collision59)<br><br>Transform50.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""It's a beautiful world"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Transform50.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""... for you!"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Transform50.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""https://en.wikipedia.org/wiki/Beautiful_World_(Devo_song)"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Scene26.addChild(Transform50)<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""repeatedly spin 180 degrees as a readable special effect"""</span></b><span style='font-size:9.0pt;color:black'>))<br>OrientationInterpolator62 = OrientationInterpolatorObject()<br>OrientationInterpolator62.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"SpinInterpolator"</span></b><span style='font-size:9.0pt;color:black'>)<br>OrientationInterpolator62.setKey([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>])<br>OrientationInterpolator62.setKeyValue([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>4.712389</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.5707964</span><span style='font-size:9.0pt;color:black'>])<br><br>Scene26.addChild(OrientationInterpolator62)<br>TimeSensor63 = TimeSensorObject()<br>TimeSensor63.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"SpinClock"</span></b><span style='font-size:9.0pt;color:black'>)<br>TimeSensor63.setCycleInterval(</span><span style='font-size:9.0pt;color:blue'>5</span><span style='font-size:9.0pt;color:black'>)<br>TimeSensor63.setLoop(</span><span style='font-size:9.0pt;color:navy'>True</span><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(TimeSensor63)<br>ROUTE64 = ROUTEObject()<br>ROUTE64.setFromField(</span><b><span style='font-size:9.0pt;color:green'>"fraction_changed"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE64.setFromNode(</span><b><span style='font-size:9.0pt;color:green'>"SpinClock"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE64.setToField(</span><b><span style='font-size:9.0pt;color:green'>"set_fraction"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE64.setToNode(</span><b><span style='font-size:9.0pt;color:green'>"SpinInterpolator"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(ROUTE64)<br>ROUTE65 = ROUTEObject()<br>ROUTE65.setFromField(</span><b><span style='font-size:9.0pt;color:green'>"value_changed"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE65.setFromNode(</span><b><span style='font-size:9.0pt;color:green'>"SpinInterpolator"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE65.setToField(</span><b><span style='font-size:9.0pt;color:green'>"rotation"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE65.setToNode(</span><b><span style='font-size:9.0pt;color:green'>"TextTransform"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(ROUTE65)<br>Group66 = GroupObject()<br>Group66.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"BackgroundGroup"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Background67 = BackgroundObject()<br>Background67.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"GradualBackground"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Group66.addChild(Background67)<br>Script68 = ScriptObject()<br>Script68.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"colorTypeConversionScript"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>field69 = fieldObject()<br>field69.setType(fieldObject.TYPE_SFCOLOR)<br>field69.setName(</span><b><span style='font-size:9.0pt;color:green'>"colorInput"</span></b><span style='font-size:9.0pt;color:black'>)<br>field69.setAccessType(fieldObject.ACCESSTYPE_INPUTONLY)<br><br>Script68.addField(field69)<br>field70 = fieldObject()<br>field70.setType(fieldObject.TYPE_MFCOLOR)<br>field70.setName(</span><b><span style='font-size:9.0pt;color:green'>"colorsOutput"</span></b><span style='font-size:9.0pt;color:black'>)<br>field70.setAccessType(fieldObject.ACCESSTYPE_OUTPUTONLY)<br><br>Script68.addField(field70)<br><br>Script68.setSourceCode(</span><b><span style='font-size:9.0pt;color:green'>"ecmascript:</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"function colorInput (eventValue) // Example source code</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"{</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"   colorsOutput = new MFColor(eventValue); // assigning value sends output event</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"// Browser.print('colorInput=' + eventValue + ', colorsOutput=' + colorsOutput + '</span></b><b><span style='font-size:9.0pt;color:navy'>\\</span></b><b><span style='font-size:9.0pt;color:green'>n');</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"}</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>""</span></b><span style='font-size:9.0pt;color:black'>)<br>Group66.addChild(Script68)<br>ColorInterpolator71 = ColorInterpolatorObject()<br>ColorInterpolator71.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"ColorAnimator"</span></b><span style='font-size:9.0pt;color:black'>)<br>ColorInterpolator71.setKey([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.5</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>])<br>ColorInterpolator71.setKeyValue([</span><span style='font-size:9.0pt;color:blue'>0.9411765</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.29411766</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.50980395</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.9411765</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>])<br><br><br>ColorInterpolator71.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""AZURE to INDIGO and back again"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Group66.addChild(ColorInterpolator71)<br>TimeSensor72 = TimeSensorObject()<br>TimeSensor72.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"ColorClock"</span></b><span style='font-size:9.0pt;color:black'>)<br>TimeSensor72.setCycleInterval(</span><span style='font-size:9.0pt;color:blue'>60</span><span style='font-size:9.0pt;color:black'>)<br>TimeSensor72.setLoop(</span><span style='font-size:9.0pt;color:navy'>True</span><span style='font-size:9.0pt;color:black'>)<br><br>Group66.addChild(TimeSensor72)<br>ROUTE73 = ROUTEObject()<br>ROUTE73.setFromField(</span><b><span style='font-size:9.0pt;color:green'>"colorsOutput"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE73.setFromNode(</span><b><span style='font-size:9.0pt;color:green'>"colorTypeConversionScript"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE73.setToField(</span><b><span style='font-size:9.0pt;color:green'>"skyColor"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE73.setToNode(</span><b><span style='font-size:9.0pt;color:green'>"GradualBackground"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Group66.addChild(ROUTE73)<br>ROUTE74 = ROUTEObject()<br>ROUTE74.setFromField(</span><b><span style='font-size:9.0pt;color:green'>"value_changed"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE74.setFromNode(</span><b><span style='font-size:9.0pt;color:green'>"ColorAnimator"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE74.setToField(</span><b><span style='font-size:9.0pt;color:green'>"colorInput"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE74.setToNode(</span><b><span style='font-size:9.0pt;color:green'>"colorTypeConversionScript"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Group66.addChild(ROUTE74)<br>ROUTE75 = ROUTEObject()<br>ROUTE75.setFromField(</span><b><span style='font-size:9.0pt;color:green'>"fraction_changed"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE75.setFromNode(</span><b><span style='font-size:9.0pt;color:green'>"ColorClock"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE75.setToField(</span><b><span style='font-size:9.0pt;color:green'>"set_fraction"</span></b><span style='font-size:9.0pt;color:black'>)<br>ROUTE75.setToNode(</span><b><span style='font-size:9.0pt;color:green'>"ColorAnimator"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Group66.addChild(ROUTE75)<br>Scene26.addChild(Group66)<br>ProtoDeclare76 = ProtoDeclareObject()<br>ProtoDeclare76.setName(</span><b><span style='font-size:9.0pt;color:green'>"ArtDeco01Material"</span></b><span style='font-size:9.0pt;color:black'>)<br>ProtoDeclare76.setAppinfo(</span><b><span style='font-size:9.0pt;color:green'>"tooltip: ArtDeco01Material prototype is a Material node"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface77 = ProtoInterfaceObject()<br><br>field78 = fieldObject()<br>field78.setType(fieldObject.TYPE_SFSTRING)<br>field78.setName(</span><b><span style='font-size:9.0pt;color:green'>"description"</span></b><span style='font-size:9.0pt;color:black'>)<br>field78.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br>field78.setAppinfo(</span><b><span style='font-size:9.0pt;color:green'>"tooltip for descriptionField"</span></b><span style='font-size:9.0pt;color:black'>)<br>field78.setValue(</span><b><span style='font-size:9.0pt;color:green'>"ArtDeco01Material prototype is a Material node"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface77.addField(field78)<br>field79 = fieldObject()<br>field79.setType(fieldObject.TYPE_SFBOOL)<br>field79.setName(</span><b><span style='font-size:9.0pt;color:green'>"enabled"</span></b><span style='font-size:9.0pt;color:black'>)<br>field79.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br>field79.setValue(</span><b><span style='font-size:9.0pt;color:green'>"true"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface77.addField(field79)<br>ProtoDeclare76.setProtoInterface(ProtoInterface77)<br>ProtoBody80 = ProtoBodyObject()<br><br><br>ProtoBody80.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Initial node of ProtoBody determines prototype node type"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Material81 = MaterialObject()<br>Material81.setAmbientIntensity(</span><span style='font-size:9.0pt;color:blue'>0.25</span><span style='font-size:9.0pt;color:black'>)<br>Material81.setDiffuseColor([</span><span style='font-size:9.0pt;color:blue'>0.282435</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.085159</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.134462</span><span style='font-size:9.0pt;color:black'>])<br>Material81.setShininess(</span><span style='font-size:9.0pt;color:blue'>0.127273</span><span style='font-size:9.0pt;color:black'>)<br>Material81.setSpecularColor([</span><span style='font-size:9.0pt;color:blue'>0.276305</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.11431</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0.139857</span><span style='font-size:9.0pt;color:black'>])<br><br>ProtoBody80.addChild(Material81)<br><br>ProtoBody80.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""[HelloWorldProgram diagnostic] should be connected to scene graph: ArtDeco01ProtoDeclare.getNodeType()=</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>Material</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>ProtoBody80.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""presence of follow-on TouchSensor shows that additional nodes are allowed in ProtoBody after initial node, regardless of node types"""</span></b><span style='font-size:9.0pt;color:black'>))<br>TouchSensor82 = TouchSensorObject()<br>TouchSensor82.setDescription(</span><b><span style='font-size:9.0pt;color:green'>"within ProtoBody"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS83 = ISObject()<br><br>connect84 = connectObject()<br>connect84.setNodeField(</span><b><span style='font-size:9.0pt;color:green'>"description"</span></b><span style='font-size:9.0pt;color:black'>)<br>connect84.setProtoField(</span><b><span style='font-size:9.0pt;color:green'>"description"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS83.addConnect(connect84)<br>connect85 = connectObject()<br>connect85.setNodeField(</span><b><span style='font-size:9.0pt;color:green'>"enabled"</span></b><span style='font-size:9.0pt;color:black'>)<br>connect85.setProtoField(</span><b><span style='font-size:9.0pt;color:green'>"enabled"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS83.addConnect(connect85)<br>TouchSensor82.setIS(IS83)<br>ProtoBody80.addChild(TouchSensor82)<br>ProtoDeclare76.setProtoBody(ProtoBody80)<br>Scene26.addChild(ProtoDeclare76)<br>ExternProtoDeclare86 = ExternProtoDeclareObject()<br>ExternProtoDeclare86.setName(</span><b><span style='font-size:9.0pt;color:green'>"ArtDeco02Material"</span></b><span style='font-size:9.0pt;color:black'>)<br>ExternProtoDeclare86.setAppinfo(</span><b><span style='font-size:9.0pt;color:green'>"this is a different Material node"</span></b><span style='font-size:9.0pt;color:black'>)<br>ExternProtoDeclare86.setUrl([</span><b><span style='font-size:9.0pt;color:green'>"http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter14Prototypes/ArtDecoPrototypesExcerpt.x3d#ArtDeco02Material"</span></b><span style='font-size:9.0pt;color:black'>,</span><b><span style='font-size:9.0pt;color:green'>"http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter14Prototypes/ArtDecoPrototypesExcerpt.x3dv#ArtDeco02Material"</span></b><span style='font-size:9.0pt;color:black'>])<br><br><br>ExternProtoDeclare86.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""[HelloWorldProgram diagnostic] ArtDeco02ExternProtoDeclare.getNodeType()=</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>ERROR_UNKNOWN_EXTERNPROTODECLARE_NODE_TYPE: ExternProtoDeclare name='ArtDeco02Material' type cannot be remotely accessed at run time, TODO X3DJSAIL needs to add further capability.</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>"""</span></b><span style='font-size:9.0pt;color:black'>))<br>field87 = fieldObject()<br>field87.setType(fieldObject.TYPE_SFSTRING)<br>field87.setName(</span><b><span style='font-size:9.0pt;color:green'>"description"</span></b><span style='font-size:9.0pt;color:black'>)<br>field87.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br>field87.setAppinfo(</span><b><span style='font-size:9.0pt;color:green'>"tooltip for descriptionField"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ExternProtoDeclare86.addField(field87)<br>Scene26.addChild(ExternProtoDeclare86)<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Tested ArtDeco01ProtoInstance, ArtDeco02ProtoInstance for improper node type when ProtoInstance is added in wrong place"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Shape88 = ShapeObject()<br>Shape88.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"TestShape1"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Appearance89 = AppearanceObject()<br>Appearance89.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"TestAppearance1"</span></b><span style='font-size:9.0pt;color:black'>)<br><br><br>Appearance89.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""ArtDeco01Material prototype goes here..."""</span></b><span style='font-size:9.0pt;color:black'>))<br>ProtoInstance90 = ProtoInstanceObject()<br>ProtoInstance90.setName(</span><b><span style='font-size:9.0pt;color:green'>"ArtDeco01Material"</span></b><span style='font-size:9.0pt;color:black'>)<br><br><br>ProtoInstance90.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""[HelloWorldProgram diagnostic] ArtDeco01ProtoInstance.getNodeType()=</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>Material</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>"""</span></b><span style='font-size:9.0pt;color:black'>))<br>fieldValue91 = fieldValueObject()<br>fieldValue91.setName(</span><b><span style='font-size:9.0pt;color:green'>"description"</span></b><span style='font-size:9.0pt;color:black'>)<br>fieldValue91.setValue(</span><b><span style='font-size:9.0pt;color:green'>"ArtDeco01Material can substitute for a Material node"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInstance90.addFieldValue(fieldValue91)<br>Appearance89.setMaterial(ProtoInstance90)<br>Shape88.setAppearance(Appearance89)<br>Sphere92 = SphereObject()<br>Sphere92.setRadius(</span><span style='font-size:9.0pt;color:blue'>0.001</span><span style='font-size:9.0pt;color:black'>)<br><br>Shape88.setGeometry(Sphere92)<br>Scene26.addChild(Shape88)<br>Shape93 = ShapeObject()<br>Shape93.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"TestShape2"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Appearance94 = AppearanceObject()<br>Appearance94.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"TestAppearance2"</span></b><span style='font-size:9.0pt;color:black'>)<br><br><br>Appearance94.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""ArtDeco02Material prototype goes here..."""</span></b><span style='font-size:9.0pt;color:black'>))<br>ProtoInstance95 = ProtoInstanceObject()<br>ProtoInstance95.setName(</span><b><span style='font-size:9.0pt;color:green'>"ArtDeco02Material"</span></b><span style='font-size:9.0pt;color:black'>)<br>ProtoInstance95.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"ArtDeco02MaterialDEF"</span></b><span style='font-size:9.0pt;color:black'>)<br><br><br>ProtoInstance95.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""[HelloWorldProgram diagnostic] ArtDeco02ProtoInstance.getNodeType()=</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>ERROR_UNKNOWN_EXTERNPROTODECLARE_NODE_TYPE: ExternProtoDeclare name='ArtDeco02Material' type cannot be remotely accessed at run time, TODO X3DJSAIL needs to add further capability.</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>"""</span></b><span style='font-size:9.0pt;color:black'>))<br>fieldValue96 = fieldValueObject()<br>fieldValue96.setName(</span><b><span style='font-size:9.0pt;color:green'>"description"</span></b><span style='font-size:9.0pt;color:black'>)<br>fieldValue96.setValue(</span><b><span style='font-size:9.0pt;color:green'>"ArtDeco02Material can substitute for another Material node"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInstance95.addFieldValue(fieldValue96)<br>Appearance94.setMaterial(ProtoInstance95)<br>Shape93.setAppearance(Appearance94)<br>Cone97 = ConeObject()<br>Cone97.setBottomRadius(</span><span style='font-size:9.0pt;color:blue'>0.001</span><span style='font-size:9.0pt;color:black'>)<br>Cone97.setHeight(</span><span style='font-size:9.0pt;color:blue'>0.001</span><span style='font-size:9.0pt;color:black'>)<br><br>Shape93.setGeometry(Cone97)<br>Scene26.addChild(Shape93)<br>Shape98 = ShapeObject()<br>Shape98.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"TestShape3"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Appearance99 = AppearanceObject()<br>Appearance99.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"TestAppearance3"</span></b><span style='font-size:9.0pt;color:black'>)<br><br><br>Appearance99.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""ArtDeco02Material ProtoInstance USE goes here..."""</span></b><span style='font-size:9.0pt;color:black'>))<br>ProtoInstance100 = ProtoInstanceObject()<br>ProtoInstance100.setUSE(</span><b><span style='font-size:9.0pt;color:green'>"ArtDeco02MaterialDEF"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Appearance99.setMaterial(ProtoInstance100)<br>Shape98.setAppearance(Appearance99)<br>Cylinder101 = CylinderObject()<br>Cylinder101.setHeight(</span><span style='font-size:9.0pt;color:blue'>0.001</span><span style='font-size:9.0pt;color:black'>)<br>Cylinder101.setRadius(</span><span style='font-size:9.0pt;color:blue'>0.001</span><span style='font-size:9.0pt;color:black'>)<br><br>Shape98.setGeometry(Cylinder101)<br>Scene26.addChild(Shape98)<br>Inline102 = InlineObject()<br>Inline102.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"inlineSceneDef"</span></b><span style='font-size:9.0pt;color:black'>)<br>Inline102.setUrl([</span><b><span style='font-size:9.0pt;color:green'>"someOtherScene.x3d"</span></b><span style='font-size:9.0pt;color:black'>])<br><br>Scene26.addChild(Inline102)<br>IMPORT103 = IMPORTObject()<br>IMPORT103.setAS(</span><b><span style='font-size:9.0pt;color:green'>"WorldInfoDEF2"</span></b><span style='font-size:9.0pt;color:black'>)<br>IMPORT103.setImportedDEF(</span><b><span style='font-size:9.0pt;color:green'>"WorldInfoDEF"</span></b><span style='font-size:9.0pt;color:black'>)<br>IMPORT103.setInlineDEF(</span><b><span style='font-size:9.0pt;color:green'>"inlineSceneDef"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(IMPORT103)<br>EXPORT104 = EXPORTObject()<br>EXPORT104.setAS(</span><b><span style='font-size:9.0pt;color:green'>"WorldInfoDEF3"</span></b><span style='font-size:9.0pt;color:black'>)<br>EXPORT104.setLocalDEF(</span><b><span style='font-size:9.0pt;color:green'>"WorldInfoDEF"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Scene26.addChild(EXPORT104)<br>ProtoDeclare105 = ProtoDeclareObject()<br>ProtoDeclare105.setName(</span><b><span style='font-size:9.0pt;color:green'>"MaterialModulator"</span></b><span style='font-size:9.0pt;color:black'>)<br>ProtoDeclare105.setAppinfo(</span><b><span style='font-size:9.0pt;color:green'>"mimic a Material node and modulate fields as an animation effect"</span></b><span style='font-size:9.0pt;color:black'>)<br>ProtoDeclare105.setDocumentation(</span><b><span style='font-size:9.0pt;color:green'>"http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter14Prototypes/MaterialModulatorIndex.html"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface106 = ProtoInterfaceObject()<br><br>field107 = fieldObject()<br>field107.setType(fieldObject.TYPE_SFBOOL)<br>field107.setName(</span><b><span style='font-size:9.0pt;color:green'>"enabled"</span></b><span style='font-size:9.0pt;color:black'>)<br>field107.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br>field107.setValue(</span><b><span style='font-size:9.0pt;color:green'>"true"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface106.addField(field107)<br>field108 = fieldObject()<br>field108.setType(fieldObject.TYPE_SFCOLOR)<br>field108.setName(</span><b><span style='font-size:9.0pt;color:green'>"diffuseColor"</span></b><span style='font-size:9.0pt;color:black'>)<br>field108.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br>field108.setValue(</span><b><span style='font-size:9.0pt;color:green'>"0 0 0"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface106.addField(field108)<br>field109 = fieldObject()<br>field109.setType(fieldObject.TYPE_SFCOLOR)<br>field109.setName(</span><b><span style='font-size:9.0pt;color:green'>"emissiveColor"</span></b><span style='font-size:9.0pt;color:black'>)<br>field109.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br>field109.setValue(</span><b><span style='font-size:9.0pt;color:green'>"0.05 0.05 0.5"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface106.addField(field109)<br>field110 = fieldObject()<br>field110.setType(fieldObject.TYPE_SFCOLOR)<br>field110.setName(</span><b><span style='font-size:9.0pt;color:green'>"specularColor"</span></b><span style='font-size:9.0pt;color:black'>)<br>field110.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br>field110.setValue(</span><b><span style='font-size:9.0pt;color:green'>"0 0 0"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface106.addField(field110)<br>field111 = fieldObject()<br>field111.setType(fieldObject.TYPE_SFFLOAT)<br>field111.setName(</span><b><span style='font-size:9.0pt;color:green'>"transparency"</span></b><span style='font-size:9.0pt;color:black'>)<br>field111.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br>field111.setValue(</span><b><span style='font-size:9.0pt;color:green'>"0"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface106.addField(field111)<br>field112 = fieldObject()<br>field112.setType(fieldObject.TYPE_SFFLOAT)<br>field112.setName(</span><b><span style='font-size:9.0pt;color:green'>"shininess"</span></b><span style='font-size:9.0pt;color:black'>)<br>field112.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br>field112.setValue(</span><b><span style='font-size:9.0pt;color:green'>"0"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface106.addField(field112)<br>field113 = fieldObject()<br>field113.setType(fieldObject.TYPE_SFFLOAT)<br>field113.setName(</span><b><span style='font-size:9.0pt;color:green'>"ambientIntensity"</span></b><span style='font-size:9.0pt;color:black'>)<br>field113.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br>field113.setValue(</span><b><span style='font-size:9.0pt;color:green'>"0"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>ProtoInterface106.addField(field113)<br>ProtoDeclare105.setProtoInterface(ProtoInterface106)<br>ProtoBody114 = ProtoBodyObject()<br><br>Material115 = MaterialObject()<br>Material115.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"MaterialNode"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS116 = ISObject()<br><br>connect117 = connectObject()<br>connect117.setNodeField(</span><b><span style='font-size:9.0pt;color:green'>"diffuseColor"</span></b><span style='font-size:9.0pt;color:black'>)<br>connect117.setProtoField(</span><b><span style='font-size:9.0pt;color:green'>"diffuseColor"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS116.addConnect(connect117)<br>connect118 = connectObject()<br>connect118.setNodeField(</span><b><span style='font-size:9.0pt;color:green'>"emissiveColor"</span></b><span style='font-size:9.0pt;color:black'>)<br>connect118.setProtoField(</span><b><span style='font-size:9.0pt;color:green'>"emissiveColor"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS116.addConnect(connect118)<br>connect119 = connectObject()<br>connect119.setNodeField(</span><b><span style='font-size:9.0pt;color:green'>"specularColor"</span></b><span style='font-size:9.0pt;color:black'>)<br>connect119.setProtoField(</span><b><span style='font-size:9.0pt;color:green'>"specularColor"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS116.addConnect(connect119)<br>connect120 = connectObject()<br>connect120.setNodeField(</span><b><span style='font-size:9.0pt;color:green'>"transparency"</span></b><span style='font-size:9.0pt;color:black'>)<br>connect120.setProtoField(</span><b><span style='font-size:9.0pt;color:green'>"transparency"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS116.addConnect(connect120)<br>connect121 = connectObject()<br>connect121.setNodeField(</span><b><span style='font-size:9.0pt;color:green'>"shininess"</span></b><span style='font-size:9.0pt;color:black'>)<br>connect121.setProtoField(</span><b><span style='font-size:9.0pt;color:green'>"shininess"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS116.addConnect(connect121)<br>connect122 = connectObject()<br>connect122.setNodeField(</span><b><span style='font-size:9.0pt;color:green'>"ambientIntensity"</span></b><span style='font-size:9.0pt;color:black'>)<br>connect122.setProtoField(</span><b><span style='font-size:9.0pt;color:green'>"ambientIntensity"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS116.addConnect(connect122)<br>Material115.setIS(IS116)<br>ProtoBody114.addChild(Material115)<br><br>ProtoBody114.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Only first node (the node type) is renderable, others are along for the ride"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Script123 = ScriptObject()<br>Script123.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"MaterialModulatorScript"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>field124 = fieldObject()<br>field124.setType(fieldObject.TYPE_SFBOOL)<br>field124.setName(</span><b><span style='font-size:9.0pt;color:green'>"enabled"</span></b><span style='font-size:9.0pt;color:black'>)<br>field124.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br><br>Script123.addField(field124)<br>field125 = fieldObject()<br>field125.setType(fieldObject.TYPE_SFCOLOR)<br>field125.setName(</span><b><span style='font-size:9.0pt;color:green'>"diffuseColor"</span></b><span style='font-size:9.0pt;color:black'>)<br>field125.setAccessType(fieldObject.ACCESSTYPE_INPUTOUTPUT)<br><br>Script123.addField(field125)<br>field126 = fieldObject()<br>field126.setType(fieldObject.TYPE_SFCOLOR)<br>field126.setName(</span><b><span style='font-size:9.0pt;color:green'>"newColor"</span></b><span style='font-size:9.0pt;color:black'>)<br>field126.setAccessType(fieldObject.ACCESSTYPE_OUTPUTONLY)<br><br>Script123.addField(field126)<br>field127 = fieldObject()<br>field127.setType(fieldObject.TYPE_SFTIME)<br>field127.setName(</span><b><span style='font-size:9.0pt;color:green'>"clockTrigger"</span></b><span style='font-size:9.0pt;color:black'>)<br>field127.setAccessType(fieldObject.ACCESSTYPE_INPUTONLY)<br><br>Script123.addField(field127)<br>IS128 = ISObject()<br><br>connect129 = connectObject()<br>connect129.setNodeField(</span><b><span style='font-size:9.0pt;color:green'>"enabled"</span></b><span style='font-size:9.0pt;color:black'>)<br>connect129.setProtoField(</span><b><span style='font-size:9.0pt;color:green'>"enabled"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS128.addConnect(connect129)<br>connect130 = connectObject()<br>connect130.setNodeField(</span><b><span style='font-size:9.0pt;color:green'>"diffuseColor"</span></b><span style='font-size:9.0pt;color:black'>)<br>connect130.setProtoField(</span><b><span style='font-size:9.0pt;color:green'>"diffuseColor"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>IS128.addConnect(connect130)<br>Script123.setIS(IS128)<br><br>Script123.setSourceCode(</span><b><span style='font-size:9.0pt;color:green'>"ecmascript:</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"function initialize ()</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"{</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"    newColor = diffuseColor; // start with correct color</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"}</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"function set_enabled (newValue)</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"{</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"  enabled = newValue;</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"}</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"function clockTrigger (timeValue)</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"{</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"    if (!enabled) return;</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"    red   = newColor.r;</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"    green = newColor.g;</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"    blue  = newColor.b;</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"    </span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"    // note different modulation rates for each color component, % is modulus operator</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"    newColor = new SFColor ((red + 0.02) % 1, (green + 0.03) % 1, (blue + 0.04) % 1);</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"  if (enabled)</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"  {</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"     Browser.print ('diffuseColor=(' + red + ',' + green + ',' + blue + ') newColor=' + newColor.toString() + '</span></b><b><span style='font-size:9.0pt;color:navy'>\\</span></b><b><span style='font-size:9.0pt;color:green'>n');</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"  }</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>"}</span></b><b><span style='font-size:9.0pt;color:navy'>\n</span></b><b><span style='font-size:9.0pt;color:green'>"</span></b><span style='font-size:9.0pt;color:black'>+<br></span><b><span style='font-size:9.0pt;color:green'>""</span></b><span style='font-size:9.0pt;color:black'>)<br>ProtoBody114.addChild(Script123)<br>ProtoDeclare105.setProtoBody(ProtoBody114)<br>Scene26.addChild(ProtoDeclare105)<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: declarative statement createDeclarativeShapeTests()"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Group131 = GroupObject()<br>Group131.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"DeclarativeGroupExample"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Shape132 = ShapeObject()<br><br>MetadataString133 = MetadataStringObject()<br>MetadataString133.setName(</span><b><span style='font-size:9.0pt;color:green'>"findThisNameValue"</span></b><span style='font-size:9.0pt;color:black'>)<br>MetadataString133.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"FindableMetadataStringTest"</span></b><span style='font-size:9.0pt;color:black'>)<br>MetadataString133.setValue([</span><b><span style='font-size:9.0pt;color:green'>"test case"</span></b><span style='font-size:9.0pt;color:black'>])<br><br>Shape132.setMetadata(MetadataString133)<br>Appearance134 = AppearanceObject()<br>Appearance134.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"DeclarativeAppearanceExample"</span></b><span style='font-size:9.0pt;color:black'>)<br><br><br>Appearance134.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""DeclarativeMaterialExample gets overridden by subsequently added MaterialModulator ProtoInstance"""</span></b><span style='font-size:9.0pt;color:black'>))<br>ProtoInstance135 = ProtoInstanceObject()<br>ProtoInstance135.setName(</span><b><span style='font-size:9.0pt;color:green'>"MaterialModulator"</span></b><span style='font-size:9.0pt;color:black'>)<br>ProtoInstance135.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"MyMaterialModulator"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Appearance134.setMaterial(ProtoInstance135)<br>Shape132.setAppearance(Appearance134)<br>Cone136 = ConeObject()<br>Cone136.setBottom(</span><span style='font-size:9.0pt;color:navy'>False</span><span style='font-size:9.0pt;color:black'>)<br>Cone136.setBottomRadius(</span><span style='font-size:9.0pt;color:blue'>0.05</span><span style='font-size:9.0pt;color:black'>)<br>Cone136.setHeight(</span><span style='font-size:9.0pt;color:blue'>0.1</span><span style='font-size:9.0pt;color:black'>)<br><br>Shape132.setGeometry(Cone136)<br>Group131.addChild(Shape132)<br><br>Group131.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: declarativeGroup.addChild() singleton pipeline method"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Scene26.addChild(Group131)<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: declarative statement addChild()"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: x3dModel.findNodeByDEF(DeclarativeAppearanceExample) = <Appearance DEF='DeclarativeAppearanceExample'/> i.e."""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""<Appearance DEF='DeclarativeAppearanceExample'>"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""<!- - DeclarativeMaterialExample gets overridden by subsequently added MaterialModulator ProtoInstance - ->"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""<ProtoInstance DEF='MyMaterialModulator' name='MaterialModulator' containerField='material'/>"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""</Appearance>"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: x3dModel.findElementByNameValue(findThisNameValue) = <MetadataString DEF='FindableMetadataStringTest' name='findThisNameValue' value='</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>test case</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>'/>"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: x3dModel.findElementByNameValue(</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>ArtDeco01Material</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>, </span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>ProtoDeclare</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>) found"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: x3dModel.findElementByNameValue(</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>MaterialModulator</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>, </span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>ProtoDeclare</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>) found"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: x3dModel.findElementByNameValue(</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>MaterialModulator</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>, </span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>ProtoInstance</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>) found"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Group137 = GroupObject()<br>Group137.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"TestFieldObjectsGroup"</span></b><span style='font-size:9.0pt;color:black'>)<br><br><br>Group137.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""testFieldObjects() results"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Group137.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""SFBool default=true, true=true, false=false, negate()=true"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Group137.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""MFBool default=, initial=true false true, negate()=false true false"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Group137.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""SFFloat default=0.0, initial=1.0, setValue(2)=2.0, setValue(3.0f)=3.0, setValue(4.0)=4.0"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Group137.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""MFFloat default=, initial=1 2 3, append(5)=1 2 3 5, inserts(3,4)(0,0)=0 1 2 3 4 5, append(6)=0 1 2 3 4 5 6, size()=7"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Group137.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""... get1Value[3]=3.0, remove[1]=0 2 3 4 5 6, set1Value(0,10)=10 2 3 4 5 6, multiply(2)=20 4 6 8 10 12, clear="""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Group137.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""SFVec3f default=0 0 0, initial=1 2 3, setValue=4 5 6, multiply(2)=8 10 12, normalize()=0.45584232 0.5698029 0.68376344"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Scene26.addChild(Group137)<br>Sound138 = SoundObject()<br>Sound138.setLocation([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.6</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>])<br><br><br>Sound138.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""set sound-ellipsoid location height at 1.6m to match typical avatar height"""</span></b><span style='font-size:9.0pt;color:black'>))<br>AudioClip139 = AudioClipObject()<br>AudioClip139.setDescription(</span><b><span style='font-size:9.0pt;color:green'>"chimes"</span></b><span style='font-size:9.0pt;color:black'>)<br>AudioClip139.setUrl([</span><b><span style='font-size:9.0pt;color:green'>"chimes.wav"</span></b><span style='font-size:9.0pt;color:black'>,</span><b><span style='font-size:9.0pt;color:green'>"http://www.web3d.org/x3d/content/examples/ConformanceNist/Sounds/AudioClip/chimes.wav"</span></b><span style='font-size:9.0pt;color:black'>])<br><br><br>AudioClip139.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Scene example fragment from http://www.web3d.org/x3d/content/examples/ConformanceNist/Sounds/AudioClip/default.x3d"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Sound138.setSource(AudioClip139)<br>Scene26.addChild(Sound138)<br>Sound140 = SoundObject()<br>Sound140.setLocation([</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>1.6</span><span style='font-size:9.0pt;color:black'>,</span><span style='font-size:9.0pt;color:blue'>0</span><span style='font-size:9.0pt;color:black'>])<br><br><br>Sound140.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""set sound-ellipsoid location height at 1.6m to match typical avatar height"""</span></b><span style='font-size:9.0pt;color:black'>))<br>MovieTexture141 = MovieTextureObject()<br>MovieTexture141.setDescription(</span><b><span style='font-size:9.0pt;color:green'>"mpgsys.mpg from ConformanceNist suite"</span></b><span style='font-size:9.0pt;color:black'>)<br>MovieTexture141.setUrl([</span><b><span style='font-size:9.0pt;color:green'>"mpgsys.mpg"</span></b><span style='font-size:9.0pt;color:black'>,</span><b><span style='font-size:9.0pt;color:green'>"http://www.web3d.org/x3d/content/examples/ConformanceNist/Appearance/MovieTexture/mpgsys.mpg"</span></b><span style='font-size:9.0pt;color:black'>])<br><br><br>MovieTexture141.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Scene example fragment from http://www.web3d.org/x3d/content/examples/ConformanceNist/Appearance/MovieTexture/mpeg1-systems.x3d"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>MovieTexture141.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Expected containerField='source', allowed containerField values=</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>texture</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>source</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>back</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>bottom</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>front</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>left</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>right</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>top</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>backTexture</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>bottomTexture</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>frontTexture</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>leftTexture</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>rightTexture</span></b><b><span style='font-size:9.0pt;color:navy'>\" \"</span></b><b><span style='font-size:9.0pt;color:green'>topTexture</span></b><b><span style='font-size:9.0pt;color:navy'>\"</span></b><b><span style='font-size:9.0pt;color:green'>"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Sound140.setSource(MovieTexture141)<br>Scene26.addChild(Sound140)<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: AnchorObject.isNode()=true, siteAnchor.isNode()=true"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: AnchorObject.isStatement()=false, siteAnchor.isStatement()=false"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: ROUTEObject.isNode()=false, orbitPositionROUTE.isNode()=false"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: ROUTEObject.isStatement()=true, orbitPositionROUTE.isStatement()=true"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: CommentsBlock.isNode()=false, testComments.isNode()=false"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Scene26.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""Test success: CommentsBlock.isStatement()=false, testComments.isStatement()=false"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Shape142 = ShapeObject()<br>Shape142.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"ExtrusionShape"</span></b><span style='font-size:9.0pt;color:black'>)<br><br><br>Shape142.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""ExampleExtrusion isCrossSectionClosed()=true, crossSection='[1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0]'"""</span></b><span style='font-size:9.0pt;color:black'>))<br><br>Shape142.addComments(CommentsBlock(</span><b><span style='font-size:9.0pt;color:green'>"""ExampleExtrusion isSpineClosed()=false, spine='[0.0, 0.0, 0.0, 0.0, 1.0, 0.0]'"""</span></b><span style='font-size:9.0pt;color:black'>))<br>Appearance143 = AppearanceObject()<br>Appearance143.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"TransparentAppearance"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Material144 = MaterialObject()<br>Material144.setTransparency(</span><span style='font-size:9.0pt;color:blue'>1</span><span style='font-size:9.0pt;color:black'>)<br><br>Appearance143.setMaterial(Material144)<br>Shape142.setAppearance(Appearance143)<br>Extrusion145 = ExtrusionObject()<br>Extrusion145.setDEF(</span><b><span style='font-size:9.0pt;color:green'>"ExampleExtrusion"</span></b><span style='font-size:9.0pt;color:black'>)<br><br>Shape142.setGeometry(Extrusion145)<br>Scene26.addChild(Shape142)<br>X3D0.setScene(Scene26)<br><br>X3D0.toFileX3D(</span><b><span style='font-size:9.0pt;color:green'>"../data/HelloWorldProgramOutput.new.x3d"</span></b><span style='font-size:9.0pt;color:black'>)<o:p></o:p></span></pre><p class=MsoNormal><o:p> </o:p></p></div></body></html>