X3D Model Documentation: SmokeTestProgramOutput.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2  <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 4.0//EN" "https://www.web3d.org/specifications/x3d-4.0.dtd">
  3  <!-- This model file was produced using X3DJSAIL https://www.web3d.org/specifications/java/X3DJSAIL.html -->
  4  <X3D class='x3dModel.classid='x3dModel.idprofile='Full' style='x3dModel.styleversion='4.0xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-4.0.xsd'>
  5       <!-- X3D model top-level comment -->
  6       <head>
  7            <!-- comment #1 -->
  8            <!-- comment #2 -->
  9            <!-- comment #3 -->
 10            <!-- comment #4 -->
 11            <component name='Navigationlevel='3'/>
 12            <component name='Shaderslevel='1'/>
 13            <component name='CADGeometrylevel='2'/>
 14            <component name='DISlevel='2'/>
 15            <component name='HAnimlevel='1'/>
 16            <component name='Groupinglevel='1'/>
 17            <component name='Layeringlevel='1'/>
 18            <unit name='AngleUnitConversioncategory='angleconversionFactor='1.0'/>
 19            <unit name='LengthUnitConversioncategory='lengthconversionFactor='1.0'/>
 20            <unit name='ForceFromPoundsToNewtonscategory='forceconversionFactor='4.4482'/>
 21            <meta name='titlecontent='SmokeTestProgramOutput.x3d'/>
 22            <meta name='infocontent='continued development and testing in progress'/>
 23            <meta name='descriptioncontent='Example SmokeTestProgram creates an X3D model using the X3D Java Scene Access Interface Library (X3DJSAIL)'/>
 24            <meta name='referencecontent='https://www.web3d.org/specifications/java/X3DJSAIL.html'/>
 25            <meta name='generatorcontent='SmokeTestProgramOutput.java'/>
 26            <meta name='createdcontent='6 September 2016'/>
 27            <meta name='modifiedcontent='4 August 2025'/>
 28            <meta name='generatorcontent='X3D Java Scene Access Interface Library (X3DJSAIL)'/>
 29            <meta name='generatorcontent='https://www.web3d.org/specifications/java/examples/SmokeTestProgram.java'/>
 30            <meta name='generatorcontent='Netbeans https://www.netbeans.org'/>
 31            <meta name='creatorcontent='Don Brutzman'/>
 32            <meta name='referencecontent='https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/examples/SmokeTestProgramOutput.x3d'/>
 33            <meta name='referencecontent='Console output, ClassicVRML encoding, VRML97 encoding and pretty-print documentation:'/>
 34            <meta name='referencecontent='SmokeTestProgramOutput.txt'/>
 35            <meta name='referencecontent='SmokeTestProgramOutput.x3dv'/>
 36            <meta name='referencecontent='SmokeTestProgramOutput.wrl'/>
 37            <meta name='referencecontent='SmokeTestProgramOutput.html'/>
 38            <meta name='referencecontent='https://savage.nps.edu/X3dValidator?url=https://www.web3d.org/specifications/java/examples/SmokeTestProgramOutput.x3d'/>
 39            <meta name='identifiercontent='https://www.web3d.org/specifications/java/examples/SmokeTestProgramOutput.x3d'/>
 40            <meta name='licensecontent='../license.html'/>
 41       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top Index for DEF nodes: ArtDeco02MaterialDEF, BackgroundGroup, BoxPathAnimator, BoxShape, ColorAnimator, ColorClock, colorTypeConversionScript, DeclarativeAppearanceExample, DeclarativeGroupExample, DefaultView, DummyScript, ExampleExtrusion, ExtrusionShape, FindableMetadataStringTest, GradualBackground, GreenMaterial, inlineScene, LineShape, LogoGeometryTransform, MaterialModulatorScript, MaterialNode, MyMaterialModulator, Node2, Node4, OrbitClock, Proto1, Proto3, ProxyShape, scene.addChildLayerSetTest, scene.addChildMetadata, siteAnchor, SpecialTestOrthoViewpoint, SpecialtyNodes, SpinClock, SpinInterpolator, TestAppearance1, TestAppearance2, TestAppearance3, TestFieldObjectsGroup, test-NMTOKEN_regex.0123456789, TestShader1, TestShader2, TestShader3, TestShader4, TestShader5, TestShape1, TestShape2, TestShape3, TextTransform, TopDownView, TransparentAppearance, WorldInfoDEFwith IMPORT AS node: WorldInfoDEF2with EXPORT AS node: WorldInfoDEF3

Index for ExternProtoDeclare definition: ArtDeco02

