ProtoInterface31.addField(field35) field36 = x3dpsail.field() field36.setName("set_startpoint") field36.setAccessType("inputOnly") field36.setType("SFVec3f") ProtoInterface31.addField(field36) field37 = x3dpsail.field() field37.setName("set_endpoint") field37.setAccessType("inputOnly") field37.setType("SFVec3f") ProtoInterface31.addField(field37) ProtoDeclare30.setProtoInterface(ProtoInterface31) ProtoBody38 = x3dpsail.ProtoBody() Script39 = x3dpsail.Script() Script39.setDEF("S1") field40 = x3dpsail.field() field40.setName("startnode") field40.setAccessType("initializeOnly") field40.setType("SFNode") Script39.addField(field40) field41 = x3dpsail.field() field41.setName("endnode") field41.setAccessType("initializeOnly") field41.setType("SFNode") Script39.addField(field41) field42 = x3dpsail.field()
"../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([ "../resources/images/all_probes/stpeters_cross/stpeters_back.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"
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")))))).
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) Group16.addChildren(ProtoInstance17)
Shape14.setGeometry(Sphere15) Appearance16 = x3dpsail.Appearance() Material17 = x3dpsail.Material() Material17.setDiffuseColor([1, 1, 1]) Appearance16.setMaterial(Material17) Shape14.setAppearance(Appearance16) field13.addChildren(Shape14) ProtoInterface11.addField(field13) ProtoDeclare10.setProtoInterface(ProtoInterface11) ProtoBody18 = x3dpsail.ProtoBody() Transform19 = x3dpsail.Transform() IS20 = x3dpsail.IS() connect21 = x3dpsail.connect() connect21.setNodeField("translation") connect21.setProtoField("xtranslation") IS20.addConnect(connect21) connect22 = x3dpsail.connect() connect22.setNodeField("children") connect22.setProtoField("myShape") IS20.addConnect(connect22) Transform19.setIS(IS20)
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() connect34 = x3dpsail.connect() connect34.setNodeField("translation") connect34.setProtoField("translation") IS33.addConnect(connect34) Transform32.setIS(IS33) Shape35 = x3dpsail.Shape() Sphere36 = x3dpsail.Sphere() Sphere36.setRadius(0.1) Shape35.setGeometry(Sphere36)
)).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"))))
field12.setName("vertex") field12.setAccessType("inputOutput") field12.setType("MFString") field12.setValue("\"../shaders/gl_flowers_chromatic.vs\"") ProtoInterface11.addField(field12) field13 = x3dpsail.field() field13.setName("fragment") field13.setAccessType("inputOutput") field13.setType("MFString") field13.setValue("\"../shaders/pc_flowers.fs\"") ProtoInterface11.addField(field13) ProtoDeclare10.setProtoInterface(ProtoInterface11) ProtoBody14 = x3dpsail.ProtoBody() Transform15 = x3dpsail.Transform() Transform15.setDEF("transform") Shape16 = x3dpsail.Shape() Appearance17 = x3dpsail.Appearance() Material18 = x3dpsail.Material() Material18.setDiffuseColor([0.7, 0.7, 0.7]) Appearance17.setMaterial(Material18) ComposedCubeMapTexture19 = x3dpsail.ComposedCubeMapTexture() ComposedCubeMapTexture19.setDEF("texture") ImageTexture20 = x3dpsail.ImageTexture() ImageTexture20.setUrl([ "../resources/images/all_probes/stpeters_cross/stpeters_back.png", "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png" ])
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() field13.addChildren(Sphere14) ProtoInterface11.addField(field13) ProtoDeclare10.setProtoInterface(ProtoInterface11) ProtoBody15 = x3dpsail.ProtoBody() Transform16 = x3dpsail.Transform() IS17 = x3dpsail.IS() connect18 = x3dpsail.connect() connect18.setNodeField("translation") connect18.setProtoField("xtranslation") IS17.addConnect(connect18) Transform16.setIS(IS17) Shape19 = x3dpsail.Shape() IS20 = x3dpsail.IS() connect21 = x3dpsail.connect() connect21.setNodeField("geometry") connect21.setProtoField("myShape")
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("SFNode")).addChild( x3dpsail.Sphere())) ).setProtoBody(x3dpsail.ProtoBody().addChild( x3dpsail.Transform().setIS(x3dpsail.IS().addConnect( x3dpsail.connect().setNodeField( x3dpsail.SFString("translation")).setProtoField( x3dpsail.SFString("xtranslation")))). addChild(x3dpsail.Shape().setIS(x3dpsail.IS().addConnect( x3dpsail.connect().setNodeField( x3dpsail.SFString("geometry")).setProtoField( x3dpsail.SFString("myShape")))).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"))). addField(x3dpsail.field().setName( x3dpsail.SFString("myShape")).setAccessType( x3dpsail.SFString("inputOutput")).setType(
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("anyShape")).setIS( x3dpsail.IS().addConnect( x3dpsail.connect().setNodeField( x3dpsail.SFString("myShape")).setProtoField(
x3dpsail.MFString( ["../data/flowerproto.x3d#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/cobweb_flowers_plain.vs\"")) ).addFieldValue(x3dpsail.fieldValue().setName( x3dpsail.SFString("fragment")).setValue( x3dpsail.SFString("\"../shaders/plain.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( x3dpsail.SFString("flower"))).addChild( x3dpsail.ProtoInstance().setName( x3dpsail.SFString("flower"))))))
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() ProtoDeclare29.setName("EmissiveMaterial") ProtoInterface30 = x3dpsail.ProtoInterface()
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( x3dpsail.SFString("ytranslation")).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 .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")) )).setProtoBody( x3dpsail.
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() connect16.setNodeField("translation") connect16.setProtoField("xtranslation") IS15.addConnect(connect16) Transform14.setIS(IS15) Shape17 = x3dpsail.Shape() Sphere18 = x3dpsail.Sphere() Shape17.setGeometry(Sphere18) Appearance19 = x3dpsail.Appearance() Material20 = x3dpsail.Material()
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() connect15 = x3dpsail.connect() connect15.setNodeField("translation") connect15.setProtoField("position") IS14.addConnect(connect15) Transform13.setIS(IS14) Shape16 = x3dpsail.Shape() Sphere17 = x3dpsail.Sphere() Shape16.setGeometry(Sphere17) Appearance18 = x3dpsail.Appearance()
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) Extrusion18 = x3dpsail.Extrusion() Extrusion18.setCreaseAngle(0.785)
.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"+ " }''') )))
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() connect16 = x3dpsail.connect() connect16.setNodeField("translation") connect16.setProtoField("translation") IS15.addConnect(connect16) Transform14.setIS(IS15) Shape17 = x3dpsail.Shape() Sphere18 = x3dpsail.Sphere() Sphere18.setRadius(0.1) Shape17.setGeometry(Sphere18)
ProtoInterface57.addField(field61) 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()
field28.setValue("false") ProtoInterface15.addField(field28) field29 = x3dpsail.field() field29.setName("lintel") field29.setAccessType("initializeOnly") field29.setAppinfo( "lintel: no arc is rendered, but a lintel: topAbutmentHeight on pierHeight, total height is pierHeight + topAbutmentHeight, if needed apply archHalf=true." ) field29.setType("SFBool") field29.setValue("false") ProtoInterface15.addField(field29) ProtoDeclare14.setProtoInterface(ProtoInterface15) ProtoBody30 = x3dpsail.ProtoBody() #First node determines node type of this prototype #IndexedFaceset creates arch Transform31 = x3dpsail.Transform() Transform31.setDEF("ArchTransform") Shape32 = x3dpsail.Shape() Shape32.setDEF("Arch") #note that convex='false' (meaning concave geometry) is crucial for this IFS of a geometric chord to render properly IndexedFaceSet33 = x3dpsail.IndexedFaceSet() IndexedFaceSet33.setDEF("ArchIndex") IndexedFaceSet33.setConvex(False) IndexedFaceSet33.setSolid(False) Coordinate34 = x3dpsail.Coordinate() Coordinate34.setDEF("ArchChord") IndexedFaceSet33.setCoord(Coordinate34)
X3D0.setHead(head1) Scene7 = x3dpsail.Scene() NavigationInfo8 = x3dpsail.NavigationInfo() NavigationInfo8.setType(["EXAMINE"]) Scene7.addChildren(NavigationInfo8) Viewpoint9 = x3dpsail.Viewpoint() Viewpoint9.setPosition([0,0,4]) Viewpoint9.setOrientation([1,0,0,0]) Viewpoint9.setDescription("Bubble in action") Scene7.addChildren(Viewpoint9) ProtoDeclare10 = x3dpsail.ProtoDeclare() ProtoDeclare10.setName("Bubble") ProtoBody11 = x3dpsail.ProtoBody() Transform12 = x3dpsail.Transform() Transform12.setDEF("transform") 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)
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) ProtoDeclare8.setProtoInterface(ProtoInterface9) ProtoBody13 = x3dpsail.ProtoBody() Transform14 = x3dpsail.Transform() IS15 = x3dpsail.IS() connect16 = x3dpsail.connect() connect16.setNodeField("children") connect16.setProtoField("myShape") IS15.addConnect(connect16) Transform14.setIS(IS15) ProtoBody13.addChildren(Transform14) ProtoDeclare8.setProtoBody(ProtoBody13) Scene7.addChildren(ProtoDeclare8)
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")))
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( x3dpsail.SFString("flower"))).addChild(
.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")))))