addMeta(x3dpsail.meta().setName( x3dpsail.SFString("generator")).setContent( x3dpsail.SFString( "Vim, X3D-Edit, https://savage.nps.edu/X3D-Edit"))) ).setScene(x3dpsail.Scene().addChild(x3dpsail.Transform().addChild( x3dpsail.Shape().setGeometry(x3dpsail.Text().setString( x3dpsail.MFString(["Node\"\"\""])).setFontStyle( x3dpsail.FontStyle())).setAppearance( x3dpsail.Appearance().setMaterial(x3dpsail.Material())) ).addChild(x3dpsail.Shape().setGeometry(x3dpsail.Text().setString( x3dpsail.MFString([ "Node2", "\\\\", "\\\\\\\\", "Node2" ])).setFontStyle(x3dpsail.FontStyle())).setAppearance( x3dpsail.Appearance().setMaterial(x3dpsail.Material()))).addChild( x3dpsail.Shape().setGeometry(x3dpsail.Text().setString( x3dpsail.MFString([ "Node3 \\\\\\\\ \\\\ ", "Node3\"\"\"" ])).setFontStyle(x3dpsail.FontStyle())).setAppearance( x3dpsail.Appearance().setMaterial(x3dpsail.Material())) ).addChild(x3dpsail.Script().addField(x3dpsail.field().setName( x3dpsail.SFString("frontUrls")).setType( x3dpsail.SFString("MFString")).setAccessType( x3dpsail.SFString("initializeOnly")).setValue( x3dpsail.SFString( "\"rnl_front.png\" \"uffizi_front.png\""))). setSourceCode('''ecmascript:\n"+ " var me = '\"1\" \"\"2\" \"\\n3\"';'''))))) X3D0.toFileX3D("./future/./text_RoundTrip.x3d")
).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent( x3dpsail.SFString("John Carlson") )).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent( x3dpsail.SFString("manual") )).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent( x3dpsail .SFString("https://coderextreme.net/X3DJSONLD/browser.x3d") )).addMeta(x3dpsail.meta().setName(x3dpsail.SFString( "description" )).setContent( x3dpsail .SFString( "a script test with embedded \\n between single quotes, a double backslash \\\\ a backslash \\ and a closing quote \"" )))).setScene(x3dpsail.Scene().addChild(x3dpsail.Script().setDEF( x3dpsail.SFString("Browser")).setSourceCode('''ecmascript:\n"+ " function initialize() {\n"+ " Browser.print('DUDES\\n'+'\"DUDETTES');\n"+ " }''')).addChild(x3dpsail.Script().setDEF( x3dpsail.SFString("Clouds")).setSourceCode('''ecmascript:\n"+ "\n"+ "\n"+ "function cumulustranslation() // These values designate the boundary location of the cloud\n"+ "{\n"+ "var xxx = ' '+' '+\n"+ "' Transform \\n'+\n"+ "' ' + ' \\n';\n"+ "\n"+ "}''')))) X3D0.toFileX3D("./future/./browser_RoundTrip.x3d")
connect39.setProtoField("diffuseColor") IS37.addConnect(connect39) Material36.setIS(IS37) Appearance35.setMaterial(Material36) Shape32.setAppearance(Appearance35) Transform31.addChildren(Shape32) ProtoBody30.addChildren(Transform31) #Subsequent nodes do not render, but still must be a valid X3D subgraph #This embedded Script provides the X3D author with additional visibility and control over prototype inputs and outputs Script40 = x3dpsail.Script() Script40.setDEF("ArchPrototypeScript") Script40.setUrl(["../node/ArchPrototypeScript.js"]) #INPUT PARAMETERS #General parameters #Parameters to create to create shapes related to arch: put true to apply #OUTPUT PARAMETERS field41 = x3dpsail.field() field41.setName("clearSpanWidth") field41.setAccessType("initializeOnly") field41.setAppinfo("user or default input for clearSpanWidth parameter") field41.setType("SFFloat") Script40.addField(field41) field42 = x3dpsail.field() field42.setName("riseHeight")
Material43.setAmbientIntensity(0.245763) Material43.setDiffuseColor([0.34773, 0.090909, 0.005289]) Material43.setShininess(0.07) Material43.setSpecularColor([0.336735, 0.051091, 0.051091]) Material43.setTransparency(0.8) Appearance42.setMaterial(Material43) Shape39.setAppearance(Appearance42) Transform38.addChildren(Shape39) Transform31.addChildren(Transform38) Scene28.addChildren(Transform31) Script44 = x3dpsail.Script() Script44.setDEF("TextScript") Script44.setUrl(["./ObliqueStrategiesScript.js"]) #initialize() method includes unit test to printAllStrategies() to console #TODO insert field definitions here (index string_changed previous next random) and then animate! field45 = x3dpsail.field() field45.setName("index") field45.setAccessType("initializeOnly") field45.setAppinfo("index for active strategy card, -1 means no selection") field45.setType("SFInt32") field45.setValue("0") Script44.addField(field45) field46 = x3dpsail.field() field46.setName("string_changed") field46.setAccessType("outputOnly")
Transform48.addChildren(Transform53) StringSensor58 = x3dpsail.StringSensor() StringSensor58.setDEF("CenterSensor") StringSensor58.setEnabled(False) Transform48.addChildren(StringSensor58) TouchSensor59 = x3dpsail.TouchSensor() TouchSensor59.setDescription("touch to activate") TouchSensor59.setDEF("CenterTouch") Transform48.addChildren(TouchSensor59) Group13.addChildren(Transform48) ProtoBody12.addChildren(Group13) Script60 = x3dpsail.Script() Script60.setDEF("RightSingleToMultiString") field61 = x3dpsail.field() field61.setName("set_rightstring") field61.setAccessType("inputOnly") field61.setType("SFString") Script60.addField(field61) field62 = x3dpsail.field() field62.setName("rightlines") field62.setAccessType("outputOnly") field62.setType("MFString") Script60.addField(field62) Script60.setSourceCode('''ecmascript:\n"+
Appearance10 = x3dpsail.Appearance() Material11 = x3dpsail.Material() Material11.setDiffuseColor([0.7, 0.7, 0.7]) Material11.setSpecularColor([0.5, 0.5, 0.5]) Appearance10.setMaterial(Material11) Shape9.setAppearance(Appearance10) Sphere12 = x3dpsail.Sphere() Shape9.setGeometry(Sphere12) Transform8.addChildren(Shape9) Scene6.addChildren(Transform8) Script13 = x3dpsail.Script() Script13.setDEF("Bounce") field14 = x3dpsail.field() field14.setName("set_translation") field14.setAccessType("inputOnly") field14.setType("SFVec3f") field14.setValue("0 0 0") Script13.addField(field14) field15 = x3dpsail.field() field15.setName("translation_changed") field15.setAccessType("outputOnly") field15.setType("SFVec3f") field15.setValue("0 0 0") Script13.addField(field15)
IS42.addConnect(connect43) ShaderPart41.setIS(IS42) ComposedShader26.addParts(ShaderPart41) Appearance17.addShaders(ComposedShader26) Shape16.setAppearance(Appearance17) Sphere44 = x3dpsail.Sphere() Shape16.setGeometry(Sphere44) Transform15.addChildren(Shape16) Script45 = x3dpsail.Script() Script45.setDEF("Bounce") field46 = x3dpsail.field() field46.setName("translation") field46.setAccessType("inputOutput") field46.setType("SFVec3f") field46.setValue("0 0 0") Script45.addField(field46) field47 = x3dpsail.field() field47.setName("velocity") field47.setAccessType("inputOutput") field47.setType("SFVec3f") field47.setValue("0 0 0") Script45.addField(field47)
]))).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("lastKey") ).setAccessType( x3dpsail.SFString("inputOutput") ).setType( x3dpsail.SFString("SFFloat") ).setValue( x3dpsail.SFString("0") )).addField(x3dpsail.field().setName( x3dpsail.SFString("orientations") ).setAccessType( x3dpsail.SFString("inputOutput") ).setType( x3dpsail.SFString("MFRotation") ).setValue( x3dpsail.SFString( "0 1 0 0 0 1 0 -1.57 0 1 0 3.14 0 1 0 1.57 0 1 0 0 1 0 0 -1.57 0 1 0 0 1 0 0 1.57 0 1 0 0" ) )).addField(x3dpsail.field().setName( x3dpsail.SFString("positions") ).setAccessType( x3dpsail.SFString("inputOutput") ).setType( x3dpsail.SFString("MFVec3f") ).setValue( x3dpsail.SFString( "0 0 10 -10 0 0 0 0 -10 10 0 0 0 0 10 0 10 0 0 0 10 0 -10 0 0 0 10" ))).addField(x3dpsail.field().setName( x3dpsail.SFString("position_changed") ).setAccessType(x3dpsail.SFString("outputOnly")).setType( x3dpsail.SFString("MFVec3f"))).addField(x3dpsail.field().setName( x3dpsail.SFString("set_orientation")).setAccessType( x3dpsail.SFString("inputOnly")).setType( x3dpsail.SFString("MFRotation"))). addField(x3dpsail.field().setName( x3dpsail.SFString("orientation_changed")).setAccessType( x3dpsail.SFString("outputOnly")).setType( x3dpsail.SFString("MFRotation"))).setSourceCode( '''ecmascript:\n"+ " function set_cycle(value) {\n"+ " var ov = lastKey;\n"+ " do {\n"+ " lastKey = Math.round(Math.random()*(positions.length-1));\n"+ " } while (lastKey === ov);\n"+ " var vc = lastKey;\n"+ "\n"+ " orientation_changed = new MFRotation();\n"+ " orientation_changed[0] = new SFRotation(orientations[ov].x, orientations[ov].y, orientations[ov].z, orientations[ov].w);\n"+ " orientation_changed[1] = new SFRotation(orientations[vc].x, orientations[vc].y, orientations[vc].z, orientations[vc].w);\n"+ " position_changed = new MFVec3f();\n"+ " position_changed[0] = new SFVec3f(positions[ov].x,positions[ov].y,positions[ov].z);\n"+ " position_changed[1] = new SFVec3f(positions[vc].x,positions[vc].y,positions[vc].z);\n"+ " // }\n"+ " }''')).
.addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("UrlSelector")).setDirectOutput(x3dpsail.SFBool(True)) .addField(x3dpsail.field().setName(x3dpsail.SFString("frontUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_front.png\" \"../resources/images/all_probes/building_cross/building_front.png\" \"../resources/images/all_probes/campus_cross/campus_front.png\" \"../resources/images/all_probes/galileo_cross/galileo_front.png\" \"../resources/images/all_probes/grace_cross/grace_front.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_front.png\" \"../resources/images/all_probes/rnl_cross/rnl_front.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_front.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_front.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("backUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_back.png\" \"../resources/images/all_probes/building_cross/building_back.png\" \"../resources/images/all_probes/campus_cross/campus_back.png\" \"../resources/images/all_probes/galileo_cross/galileo_back.png\" \"../resources/images/all_probes/grace_cross/grace_back.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_back.png\" \"../resources/images/all_probes/rnl_cross/rnl_back.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_back.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_back.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("leftUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_left.png\" \"../resources/images/all_probes/building_cross/building_left.png\" \"../resources/images/all_probes/campus_cross/campus_left.png\" \"../resources/images/all_probes/galileo_cross/galileo_left.png\" \"../resources/images/all_probes/grace_cross/grace_left.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_left.png\" \"../resources/images/all_probes/rnl_cross/rnl_left.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_left.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_left.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("rightUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_right.png\" \"../resources/images/all_probes/building_cross/building_right.png\" \"../resources/images/all_probes/campus_cross/campus_right.png\" \"../resources/images/all_probes/galileo_cross/galileo_right.png\" \"../resources/images/all_probes/grace_cross/grace_right.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_right.png\" \"../resources/images/all_probes/rnl_cross/rnl_right.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_right.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_right.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("topUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_top.png\" \"../resources/images/all_probes/building_cross/building_top.png\" \"../resources/images/all_probes/campus_cross/campus_top.png\" \"../resources/images/all_probes/galileo_cross/galileo_top.png\" \"../resources/images/all_probes/grace_cross/grace_top.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_top.png\" \"../resources/images/all_probes/rnl_cross/rnl_top.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_top.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_top.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("bottomUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_bottom.png\" \"../resources/images/all_probes/building_cross/building_bottom.png\" \"../resources/images/all_probes/campus_cross/campus_bottom.png\" \"../resources/images/all_probes/galileo_cross/galileo_bottom.png\" \"../resources/images/all_probes/grace_cross/grace_bottom.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_bottom.png\" \"../resources/images/all_probes/rnl_cross/rnl_bottom.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_bottom.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("front_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("back_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("left_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("right_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("top_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("bottom_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("set_fraction")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("old")).setType(x3dpsail.SFString("SFInt32")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("-1"))).setSourceCode('''ecmascript:\n"+ " function set_fraction( f, tm ) {\n"+ " var side = Math.floor(f*frontUrls.length);\n"+ " if (side > frontUrls.length-1) {\n"+ " side = 0;\n"+ " }\n"+ " if (side != old) {\n"+ " // Browser.print(f+\" \"+side);\n"+ " old = side;\n"+ " front_changed[0] = frontUrls[side];\n"+ " back_changed[0] = backUrls[side];\n"+ " left_changed[0] = leftUrls[side];\n"+ " right_changed[0] = rightUrls[side];\n"+ " top_changed[0] = topUrls[side];\n"+ " bottom_changed[0] = bottomUrls[side];\n"+ " }\n"+ " }''')
Appearance25.setMaterial(Material26) Shape22.setAppearance(Appearance25) Transform21.addChildren(Shape22) Transform14.addChildren(Transform21) Group13.addChildren(Transform14) PositionInterpolator27 = x3dpsail.PositionInterpolator() PositionInterpolator27.setDEF("NodePosition") PositionInterpolator27.setKey([0,1]) PositionInterpolator27.setKeyValue([0,0,0,0,5,0]) Group13.addChildren(PositionInterpolator27) Script28 = x3dpsail.Script() Script28.setDEF("MoveBall") field29 = x3dpsail.field() field29.setName("translation") field29.setAccessType("inputOutput") field29.setType("SFVec3f") field29.setValue("50 50 0") Script28.addField(field29) field30 = x3dpsail.field() field30.setName("old") field30.setAccessType("inputOutput") field30.setType("SFVec3f") field30.setValue("0 0 0") Script28.addField(field30)
IndexedFaceSet10.setCcw(False) IndexedFaceSet10.setConvex(False) IndexedFaceSet10.setCoordIndex([0,1,2,-1]) IndexedFaceSet10.setDEF("ifs") Coordinate11 = x3dpsail.Coordinate() Coordinate11.setDEF("crd") Coordinate11.setPoint([0,0,1,0,1,0,1,0,0]) IndexedFaceSet10.setCoord(Coordinate11) Shape7.setGeometry(IndexedFaceSet10) Transform6.addChildren(Shape7) Scene1.addChildren(Transform6) Script12 = x3dpsail.Script() Script12.setDEF("FlowerScript") field13 = x3dpsail.field() field13.setName("set_fraction") field13.setAccessType("inputOnly") field13.setType("SFFloat") Script12.addField(field13) field14 = x3dpsail.field() field14.setName("coordinates") field14.setAccessType("outputOnly") field14.setType("MFVec3f") Script12.addField(field14) field15 = x3dpsail.field() field15.setName("coordIndexes")
.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"+ "\n"+ "function initialize ()\n"+ "{\n"+ " bindView5 = true;\n"+ " Browser.print ('Timing script initialized and ready for activation');\n"+ "}\n"+ "function set_timeEvent (inputValue)\n"+ "{\n"+ " if (inputValue == priorInputvalue)\n"+ " {\n"+ " return; // ignore repeated inputs\n"+ " }\n"+ " // new value provided\n"+ " priorInputvalue = inputValue;\n"+ " // Browser.print ('\\ntimeEvent inputValue=' + inputValue);\n"+ "\n"+ " // mimics user execution of Figure 4.1 steps t_0 through t_8\n"+ " if (inputValue == 0)\n"+ " {\n"+ " Browser.print ('\\n===========\\n time t0');\n"+ " bindView1 = true;\n"+ " }\n"+ " else if (inputValue == 1)\n"+ " {\n"+ " Browser.print ('\\n===========\\n time t1');\n"+ " bindView2 = true;\n"+ " }\n"+ " else if (inputValue == 2)\n"+ " {\n"+ " Browser.print ('\\n===========\\n time t2');\n"+ " bindView3 = true;\n"+ " }\n"+ " else if (inputValue == 3)\n"+ " {\n"+ " Browser.print ('\\n===========\\n time t3');\n"+ " bindView3 = false;\n"+ " }\n"+ " else if (inputValue == 4)\n"+ " {\n"+ " Browser.print ('\\n===========\\n time t4');\n"+ " bindView1 = true;\n"+ " }\n"+ " else if (inputValue == 5)\n"+ " {\n"+ " Browser.print ('\\n===========\\n time t5');\n"+ " bindView2 = false;\n"+ " }\n"+ " else if (inputValue == 6)\n"+ " {\n"+ " Browser.print ('\\n===========\\n time t6');\n"+ " bindView1 = false;\n"+ " }\n"+ " else if (inputValue == 7)\n"+ " {\n"+ " Browser.print ('\\n===========\\n time t7');\n"+ " bindView4 = true;\n"+ "\n"+ " }\n"+ " else if (inputValue == 8)\n"+ " {\n"+ " Browser.print ('\\n===========\\n time t8');\n"+ " Browser.print (', no action, all done');\n"+ " Browser.print ('\\n\\n');\n"+ " }\n"+ "}\n"+ "\n"+ "function view1Bound (inputValue)\n"+ "{\n"+ " Browser.print (', view1Bound ' + (inputValue));\n"+ " if (priorInputvalue == -1) Browser.print ('\\n');\n"+ "}\n"+ "function view2Bound (inputValue)\n"+ "{\n"+ " Browser.print (', view2Bound ' + (inputValue));\n"+ "}\n"+ "function view3Bound (inputValue)\n"+ "{\n"+ " Browser.print (', view3Bound ' + (inputValue));\n"+ "}\n"+ "function view4Bound (inputValue)\n"+ "{\n"+ " Browser.print (', view4Bound ' + (inputValue));\n"+ "}\n"+ "function view5Bound (inputValue)\n"+ "{\n"+ " Browser.print (', view5Bound ' + (inputValue));\n"+ "}''')
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"))). addField(x3dpsail.field().setName( x3dpsail.SFString("positions")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("MFVec3d")).setValue( x3dpsail.SFString( "0.0015708 0 4 0 0.0015708 4")) ).addField(x3dpsail.field().setName( x3dpsail.SFString("position")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("MFVec3d")).setValue( x3dpsail.SFString( "0.0015708 0 4 0 0.0015708 4")) ).setSourceCode('''ecmascript:\n"+ "\n"+ " function set_cycle(value) {\n"+ " var cartesianMult = -150; // -150 if cartesian, 1 if geo\n"+ " var ov = val;\n"+ " // Browser.print('old '+ov);\n"+ " do {\n"+ " val = Math.floor(Math.random()*2);\n"+ " var vc = val;\n"+ " positions[vc] = new SFVec3d(Math.round(Math.random()*2)*0.0015708*cartesianMult, Math.round(Math.random()*2)*0.0015708*cartesianMult, 4);\n"+ " } while ( positions[ov][0] === positions[vc][0] && positions[ov][1] === positions[vc][1] && positions[ov][2] === positions[vc][2]);\n"+ " // Browser.println(positions[ov]);\n"+ " // Browser.println(positions[vc]);\n"+ " position = new MFVec3d();\n"+ " position[0] = new SFVec3d(positions[ov][0],positions[ov][1],positions[ov][2]);\n"+ " position[1] = new SFVec3d(positions[vc][0],positions[vc][1],positions[vc][2]);\n"+ " }''')
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(x3dpsail.SFString("3.3")) .setHead(x3dpsail.head() .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("John W Carlson"))) .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("created")).setContent(x3dpsail.SFString("December 13 2015"))) .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("force.x3d"))) .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("https://coderextreme.net/X3DJSONLD/force.x3d"))) .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("beginnings of a force directed graph in 3D"))) .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("Vim, X3D-Edit, https://savage.nps.edu/X3D-Edit")))) .setScene(x3dpsail.Scene() .addChild(x3dpsail.Group() .addChild(x3dpsail.Shape() .setGeometry(x3dpsail.Extrusion().setDEF(x3dpsail.SFString("extrusion")).setSpine(x3dpsail.MFVec3f([-50,-50,0,50,50,0])).setCreaseAngle(x3dpsail.SFFloat(0.785)).setCrossSection(x3dpsail.MFVec2f([1,0,0.92,-0.38,0.71,-0.71,0.38,-0.92,0,-1,-0.38,-0.92,-0.71,-0.71,-0.92,-0.38,-1,0,-0.92,0.38,-0.71,0.71,-0.38,0.92,0,1,0.38,0.92,0.71,0.71,0.92,0.38,1,0]))) .setAppearance(x3dpsail.Appearance() .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0,1,0))))) .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("TourTime")).setLoop(x3dpsail.SFBool(True))) .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("MoveCylinder")) .addField(x3dpsail.field().setName(x3dpsail.SFString("set_cycle")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFTime"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("spine")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("MFVec3f")).setValue(x3dpsail.SFString("-50 -50 0 50 50 0"))).setSourceCode('''ecmascript:\n"+ "\n"+ " function set_cycle(value) {\n"+ " Browser.print(value);\n"+ " var endA = new SFVec3f(spine[0].x*Math.random()*2, spine[0].y*Math.random()*2, spine[0].z*Math.random()*2);\n"+ " var endB = new SFVec3f(spine[1].x*Math.random()*2, spine[1].y*Math.random()*2, spine[1].z*Math.random()*2);\n"+ " spine = new MFVec3f([endA, endB]);\n"+ " }''') ) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("TourTime")).setFromField(x3dpsail.SFString("cycleTime")).setToNode(x3dpsail.SFString("MoveCylinder")).setToField(x3dpsail.SFString("set_cycle"))) .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("MoveCylinder")).setFromField(x3dpsail.SFString("spine_changed")).setToNode(x3dpsail.SFString("extrusion")).setToField(x3dpsail.SFString("spine")))))) X3D0.toFileX3D("./future/./extrusion_RoundTrip.x3d")
.addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("a generic proto to connect two objects")))) .setScene(x3dpsail.Scene() .addChild(x3dpsail.Viewpoint().setPosition(x3dpsail.SFVec3f(0,0,5)).setDescription(x3dpsail.SFString("Only Viewpoint"))) .addChild(x3dpsail.Background().setSkyColor(x3dpsail.MFColor([0.4,0.4,0.4]))) .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("DECLpoint_G1_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_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()
Transform11.addChildren(Shape12) Scene8.addChildren(Transform11) TimeSensor16 = x3dpsail.TimeSensor() TimeSensor16.setDEF("TourTime") TimeSensor16.setCycleInterval(5) TimeSensor16.setLoop(True) Scene8.addChildren(TimeSensor16) GeoPositionInterpolator17 = x3dpsail.GeoPositionInterpolator() GeoPositionInterpolator17.setDEF("TourPosition") GeoPositionInterpolator17.setKey([0, 1]) GeoPositionInterpolator17.setKeyValue([0.0015708, 0, 4, 0, 0.0015708, 4]) Scene8.addChildren(GeoPositionInterpolator17) Script18 = x3dpsail.Script() Script18.setDEF("RandomTourTime") field19 = x3dpsail.field() field19.setName("set_cycle") field19.setAccessType("inputOnly") field19.setType("SFTime") Script18.addField(field19) field20 = x3dpsail.field() field20.setName("val") field20.setAccessType("inputOutput") field20.setType("SFFloat") field20.setValue("0") Script18.addField(field20) field21 = x3dpsail.field()
x3dpsail.MFVec3f([0, 0, 0, 0, 5, 0 ]))). addChild(x3dpsail.Script().setDEF( x3dpsail.SFString("MoveBall")).addField( x3dpsail.field().setName( x3dpsail.SFString("translation")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("SFVec3f")).setValue( x3dpsail.SFString("50 50 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_cycle")).setAccessType( 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(
Appearance24.setMaterial(Material25) Shape21.setAppearance(Appearance24) Transform20.addChildren(Shape21) Transform13.addChildren(Transform20) ProtoBody12.addChildren(Transform13) PositionInterpolator26 = x3dpsail.PositionInterpolator() PositionInterpolator26.setDEF("NodePosition") PositionInterpolator26.setKey([0, 1]) PositionInterpolator26.setKeyValue([0, 0, 0, 0, 5, 0]) ProtoBody12.addChildren(PositionInterpolator26) Script27 = x3dpsail.Script() Script27.setDEF("MoveBall") field28 = x3dpsail.field() field28.setName("translation") field28.setAccessType("inputOutput") field28.setType("SFVec3f") field28.setValue("50 50 0") Script27.addField(field28) field29 = x3dpsail.field() field29.setName("old") field29.setAccessType("inputOutput") field29.setType("SFVec3f") field29.setValue("0 0 0") Script27.addField(field29)
Shape15.setAppearance(Appearance16) #<Sphere></Sphere> IndexedFaceSet55 = x3dpsail.IndexedFaceSet() IndexedFaceSet55.setConvex(False) IndexedFaceSet55.setDEF("Orbit") Coordinate56 = x3dpsail.Coordinate() Coordinate56.setDEF("OrbitCoordinates") IndexedFaceSet55.setCoord(Coordinate56) Shape15.setGeometry(IndexedFaceSet55) Transform14.addChildren(Shape15) ProtoBody13.addChildren(Transform14) Script57 = x3dpsail.Script() Script57.setDEF("Bounce") field58 = x3dpsail.field() field58.setName("translation") field58.setAccessType("inputOutput") field58.setType("SFVec3f") field58.setValue("0 0 0") Script57.addField(field58) field59 = x3dpsail.field() field59.setName("velocity") field59.setAccessType("inputOutput") field59.setType("SFVec3f") field59.setValue("0 0 0") Script57.addField(field59)
Shape13.setAppearance(Appearance14) #<Sphere> IndexedFaceSet31 = x3dpsail.IndexedFaceSet() IndexedFaceSet31.setConvex(False) IndexedFaceSet31.setDEF("Orbit") Coordinate32 = x3dpsail.Coordinate() Coordinate32.setDEF("OrbitCoordinates") IndexedFaceSet31.setCoord(Coordinate32) Shape13.setGeometry(IndexedFaceSet31) Transform12.addChildren(Shape13) Scene9.addChildren(Transform12) Script33 = x3dpsail.Script() Script33.setDEF("OrbitScript") field34 = x3dpsail.field() field34.setName("set_fraction") field34.setAccessType("inputOnly") field34.setType("SFFloat") Script33.addField(field34) field35 = x3dpsail.field() field35.setName("coordinates") field35.setAccessType("inputOutput") field35.setType("MFVec3f") Script33.addField(field35) field36 = x3dpsail.field() field36.setName("coordIndexes")
.setGeometry(x3dpsail.Sphere().setSolid(x3dpsail.SFBool(False))))) .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("UrlSelector")).setDirectOutput(x3dpsail.SFBool(True)) .addField(x3dpsail.field().setName(x3dpsail.SFString("frontUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_front.png\" \"../resources/images/all_probes/building_cross/building_front.png\" \"../resources/images/all_probes/campus_cross/campus_front.png\" \"../resources/images/all_probes/galileo_cross/galileo_front.png\" \"../resources/images/all_probes/grace_cross/grace_front.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_front.png\" \"../resources/images/all_probes/rnl_cross/rnl_front.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_front.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_front.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("backUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_back.png\" \"../resources/images/all_probes/building_cross/building_back.png\" \"../resources/images/all_probes/campus_cross/campus_back.png\" \"../resources/images/all_probes/galileo_cross/galileo_back.png\" \"../resources/images/all_probes/grace_cross/grace_back.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_back.png\" \"../resources/images/all_probes/rnl_cross/rnl_back.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_back.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_back.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("leftUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_left.png\" \"../resources/images/all_probes/building_cross/building_left.png\" \"../resources/images/all_probes/campus_cross/campus_left.png\" \"../resources/images/all_probes/galileo_cross/galileo_left.png\" \"../resources/images/all_probes/grace_cross/grace_left.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_left.png\" \"../resources/images/all_probes/rnl_cross/rnl_left.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_left.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_left.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("rightUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_right.png\" \"../resources/images/all_probes/building_cross/building_right.png\" \"../resources/images/all_probes/campus_cross/campus_right.png\" \"../resources/images/all_probes/galileo_cross/galileo_right.png\" \"../resources/images/all_probes/grace_cross/grace_right.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_right.png\" \"../resources/images/all_probes/rnl_cross/rnl_right.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_right.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_right.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("topUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_top.png\" \"../resources/images/all_probes/building_cross/building_top.png\" \"../resources/images/all_probes/campus_cross/campus_top.png\" \"../resources/images/all_probes/galileo_cross/galileo_top.png\" \"../resources/images/all_probes/grace_cross/grace_top.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_top.png\" \"../resources/images/all_probes/rnl_cross/rnl_top.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_top.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_top.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("bottomUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_bottom.png\" \"../resources/images/all_probes/building_cross/building_bottom.png\" \"../resources/images/all_probes/campus_cross/campus_bottom.png\" \"../resources/images/all_probes/galileo_cross/galileo_bottom.png\" \"../resources/images/all_probes/grace_cross/grace_bottom.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_bottom.png\" \"../resources/images/all_probes/rnl_cross/rnl_bottom.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_bottom.png\""))) .addField(x3dpsail.field().setName(x3dpsail.SFString("front")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("back")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("left")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("right")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("top")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("bottom")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("set_fraction")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("old")).setType(x3dpsail.SFString("SFInt32")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("-1"))).setSourceCode('''ecmascript:\n"+ " function set_fraction( f, tm ) {\n"+ " var side = Math.floor(f*frontUrls.length);\n"+ " if (side > frontUrls.length-1) {\n"+ " side = 0;\n"+ " }\n"+ " if (side != old) {\n"+ " old = side;\n"+ " front[0] = frontUrls[side];\n"+ " back[0] = backUrls[side];\n"+ " left[0] = leftUrls[side];\n"+ " right[0] = rightUrls[side];\n"+ " top[0] = topUrls[side];\n"+ " bottom[0] = bottomUrls[side];\n"+ " }\n"+ " }''') )
.addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("S1")) .addField(x3dpsail.field().setName(x3dpsail.SFString("startnode")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFNode"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("endnode")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFNode"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("transnode")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFNode"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("rotscalenode")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFNode"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("set_startpoint")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFVec3f"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("set_endpoint")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFVec3f"))) .setIS(x3dpsail.IS() .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("startnode")).setProtoField(x3dpsail.SFString("startnode"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("endnode")).setProtoField(x3dpsail.SFString("endnode"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("transnode")).setProtoField(x3dpsail.SFString("transnode"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("rotscalenode")).setProtoField(x3dpsail.SFString("rotscalenode"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("set_startpoint")).setProtoField(x3dpsail.SFString("set_startpoint"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("set_endpoint")).setProtoField(x3dpsail.SFString("set_endpoint")))).setSourceCode('''ecmascript:\n"+ " function recompute(startpoint,endpoint){\n"+ " if (typeof endpoint === 'undefined') {\n"+ " return;\n"+ " }\n"+ " var dif = endpoint.subtract(startpoint);\n"+ " var dist = dif.length()*0.5;\n"+ " var dif2 = dif.multiply(0.5);\n"+ " var norm = dif.normalize();\n"+ " var transl = startpoint.add(dif2);\n"+ " if (typeof Quaternion !== 'undefined') {\n"+ " return {\n"+ " scale : new SFVec3f(1.0,dist,1.0),\n"+ " translation : transl,\n"+ " rotation : new Quaternion.rotateFromTo(new SFVec3f(0.0,1.0,0.0), norm)\n"+ " };\n"+ " } else {\n"+ " return {\n"+ " scale : new SFVec3f(1.0,dist,1.0),\n"+ " translation : transl,\n"+ " rotation : new SFRotation(new SFVec3f(0.0,1.0,0.0),norm)\n"+ " };\n"+ " }\n"+ " }\n"+ " function recompute_and_route(startpoint, endpoint) {\n"+ " var trafo = recompute(startpoint, endpoint);\n"+ " transnode.translation = trafo.translation;\n"+ " rotscalenode.rotation = trafo.rotation;\n"+ " rotscalenode.scale = trafo.scale;\n"+ " }\n"+ " function initialize(){\n"+ " recompute_and_route(startnode.translation,endnode.translation);\n"+ " }\n"+ " function set_startpoint(val,t){\n"+ " recompute_and_route(val,endnode.translation);\n"+ " }\n"+ " function set_endpoint(val,t){\n"+ " recompute_and_route(startnode.translation,val);\n"+ " }''')
).addChild(x3dpsail.Script().setDEF( x3dpsail.SFString("Bounce")).addField( x3dpsail.field().setName( x3dpsail.SFString("set_translation")).setAccessType( x3dpsail.SFString("inputOnly")).setType( x3dpsail.SFString("SFVec3f")).setValue( x3dpsail.SFString("0 0 0")) ).addField(x3dpsail.field().setName( x3dpsail.SFString("translation_changed")).setAccessType( x3dpsail.SFString("outputOnly")).setType( x3dpsail.SFString("SFVec3f")).setValue( x3dpsail.SFString("0 0 0")) ).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("velocity")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("SFVec3f")).setValue( x3dpsail.SFString("0 0 0"))). addField(x3dpsail.field().setName( x3dpsail.SFString("set_fraction")).setAccessType( x3dpsail.SFString("inputOnly")).setType( x3dpsail.SFString("SFTime"))).setSourceCode( '''ecmascript:\n"+ " function newBubble() {\n"+ " translation = new SFVec3f(0, 0, 0);\n"+ " velocity = new SFVec3f(\n"+ " Math.random() - 0.5,\n"+ " Math.random() - 0.5,\n"+ " Math.random() - 0.5);\n"+ " }\n"+ " function set_fraction() {\n"+ " translation = new SFVec3f(\n"+ " translation.x + velocity.x,\n"+ " translation.y + velocity.y,\n"+ " translation.z + velocity.z);\n"+ " if (Math.abs(translation.x) > 10) {\n"+ " newBubble();\n"+ " } else if (Math.abs(translation.y) > 10) {\n"+ " 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(
Transform47.addChildren(ROUTE60) IntegerSequencer61 = x3dpsail.IntegerSequencer() IntegerSequencer61.setDEF("TimingSequencer") IntegerSequencer61.setKey([0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1]) IntegerSequencer61.setKeyValue([0, 1, 2, 3, 4, 5, 6, 7, 8, 10]) Transform47.addChildren(IntegerSequencer61) ROUTE62 = x3dpsail.ROUTE() ROUTE62.setFromField("fraction_changed") ROUTE62.setFromNode("Clock") ROUTE62.setToField("set_fraction") ROUTE62.setToNode("TimingSequencer") Transform47.addChildren(ROUTE62) Script63 = x3dpsail.Script() Script63.setDEF("BindingSequencerEngine") field64 = x3dpsail.field() field64.setName("set_timeEvent") field64.setAccessType("inputOnly") field64.setType("SFInt32") Script63.addField(field64) field65 = x3dpsail.field() field65.setName("bindView1") field65.setAccessType("outputOnly") field65.setType("SFBool") Script63.addField(field65) field66 = x3dpsail.field() field66.setName("bindView2")
Appearance19 = x3dpsail.Appearance() Material20 = x3dpsail.Material() Material20.setDiffuseColor([1, 0, 0]) Appearance19.setMaterial(Material20) Shape17.setAppearance(Appearance19) Transform14.addChildren(Shape17) PositionInterpolator21 = x3dpsail.PositionInterpolator() PositionInterpolator21.setDEF("PI1") PositionInterpolator21.setKey([0, 1]) PositionInterpolator21.setKeyValue([0, 0, 0, 0, 5, 0]) Transform14.addChildren(PositionInterpolator21) Script22 = x3dpsail.Script() Script22.setDEF("MB1") field23 = x3dpsail.field() field23.setName("translation") field23.setAccessType("inputOutput") field23.setType("SFVec3f") field23.setValue("50 50 0") Script22.addField(field23) field24 = x3dpsail.field() field24.setName("old") field24.setAccessType("inputOutput") field24.setType("SFVec3f") field24.setValue("0 0 0") Script22.addField(field24)
field62 = x3dpsail.field() field62.setName("set_startpoint") field62.setAccessType("inputOnly") field62.setType("SFVec3f") ProtoInterface57.addField(field62) field63 = x3dpsail.field() field63.setName("set_endpoint") field63.setAccessType("inputOnly") field63.setType("SFVec3f") ProtoInterface57.addField(field63) ProtoDeclare56.setProtoInterface(ProtoInterface57) ProtoBody64 = x3dpsail.ProtoBody() Script65 = x3dpsail.Script() Script65.setDEF("S1") field66 = x3dpsail.field() field66.setName("startnode") field66.setAccessType("initializeOnly") field66.setType("SFNode") Script65.addField(field66) field67 = x3dpsail.field() field67.setName("endnode") field67.setAccessType("initializeOnly") field67.setType("SFNode") Script65.addField(field67) field68 = x3dpsail.field() field68.setName("transnode")
Appearance37 = x3dpsail.Appearance() Material38 = x3dpsail.Material() Material38.setDiffuseColor([1, 0, 0]) Appearance37.setMaterial(Material38) Shape35.setAppearance(Appearance37) Transform32.addChildren(Shape35) PositionInterpolator39 = x3dpsail.PositionInterpolator() PositionInterpolator39.setDEF("PI1") PositionInterpolator39.setKey([0, 1]) PositionInterpolator39.setKeyValue([0, 0, 0, 0, 5, 0]) Transform32.addChildren(PositionInterpolator39) Script40 = x3dpsail.Script() Script40.setDEF("MB1") field41 = x3dpsail.field() field41.setName("translation") field41.setAccessType("inputOutput") field41.setType("SFVec3f") field41.setValue("50 50 0") Script40.addField(field41) field42 = x3dpsail.field() field42.setName("old") field42.setAccessType("inputOutput") field42.setType("SFVec3f") field42.setValue("0 0 0") Script40.addField(field42)
Shape13 = x3dpsail.Shape() Sphere14 = x3dpsail.Sphere() Sphere14.setRadius(0.25) Shape13.setGeometry(Sphere14) Appearance15 = x3dpsail.Appearance() Material16 = x3dpsail.Material() Material16.setDiffuseColor([1,0,0]) Material16.setTransparency(0.2) Appearance15.setMaterial(Material16) Shape13.setAppearance(Appearance15) Transform12.addChildren(Shape13) Script17 = x3dpsail.Script() Script17.setDEF("bounce") field18 = x3dpsail.field() field18.setName("scale") field18.setAccessType("inputOutput") field18.setType("SFVec3f") field18.setValue("1 1 1") Script17.addField(field18) field19 = x3dpsail.field() field19.setName("translation") field19.setAccessType("inputOutput") field19.setType("SFVec3f") field19.setValue("0 0 0") Script17.addField(field19)
addChild(x3dpsail.Script().setDEF( x3dpsail.SFString("bounce") ).addField(x3dpsail.field().setName( x3dpsail.SFString("scale") ).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("SFVec3f")).setValue( x3dpsail.SFString("1 1 1") )).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("velocity") ).setAccessType( x3dpsail.SFString("inputOutput") ).setType(x3dpsail.SFString( "SFVec3f")).setValue( x3dpsail.SFString("0 0 0"))). addField(x3dpsail.field().setName( x3dpsail.SFString("scalvel") ).setAccessType( x3dpsail.SFString("inputOutput") ).setType(x3dpsail.SFString( "SFVec3f")).setValue( x3dpsail.SFString("0 0 0"))). addField(x3dpsail.field().setName( x3dpsail.SFString("set_fraction") ).setAccessType( x3dpsail.SFString("inputOnly") ).setType( x3dpsail.SFString("SFFloat") )).setSourceCode('''ecmascript:\n"+ "function initialize() {\n"+ " velocity = new SFVec3f(Math.random() * 0.25 - 0.125, Math.random() * 0.25 - 0.125, Math.random() * 0.25 - 0.125);\n"+ "\n"+ " scalvel = new SFVec3f(Math.random() * 0.4, Math.random() * 0.4, Math.random() * 0.4);\n"+ "}\n"+ "\n"+ "function set_fraction(value) {\n"+ " translation = new SFVec3f(\n"+ " translation.x + velocity.x,\n"+ " translation.y + velocity.y,\n"+ " translation.z + velocity.z);\n"+ " scale = new SFVec3f(\n"+ " scale.x + scalvel.x,\n"+ " scale.y + scalvel.y,\n"+ " scale.z + scalvel.z);\n"+ " // if you get to far away or too big, explode\n"+ " if ( Math.abs(translation.x) > 256) {\n"+ " translation.x = 0;\n"+ " initialize();\n"+ " }\n"+ " if ( Math.abs(translation.y) > 256) {\n"+ " translation.y = 0;\n"+ " initialize();\n"+ " }\n"+ " if ( Math.abs(translation.z) > 256) {\n"+ " translation.z = 0;\n"+ " initialize();\n"+ " }\n"+ " if (Math.abs(scale.x) > 20) {\n"+ " scale.x = scale.x/2;\n"+ " 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(
Appearance13 = x3dpsail.Appearance() Material14 = x3dpsail.Material() Material14.setDiffuseColor([1, 0, 0]) Appearance13.setMaterial(Material14) Shape11.setAppearance(Appearance13) Transform10.addChildren(Shape11) PositionInterpolator15 = x3dpsail.PositionInterpolator() PositionInterpolator15.setDEF("DECLpoint_G1_PI1") PositionInterpolator15.setKey([0, 1]) PositionInterpolator15.setKeyValue([0, 0, 0, 0, 5, 0]) Transform10.addChildren(PositionInterpolator15) Script16 = x3dpsail.Script() Script16.setDEF("DECLpoint_G1_MB1") field17 = x3dpsail.field() field17.setName("translation") field17.setAccessType("inputOutput") field17.setType("SFVec3f") field17.setValue("0 0 0") Script16.addField(field17) field18 = x3dpsail.field() field18.setName("old") field18.setAccessType("inputOutput") field18.setType("SFVec3f") field18.setValue("0 0 0") Script16.addField(field18)