Index for ProtoDeclare definitions: ArtDeco01, MaterialModulator, NewWorldInfo, ShaderProto
-->
 42       <Scene>
 43            <MetadataSet name='topLevelSceneMetadata'/>
 44            <ViewpointGroup description='Available viewpointscontainerField='children'>
 45                 <Viewpoint DEF='DefaultViewdescription='Hello X3DJSAIL'/>
 46                 <Viewpoint DEF='TopDownViewdescription='top-down view from aboveorientation='1 0 0 -1.570796position='0 100 0'/>
 47            </ViewpointGroup>
 48            <NavigationInfo type='"EXAMINE" "FLY" "ANY"'/>
 49 
          <!-- WorldInfo WorldInfoDEF is a DEF node that has 2 USE nodes: USE_1, USE_2<!-- This node has an EXPORT connection that can exchange events with a parent X3D model. -->
          <WorldInfo DEF='WorldInfoDEFclass='worldInfoNode.classid='worldInfoNode.idstyle='worldInfoNode.styletitle='SmokeTestProgram produced by X3D Java SAI Library (X3DJSAIL)'/>
 50            <WorldInfo USE='WorldInfoDEF'/>
 51            <WorldInfo USE='WorldInfoDEF'/>
 52            <MetadataString DEF='scene.addChildMetadataname='testvalue='"Top-level root Metadata node beneath Scene needs to be one of '-children' in JSON encoding"'/>
 53            <LayerSet DEF='scene.addChildLayerSetTestcontainerField='children'/>
 54 
          <!-- ROUTE information for LogoGeometryTransform node:  [from BoxPathAnimator.value_changed to set_translation] -->
          <Transform DEF='LogoGeometryTransformtranslation='0 1.5 0'>
 55 
               <!-- Anchor siteAnchor is a DEF node that has 1 USE node: USE_1 -->
               <Anchor DEF='siteAnchordescription='select for X3D Java SAI Library (X3DJSAIL) description'   url=' "../X3DJSAIL.html" "https://www.web3d.org/specifications/java/X3DJSAIL.html" '>
 56                      <Shape DEF='BoxShapeid='BoxShapeID'>
 57                           <Appearance>
 58 
                              <!-- Material GreenMaterial is a DEF node that has 1 USE node: USE_1 -->
                              <Material DEF='GreenMaterialdiffuseColor='0 1 1emissiveColor='0.8 0 0transparency='0.1'/>
 59                                <ImageTexture   url=' "images/X3dJavaSceneAccessInterfaceSaiLibrary.png" "https://www.web3d.org/specifications/java/examples/images/X3dJavaSceneAccessInterfaceSaiLibrary.png" '/>
 60                           </Appearance>
 61                           <Box DEF='test-NMTOKEN_regex.0123456789class='untextured'/>
 62                      </Shape>
 63                 </Anchor>
 64            </Transform>
 65            <Shape DEF='LineShape'>
 66                 <Appearance>
 67                      <Material emissiveColor='0.6 0.19607843 0.8'/>
 68                 </Appearance>
 69                 <IndexedLineSet coordIndex='0 1 2 3 4 0'>
 70                      <!-- Coordinate 3-tuple point count: 6 -->
 71                      <Coordinate point='0 1.5 0 2 1.5 0 2 1.5 -2 -2 1.5 -2 -2 1.5 0 0 1.5 0'/>
 72                 </IndexedLineSet>
 73            </Shape>
 74 
          <!-- ROUTE information for BoxPathAnimator node:  [from OrbitClock.fraction_changed to set_fraction] [from value_changed to LogoGeometryTransform.set_translation] -->
          <PositionInterpolator DEF='BoxPathAnimatorkey='0 0.125 0.375 0.625 0.875 1keyValue='0 1.5 0 2 1.5 0 2 1.5 -2 -2 1.5 -2 -2 1.5 0 0 1.5 0'/>
 75 
          <!-- ROUTE information for OrbitClock node:  [from fraction_changed to BoxPathAnimator.set_fraction] -->
          <TimeSensor DEF='OrbitClockcycleInterval='8.0loop='true'/>
 76            <ROUTE fromNode='OrbitClock' fromField='fraction_changed' toNode='BoxPathAnimator' toField='set_fraction'/>
 77            <ROUTE fromNode='BoxPathAnimator' fromField='value_changed' toNode='LogoGeometryTransform' toField='set_translation'/>
 78 
          <!-- ROUTE information for TextTransform node:  [from SpinInterpolator.value_changed to rotation] -->
          <Transform DEF='TextTransformtranslation='0 -1.5 0'>
 79                 <Shape>
 80                      <Appearance>
 81                           <Material USE='GreenMaterial'/>
 82                      </Appearance>
 83                      <Text string='"X3D Java" "SAI Library" "X3DJSAIL"'>
 84                           <!-- Comment example A, plain quotation marks: He said, "Immel did it!" -->
 85                           <!-- Comment example B, XML character entities: He said, &quot;Immel did it!&quot; -->
 86                           <MetadataSet name='EscapedQuotationMarksMetadataSetcontainerField='metadata'>
 87                                <MetadataString name='quotesTestCvalue='"MFString example C, backslash-escaped quotes: He said, \"Immel did it!\""'/>
 88                                <MetadataString name='extraChildTestvalue='"checks MetadataSet addValue() method"'/>
 89                           </MetadataSet>
 90                           <FontStyle justify='"MIDDLE" "MIDDLE"'/>
 91                      </Text>
 92                 </Shape>
 93                 <Collision>
 94                      <!-- test containerField='proxy' -->
 95                      <Shape DEF='ProxyShapecontainerField='proxy'>
 96                           <!-- alternative XML encoding: Text string='"One, Two, Comment" "" "He said, \&quot;Immel did it!\&quot;"' -->
 97                           <!-- alternative XML encoding: Text string='"One, Two, Comment" "" "He said, \&quot;Immel did it!\&quot;" ""' -->
 98                           <!-- alternative Java source: .setString(new String [] {"One, Two, Comment", "", "He said, \"Immel did it!\""}) -->
 99                           <!-- reference: https://www.web3d.org/x3d/content/examples/Basic/X3dSpecifications/StringArrayEncodingExamplesIndex.html -->
