meta6.setContent("a kind of rubik cube with spheres") head1.addMeta(meta6) X3D0.setHead(head1) Scene7 = x3dpsail.Scene() NavigationInfo8 = x3dpsail.NavigationInfo() NavigationInfo8.setType(["EXAMINE"]) Scene7.addChildren(NavigationInfo8) Viewpoint9 = x3dpsail.Viewpoint() Viewpoint9.setDescription("Rubiks Cube") Viewpoint9.setPosition([0, 0, 12]) Scene7.addChildren(Viewpoint9) ProtoDeclare10 = x3dpsail.ProtoDeclare() ProtoDeclare10.setName("sphere") ProtoInterface11 = x3dpsail.ProtoInterface() field12 = x3dpsail.field() field12.setName("xtranslation") field12.setAccessType("inputOutput") field12.setType("SFVec3f") field12.setValue("0 0 0") ProtoInterface11.addField(field12) ProtoDeclare10.setProtoInterface(ProtoInterface11) ProtoBody13 = x3dpsail.ProtoBody() Transform14 = x3dpsail.Transform() IS15 = x3dpsail.IS() connect16 = x3dpsail.connect()
]) Background11.setLeftUrl([ "../resources/images/all_probes/stpeters_cross/stpeters_left.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png" ]) Background11.setRightUrl([ "../resources/images/all_probes/stpeters_cross/stpeters_right.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png" ]) Background11.setTopUrl([ "../resources/images/all_probes/stpeters_cross/stpeters_top.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png" ]) Scene9.addChildren(Background11) ProtoDeclare12 = x3dpsail.ProtoDeclare() ProtoDeclare12.setName("flower") ProtoBody13 = x3dpsail.ProtoBody() Transform14 = x3dpsail.Transform() Transform14.setDEF("transform") Shape15 = x3dpsail.Shape() Appearance16 = x3dpsail.Appearance() Material17 = x3dpsail.Material() Material17.setDiffuseColor([0.7, 0.7, 0.7]) Material17.setSpecularColor([0.5, 0.5, 0.5]) Appearance16.setMaterial(Material17) ComposedCubeMapTexture18 = x3dpsail.ComposedCubeMapTexture() ComposedCubeMapTexture18.setDEF("texture") ImageTexture19 = x3dpsail.ImageTexture() ImageTexture19.setUrl([
"EXAMINE" ]))).addChild(x3dpsail.Viewpoint().setDescription( x3dpsail.SFString("Cubes on Fire")).setPosition( x3dpsail.SFVec3f(0, 0, 12))).addChild(x3dpsail.ProtoDeclare( ).setName(x3dpsail.SFString("anyShape")).setProtoInterface( x3dpsail.ProtoInterface().addField( x3dpsail.field().setName( x3dpsail.SFString("xtranslation")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("SFVec3f")).setValue( x3dpsail.SFString("0 0 0"))). addField(x3dpsail.field().setName( x3dpsail.SFString("myShape")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("MFNode")). addChild(x3dpsail.Shape().setGeometry( x3dpsail.Sphere()).setAppearance( x3dpsail.Appearance().setMaterial( x3dpsail.Material().setDiffuseColor( x3dpsail.SFColor(1, 1, 1)))))) ).setProtoBody(x3dpsail.ProtoBody().addChild( x3dpsail.Transform().setIS(x3dpsail.IS().addConnect( x3dpsail.connect().setNodeField( x3dpsail.SFString("translation")).setProtoField( x3dpsail.SFString("xtranslation") )).addConnect(x3dpsail.connect().setNodeField( x3dpsail.SFString("children")).setProtoField( x3dpsail.SFString("myShape"))))))). addChild(x3dpsail.ProtoDeclare( ).setName(x3dpsail.SFString("three")).setProtoInterface( x3dpsail.ProtoInterface().addField(x3dpsail.field().setName(
ExternProtoDeclare11.setUrl(["../data/flowerproto.json#FlowerProto"]) field12 = x3dpsail.field() field12.setName("vertex") field12.setAccessType("inputOutput") field12.setType("MFString") ExternProtoDeclare11.addField(field12) field13 = x3dpsail.field() field13.setName("fragment") field13.setAccessType("inputOutput") field13.setType("MFString") ExternProtoDeclare11.addField(field13) Group10.addChildren(ExternProtoDeclare11) ProtoDeclare14 = x3dpsail.ProtoDeclare() ProtoDeclare14.setName("flower") ProtoBody15 = x3dpsail.ProtoBody() Group16 = x3dpsail.Group() ProtoInstance17 = x3dpsail.ProtoInstance() ProtoInstance17.setName("FlowerProto") fieldValue18 = x3dpsail.fieldValue() fieldValue18.setName("vertex") fieldValue18.setValue("\"../shaders/x3dom_flowers_chromatic.vs\"") ProtoInstance17.addFieldValue(fieldValue18) fieldValue19 = x3dpsail.fieldValue() fieldValue19.setName("fragment") fieldValue19.setValue("\"../shaders/common.fs\"") ProtoInstance17.addFieldValue(fieldValue19)
Material28.setTransparency(0.5) Appearance27.setMaterial(Material28) Shape26.setAppearance(Appearance27) Cylinder29 = x3dpsail.Cylinder() Cylinder29.setRadius(0.05) Shape26.setGeometry(Cylinder29) Transform25.addChildren(Shape26) Transform24.addChildren(Transform25) Scene7.addChildren(Transform24) ProtoDeclare30 = x3dpsail.ProtoDeclare() ProtoDeclare30.setName("x3dconnector") ProtoInterface31 = x3dpsail.ProtoInterface() field32 = x3dpsail.field() field32.setName("startnode") field32.setAccessType("initializeOnly") field32.setType("SFNode") ProtoInterface31.addField(field32) field33 = x3dpsail.field() field33.setName("endnode") field33.setAccessType("initializeOnly") field33.setType("SFNode") ProtoInterface31.addField(field33) field34 = x3dpsail.field()
meta6.setContent("a generic proto to connect two objects") head1.addMeta(meta6) X3D0.setHead(head1) Scene7 = x3dpsail.Scene() Viewpoint8 = x3dpsail.Viewpoint() Viewpoint8.setPosition([0, 0, 5]) Viewpoint8.setDescription("Only Viewpoint") Scene7.addChildren(Viewpoint8) Background9 = x3dpsail.Background() Background9.setSkyColor([0.4, 0.4, 0.4]) Scene7.addChildren(Background9) ProtoDeclare10 = x3dpsail.ProtoDeclare() ProtoDeclare10.setName("point") ProtoInterface11 = x3dpsail.ProtoInterface() field12 = x3dpsail.field() field12.setName("translation") field12.setAccessType("inputOutput") field12.setType("SFVec3f") field12.setValue("0 0 0") ProtoInterface11.addField(field12) ProtoDeclare10.setProtoInterface(ProtoInterface11) ProtoBody13 = x3dpsail.ProtoBody() Transform14 = x3dpsail.Transform() Transform14.setDEF("node") IS15 = x3dpsail.IS()
)).addChild(x3dpsail.ProtoDeclare().setName( x3dpsail.SFString("Bubble")).setProtoBody( x3dpsail.ProtoBody().addChild( x3dpsail.Transform().setDEF( x3dpsail.SFString("transform") ).addChild(x3dpsail.Shape().setGeometry( x3dpsail.Sphere().setRadius( x3dpsail.SFFloat(0.25))).setAppearance( x3dpsail.Appearance().setMaterial( x3dpsail.Material( ).setDiffuseColor( x3dpsail.SFColor( 1, 0, 0)).setTransparency( x3dpsail.SFFloat( 0.2))))). 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( 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.ProtoDeclare().setName(x3dpsail.SFString( "Bubble" )).setProtoBody(x3dpsail.ProtoBody().addChild(x3dpsail.Transform().setDEF( x3dpsail .SFString("transform") ).addChild(x3dpsail.Shape().setDEF(x3dpsail.SFString( "myShape" )).setAppearance(x3dpsail.Appearance().setMaterial(x3dpsail.Material( ).setDiffuseColor(x3dpsail.SFColor( 0.7, 0.7, 0.7 )).setSpecularColor(x3dpsail.SFColor( 0.5, 0.5, 0.5 ))).setTexture(x3dpsail.ComposedCubeMapTexture().setDEF( x3dpsail .SFString("texture") ).setBack(x3dpsail.ImageTexture().setUrl( x3dpsail .MFString([ "../resources/images/all_probes/stpeters_cross/stpeters_back.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png" ]) )).setBottom(x3dpsail.ImageTexture().setUrl( x3dpsail.MFString([ "../resources/images/all_probes/stpeters_cross/stpeters_bottom.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png" ]) )).setFront(x3dpsail.ImageTexture().setUrl( x3dpsail.MFString([ "../resources/images/all_probes/stpeters_cross/stpeters_front.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png" ]) )).setLeft(x3dpsail.ImageTexture().setUrl( x3dpsail.MFString([ "../resources/images/all_probes/stpeters_cross/stpeters_left.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png" ]) )).setRight(x3dpsail.ImageTexture().setUrl( x3dpsail.MFString([ "../resources/images/all_probes/stpeters_cross/stpeters_right.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png" ]) )).setTop(x3dpsail.ImageTexture().setUrl( x3dpsail.MFString([ "../resources/images/all_probes/stpeters_cross/stpeters_top.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png" ])))) #<ComposedShader DEF='gl' language=\"GLSL\"> <field name='cube' type='SFInt32' accessType=\"inputOutput\" value='0'/> <field name='chromaticDispertion' type='SFVec3f' accessType=\"inputOutput\" value='0.98 1.0 1.033'/> <field name='bias' type='SFFloat' accessType=\"inputOutput\" value='0.5'/> <field name='scale' type='SFFloat' accessType=\"inputOutput\" value='0.5'/> <field name='power' type='SFFloat' accessType=\"inputOutput\" value='2.0'/> <ShaderPart url='\"../shaders/gl.vs\" \"https://coderextreme.net/X3DJSONLD/shaders/gl.vs\"' type='VERTEX'></ShaderPart> <ShaderPart url='\"../shaders/pc_bubbles.fs\" \"https://coderextreme.net/X3DJSONLD/shaders/pc_bubbles.fs\"' type='FRAGMENT'></ShaderPart> </ComposedShader> <ComposedShader DEF='freewrl' language=\"GLSL\"> <field name='fw_textureCoodGenType' type='SFInt32' accessType=\"inputOutput\" value='0'/> <field name='chromaticDispertion' type='SFVec3f' accessType=\"inputOutput\" value='0.98 1.0 1.033'/> <field name='bias' type='SFFloat' accessType=\"inputOutput\" value='0.5'/> <field name='scale' type='SFFloat' accessType=\"inputOutput\" value='0.5'/> <field name='power' type='SFFloat' accessType=\"inputOutput\" value='2.0'/> <ShaderPart url='\"../shaders/freewrl.vs\" \"https://coderextreme.net/X3DJSONLD/shaders/freewrl.vs\"' type='VERTEX'></ShaderPart> <ShaderPart url='\"../shaders/pc_bubbles.fs\" \"https://coderextreme.net/X3DJSONLD/shaders/pc_bubbles.fs\"' type='FRAGMENT'></ShaderPart> </ComposedShader> #<ComposedShader DEF='instant' language=\"GLSL\"> <field name='cube' type='SFInt32' accessType=\"inputOutput\" value='0'/> <field name='chromaticDispertion' type='SFVec3f' accessType=\"inputOutput\" value='0.98 1.0 1.033'/> <field name='bias' type='SFFloat' accessType=\"inputOutput\" value='0.5'/> <field name='scale' type='SFFloat' accessType=\"inputOutput\" value='0.5'/> <field name='power' type='SFFloat' accessType=\"inputOutput\" value='2.0'/> <ShaderPart url='\"../shaders/instant.vs\" \"https://coderextreme.net/X3DJSONLD/shaders/instant.vs\"' type='VERTEX'></ShaderPart> <ShaderPart url='\"../shaders/pc_bubbles.fs\" \"https://coderextreme.net/X3DJSONLD/shaders/pc_bubbles.fs\"' type='FRAGMENT'></ShaderPart> </ComposedShader> .addShaders(x3dpsail.ComposedShader().setDEF( x3dpsail.SFString("x3dom") ).setLanguage(x3dpsail.SFString("GLSL")).addField( x3dpsail.field().setName(x3dpsail.SFString("cube")) .setType(x3dpsail.SFString("SFInt32")).setAccessType( x3dpsail.SFString("inputOutput")).setValue( x3dpsail.SFString("0")) ).addField(x3dpsail.field().setName( x3dpsail.SFString("chromaticDispertion") ).setType(x3dpsail.SFString("SFVec3f")).setAccessType( x3dpsail.SFString("inputOutput") ).setValue(x3dpsail.SFString("0.98 1 1.033"))).addField( x3dpsail.field().setName(x3dpsail.SFString("bias")). setType( x3dpsail.SFString("SFFloat") ).setAccessType(x3dpsail.SFString("inputOutput")) .setValue(x3dpsail.SFString("0.5")) ).addField(x3dpsail.field().setName( x3dpsail.SFString("scale") ).setType( x3dpsail.SFString("SFFloat") ).setAccessType( x3dpsail.SFString("inputOutput") ).setValue( x3dpsail.SFString("0.5") )).addField(x3dpsail.field().setName( x3dpsail.SFString("power") ).setType( x3dpsail.SFString("SFFloat") ).setAccessType( x3dpsail.SFString("inputOutput") ).setValue( x3dpsail.SFString("2") )).addParts(x3dpsail.ShaderPart().setUrl( x3dpsail.MFString([ "../shaders/x3dom.vs", "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")))). addShaders(x3dpsail.ComposedShader( ).setDEF(x3dpsail.SFString("cobweb")).setLanguage( x3dpsail.SFString("GLSL") ).addField(x3dpsail.field().setName( x3dpsail.SFString("cube") ).setType(x3dpsail.SFString( "SFNode" )).setAccessType(x3dpsail.SFString( "inputOutput" )).addChild(x3dpsail.ComposedCubeMapTexture().setUSE( x3dpsail .SFString("texture") ))).addField( x3dpsail .field() .setName(x3dpsail.SFString("chromaticDispertion")) .setType(x3dpsail.SFString("SFVec3f")) .setAccessType(x3dpsail.SFString("inputOutput")) .setValue(x3dpsail.SFString("0.98 1 1.033")) ).addField(x3dpsail.field().setName( x3dpsail.SFString("bias") ).setType( x3dpsail.SFString("SFFloat") ).setAccessType( x3dpsail.SFString("inputOutput") ).setValue( x3dpsail.SFString("0.5") )).addField(x3dpsail.field().setName( x3dpsail.SFString("scale") ).setType( x3dpsail.SFString("SFFloat") ).setAccessType( x3dpsail.SFString("inputOutput") ).setValue( x3dpsail.SFString("0.5") )).addField(x3dpsail.field().setName( x3dpsail.SFString("power") ).setType( x3dpsail.SFString("SFFloat") ).setAccessType( x3dpsail.SFString("inputOutput") ).setValue( x3dpsail.SFString("2") )).addParts(x3dpsail.ShaderPart().setUrl( x3dpsail.MFString([ "../shaders/cobweb.vs", "https://coderextreme.net/X3DJSONLD/shaders/cobweb.vs" ]) ).setType( x3dpsail.SFString("VERTEX") )).addParts(x3dpsail.ShaderPart().setUrl( x3dpsail .MFString([ "../shaders/pc_bubbles.fs", "https://coderextreme.net/X3DJSONLD/shaders/pc.fs" ])).setType(x3dpsail.SFString("FRAGMENT"))))). setGeometry( x3dpsail.Sphere()))).addChild(x3dpsail.Script().setDEF( x3dpsail.SFString("Bounce")).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 initialize() {\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"+ " initialize();\n"+ " } else if (Math.abs(translation.y) > 10) {\n"+ " initialize();\n"+ " } else if (Math.abs(translation.z) > 10) {\n"+ " initialize();\n"+ " } else {\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"+ " }''')).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"))))
))).addField( x3dpsail .field() .setName(x3dpsail.SFString("orientation_changed")) .setAccessType(x3dpsail.SFString("outputOnly")) .setType(x3dpsail.SFString("SFRotation")) ).addField( x3dpsail .field() .setName(x3dpsail.SFString("outputViewpointString")) .setAccessType(x3dpsail.SFString("outputOnly")) .setType(x3dpsail.SFString("MFString")) )).addChild(x3dpsail.ProtoDeclare().setName( x3dpsail .SFString("NewWorldInfoNode") ).setProtoBody(x3dpsail.ProtoBody().addChild(x3dpsail.WorldInfo().setDEF( x3dpsail .SFString("ExamplePrototypeBody") )))).addChild(x3dpsail.ProtoInstance().setName( x3dpsail .SFString("NewWorldInfoNode") )).addChild(x3dpsail.ProtoDeclare().setName( x3dpsail .SFString("EmissiveMaterial") ).setProtoInterface(x3dpsail.ProtoInterface().addField( x3dpsail .field() .setName(x3dpsail.SFString("onlyColor")) .setAccessType(x3dpsail.SFString("inputOutput")) .setType(x3dpsail.SFString("SFColor")) .setValue(x3dpsail.SFString("1 0 0"))
Scene9.addChildren(NavigationInfo10) Background11 = x3dpsail.Background() Background11.setBackUrl(["../resources/images/all_probes/stpeters_cross/stpeters_back.png","https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"]) Background11.setBottomUrl(["../resources/images/all_probes/stpeters_cross/stpeters_bottom.png","https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"]) Background11.setFrontUrl(["../resources/images/all_probes/stpeters_cross/stpeters_front.png","https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"]) Background11.setLeftUrl(["../resources/images/all_probes/stpeters_cross/stpeters_left.png","https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"]) Background11.setRightUrl(["../resources/images/all_probes/stpeters_cross/stpeters_right.png","https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"]) Background11.setTopUrl(["../resources/images/all_probes/stpeters_cross/stpeters_top.png","https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"]) Scene9.addChildren(Background11) Viewpoint12 = x3dpsail.Viewpoint() Viewpoint12.setPosition([0,0,20]) Viewpoint12.setDescription("Look at the bubbles flying") Scene9.addChildren(Viewpoint12) ProtoDeclare13 = x3dpsail.ProtoDeclare() ProtoDeclare13.setName("Bubble") ProtoBody14 = x3dpsail.ProtoBody() Transform15 = x3dpsail.Transform() Transform15.setDEF("transform") Shape16 = x3dpsail.Shape() Shape16.setDEF("myShape") Appearance17 = x3dpsail.Appearance() Material18 = x3dpsail.Material() Material18.setDiffuseColor([0.7,0.7,0.7]) Material18.setSpecularColor([0.5,0.5,0.5]) Appearance17.setMaterial(Material18) ComposedCubeMapTexture19 = x3dpsail.ComposedCubeMapTexture() ComposedCubeMapTexture19.setDEF("texture") ImageTexture20 = x3dpsail.ImageTexture()
meta6.setContent("a white rubik cube") head1.addMeta(meta6) X3D0.setHead(head1) Scene7 = x3dpsail.Scene() NavigationInfo8 = x3dpsail.NavigationInfo() NavigationInfo8.setType(["EXAMINE"]) Scene7.addChildren(NavigationInfo8) Viewpoint9 = x3dpsail.Viewpoint() Viewpoint9.setDescription("Rubiks Cube on Fire") Viewpoint9.setPosition([0, 0, 12]) Scene7.addChildren(Viewpoint9) ProtoDeclare10 = x3dpsail.ProtoDeclare() ProtoDeclare10.setName("anyShape") ProtoInterface11 = x3dpsail.ProtoInterface() field12 = x3dpsail.field() field12.setName("xtranslation") field12.setAccessType("inputOutput") field12.setType("SFVec3f") field12.setValue("0 0 0") ProtoInterface11.addField(field12) field13 = x3dpsail.field() field13.setName("myShape") field13.setAccessType("inputOutput") field13.setType("SFNode") Sphere14 = x3dpsail.Sphere()
x3dpsail.SFString("generator")).setContent( x3dpsail.SFString("manual"))). addMeta(x3dpsail.meta().setName( x3dpsail.SFString("identifier")).setContent( x3dpsail.SFString( "https://coderextreme.net/X3DJSONLD/abox.x3d"))).addMeta( x3dpsail.meta().setName( x3dpsail.SFString("description")).setContent( x3dpsail.SFString("a box"))) ).setScene(x3dpsail.Scene().addChild(x3dpsail.ProtoDeclare().setName( x3dpsail.SFString("anyShape")).setProtoInterface( x3dpsail.ProtoInterface().addField(x3dpsail.field().setName( x3dpsail.SFString("myShape")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("MFNode")).addChild( x3dpsail.Shape().setGeometry(x3dpsail.Sphere()))) ).setProtoBody(x3dpsail.ProtoBody().addChild( x3dpsail.Transform().setIS( x3dpsail.IS().addConnect(x3dpsail.connect().setNodeField( x3dpsail.SFString("children")).setProtoField( x3dpsail.SFString("myShape")))) ))).addChild(x3dpsail.ProtoDeclare().setName( x3dpsail.SFString("one")).setProtoInterface( x3dpsail.ProtoInterface().addField(x3dpsail.field().setName( x3dpsail.SFString("myShape")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("MFNode")).addChild( x3dpsail.Shape().setGeometry( x3dpsail.Cylinder()))) ).setProtoBody(x3dpsail.ProtoBody().addChild( x3dpsail.Transform().addChild(x3dpsail.ProtoInstance().setName(
x3dpsail.SFString( "a kind of rubik cube with spheres"))) ).setScene(x3dpsail.Scene().addChild(x3dpsail.NavigationInfo().setType( x3dpsail.MFString(["EXAMINE"]))).addChild( x3dpsail.Viewpoint().setDescription( x3dpsail.SFString("Rubiks Cube")).setPosition( x3dpsail.SFVec3f(0, 0, 12)) ).addChild(x3dpsail.ProtoDeclare().setName( x3dpsail.SFString("sphere")).setProtoInterface( x3dpsail.ProtoInterface().addField(x3dpsail.field().setName( x3dpsail.SFString("xtranslation")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("SFVec3f")).setValue( x3dpsail.SFString("0 0 0"))) ).setProtoBody(x3dpsail.ProtoBody().addChild( x3dpsail.Transform().setIS(x3dpsail.IS().addConnect( x3dpsail.connect().setNodeField( x3dpsail.SFString("translation")).setProtoField( x3dpsail.SFString("xtranslation")))).addChild( x3dpsail.Shape().setGeometry(x3dpsail.Sphere( )).setAppearance( x3dpsail.Appearance().setMaterial( x3dpsail.Material().setDiffuseColor( x3dpsail.SFColor(1, 1, 1))))) ))).addChild(x3dpsail.ProtoDeclare().setName( x3dpsail.SFString("three")).setProtoInterface( x3dpsail.ProtoInterface().addField( x3dpsail.field().setName( x3dpsail.SFString("ytranslation")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("SFVec3f")).setValue( x3dpsail.SFString("0 0 0")))
ExternProtoDeclare18.addField(field22) field23 = x3dpsail.field() field23.setName("orientation_changed") field23.setAccessType("outputOnly") field23.setType("SFRotation") ExternProtoDeclare18.addField(field23) field24 = x3dpsail.field() field24.setName("outputViewpointString") field24.setAccessType("outputOnly") field24.setType("MFString") ExternProtoDeclare18.addField(field24) Scene17.addChildren(ExternProtoDeclare18) ProtoDeclare25 = x3dpsail.ProtoDeclare() ProtoDeclare25.setName("NewWorldInfoNode") ProtoBody26 = x3dpsail.ProtoBody() WorldInfo27 = x3dpsail.WorldInfo() WorldInfo27.setDEF("ExamplePrototypeBody") ProtoBody26.addChildren(WorldInfo27) ProtoDeclare25.setProtoBody(ProtoBody26) Scene17.addChildren(ProtoDeclare25) ProtoInstance28 = x3dpsail.ProtoInstance() ProtoInstance28.setName("NewWorldInfoNode") Scene17.addChildren(ProtoInstance28) ProtoDeclare29 = x3dpsail.ProtoDeclare()
head1.addMeta(meta7) meta8 = x3dpsail.meta() meta8.setName("identifier") meta8.setContent("https://coderextreme.net/x3d/pp3.x3d") head1.addMeta(meta8) meta9 = x3dpsail.meta() meta9.setName("generator") meta9.setContent("manual") head1.addMeta(meta9) X3D0.setHead(head1) Scene10 = x3dpsail.Scene() ProtoDeclare11 = x3dpsail.ProtoDeclare() ProtoDeclare11.setName("Process") ProtoBody12 = x3dpsail.ProtoBody() Group13 = x3dpsail.Group() #left Transform14 = x3dpsail.Transform() Transform14.setScale([0.5,0.5,0.5]) Shape15 = x3dpsail.Shape() Appearance16 = x3dpsail.Appearance() Material17 = x3dpsail.Material() Material17.setDiffuseColor([0.7,1,0]) Material17.setTransparency(0.5) Appearance16.setMaterial(Material17) Shape15.setAppearance(Appearance16)
head1.addMeta(meta5) meta6 = x3dpsail.meta() meta6.setName("description") meta6.setContent("beginnings of a force directed graph in 3D") head1.addMeta(meta6) meta7 = x3dpsail.meta() meta7.setName("generator") meta7.setContent("Vim, X3D-Edit, https://savage.nps.edu/X3D-Edit") head1.addMeta(meta7) X3D0.setHead(head1) Scene8 = x3dpsail.Scene() ProtoDeclare9 = x3dpsail.ProtoDeclare() ProtoDeclare9.setName("node") ProtoInterface10 = x3dpsail.ProtoInterface() field11 = x3dpsail.field() field11.setName("position") field11.setAccessType("inputOutput") field11.setType("SFVec3f") field11.setValue("0 0 0") ProtoInterface10.addField(field11) ProtoDeclare9.setProtoInterface(ProtoInterface10) ProtoBody12 = x3dpsail.ProtoBody() Transform13 = x3dpsail.Transform() Transform13.setDEF("transform") IS14 = x3dpsail.IS()
meta6.setContent("a green rubik cube") head1.addMeta(meta6) X3D0.setHead(head1) Scene7 = x3dpsail.Scene() NavigationInfo8 = x3dpsail.NavigationInfo() NavigationInfo8.setType(["EXAMINE"]) Scene7.addChildren(NavigationInfo8) Viewpoint9 = x3dpsail.Viewpoint() Viewpoint9.setDescription("Rubiks Cube on Fire") Viewpoint9.setPosition([0, 0, 12]) Scene7.addChildren(Viewpoint9) ProtoDeclare10 = x3dpsail.ProtoDeclare() ProtoDeclare10.setName("anyShape") ProtoInterface11 = x3dpsail.ProtoInterface() field12 = x3dpsail.field() field12.setName("xtranslation") field12.setAccessType("inputOutput") field12.setType("SFVec3f") field12.setValue("0 0 0") ProtoInterface11.addField(field12) field13 = x3dpsail.field() field13.setName("myShape") field13.setAccessType("inputOutput") field13.setType("MFNode") Shape14 = x3dpsail.Shape() Sphere15 = x3dpsail.Sphere()
.addChild(x3dpsail.ProtoDeclare().setName(x3dpsail.SFString("x3dconnector")) .setProtoInterface(x3dpsail.ProtoInterface() .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")))) .setProtoBody(x3dpsail.ProtoBody() .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"+ " }''') )))
Material26.setDiffuseColor([0.2, 0.7, 0.7]) Appearance25.setMaterial(Material26) Shape24.setAppearance(Appearance25) Cylinder27 = x3dpsail.Cylinder() Cylinder27.setRadius(0.1) Shape24.setGeometry(Cylinder27) Transform23.addChildren(Shape24) Transform22.addChildren(Transform23) Scene7.addChildren(Transform22) ProtoDeclare28 = x3dpsail.ProtoDeclare() ProtoDeclare28.setName("point") ProtoInterface29 = x3dpsail.ProtoInterface() field30 = x3dpsail.field() field30.setName("translation") field30.setAccessType("inputOutput") field30.setType("SFVec3f") field30.setValue("0 0 0") ProtoInterface29.addField(field30) ProtoDeclare28.setProtoInterface(ProtoInterface29) ProtoBody31 = x3dpsail.ProtoBody() Transform32 = x3dpsail.Transform() Transform32.setDEF("node") IS33 = x3dpsail.IS()
Material54.setTransparency(0.5) Appearance53.setMaterial(Material54) Shape52.setAppearance(Appearance53) Cylinder55 = x3dpsail.Cylinder() Cylinder55.setRadius(0.05) Shape52.setGeometry(Cylinder55) Transform51.addChildren(Shape52) Transform50.addChildren(Transform51) Scene7.addChildren(Transform50) ProtoDeclare56 = x3dpsail.ProtoDeclare() ProtoDeclare56.setName("x3dconnector") ProtoInterface57 = x3dpsail.ProtoInterface() field58 = x3dpsail.field() field58.setName("startnode") field58.setAccessType("initializeOnly") field58.setType("SFNode") ProtoInterface57.addField(field58) field59 = x3dpsail.field() field59.setName("endnode") field59.setAccessType("initializeOnly") field59.setType("SFNode") ProtoInterface57.addField(field59) field60 = x3dpsail.field()
head1.addMeta(meta4) meta5 = x3dpsail.meta() meta5.setName("identifier") meta5.setContent("https://coderextreme.net/X3DJSONLD/abox.x3d") head1.addMeta(meta5) meta6 = x3dpsail.meta() meta6.setName("description") meta6.setContent("a box") head1.addMeta(meta6) X3D0.setHead(head1) Scene7 = x3dpsail.Scene() ProtoDeclare8 = x3dpsail.ProtoDeclare() ProtoDeclare8.setName("anyShape") ProtoInterface9 = x3dpsail.ProtoInterface() field10 = x3dpsail.field() field10.setName("myShape") field10.setAccessType("inputOutput") field10.setType("MFNode") Shape11 = x3dpsail.Shape() Sphere12 = x3dpsail.Sphere() Shape11.setGeometry(Sphere12) field10.addChildren(Shape11) ProtoInterface9.addField(field10)
).setScene(x3dpsail.Scene().addChild(x3dpsail.ProtoDeclare().setName( x3dpsail.SFString("node")).setProtoInterface( x3dpsail.ProtoInterface().addField(x3dpsail.field().setName( x3dpsail.SFString("position")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("SFVec3f")).setValue( x3dpsail.SFString("0 0 0"))) ).setProtoBody( x3dpsail.ProtoBody().addChild(x3dpsail.Transform().setDEF( x3dpsail.SFString("transform")).setIS(x3dpsail.IS().addConnect( x3dpsail.connect().setNodeField( x3dpsail.SFString("translation")).setProtoField( x3dpsail.SFString("position")) )).addChild( x3dpsail.Shape().setGeometry( x3dpsail.Sphere()).setAppearance( x3dpsail.Appearance().setMaterial( x3dpsail.Material().setDiffuseColor( x3dpsail.SFColor(1, 0, 0)))) ).addChild(x3dpsail.Transform().setTranslation( x3dpsail.SFVec3f(1, 0, 0)).addChild( x3dpsail.Shape().setGeometry(x3dpsail.Text().setString( x3dpsail.MFString(["Node"])).setFontStyle( x3dpsail.FontStyle().setJustify( x3dpsail.MFString(["MIDDLE", "MIDDLE"])).setSize( x3dpsail.SFFloat(5)) )).setAppearance(x3dpsail.Appearance().setMaterial( x3dpsail.Material().setDiffuseColor( x3dpsail.SFColor(0, 0, 1))))))). addChild(x3dpsail.PositionInterpolator().setDEF( x3dpsail.SFString("NodePosition")).setKey( x3dpsail.MFFloat([0, 1])).setKeyValue( 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( 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"))). addChild(x3dpsail.ROUTE().setFromNode( x3dpsail.SFString("NodePosition")).setFromField( x3dpsail.SFString("value_changed")).setToNode( x3dpsail.SFString("transform")).setToField( x3dpsail.SFString("set_translation"))) )).addChild(x3dpsail.ProtoDeclare().setName(
["../data/flowerproto.json#FlowerProto"])).addField( x3dpsail.field().setName( x3dpsail.SFString("vertex")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("MFString")) ).addField(x3dpsail.field().setName( x3dpsail.SFString("fragment")).setAccessType( x3dpsail.SFString("inputOutput")).setType( x3dpsail.SFString("MFString")))). addChild(x3dpsail.ProtoDeclare().setName( x3dpsail.SFString("flower")).setProtoBody( x3dpsail.ProtoBody().addChild(x3dpsail.Group().addChild( x3dpsail.ProtoInstance().setName( x3dpsail.SFString("FlowerProto") ).addFieldValue(x3dpsail.fieldValue().setName( x3dpsail.SFString("vertex")).setValue( x3dpsail.SFString( "\"../shaders/x3dom_flowers_chromatic.vs\"") )).addFieldValue(x3dpsail.fieldValue().setName( x3dpsail.SFString("fragment")).setValue( x3dpsail.SFString( "\"../shaders/common.fs\""))))))).addChild( x3dpsail.ProtoInstance().setName( x3dpsail.SFString("flower"))). addChild(x3dpsail.ProtoInstance().setName( x3dpsail.SFString("flower"))).addChild( x3dpsail.ProtoInstance().setName( x3dpsail.SFString("flower"))).addChild( x3dpsail.ProtoInstance().setName( x3dpsail.SFString("flower"))).addChild( x3dpsail.ProtoInstance().setName(
.addChild(x3dpsail.ProtoDeclare().setName(x3dpsail.SFString("ArchPrototype")).setAppinfo(x3dpsail.SFString("Create an arch. Can modify general parameters: clearSpanWidth, riseHeight, depth, topAbutmentHeight, pierWidth, pierHeight. - Possibility to create shapes related to an arch: ArchHalf; IntradosOnly; ArchFilled; ArchHalfFilled; Lintel. See the reference file ArchModelingDiagrams.pdf to find further information. See also ArchPrototypeScript_more_readable.js.js.")) .setProtoInterface(x3dpsail.ProtoInterface() #COLOR OF ARCH #INPUT PARAMETERS #General parameters: measures in meters #Parameters to create to create shapes related to arch: put true to apply .addField(x3dpsail.field().setName(x3dpsail.SFString("diffuseColor")).setAccessType(x3dpsail.SFString("inputOutput")).setAppinfo(x3dpsail.SFString("color of arch")).setType(x3dpsail.SFString("SFColor")).setValue(x3dpsail.SFString("0.2 0.8 0.8"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("emissiveColor")).setAccessType(x3dpsail.SFString("inputOutput")).setAppinfo(x3dpsail.SFString("color of arch")).setType(x3dpsail.SFString("SFColor")).setValue(x3dpsail.SFString("0.2 0.8 0.8"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("clearSpanWidth")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("clearSpanWidth: clearSpanWidth must be double of riseHeight to obtain an half circumference")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("4"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("riseHeight")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("riseHeight: riseHeight must be half of clearSpanWidth to obtain an half circumference")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("2"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("depth")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("depth")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("3"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("topAbutmentHeight")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("topAbutmentHeight:topAbutmentHeight=0 means no topAbutment")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0.5"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("pierWidth")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("pierWidth:pierWidtht=0 means no pierWidth")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0.5"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("pierHeight")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("pierHeight: pierHeight=0 means no pierHeight")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("1"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("archHalf")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("archHalf: can modify also clearSpanWidth, riseHeight, depth, pierWidth, pierHeight, topAbutmentHeight, archHalfExtensionWidth at purpose, clearSpanWidth measure refers to a full arc, consider clearSpanWidth/2 for the archHalf width")).setType(x3dpsail.SFString("SFBool")).setValue(x3dpsail.SFString("false"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("archHalfExtensionWidth")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("archHalfExtensionWidth: measure in meters, use only if archHalf=true, it is the width of the etension of the abutment of the archHalf. See the reference file ArchModelingDiagrams.pdf to find further information.")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("onlyIntrados")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("onlyIntrados: note it is a flat curved surface, can modify also clearSpanWidth, riseHeight, depth at purpose, if needed apply archHalf=true.")).setType(x3dpsail.SFString("SFBool")).setValue(x3dpsail.SFString("false"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("archFilled")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("archFilled: note it is an half cylinder, can modify also clearSpanWidth, riseHeight, depth at purpose.")).setType(x3dpsail.SFString("SFBool")).setValue(x3dpsail.SFString("false"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("archHalfFilled")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("archHalfFilled: note it is a quarter cylinder, can modify also clearSpanWidth, riseHeight, depth at purpose, clearSpanWidth measure refers to a full arc, consider clearSpanWidth/2 for the archHalfFilled width.")).setType(x3dpsail.SFString("SFBool")).setValue(x3dpsail.SFString("false"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("lintel")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("lintel: no arc is rendered, but a lintel: topAbutmentHeight on pierHeight, total height is pierHeight + topAbutmentHeight, if needed apply archHalf=true.")).setType(x3dpsail.SFString("SFBool")).setValue(x3dpsail.SFString("false")))) .setProtoBody(x3dpsail.ProtoBody() #First node determines node type of this prototype #IndexedFaceset creates arch .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("ArchTransform")) .addChild(x3dpsail.Shape().setDEF(x3dpsail.SFString("Arch")) #note that convex='false' (meaning concave geometry) is crucial for this IFS of a geometric chord to render properly .setGeometry(x3dpsail.IndexedFaceSet().setDEF(x3dpsail.SFString("ArchIndex")).setConvex(x3dpsail.SFBool(False)).setSolid(x3dpsail.SFBool(False)) .setCoord(x3dpsail.Coordinate().setDEF(x3dpsail.SFString("ArchChord")))) .setAppearance(x3dpsail.Appearance() .setMaterial(x3dpsail.Material().setDEF(x3dpsail.SFString("MaterialNode")) .setIS(x3dpsail.IS() .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("emissiveColor")).setProtoField(x3dpsail.SFString("emissiveColor"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("diffuseColor")).setProtoField(x3dpsail.SFString("diffuseColor")))))))) #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 .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("ArchPrototypeScript")).setUrl(x3dpsail.MFString(["../node/ArchPrototypeScript.js"])) #INPUT PARAMETERS #General parameters #Parameters to create to create shapes related to arch: put true to apply #OUTPUT PARAMETERS .addField(x3dpsail.field().setName(x3dpsail.SFString("clearSpanWidth")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for clearSpanWidth parameter")).setType(x3dpsail.SFString("SFFloat"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("riseHeight")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for riseHeight parameter")).setType(x3dpsail.SFString("SFFloat"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("depth")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for depth parameter")).setType(x3dpsail.SFString("SFFloat"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("topAbutmentHeight")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for topAbutmentHeight parameter")).setType(x3dpsail.SFString("SFFloat"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("pierWidth")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for pierWidth parameter")).setType(x3dpsail.SFString("SFFloat"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("pierHeight")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for pierHeight parameter")).setType(x3dpsail.SFString("SFFloat"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("archHalf")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for archHalf parameter")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("archHalfExtensionWidth")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for archHalfExtensionWidth parameter")).setType(x3dpsail.SFString("SFFloat"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("onlyIntrados")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for onlyIntrados parameter")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("archFilled")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for archFilled parameter")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("archHalfFilled")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for archHalfFilled parameter")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("lintel")).setAccessType(x3dpsail.SFString("initializeOnly")).setAppinfo(x3dpsail.SFString("user or default input for lintel parameter")).setType(x3dpsail.SFString("SFBool"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("computedScale")).setAccessType(x3dpsail.SFString("outputOnly")).setAppinfo(x3dpsail.SFString("computedScale: modify scale field - NOTE it is not used to modify the whole arch, but to modify clearSpanWidth, riseHeight, depth. It does not affect topAbutmentHeight, pierWidth, pierHeight, archHalfExtensionWidth")).setType(x3dpsail.SFString("SFVec3f"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("pointOut")).setAccessType(x3dpsail.SFString("outputOnly")).setAppinfo(x3dpsail.SFString("send computed points to the Coordinate node")).setType(x3dpsail.SFString("MFVec3f"))) .addField(x3dpsail.field().setName(x3dpsail.SFString("indexOut")).setAccessType(x3dpsail.SFString("outputOnly")).setAppinfo(x3dpsail.SFString("send computed indices to the IndexedFaceSet node")).setType(x3dpsail.SFString("MFInt32"))) .setIS(x3dpsail.IS() .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("clearSpanWidth")).setProtoField(x3dpsail.SFString("clearSpanWidth"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("riseHeight")).setProtoField(x3dpsail.SFString("riseHeight"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("depth")).setProtoField(x3dpsail.SFString("depth"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("pierWidth")).setProtoField(x3dpsail.SFString("pierWidth"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("topAbutmentHeight")).setProtoField(x3dpsail.SFString("topAbutmentHeight"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("pierHeight")).setProtoField(x3dpsail.SFString("pierHeight"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("archHalf")).setProtoField(x3dpsail.SFString("archHalf"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("archHalfExtensionWidth")).setProtoField(x3dpsail.SFString("archHalfExtensionWidth"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("onlyIntrados")).setProtoField(x3dpsail.SFString("onlyIntrados"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("archFilled")).setProtoField(x3dpsail.SFString("archFilled"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("archHalfFilled")).setProtoField(x3dpsail.SFString("archHalfFilled"))) .addConnect(x3dpsail.connect().setNodeField(x3dpsail.SFString("lintel")).setProtoField(x3dpsail.SFString("lintel"))))) .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("computedScale")).setFromNode(x3dpsail.SFString("ArchPrototypeScript")).setToField(x3dpsail.SFString("scale")).setToNode(x3dpsail.SFString("ArchTransform"))) .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("pointOut")).setFromNode(x3dpsail.SFString("ArchPrototypeScript")).setToField(x3dpsail.SFString("point")).setToNode(x3dpsail.SFString("ArchChord"))) .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("indexOut")).setFromNode(x3dpsail.SFString("ArchPrototypeScript")).setToField(x3dpsail.SFString("set_coordIndex")).setToNode(x3dpsail.SFString("ArchIndex")))))