Script65.addField(field69) field70 = x3dpsail.field() field70.setName("set_startpoint") field70.setAccessType("inputOnly") field70.setType("SFVec3f") Script65.addField(field70) field71 = x3dpsail.field() field71.setName("set_endpoint") field71.setAccessType("inputOnly") field71.setType("SFVec3f") Script65.addField(field71) IS72 = x3dpsail.IS() connect73 = x3dpsail.connect() connect73.setNodeField("startnode") connect73.setProtoField("startnode") IS72.addConnect(connect73) connect74 = x3dpsail.connect() connect74.setNodeField("endnode") connect74.setProtoField("endnode") IS72.addConnect(connect74) connect75 = x3dpsail.connect() connect75.setNodeField("transnode") connect75.setProtoField("transnode") IS72.addConnect(connect75) connect76 = x3dpsail.connect()
)).addMeta(x3dpsail.meta().setName( x3dpsail.SFString("generator")).setContent( x3dpsail.SFString( "Vim, X3D-Edit, https://savage.nps.edu/X3D-Edit"))) ).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))
Script39.addField(field43) field44 = x3dpsail.field() field44.setName("set_startpoint") field44.setAccessType("inputOnly") field44.setType("SFVec3f") Script39.addField(field44) field45 = x3dpsail.field() field45.setName("set_endpoint") field45.setAccessType("inputOnly") field45.setType("SFVec3f") Script39.addField(field45) IS46 = x3dpsail.IS() connect47 = x3dpsail.connect() connect47.setNodeField("startnode") connect47.setProtoField("startnode") IS46.addConnect(connect47) connect48 = x3dpsail.connect() connect48.setNodeField("endnode") connect48.setProtoField("endnode") IS46.addConnect(connect48) connect49 = x3dpsail.connect() connect49.setNodeField("transnode") connect49.setProtoField("transnode") IS46.addConnect(connect49) connect50 = x3dpsail.connect()
.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"+
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) Appearance19 = x3dpsail.Appearance() Material20 = x3dpsail.Material() Material20.setDiffuseColor([1, 0, 0])
#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) Shape32.setGeometry(IndexedFaceSet33) Appearance35 = x3dpsail.Appearance() Material36 = x3dpsail.Material() Material36.setDEF("MaterialNode") IS37 = x3dpsail.IS() connect38 = x3dpsail.connect() connect38.setNodeField("emissiveColor") connect38.setProtoField("emissiveColor") IS37.addConnect(connect38) connect39 = x3dpsail.connect() connect39.setNodeField("diffuseColor") connect39.setProtoField("diffuseColor") IS37.addConnect(connect39) Material36.setIS(IS37) Appearance35.setMaterial(Material36) Shape32.setAppearance(Appearance35)
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") IS20.addConnect(connect21) Shape19.setIS(IS20)
field36.setAccessType("inputOutput") field36.setValue("0.5") ComposedShader26.addField(field36) field37 = x3dpsail.field() field37.setName("pdelta") field37.setType("SFFloat") field37.setAccessType("inputOutput") field37.setValue("0.5") ComposedShader26.addField(field37) #<field name='cube' type='SFNode' accessType=\"inputOutput\"> <ComposedCubeMapTexture USE=\"texture\"/> </field> ShaderPart38 = x3dpsail.ShaderPart() ShaderPart38.setType("VERTEX") IS39 = x3dpsail.IS() connect40 = x3dpsail.connect() connect40.setNodeField("url") connect40.setProtoField("vertex") IS39.addConnect(connect40) ShaderPart38.setIS(IS39) ComposedShader26.addParts(ShaderPart38) ShaderPart41 = x3dpsail.ShaderPart() ShaderPart41.setType("FRAGMENT") IS42 = x3dpsail.IS() connect43 = x3dpsail.connect() connect43.setNodeField("url") connect43.setProtoField("fragment")
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(
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) ProtoBody18.addChildren(Transform19) ProtoDeclare10.setProtoBody(ProtoBody18)
).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"))) ).setProtoBody(x3dpsail.ProtoBody().addChild(
field31 = x3dpsail.field() field31.setName("onlyColor") field31.setAccessType("inputOutput") field31.setType("SFColor") field31.setValue("1 0 0") ProtoInterface30.addField(field31) ProtoDeclare29.setProtoInterface(ProtoInterface30) ProtoBody32 = x3dpsail.ProtoBody() #Override default diffuseColor value 0.8 0.8 0.8 Material33 = x3dpsail.Material() Material33.setDiffuseColor([0, 0, 0]) #Connect emissiveColor field of current node to onlyColor field of parent ProtoDeclare. IS34 = x3dpsail.IS() connect35 = x3dpsail.connect() connect35.setNodeField("emissiveColor") connect35.setProtoField("onlyColor") IS34.addConnect(connect35) Material33.setIS(IS34) ProtoBody32.addChildren(Material33) ProtoDeclare29.setProtoBody(ProtoBody32) Scene17.addChildren(ProtoDeclare29) ProtoDeclare36 = x3dpsail.ProtoDeclare() ProtoDeclare36.setName("ShiftGroupUp2m") ProtoInterface37 = x3dpsail.ProtoInterface()
ProtoDeclare10.setName("node") ProtoInterface11 = x3dpsail.ProtoInterface() field12 = x3dpsail.field() field12.setName("position") 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("transform") IS15 = x3dpsail.IS() connect16 = x3dpsail.connect() connect16.setNodeField("translation") connect16.setProtoField("position") IS15.addConnect(connect16) Transform14.setIS(IS15) Shape17 = x3dpsail.Shape() #comment before Sphere #comment after Sphere #comment after Appearance Sphere18 = x3dpsail.Sphere() Shape17.setGeometry(Sphere18) Appearance19 = x3dpsail.Appearance() #comment before Material
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(
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() Group13 = x3dpsail.Group() Transform14 = x3dpsail.Transform() Transform14.setDEF("transform") IS15 = x3dpsail.IS() connect16 = x3dpsail.connect() connect16.setNodeField("translation") connect16.setProtoField("position") IS15.addConnect(connect16) Transform14.setIS(IS15) Shape17 = x3dpsail.Shape() Sphere18 = x3dpsail.Sphere() Shape17.setGeometry(Sphere18) Appearance19 = x3dpsail.Appearance() Material20 = x3dpsail.Material() Material20.setDiffuseColor([1,0,0]) Appearance19.setMaterial(Material20)
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() Material20.setDiffuseColor([1, 1, 1]) Appearance19.setMaterial(Material20)
).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("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"))).
.field() .setName(x3dpsail.SFString("onlyColor")) .setAccessType(x3dpsail.SFString("inputOutput")) .setType(x3dpsail.SFString("SFColor")) .setValue(x3dpsail.SFString("1 0 0")) )).setProtoBody( x3dpsail. ProtoBody() #Override default diffuseColor value 0.8 0.8 0.8 .addChild( x3dpsail. Material() .setDiffuseColor(x3dpsail.SFColor(0, 0, 0)) #Connect emissiveColor field of current node to onlyColor field of parent ProtoDeclare. .setIS(x3dpsail.IS().addConnect(x3dpsail.connect().setNodeField( x3dpsail. SFString("emissiveColor") ).setProtoField(x3dpsail.SFString("onlyColor"))))) )).addChild(x3dpsail.ProtoDeclare().setName( x3dpsail. SFString("ShiftGroupUp2m") ).setProtoInterface(x3dpsail.ProtoInterface().addField(x3dpsail.field( ).setName(x3dpsail.SFString( "children" )).setAccessType(x3dpsail.SFString( "inputOutput" )).setType(x3dpsail.SFString( "MFNode" )).addChild( x3dpsail .Group() .setDEF(x3dpsail.SFString("DefaultNodeValue"))
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) Appearance37 = x3dpsail.Appearance() Material38 = x3dpsail.Material() Material38.setDiffuseColor([1, 0, 0])
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() Material19 = x3dpsail.Material() Material19.setDiffuseColor([1, 0, 0]) Appearance18.setMaterial(Material19)
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) ProtoDeclare17 = x3dpsail.ProtoDeclare() ProtoDeclare17.setName("one") ProtoInterface18 = x3dpsail.ProtoInterface()
.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")))