100                           <Text string='"One, Two, Text" "" "He said, \"Immel did it!\" \"\""'/>
101                      </Shape>
102                 </Collision>
103                 <!-- It's a beautiful world -->
104                 <!-- ... for you! -->
105                 <!-- https://en.wikipedia.org/wiki/Beautiful_World_(Devo_song) -->
106            </Transform>
107            <!-- repeatedly spin 180 degrees as a readable special effect -->
108 
          <!-- ROUTE information for SpinInterpolator node:  [from SpinClock.fraction_changed to set_fraction] [from value_changed to TextTransform.rotation] -->
          <OrientationInterpolator DEF='SpinInterpolatorkey='0 0.5 1keyValue='0 1 0 4.712389 0 1 0 0 0 1 0 1.5707964'/>
109 
          <!-- ROUTE information for SpinClock node:  [from fraction_changed to SpinInterpolator.set_fraction] -->
          <TimeSensor DEF='SpinClockcycleInterval='5.0loop='true'/>
110            <ROUTE fromNode='SpinClock' fromField='fraction_changed' toNode='SpinInterpolator' toField='set_fraction'/>
111            <ROUTE fromNode='SpinInterpolator' fromField='value_changed' toNode='TextTransform' toField='rotation'/>
112            <Group DEF='BackgroundGroup'>
113 
               <!-- ROUTE information for GradualBackground node:  [from colorTypeConversionScript.colorsOutput to skyColor] -->
               <Background DEF='GradualBackground'/>
114 
               <!-- ROUTE information for colorTypeConversionScript node:  [from ColorAnimator.value_changed to colorInput] [from colorsOutput to GradualBackground.skyColor] -->
               <Script DEF='colorTypeConversionScript'>
115                      <field name='colorInputtype='SFColoraccessType='inputOnly'/>
116                      <field name='colorsOutputtype='MFColoraccessType='outputOnly'/>
  <![CDATA[

ecmascript:

function colorInput (eventValue) // Example source code
{
   colorsOutput = new MFColor(eventValue); // assigning value sends output event
// Browser.print('colorInput=' + eventValue + ',
//                colorsOutput=' + colorsOutput + '
');
// TODO check line wrapping when exporting/converting
}


      
]]>
118                 </Script>
119 
               <!-- ROUTE information for ColorAnimator node:  [from ColorClock.fraction_changed to set_fraction] [from value_changed to colorTypeConversionScript.colorInput] -->
               <ColorInterpolator DEF='ColorAnimatorkey='0 0.5 1keyValue='0.9411765 1 1 0.29411766 0 0.50980395 0.9411765 1 1'>
120                      <!-- AZURE to INDIGO and back again -->
121                 </ColorInterpolator>
122 
               <!-- ROUTE information for ColorClock node:  [from fraction_changed to ColorAnimator.set_fraction] -->
               <TimeSensor DEF='ColorClockcycleInterval='60.0loop='true'/>
