" newBubble();\n"+ " } else if (Math.abs(translation.z) > 10) {\n"+ " newBubble();\n"+ " } else {\n"+ " velocity = new SFVec3f(\n"+ " velocity.x + Math.random() * 0.2 - 0.1,\n"+ " velocity.y + Math.random() * 0.2 - 0.1,\n"+ " velocity.z + Math.random() * 0.2 - 0.1\n"+ " );\n"+ " }\n"+ " }\n"+ "\n"+ " function initialize() {\n"+ " newBubble();\n"+ " }''')).addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString( "TourTime")).setCycleInterval( x3dpsail.SFTime(0.15)).setLoop( x3dpsail.SFBool(True)) ).addChild(x3dpsail.ROUTE().setFromNode( x3dpsail.SFString("TourTime")).setFromField( x3dpsail.SFString("cycleTime")).setToNode( x3dpsail.SFString("Bounce")).setToField( x3dpsail.SFString("set_fraction"))). addChild(x3dpsail.ROUTE().setFromNode( x3dpsail.SFString("Bounce")).setFromField( x3dpsail.SFString("translation_changed")).setToNode( x3dpsail.SFString("transform")).setToField( x3dpsail.SFString("set_translation"))))) X3D0.toFileX3D("./future/./SFVec3f_RoundTrip.x3d")
" translation.x = 0;\n"+ " initialize();\n"+ " }\n"+ " if (Math.abs(scale.y) > 20) {\n"+ " scale.y = scale.y/2;\n"+ " translation.y = 0;\n"+ " initialize();\n"+ " }\n"+ " if (Math.abs(scale.z) > 20) {\n"+ " scale.z = scale.z/2;\n"+ " translation.z = 0;\n"+ " initialize();\n"+ " }\n"+ "}''')).addChild(x3dpsail.TimeSensor().setDEF( x3dpsail.SFString("bubbleClock")). setCycleInterval(x3dpsail.SFTime(10)).setLoop( x3dpsail.SFBool(True))).addChild( x3dpsail.ROUTE().setFromNode( x3dpsail.SFString("bounce")).setFromField( x3dpsail.SFString("translation_changed")). setToNode(x3dpsail.SFString("transform")).setToField( x3dpsail.SFString("set_translation")) ).addChild(x3dpsail.ROUTE().setFromNode( x3dpsail.SFString("bounce")).setFromField( x3dpsail.SFString("scale_changed")).setToNode( x3dpsail.SFString("transform")).setToField( x3dpsail.SFString("set_scale")) ).addChild(x3dpsail.ROUTE().setFromNode( x3dpsail.SFString("bubbleClock") ).setFromField( x3dpsail.SFString("fraction_changed")
x3dpsail.SFString("inputOnly")).setType( x3dpsail.SFString("SFTime"))). addField(x3dpsail.field().setName( x3dpsail.SFString("keyValue")).setAccessType( x3dpsail.SFString("outputOnly")).setType( x3dpsail.SFString("MFVec3f"))).setSourceCode( '''ecmascript:\n"+ " function set_cycle(value) {\n"+ " old = translation;\n"+ " translation = new SFVec3f(Math.random()*100-50, Math.random()*100-50, Math.random()*100-50);\n"+ " keyValue = new MFVec3f([old, translation]);\n"+ " // Browser.println(translation);\n"+ " }''')). addChild(x3dpsail.TimeSensor().setDEF( x3dpsail.SFString("nodeClock")).setCycleInterval( x3dpsail.SFTime(3)).setLoop(x3dpsail.SFBool( True))).addChild(x3dpsail.ROUTE().setFromNode( x3dpsail.SFString("nodeClock")).setFromField( x3dpsail.SFString("cycleTime")).setToNode( x3dpsail.SFString("MoveBall")).setToField( x3dpsail.SFString("set_cycle"))). addChild(x3dpsail.ROUTE().setFromNode( x3dpsail.SFString("nodeClock")).setFromField( x3dpsail.SFString("fraction_changed")).setToNode( x3dpsail.SFString("NodePosition")).setToField( x3dpsail.SFString("set_fraction")) ).addChild(x3dpsail.ROUTE().setFromNode( x3dpsail.SFString("MoveBall")).setFromField( x3dpsail.SFString("keyValue")).setToNode( x3dpsail.SFString("NodePosition")).setToField( x3dpsail.SFString("keyValue"))).
" }\n"+ " if (c < 1) {\n"+ " c = 4;\n"+ " }\n"+ " if (c > 20) {\n"+ " c = 4;\n"+ " }\n"+ " if (d < 1) {\n"+ " d = 4;\n"+ " }\n"+ " if (d > 20) {\n"+ " d = 4;\n"+ " }\n"+ "}''') ) .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("TourTime")).setCycleInterval(x3dpsail.SFTime(5)).setLoop(x3dpsail.SFBool(True))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("TourTime")).setFromField(x3dpsail.SFString("fraction_changed")).setToNode(x3dpsail.SFString("Animate")).setToField(x3dpsail.SFString("set_fraction"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("a")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("a"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("b")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("b"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("c")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("c"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("d")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("d"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("pdelta")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("pdelta"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("tdelta")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("tdelta"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("a")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("a"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("b")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("b"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("c")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("c"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("d")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("d"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("pdelta")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("pdelta"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("tdelta")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("tdelta"))))) X3D0.toFileX3D("./future/./flowers7_RoundTrip.x3d")
.setAppearance(x3dpsail.Appearance() .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(1,0,0))))) .addChild(x3dpsail.PositionInterpolator().setDEF(x3dpsail.SFString("DECLpoint_G1_PI1")).setKey(x3dpsail.MFFloat([0,1])).setKeyValue(x3dpsail.MFVec3f([0,0,0,0,5,0]))) .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("DECLpoint_G1_MB1")) .addField(x3dpsail.field().setName(x3dpsail.SFString("translation")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0 0 0"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("old")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0 0 0"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("set_location")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFTime"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("keyValue")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("MFVec3f")).setValue(x3dpsail.SFString("0 0 0 0 5 0"))).setSourceCode('''ecmascript:\n"+ " function set_location(value) {\n"+ " old = translation;\n"+ " translation = new SFVec3f(Math.random()*10-5, Math.random()*10-5, Math.random()*10-5);\n"+ " keyValue = new MFVec3f([old, translation]);\n"+ " // Browser.println(keyValue);\n"+ " }''') ) .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("DECLpoint_G1_CL1")).setCycleInterval(x3dpsail.SFTime(3)).setLoop(x3dpsail.SFBool(True))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G1_CL1")).setFromField(x3dpsail.SFString("cycleTime")).setToNode(x3dpsail.SFString("DECLpoint_G1_MB1")).setToField(x3dpsail.SFString("set_location"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G1_CL1")).setFromField(x3dpsail.SFString("fraction_changed")).setToNode(x3dpsail.SFString("DECLpoint_G1_PI1")).setToField(x3dpsail.SFString("set_fraction"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G1_MB1")).setFromField(x3dpsail.SFString("keyValue")).setToNode(x3dpsail.SFString("DECLpoint_G1_PI1")).setToField(x3dpsail.SFString("keyValue"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G1_PI1")).setFromField(x3dpsail.SFString("value_changed")).setToNode(x3dpsail.SFString("DECLpoint_G1_node")).setToField(x3dpsail.SFString("set_translation")))) .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("DECLpoint_G2_node")) .addChild(x3dpsail.Shape() .setGeometry(x3dpsail.Sphere().setRadius(x3dpsail.SFFloat(0.1))) .setAppearance(x3dpsail.Appearance() .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(1,0,0))))) .addChild(x3dpsail.PositionInterpolator().setDEF(x3dpsail.SFString("DECLpoint_G2_PI1")).setKey(x3dpsail.MFFloat([0,1])).setKeyValue(x3dpsail.MFVec3f([0,0,0,0,5,0]))) .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("DECLpoint_G2_MB1")) .addField(x3dpsail.field().setName(x3dpsail.SFString("translation")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0 0 0"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("old")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0 0 0"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("set_location")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFTime"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("keyValue")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("MFVec3f")).setValue(x3dpsail.SFString("0 0 0 0 5 0"))).setSourceCode('''ecmascript:\n"+
" translation.z = 0;\n"+ " initialize();\n"+ " }\n"+ " if (Math.abs(scale.x) > 20) {\n"+ " scale.x = scale.x/20;\n"+ " translation.x = 0;\n"+ " initialize();\n"+ " }\n"+ " if (Math.abs(scale.y) > 20) {\n"+ " scale.y = scale.y/20;\n"+ " translation.y = 0;\n"+ " initialize();\n"+ " }\n"+ " if (Math.abs(scale.z) > 20) {\n"+ " scale.z = scale.z/20;\n"+ " translation.z = 0;\n"+ " initialize();\n"+ " }\n"+ "}''') ) .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("bubbleClock")).setCycleInterval(x3dpsail.SFTime(10)).setLoop(x3dpsail.SFBool(True))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("bounce")).setFromField(x3dpsail.SFString("translation_changed")).setToNode(x3dpsail.SFString("transform")).setToField(x3dpsail.SFString("set_translation"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("bounce")).setFromField(x3dpsail.SFString("scale_changed")).setToNode(x3dpsail.SFString("transform")).setToField(x3dpsail.SFString("set_scale"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("bubbleClock")).setFromField(x3dpsail.SFString("fraction_changed")).setToNode(x3dpsail.SFString("bounce")).setToField(x3dpsail.SFString("set_fraction")))))) .addChild(x3dpsail.ProtoInstance().setName(x3dpsail.SFString("Bubble")).setDEF(x3dpsail.SFString("bubbleA"))) .addChild(x3dpsail.ProtoInstance().setName(x3dpsail.SFString("Bubble")).setDEF(x3dpsail.SFString("bubbleB"))) .addChild(x3dpsail.ProtoInstance().setName(x3dpsail.SFString("Bubble")).setDEF(x3dpsail.SFString("bubbleC"))) .addChild(x3dpsail.ProtoInstance().setName(x3dpsail.SFString("Bubble")).setDEF(x3dpsail.SFString("bubbleD"))))) X3D0.toFileX3D("./future/./cobweb_RoundTrip.x3d")
x3dpsail.SFString("0.2 0.6 0.6")))) ).setGeometry(x3dpsail.Text().setString( x3dpsail.MFString([ "X3D Header Prototype syntax examples", "(view console for EXTERNPROTO output)" ])).setFontStyle(x3dpsail.FontStyle().setJustify( x3dpsail.MFString(["MIDDLE", "MIDDLE" ])).setSize(x3dpsail.SFFloat(0.6)))))). addChild(x3dpsail.ProtoInstance().setName( x3dpsail.SFString("ViewPositionOrientation")).addFieldValue( x3dpsail.fieldValue().setName( x3dpsail.SFString("enabled")).setValue( x3dpsail.SFString("true")) )).addChild(x3dpsail.TimeSensor().setDEF( x3dpsail.SFString("Clock")).setCycleInterval( x3dpsail.SFTime(4)).setLoop( x3dpsail.SFBool(True))).addChild( x3dpsail.OrientationInterpolator().setDEF( x3dpsail.SFString("Spinner")).setKey( x3dpsail.MFFloat( [0, 0.5, 1])).setKeyValue( x3dpsail.MFRotation([ 0, 1, 0, 0, 0, 1, 0, 3.14159, 0, 1, 0, 6.28318 ]))). addChild(x3dpsail.ROUTE().setFromField( x3dpsail.SFString("fraction_changed")).setFromNode( x3dpsail.SFString("Clock")).setToField( x3dpsail.SFString("set_fraction")).setToNode( x3dpsail.SFString("Spinner"))).
"https://coderextreme.net/X3DJSONLD/shaders/x3dom.vs" ]) ).setType(x3dpsail.SFString( "VERTEX" ))).addParts(x3dpsail.ShaderPart().setUrl( x3dpsail .MFString([ "../shaders/pc_bubbles.fs", "https://coderextreme.net/X3DJSONLD/shaders/pc_bubbles.fs" ]) ).setType(x3dpsail.SFString( "FRAGMENT" ))))))).addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString( "TourTime" )).setCycleInterval(x3dpsail.SFTime( 5 )).setLoop(x3dpsail.SFBool( True ))).addChild(x3dpsail.PositionInterpolator().setDEF( x3dpsail. SFString("TourPosition") ).setKey(x3dpsail.MFFloat([ 0, 1 ])).setKeyValue(x3dpsail.MFVec3f([ 0, 0, 10, 0, 0, -10 ]))).addChild(x3dpsail.OrientationInterpolator().setDEF( x3dpsail.SFString("TourOrientation") ).setKey(x3dpsail.MFFloat([ 0, 1
.addChild(x3dpsail.Transform().setTranslation(x3dpsail.SFVec3f(0,-3,8)) #notice this next Viewpoint has been transformed with the text, so its position is relative. it is called view5 in the Script. .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("ClickToAnimateView")).setDescription(x3dpsail.SFString("Select animation sequence")).setPosition(x3dpsail.SFVec3f(0,0,7))) .addChild(x3dpsail.Shape() .setGeometry(x3dpsail.Text().setString(x3dpsail.MFString(["Click here to animate"])) .setFontStyle(x3dpsail.FontStyle().setJustify(x3dpsail.MFString(["MIDDLE","BEGIN"])))) .setAppearance(x3dpsail.Appearance() .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0.8,0.4,0))))) .addChild(x3dpsail.Shape() .setGeometry(x3dpsail.Box().setSize(x3dpsail.SFVec3f(7,1,0.02))) .setAppearance(x3dpsail.Appearance() .setMaterial(x3dpsail.Material().setTransparency(x3dpsail.SFFloat(1))))) .addChild(x3dpsail.TouchSensor().setDEF(x3dpsail.SFString("TextTouchSensor")).setDescription(x3dpsail.SFString("Click to begin animating viewpoint selections"))) .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("Clock")).setCycleInterval(x3dpsail.SFTime(10))) .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("touchTime")).setFromNode(x3dpsail.SFString("TextTouchSensor")).setToField(x3dpsail.SFString("set_startTime")).setToNode(x3dpsail.SFString("Clock"))) .addChild(x3dpsail.IntegerSequencer().setDEF(x3dpsail.SFString("TimingSequencer")).setKey(x3dpsail.MFFloat([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,1])).setKeyValue(x3dpsail.MFInt32([0,1,2,3,4,5,6,7,8,10]))) .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("fraction_changed")).setFromNode(x3dpsail.SFString("Clock")).setToField(x3dpsail.SFString("set_fraction")).setToNode(x3dpsail.SFString("TimingSequencer"))) .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("BindingSequencerEngine")) .addField(x3dpsail.field().setName(x3dpsail.SFString("set_timeEvent")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFInt32"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("bindView1")).setAccessType(x3dpsail.SFString("outputOnly")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("bindView2")).setAccessType(x3dpsail.SFString("outputOnly")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("bindView3")).setAccessType(x3dpsail.SFString("outputOnly")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("bindView4")).setAccessType(x3dpsail.SFString("outputOnly")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("bindView5")).setAccessType(x3dpsail.SFString("outputOnly")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("view1Bound")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("view2Bound")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("view3Bound")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("view4Bound")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("priorInputvalue")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFInt32")).setValue(x3dpsail.SFString("-1"))).setSourceCode('''ecmascript:\n"+
x3dpsail.MFString([ "../resources/images/TP.png", "https://coderextreme.net/X3DJSONLD/images/TP.png" ]))).addChild(x3dpsail.Transform().addChild( x3dpsail.Shape().setGeometry( x3dpsail.Sphere()).setAppearance( x3dpsail.Appearance().setMaterial( x3dpsail.Material().setDiffuseColor( x3dpsail.SFColor( 0.7, 0.7, 0.7)).setSpecularColor( x3dpsail.SFColor( 0.5, 0.5, 0.5)))))). addChild(x3dpsail.TimeSensor().setDEF( x3dpsail.SFString("TourTime")).setCycleInterval( x3dpsail.SFTime(5)).setLoop(x3dpsail.SFBool(True))).addChild( x3dpsail.GeoPositionInterpolator().setDEF( x3dpsail.SFString("TourPosition")).setKey( x3dpsail.MFFloat([0, 1])).setKeyValue( x3dpsail.MFVec3d( [0.0015708, 0, 4, 0, 0.0015708, 4]))). addChild(x3dpsail.Script().setDEF(x3dpsail.SFString( "RandomTourTime")).addField(x3dpsail.field().setName( x3dpsail.SFString("set_cycle")).setAccessType( x3dpsail.SFString("inputOnly")).setType( x3dpsail.SFString("SFTime"))).addField( x3dpsail.field().setName( x3dpsail.SFString("val")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("SFFloat")).setValue( x3dpsail.SFString("0"))).
x3dpsail.Material().setDiffuseColor( x3dpsail.SFColor( 1, 0.5, 0)).setSpecularColor( x3dpsail.SFColor( 1, 0.5, 0)).setTransparency( x3dpsail.SFFloat(0.75)) )).setGeometry(x3dpsail.IndexedFaceSet().setDEF( x3dpsail.SFString("Orbit2")).setCoord( x3dpsail.Coordinate().setDEF( x3dpsail.SFString( "OrbitCoordinates2")))))). addChild(x3dpsail.TimeSensor().setDEF( x3dpsail.SFString("Clock")).setCycleInterval( x3dpsail.SFTime(16)).setLoop( x3dpsail.SFBool(True))).addChild( x3dpsail.OrientationInterpolator().setDEF( x3dpsail.SFString("OrbitPath")).setKey( x3dpsail.MFFloat( [0, 0.5, 1])).setKeyValue( x3dpsail.MFRotation([ 1, 0, 0, 0, 1, 0, 0, 3.14, 1, 0, 0, 6.28 ]))). addChild(x3dpsail.Script().setDEF( x3dpsail.SFString("OrbitScript")).addField( x3dpsail.field().setName( x3dpsail.SFString( "set_fraction")).setAccessType( x3dpsail.SFString("inputOnly")).setType(