123                 <ROUTE fromNode='colorTypeConversionScript' fromField='colorsOutput' toNode='GradualBackground' toField='skyColor'/>
124                 <ROUTE fromNode='ColorAnimator' fromField='value_changed' toNode='colorTypeConversionScript' toField='colorInput'/>
125                 <ROUTE fromNode='ColorClock' fromField='fraction_changed' toNode='ColorAnimator' toField='set_fraction'/>
126            </Group>
127            <ProtoDeclare name='ArtDeco01appinfo='tooltip: ArtDeco01Material prototype is a Material node'>
128                 <ProtoInterface>
129                      <field name='descriptiontype='SFStringvalue='ArtDeco01Material prototype is a Material nodeaccessType='inputOutput'
                     appinfo='tooltip for descriptionField'/>
130                      <field name='enabledtype='SFBoolvalue='trueaccessType='inputOutput'/>
131                 </ProtoInterface>
132                 <ProtoBody>
133                      <!-- Initial node of ProtoBody determines prototype node type -->
134                      <Material ambientIntensity='0.25diffuseColor='0.282435 0.085159 0.134462shininess='0.127273specularColor='0.276305 0.11431 0.139857'/>
135                      <!-- [SmokeTestProgram diagnostic] should be connected to scene graph: artDeco01ProtoDeclare.getNodeType()="Material" -->
136                      <!-- presence of follow-on TouchSensor shows that additional nodes are allowed in ProtoBody after initial node, regardless of node types -->
137                      <TouchSensor description='within ProtoBody'>
138                           <IS>
139                                <connect nodeField='descriptionprotoField='description'/>
140                                <connect nodeField='enabledprotoField='enabled'/>
141                           </IS>
142                      </TouchSensor>
143                 </ProtoBody>
144            </ProtoDeclare>
145            <ExternProtoDeclare name='ArtDeco02appinfo='this is a different Material node'   url=' "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/ArtDecoPrototypesExcerpt.x3d#ArtDeco02" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/ArtDecoPrototypesExcerpt.x3dv#ArtDeco02" '>
146                 <!-- [SmokeTestProgram diagnostic] artDeco02ExternProtoDeclare.getNodeType()="ERROR_UNKNOWN_EXTERNPROTODECLARE_NODE_TYPE: ExternProtoDeclare name='ArtDeco02' type cannot be remotely accessed at run time. TODO X3DJSAIL needs to add further capability that retrieves the ExternProtoDeclare file." -->
147                 <field name='descriptiontype='SFStringaccessType='inputOutput'
                appinfo='tooltip for descriptionField'/>
148            </ExternProtoDeclare>
149            <!-- Tested ArtDeco01ProtoInstance, ArtDeco02ProtoInstance for improper node type when ProtoInstance is added in wrong place -->
150            <Shape DEF='TestShape1'>
151                 <Appearance DEF='TestAppearance1'>
152                      <!-- ArtDeco01Material prototype goes here... -->
153                      <ProtoInstance name='ArtDeco01containerField='material'>
154                           <!-- [SmokeTestProgram diagnostic] ArtDeco01ProtoInstance.getNodeType()="Material" -->
155                           <fieldValue name='descriptionvalue='ArtDeco01Material can substitute for a Material node'/>
156                      </ProtoInstance>
157                 </Appearance>
158                 <Sphere radius='0.001'/>
159            </Shape>
160            <Shape DEF='TestShape2'>
161                 <Appearance DEF='TestAppearance2'>
162                      <!-- ArtDeco02Material ProtoInstance goes here... -->
163 
                    <!-- ProtoInstance ArtDeco02MaterialDEF is a DEF node that has 1 USE node: USE_1 -->
                    <ProtoInstance name='ArtDeco02DEF='ArtDeco02MaterialDEFcontainerField='material'>
164                           <!-- [SmokeTestProgram diagnostic] ArtDeco02ProtoInstance.getNodeType()="ERROR_UNKNOWN_EXTERNPROTODECLARE_NODE_TYPE: ExternProtoDeclare name='ArtDeco02' type cannot be remotely accessed at run time. TODO X3DJSAIL needs to add further capability that retrieves the ExternProtoDeclare file." -->
165                      </ProtoInstance>
166                 </Appearance>
167                 <Cone bottomRadius='0.001height='0.001'/>
168            </Shape>
169            <Shape DEF='TestShape3'>
170                 <Appearance DEF='TestAppearance3'>
171                      <!-- ArtDeco02Material ProtoInstance USE goes here. Note that name field is REQUIRED as part of ProtoInstance USE. -->
172                      <ProtoInstance USE='ArtDeco02MaterialDEFcontainerField='material'/>
173                 </Appearance>
174                 <Cylinder height='0.001radius='0.001'/>
175            </Shape>
176 
          <!-- Inline inlineScene is a DEF node that has 1 USE node: USE_1<!-- This node has an IMPORT connection that can exchange events with a child X3D model. -->
          <Inline DEF='inlineScene'   url=' "newScene.x3d" "https://www.web3d.org/specifications/java/examples/newScene.x3d" '/>
177            <IMPORT inlineDEF='inlineSceneimportedDEF='WorldInfoDEFAS='WorldInfoDEF2'/>
178            <EXPORT localDEF='WorldInfoDEFAS='WorldInfoDEF3'/>
179            <ProtoDeclare name='MaterialModulatorappinfo='mimic a Material node and modulate fields as an animation effect' documentation='https://x3dgraphics.com/examples/X3dForWebAuthors/Chapter14Prototypes/MaterialModulatorIndex.html'>
180                 <ProtoInterface>
181                      <field name='enabledtype='SFBoolvalue='trueaccessType='inputOutput'/>
182                      <field name='diffuseColortype='SFColorvalue='0 0 0accessType='inputOutput'/>
183                      <field name='emissiveColortype='SFColorvalue='0.05 0.05 0.5accessType='inputOutput'/>
184                      <field name='specularColortype='SFColorvalue='0 0 0accessType='inputOutput'/>
185                      <field name='transparencytype='SFFloatvalue='0.0accessType='inputOutput'/>
186                      <field name='shininesstype='SFFloatvalue='0.0accessType='inputOutput'/>
187                      <field name='ambientIntensitytype='SFFloatvalue='0.0accessType='inputOutput'/>
188                 </ProtoInterface>
189                 <ProtoBody>
190                      <Material DEF='MaterialNode'>
191                           <IS>
192                                <connect nodeField='diffuseColorprotoField='diffuseColor'/>
193                                <connect nodeField='emissiveColorprotoField='emissiveColor'/>
194                                <connect nodeField='specularColorprotoField='specularColor'/>
195                                <connect nodeField='transparencyprotoField='transparency'/>
196                                <connect nodeField='shininessprotoField='shininess'/>
197                                <connect nodeField='ambientIntensityprotoField='ambientIntensity'/>
198                           </IS>
199                      </Material>
200                      <!-- Only first node (the node type for the prototype) is renderable, others are along for the ride -->
201                      <Script DEF='MaterialModulatorScript'>
202                           <field name='enabledtype='SFBoolaccessType='inputOutput'/>
203                           <field name='diffuseColortype='SFColoraccessType='inputOutput'/>
204                           <field name='newColortype='SFColoraccessType='outputOnly'/>
205                           <field name='clockTriggertype='SFTimeaccessType='inputOnly'/>
206                           <IS>
207                                <connect nodeField='enabledprotoField='enabled'/>
208                                <connect nodeField='diffuseColorprotoField='diffuseColor'/>
209                           </IS>
  <![CDATA[

ecmascript:
function initialize ()
{
    newColor = diffuseColor; // start with correct color
}
function set_enabled (newValue)
{
	enabled = newValue;
}
function clockTrigger (timeValue)
{
    if (!enabled) return;
    red   = newColor.r;
    green = newColor.g;
    blue  = newColor.b;

    // note different modulation rates for each color component, % is modulus operator
    newColor = new SFColor ((red + 0.02) % 1, (green + 0.03) % 1, (blue + 0.04) % 1);
	if (enabled)
	{
		Browser.print ('diffuseColor=(' + red + ',' + green + ',' + blue + ') newColor=' + newColor.toString() + '\n');
	}
}

        
]]>
211                      </Script>
212                 </ProtoBody>
213            </ProtoDeclare>
214            <!-- Test success: declarative statement createDeclarativeShapeTests() -->
215            <Group DEF='DeclarativeGroupExample'>
216                 <Shape>
217                      <MetadataString DEF='FindableMetadataStringTestname='findThisNameValuevalue='"test case"'/>
218                      <Appearance DEF='DeclarativeAppearanceExample'>
219                           <!-- DeclarativeMaterialExample gets overridden by subsequently added MaterialModulator ProtoInstance -->
220                           <ProtoInstance name='MaterialModulatorDEF='MyMaterialModulatorcontainerField='material'/>
221                      </Appearance>
222                      <Cone bottom='falsebottomRadius='0.05height='0.1'/>
223                 </Shape>
224                 <!-- Test success: declarativeGroup.addChild() singleton pipeline method -->
225            </Group>
226            <!-- Test success: declarative statement addChild() -->
227            <!-- Test success: x3dModel.findNodeByDEF(DeclarativeAppearanceExample) = <Appearance DEF='DeclarativeAppearanceExample'/> i.e. <Appearance DEF='DeclarativeAppearanceExample'> <!- - DeclarativeMaterialExample gets overridden by subsequently added MaterialModulator ProtoInstance - -> <ProtoInstance DEF='MyMaterialModulator' name='MaterialModulator' containerField='material'/> </Appearance> -->
228            <!-- Test success: x3dModel.findElementByNameValue(findThisNameValue) = <MetadataString DEF='FindableMetadataStringTest' name='findThisNameValue' value='"test case"'/> -->
229            <!-- Test success: x3dModel.findElementByNameValue("ArtDeco01", "ProtoDeclare") found -->
230            <!-- Test success: x3dModel.findElementByNameValue("MaterialModulator", "ProtoDeclare") found -->
231            <!-- Test success: x3dModel.findElementByNameValue("MaterialModulator", "ProtoInstance") found -->
232            <Group DEF='TestFieldObjectsGroup'>
233                 <!-- testFieldObjects() results -->
234                 <!-- SFBool default=false, true=true, false=false, negate()=true -->
235                 <!-- MFBool default=, initial=true false true, negate()=false true false -->
236                 <!-- SFFloat default=0.0, initial=1.0, setValue(2)=2.0, setValue(3.0f)=3.0, setValue(4.0)=4.0 -->
237                 <!-- 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 -->
238                 <!-- ... 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= -->
239                 <!-- 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, regex matches()=true -->
240                 <!-- regex test SFVec3f().matches("1 2 3")=true, regex test SFVec3f().matches("1 2 3 4")=false, regex test (SFRotation.matches("0 0 0 0")=true, failure detecting illegal (zero axis) rotation value -->
241            </Group>
242            <Sound location='0 1.6 0'>
243                 <!-- set sound-ellipsoid location height at 1.6m to match typical avatar height -->
244                 <AudioClip description='chimes'   url=' "chimes.wav" "https://www.web3d.org/x3d/content/examples/ConformanceNist/Sounds/AudioClip/chimes.wav" '>
245                      <!-- Scene example fragment from https://www.web3d.org/x3d/content/examples/ConformanceNist/Sounds/AudioClip/default.x3d -->
246                 </AudioClip>
247            </Sound>
248            <Sound location='0 1.6 0'>
249                 <!-- set sound-ellipsoid location height at 1.6m to match typical avatar height -->
250                 <MovieTexture containerField='sourcedescription='mpgsys.mpg from ConformanceNist suite'   url=' "mpgsys.mpg" "https://www.web3d.org/x3d/content/examples/ConformanceNist/Appearance/MovieTexture/mpgsys.mpg" '>
251                      <!-- Scene example fragment from https://www.web3d.org/x3d/content/examples/ConformanceNist/Appearance/MovieTexture/mpeg1-systems.x3d -->
252                      <!-- Expected containerField='source', allowed containerField values="texture" "source" "back" "bottom" "front" "left" "right" "top" "backTexture" "bottomTexture" "frontTexture" "leftTexture" "rightTexture" "topTexture" "children" -->
253                 </MovieTexture>
254            </Sound>
255            <!-- Test success: Anchor.isNode()=true, siteAnchor.isNode()=true -->
256            <!-- Test success: Anchor.isStatement()=false, siteAnchor.isStatement()=false -->
257            <!-- Test success: ROUTE.isNode()=false, orbitPositionROUTE.isNode()=false -->
258            <!-- Test success: ROUTE.isStatement()=true, orbitPositionROUTE.isStatement()=true -->
259            <!-- Test success: CommentsBlock.isNode()=false, testComments.isNode()=false -->
260            <!-- Test failure: CommentsBlock.isStatement()=true, testComments.isStatement()=true -->
261            <Shape DEF='ExtrusionShape'>
262                 <!-- ExampleExtrusion isCrossSectionClosed()=true, crossSection='[1.0, 1.0, 1.0, -1.0, -1.0, -1.0, -1.0, 1.0, 1.0, 1.0]' -->
263                 <!-- ExampleExtrusion isSpineClosed()=false, spine='[0.0, 0.0, 0.0, 0.0, 1.0, 0.0]' -->
264                 <Appearance DEF='TransparentAppearance'>
265                      <Material transparency='1.0'/>
266                 </Appearance>
267                 <Extrusion DEF='ExampleExtrusion'/>
268            </Shape>
269            <Group>
270                 <!-- Test MFNode children array as an ordered list consisting of comments, statements, ProtoInstance and nodes -->
271                 <ProtoDeclare name='NewWorldInfo'>
272                      <ProtoInterface>
273                           <field name='descriptiontype='SFStringaccessType='initializeOnly'/>
274                      </ProtoInterface>
275                      <ProtoBody>
276                           <WorldInfo/>
277                      </ProtoBody>
278                 </ProtoDeclare>
279                 <ProtoInstance name='NewWorldInfoDEF='Proto1'>
280                      <fieldValue name='descriptionvalue='testing 1 2 3'/>
281                 </ProtoInstance>
282                 <Group DEF='Node2'>
283                      <!-- intentionally empty -->
284                 </Group>
285                 <ProtoInstance name='NewWorldInfoDEF='Proto3'/>
286                 <Transform DEF='Node4'>
287                      <!-- intentionally empty -->
288                 </Transform>
289                 <!-- Test satisfactorily creates MFNode children array as an ordered list with mixed content -->
290            </Group>
291            <ProtoDeclare name='ShaderProto'>
292                 <ProtoBody>
293                      <ProgramShader containerField='shaders'/>
294                 </ProtoBody>
295            </ProtoDeclare>
296            <Shape>
297                 <Appearance>
298                      <!-- Test MFNode shaders array as an ordered list consisting of comments, ProtoInstance and nodes -->
299                      <!-- Test satisfactorily creates MFNode shaders array as an ordered list with mixed content -->
300                      <ProgramShader DEF='TestShader1containerField='shaders'>
301                           <ShaderProgram DEF='TestShader2containerField='programs'>
302                           </ShaderProgram>
302                      </ProgramShader>
303                      <ProtoInstance name='ShaderProtoDEF='TestShader3containerField='shaders'/>
304                      <ComposedShader DEF='TestShader4containerField='shaders'>
305                           <ShaderPart DEF='TestShader5containerField='parts'>
306                           </ShaderPart>
306                      </ComposedShader>
307                 </Appearance>
308            </Shape>
309            <Transform DEF='SpecialtyNodes'>
310                 <CADLayer>
311                      <CADAssembly>
312                           <CADPart>
313                                <CADFace/>
314                           </CADPart>
315                      </CADAssembly>
316                 </CADLayer>
317                 <EspduTransform containerField='children'/>
318                 <ReceiverPdu receivedPower='0.0containerField='children'/>
319                 <SignalPdu containerField='children'/>
320                 <TransmitterPdu relativeAntennaLocation='0 0 0transmitFrequencyBandwidth='0.0containerField='children'/>
321                 <DISEntityManager containerField='children'>
322                      <DISEntityTypeMapping containerField='children'/>
323                 </DISEntityManager>
324            </Transform>
325            <EspduTransform containerField='children'>
326                 <WorldInfo/>
327            </EspduTransform>
328            <ReceiverPdu receivedPower='0.0containerField='children'/>
329            <SignalPdu containerField='children'/>
330            <TransmitterPdu relativeAntennaLocation='0 0 0transmitFrequencyBandwidth='0.0containerField='children'/>
331            <DISEntityManager containerField='children'>
332                 <DISEntityTypeMapping containerField='children'/>
333            </DISEntityManager>
334            <LoadSensor>
335                 <!-- Contained nodes typically must be USE references for nodes previously DEFined in the scene -->
336                 <!-- The following nodes are test cases for all X3DUrlObject nodes -->
337                 <Anchor USE='siteAnchor'/>
338                 <Inline USE='inlineScene'/>
339                 <DISEntityTypeMapping containerField='children'/>
340                 <GeoMetadata containerField='children'/>
341                 <AudioClip containerField='children'/>
342                 <ImageCubeMapTexture containerField='children'/>
343                 <ImageTexture3D containerField='children'/>
344                 <ImageTexture containerField='children'/>
345                 <MovieTexture containerField='children'/>
346                 <Script DEF='DummyScript'>
  <![CDATA[

ecmascript:
/* dummy test source code */

      
]]>
348                 </Script>
349                 <PackagedShader containerField='children'/>
350                 <ShaderPart containerField='children'>
351                 </ShaderPart>
351                 <ShaderProgram containerField='children'>
352                 </ShaderProgram>
352            </LoadSensor>
353            <OrthoViewpoint DEF='SpecialTestOrthoViewpointfieldOfView='1 3 2 4containerField='children'/>
354       </Scene>
355  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top Index for DEF nodes: ArtDeco02MaterialDEF, BackgroundGroup, BoxPathAnimator, BoxShape, ColorAnimator, ColorClock, colorTypeConversionScript, DeclarativeAppearanceExample, DeclarativeGroupExample, DefaultView, DummyScript, ExampleExtrusion, ExtrusionShape, FindableMetadataStringTest, GradualBackground, GreenMaterial, inlineScene, LineShape, LogoGeometryTransform, MaterialModulatorScript, MaterialNode, MyMaterialModulator, Node2, Node4, OrbitClock, Proto1, Proto3, ProxyShape, scene.addChildLayerSetTest, scene.addChildMetadata, siteAnchor, SpecialTestOrthoViewpoint, SpecialtyNodes, SpinClock, SpinInterpolator, TestAppearance1, TestAppearance2, TestAppearance3, TestFieldObjectsGroup, test-NMTOKEN_regex.0123456789, TestShader1, TestShader2, TestShader3, TestShader4, TestShader5, TestShape1, TestShape2, TestShape3, TextTransform, TopDownView, TransparentAppearance, WorldInfoDEFwith IMPORT AS node: WorldInfoDEF2with EXPORT AS node: WorldInfoDEF3

Index for ExternProtoDeclare definition: ArtDeco02

Index for ProtoDeclare definitions: ArtDeco01, MaterialModulator, NewWorldInfo, ShaderProto
-->
X3D Tooltips element index: Anchor, Appearance, AudioClip, Background, Box, CADAssembly, CADFace, CADLayer, CADPart, Collision, ColorInterpolator, component, ComposedShader, Cone, connect, Coordinate, Cylinder, DISEntityManager, DISEntityTypeMapping, EspduTransform, EXPORT, ExternProtoDeclare, Extrusion, field, fieldValue, FontStyle, GeoMetadata, Group, head, ImageCubeMapTexture, ImageTexture, ImageTexture3D, IMPORT, IndexedLineSet, Inline, IS, LayerSet, LoadSensor, Material, meta, MetadataSet, MetadataString, MovieTexture, NavigationInfo, OrientationInterpolator, OrthoViewpoint, PackagedShader, PositionInterpolator, ProgramShader, ProtoBody, ProtoDeclare, ProtoInstance, ProtoInterface, ReceiverPdu, ROUTE, Scene, Script, ShaderPart, ShaderProgram, Shape, SignalPdu, Sound, Sphere, Text, TimeSensor, TouchSensor, Transform, TransmitterPdu, unit, Viewpoint, ViewpointGroup, WorldInfo, X3D, plus documentation for accessType definitions, type definitions, XML data types, and field types

Event Graph ROUTE Table entries with 7 ROUTE connections total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.

line 137
TouchSensor
description='within ProtoBody' 
User-interaction hint for this node.(TouchSensor description is providing a tooltip)  

ColorClock
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
ColorAnimator
ColorInterpolator
set_fraction
SFFloat
then
 
 
 
ColorAnimator
ColorInterpolator
value_changed
SFColor

ROUTE
event to
(2)
colorTypeConversionScript
Script
colorInput
SFColor
then
 
 
 
colorTypeConversionScript
Script
colorsOutput
MFColor

ROUTE
event to
(3)
GradualBackground
Background
skyColor
MFColor

OrbitClock
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
BoxPathAnimator
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
BoxPathAnimator
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(2)
LogoGeometryTransform
Transform
set_translation
SFVec3f

SpinClock
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
SpinInterpolator
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
SpinInterpolator
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
TextTransform
Transform
rotation
SFRotation

MaterialModulatorScript
Script
No direct ROUTE connection found for events to/from this node.
This Script has no direct access to other nodes. 

line 153
ProtoInstance
ArtDeco01
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

ArtDeco02MaterialDEF
ProtoInstance
ArtDeco02
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

MyMaterialModulator
ProtoInstance
MaterialModulator
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

Proto1
ProtoInstance
NewWorldInfo
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

Proto3
ProtoInstance
NewWorldInfo
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

TestShader3
ProtoInstance
ShaderProto
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

inlineScene
Inline
This node can send or receive ROUTE events via DEF='inlineScene' or via <IMPORT AS='WorldInfoDEF2'/> 

line 177
IMPORT
<IMPORT inlineDEF='inlineScene' AS='WorldInfoDEF2'/> matches local node
<Inline DEF='inlineScene'/> which can send or receive events between different X3D models,
if this parent model has ROUTE statements to exchange events with the child Inline model. 

line 178
EXPORT
<EXPORT localDEF='WorldInfoDEF' AS='WorldInfoDEF3'/> matches local node
<WorldInfo DEF='WorldInfoDEF'/> which can send or receive events,
if a parent X3D model loads this scene via Inline/IMPORT
and then uses ROUTE statements to exchange events with it. 

siteAnchor
Anchor
description='select for X3D Java SAI Library (X3DJSAIL) description' 
User-interaction hint for this node. 

Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with X3D! 😀

-->

<!-- Color-coding legend: X3D terminology <X3dNode DEF='idNamefield='value'/> matches XML terminology <XmlElement DEF='idNameattribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
    <ProtoInstance name='ProtoName'> <fieldname='fieldName'/> </ProtoInstance> -->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->