Example #1
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(x3dpsail.SFString("3.3"))
      .setHead(x3dpsail.head()
        .addComponent(x3dpsail.component().setName(x3dpsail.SFString("Shaders")).setLevel(x3dpsail.SFInt32(1)))
        .addComponent(x3dpsail.component().setName(x3dpsail.SFString("CubeMapTexturing")).setLevel(x3dpsail.SFInt32(1)))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("geo.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("John Carlson")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("manual")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("https://coderextreme.net/X3DJSONLD/geo.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("a sphere"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.NavigationInfo().setType(x3dpsail.MFString(["ANY","EXAMINE","FLY","LOOKAT"])))
        .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("Tour")).setDescription(x3dpsail.SFString("Tour Views")))
        #Viewpoint position='0 0 4' description='sphere in road'/

        .addChild(x3dpsail.Background().setBackUrl(x3dpsail.MFString(["resources/images/bBK.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bBK.png"])).setBottomUrl(x3dpsail.MFString(["resources/images/bBT.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bBT.png"])).setFrontUrl(x3dpsail.MFString(["resources/images/bFR.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bFR.png"])).setLeftUrl(x3dpsail.MFString(["resources/images/bLF.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bLF.png"])).setRightUrl(x3dpsail.MFString(["resources/images/bRT.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bRT.png"])).setTopUrl(x3dpsail.MFString(["resources/images/bTP.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bTP.png"])))
        .addChild(x3dpsail.Transform()
          .addChild(x3dpsail.Shape()
            .setGeometry(x3dpsail.Sphere())
            .setAppearance(x3dpsail.Appearance()
              .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0.7,0.7,0.7)).setSpecularColor(x3dpsail.SFColor(0.5,0.5,0.5)))
              .setTexture(x3dpsail.ComposedCubeMapTexture().setDEF(x3dpsail.SFString("texture"))
                .setBack(x3dpsail.ImageTexture().setUrl(x3dpsail.MFString(["resources/images/bBK.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bBK.png"])))
                .setBottom(x3dpsail.ImageTexture().setUrl(x3dpsail.MFString(["resources/images/bBT.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bBT.png"])))
                .setFront(x3dpsail.ImageTexture().setUrl(x3dpsail.MFString(["resources/images/bFR.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bFR.png"])))
                .setLeft(x3dpsail.ImageTexture().setUrl(x3dpsail.MFString(["resources/images/bLF.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bLF.png"])))
                .setRight(x3dpsail.ImageTexture().setUrl(x3dpsail.MFString(["resources/images/bRT.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bRT.png"])))
                .setTop(x3dpsail.ImageTexture().setUrl(x3dpsail.MFString(["resources/images/bTP.png","https://coderextreme.net/X3DJSONLD/src/main/resources/images/bTP.png"]))))
              .addShaders(x3dpsail.ComposedShader().setLanguage(x3dpsail.SFString("GLSL"))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("chromaticDispertion")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0.98 1 1.033")))
                .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("bias")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0.5")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("scale")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0.5")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("power")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFFloat")).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().setDEF(x3dpsail.SFString("common")).setUrl(x3dpsail.MFString(["../shaders/common.fs","https://coderextreme.net/X3DJSONLD/shaders/common.fs"])).setType(x3dpsail.SFString("FRAGMENT"))))
              .addShaders(x3dpsail.ComposedShader().setLanguage(x3dpsail.SFString("GLSL"))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("chromaticDispertion")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0.98 1 1.033")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("cube")).setType(x3dpsail.SFString("SFNode")).setAccessType(x3dpsail.SFString("initializeOnly"))
                  .addChild(x3dpsail.ComposedCubeMapTexture().setUSE(x3dpsail.SFString("texture"))))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("bias")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0.5")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("scale")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0.5")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("power")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFFloat")).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().setUSE(x3dpsail.SFString("common")))))))))
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
    x3dpsail.SFString("3.3")
).setHead(x3dpsail.head().addMeta(
    x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
        x3dpsail.SFString("sphereflowers.x3d"))
).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(
    x3dpsail.SFString("John Carlson")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString(
    "description"
)).setContent(x3dpsail.SFString(
    "5 or more prismatic flowers"
))).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(
    x3dpsail
    .SFString("X3D-Edit, https://savage.nps.edu/X3D-Edit")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(
    x3dpsail
    .SFString("https://coderextreme.net/X3DJSONLD/sphereflowers.x3d")
))).setScene(x3dpsail.Scene().addChild(x3dpsail.NavigationInfo(
)).addChild(x3dpsail.Background().setBackUrl(
    x3dpsail
    .MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_back.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"
    ])
).setBottomUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_bottom.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"
    ])
).setFrontUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_front.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"
    ])
).setLeftUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_left.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"
    ])
).setRightUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_right.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"
    ])
).setTopUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_top.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"
    ]))).addChild(
        x3dpsail.Group().addChild(x3dpsail.ExternProtoDeclare().setName(
            x3dpsail.SFString("FlowerProto")).setUrl(
                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_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(
                        x3dpsail.ProtoInstance().setName(
                            x3dpsail.SFString("flower"))).addChild(
                                x3dpsail.TimeSensor().setDEF(
                                    x3dpsail.SFString("SongTime")).setLoop(
                                        x3dpsail.SFBool(True))).
        addChild(x3dpsail.Sound().setMaxBack(
            x3dpsail.SFFloat(100)).setMaxFront(
                x3dpsail.SFFloat(100)).setMinBack(
                    x3dpsail.SFFloat(20)).setMinFront(x3dpsail.SFFloat(20)).
                 setSource(x3dpsail.AudioClip().setDEF(
                     x3dpsail.SFString("AudioClip")).setDescription(
                         x3dpsail.SFString("Chandubabamusic #1")).setUrl(
                             x3dpsail.MFString(
                                 ["../resources/chandubabamusic1.wav"])
                         ))).addChild(x3dpsail.ROUTE().setFromField(
                             x3dpsail.SFString("cycleTime")).setFromNode(
                                 x3dpsail.SFString("SongTime")).setToField(
                                     x3dpsail.SFString("startTime")).setToNode(
                                         x3dpsail.SFString("AudioClip"))))))
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
    x3dpsail.SFString("3.3")
).setHead(x3dpsail.head().addMeta(
    x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
        x3dpsail.SFString("sphereflowers.x3d"))
).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(
    x3dpsail.SFString("John Carlson")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString(
    "description"
)).setContent(x3dpsail.SFString(
    "5 or more prismatic flowers"
))).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(
    x3dpsail
    .SFString("X3D-Edit, https://savage.nps.edu/X3D-Edit")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(
    x3dpsail
    .SFString("https://coderextreme.net/X3DJSONLD/sphereflowers.x3d")
))).setScene(x3dpsail.Scene().addChild(x3dpsail.NavigationInfo(
)).addChild(x3dpsail.Background().setBackUrl(
    x3dpsail
    .MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_back.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"
    ])
).setBottomUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_bottom.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"
    ])
).setFrontUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_front.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"
    ])
).setLeftUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_left.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"
    ])
).setRightUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_right.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"
    ])
).setTopUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/stpeters_cross/stpeters_top.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"
    ]))).addChild(
        x3dpsail.Group().addChild(x3dpsail.ExternProtoDeclare().setName(
            x3dpsail.SFString("FlowerProto")).setUrl(
                x3dpsail.MFString(
                    ["../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(
                                    x3dpsail.SFString("flower"))).addChild(
                                        x3dpsail.ProtoInstance().setName(
                                            x3dpsail.SFString("flower"))))))
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Interchange")).setVersion(
    x3dpsail.SFString("3.0")
).setHead(x3dpsail.head().addMeta(
    x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
        x3dpsail.SFString("indexedfaceset_pixeltexture_plus.x3d"))
).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("Image")).setContent(
    x3dpsail.SFString("indexedfaceset_pixeltexture_plus-front.jpg")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("Image")).setContent(
    x3dpsail.SFString("indexedfaceset_pixeltexture_plus-rear.jpg")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("Image")).setContent(
    x3dpsail.SFString("indexedfaceset_pixeltexture_plus-top.jpg")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("Image")).setContent(
    x3dpsail.SFString("indexedfaceset_pixeltexture_plus-bottom.jpg")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("Image")).setContent(
    x3dpsail.SFString("indexedfaceset_pixeltexture_plus-left.jpg")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("Image")).setContent(
    x3dpsail.SFString("indexedfaceset_pixeltexture_plus-right.jpg")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(
    x3dpsail.SFString("http://www.nist.gov/vrml.html")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(
    x3dpsail.SFString("http://www.itl.nist.gov/div897/ctg/vrml/vrml.html")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(
    x3dpsail.SFString("http://www.itl.nist.gov/div897/ctg/vrml/members.html")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("disclaimer")).setContent(
    x3dpsail.SFString(
        "This file was provided by the National Institute of Standards and Technology, and is part of the X3D Conformance Test Suite, available at http://www.nist.gov/vrml.html The information contained within this file is provided for use in establishing conformance to the ISO VRML97 Specification. Conformance to this test does not imply recommendation or endorsement by the National Institute of Standards and Technology. This software can be redistributed and/or modified freely provided that any derivative works bear some notice that they are derived from it, and any modified versions bear some notice that they have been modified."
    )
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("info")).setContent(
    x3dpsail.SFString(
        "Correct definition and compliance of this conformance scene is maintained by the X3D Working Group, http://www.web3d.org/working-groups/x3d"
    )
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("translator")).setContent(
    x3dpsail.SFString("Michael Kass NIST, Don Brutzman NPS")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("translated")).setContent(
    x3dpsail.SFString("21 January 2001")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("modified")).setContent(
    x3dpsail.SFString("13 January 2014")
)).addMeta(x3dpsail.meta().setName(
    x3dpsail.SFString("description")
).setContent(
    x3dpsail.SFString(
        "Test of browser ability to map a 3 times multiple of an PixelTexture onto an IndexedFaceSet geometry. A 3 by 3 matrix of four equal sized red, green, white and yellow squares in the pixel texture map all the faces of the cube."
    )
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(
    x3dpsail.SFString(
        "http://www.web3d.org/x3d/content/examples/ConformanceNist/GeometricProperties/TextureCoordinate/indexedfaceset_pixeltexture_plus.x3d"
    )
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(
    x3dpsail.SFString("Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(
    x3dpsail.SFString("X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("license")).setContent(
    x3dpsail.SFString("../../license.html")))).setScene(
        x3dpsail.Scene().addChild(x3dpsail.Viewpoint().setDescription(
            x3dpsail.SFString("Front View"))).addChild(
                x3dpsail.Viewpoint().setDescription(
                    x3dpsail.SFString("Rear View")).setOrientation(
                        x3dpsail.SFRotation(0, 1, 0, 3.14)).setPosition(
                            x3dpsail.SFVec3f(0, 0, -10))).
        addChild(x3dpsail.Viewpoint().setDescription(
            x3dpsail.SFString("Top View")).setOrientation(
                x3dpsail.SFRotation(1, 0, 0, -1.57)).setPosition(
                    x3dpsail.SFVec3f(0, 10, 0))).addChild(
                        x3dpsail.Viewpoint().setDescription(
                            x3dpsail.SFString("Bottom View")).setOrientation(
                                x3dpsail.SFRotation(1, 0, 0,
                                                    1.57)).setPosition(
                                                        x3dpsail.SFVec3f(
                                                            0, -10, 0))).
        addChild(x3dpsail.Viewpoint().setDescription(
            x3dpsail.SFString("Right View")).setOrientation(
                x3dpsail.SFRotation(0, 1, 0, 1.57)).setPosition(
                    x3dpsail.SFVec3f(10, 0, 0))).addChild(
                        x3dpsail.Viewpoint().setDescription(
                            x3dpsail.SFString("Left View")).setOrientation(
                                x3dpsail.SFRotation(
                                    0, 1, 0, -1.57)).setPosition(
                                        x3dpsail.SFVec3f(-10, 0, 0))).addChild(
                                            x3dpsail.NavigationInfo().setType(
                                                x3dpsail.MFString([
                                                    "EXAMINE", "WALK", "FLY",
                                                    "ANY"
                                                ]))).
        addChild(x3dpsail.Shape().setAppearance(
            x3dpsail.Appearance().setMaterial(x3dpsail.Material()).setTexture(
                x3dpsail.PixelTexture().setImage(
                    x3dpsail.SFImage(2, 2, 4, -16776961, 16711935, -1,
                                     -65281)))
        ).setGeometry(x3dpsail.IndexedFaceSet().setColorPerVertex(
            x3dpsail.SFBool(False)).setCoordIndex(
                x3dpsail.MFInt32([
                    0, 1, 3,
                    2, -1, 4, 5, 7, 6, -1, 6, 7, 1, 0, -1, 2, 3, 5, 4, -1, 6,
                    0, 2, 4, -1, 1, 7, 5, 3, -1
                ])).setCreaseAngle(x3dpsail.SFFloat(0.5)).setTexCoordIndex(
                    x3dpsail.MFInt32([
                        0, 1, 3, 2, -1, 0, 1, 3, 2, -1, 0, 1, 3, 2, -1, 0, 1,
                        3, 2, -1, 0, 1, 3, 2, -1, 0, 1, 3, 2, -1
                    ])).setColor(x3dpsail.Color().setColor(
                        x3dpsail.MFColor([
                            0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1,
                            0
                        ]))).setCoord(x3dpsail.Coordinate().setPoint(
                            x3dpsail.MFVec3f([
                                -2, 1, 1, -2, -1, 1, 2, 1, 1, 2, -1, 1, 2, 1,
                                -1, 2, -1, -1, -2, 1, -1, -2, -1, -1
                            ]))).setTexCoord(
                                x3dpsail.TextureCoordinate().setPoint(
                                    x3dpsail.MFVec2f(
                                        [-1, 2, -1, -1, 2, 2, 2, -1])))))))
Example #5
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
    x3dpsail.SFString("3.3")
).setHead(x3dpsail.head().addMeta(
    x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
        x3dpsail.SFString("browser.x3d"))
).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(
    x3dpsail.SFString("John Carlson")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(
    x3dpsail.SFString("manual")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(
    x3dpsail
    .SFString("https://coderextreme.net/X3DJSONLD/browser.x3d")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString(
    "description"
)).setContent(
    x3dpsail
    .SFString(
        "a script test with embedded \\n between single quotes, a double backslash \\\\ a backslash \\ and a closing quote \""
    )))).setScene(x3dpsail.Scene().addChild(x3dpsail.Script().setDEF(
        x3dpsail.SFString("Browser")).setSourceCode('''ecmascript:\n"+
"                function initialize() {\n"+
"		    Browser.print('DUDES\\n'+'\"DUDETTES');\n"+
"                }''')).addChild(x3dpsail.Script().setDEF(
            x3dpsail.SFString("Clouds")).setSourceCode('''ecmascript:\n"+
"\n"+
"\n"+
"function cumulustranslation() // These values designate the boundary location of the cloud\n"+
"{\n"+
"var xxx = ' '+' '+\n"+
"'	Transform		\\n'+\n"+
"'    ' + '               	\\n';\n"+
"\n"+
"}'''))))
Example #6
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
    x3dpsail.SFString("3.3")).setHead(
        x3dpsail.head().addMeta(x3dpsail.meta().setName(
            x3dpsail.SFString("creator")).setContent(
                x3dpsail.SFString("John W Carlson"))).addMeta(
                    x3dpsail.meta().setName(
                        x3dpsail.SFString("created")).setContent(
                            x3dpsail.SFString("December 13 2015"))).
        addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
            x3dpsail.SFString("force.x3d"))).addMeta(x3dpsail.meta().setName(
                x3dpsail.SFString("identifier")).setContent(
                    x3dpsail.SFString(
                        "https://coderextreme.net/X3DJSONLD/force.x3d"))).
        addMeta(x3dpsail.meta().setName(
            x3dpsail.SFString("description")).setContent(
                x3dpsail.SFString("beginnings of a force directed graph in 3D")
            )).addMeta(x3dpsail.meta().setName(
                x3dpsail.SFString("generator")).setContent(
                    x3dpsail.SFString(
                        "Vim, X3D-Edit, https://savage.nps.edu/X3D-Edit")))
    ).setScene(x3dpsail.Scene().addChild(x3dpsail.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(
            x3dpsail.SFString("cylinder")).setProtoInterface(
                x3dpsail.ProtoInterface().addField(x3dpsail.field().setName(
                    x3dpsail.SFString("set_positionA")).setAccessType(
                        x3dpsail.SFString("inputOnly")).setType(
                            x3dpsail.SFString("SFVec3f")
                        )).addField(x3dpsail.field().setName(
                            x3dpsail.SFString("set_positionB")).setAccessType(
                                x3dpsail.SFString("inputOnly")).setType(
                                    x3dpsail.SFString("SFVec3f")))
            ).setProtoBody(x3dpsail.ProtoBody().addChild(
                x3dpsail.Shape().setGeometry(x3dpsail.Extrusion().setDEF(
                    x3dpsail.SFString("extrusion")).setCreaseAngle(
                        x3dpsail.SFFloat(0.785)).setCrossSection(
                            x3dpsail.MFVec2f([
                                1, 0, 0.92, -0.38, 0.71, -0.71, 0.38, -0.92, 0,
                                -1, -0.38, -0.92, -0.71, -0.71, -0.92, -0.38,
                                -1, 0, -0.92, 0.38, -0.71, 0.71, -0.38, 0.92,
                                0, 1, 0.38, 0.92, 0.71, 0.71, 0.92, 0.38, 1, 0
                            ])).setSpine(
                                x3dpsail.MFVec3f([
                                    0, -50, 0, 0,
                                    50, 0
                                ]))).setAppearance(
                                    x3dpsail.Appearance().setMaterial(
                                        x3dpsail.Material().setDiffuseColor(
                                            x3dpsail.SFColor(0, 1, 0))))
            ).addChild(x3dpsail.Script().setDEF(
                x3dpsail.SFString("MoveCylinder")).addField(
                    x3dpsail.field().setName(
                        x3dpsail.SFString("spine")).setAccessType(
                            x3dpsail.SFString("inputOutput")).setType(
                                x3dpsail.SFString("MFVec3f")).setValue(
                                    x3dpsail.SFString("0 -50 0 0 50 0"))
                ).addField(x3dpsail.field().setName(
                    x3dpsail.SFString("set_endA")).setAccessType(
                        x3dpsail.SFString("inputOnly")).setType(
                            x3dpsail.SFString("SFVec3f"))
                           ).addField(x3dpsail.field().setName(
                               x3dpsail.SFString("set_endB")).setAccessType(
                                   x3dpsail.SFString("inputOnly")).setType(
                                       x3dpsail.SFString("SFVec3f"))).
                       setIS(x3dpsail.IS().addConnect(
                           x3dpsail.connect().setNodeField(
                               x3dpsail.SFString("set_endA")).setProtoField(
                                   x3dpsail.SFString("set_positionA"))).
                             addConnect(x3dpsail.connect().setNodeField(
                                 x3dpsail.SFString("set_endB")).setProtoField(
                                     x3dpsail.SFString("set_positionB"))
                                        )).setSourceCode('''ecmascript:\n"+
"\n"+
"                function set_endA(value) {\n"+
"		    if (typeof spine === 'undefined') {\n"+
"		        spine = new MFVec3f([value, value]);\n"+
"		    } else {\n"+
"		        spine = new MFVec3f([value, spine[1]]);\n"+
"		    }\n"+
"                }\n"+
"\n"+
"                function set_endB(value) {\n"+
"		    if (typeof spine === 'undefined') {\n"+
"		        spine = new MFVec3f([value, value]);\n"+
"		    } else {\n"+
"		        spine = new MFVec3f([spine[0], value]);\n"+
"		    }\n"+
"                }\n"+
"\n"+
"                function set_spine(value) {\n"+
"                    spine = value;\n"+
"                }''')
                       ).addChild(x3dpsail.ROUTE().setFromNode(
                           x3dpsail.SFString("MoveCylinder")).setFromField(
                               x3dpsail.SFString("spine")).setToNode(
                                   x3dpsail.SFString("extrusion")).setToField(
                                       x3dpsail.SFString("set_spine"))))).
               addChild(x3dpsail.Transform().setDEF(
                   x3dpsail.SFString("HoldsContent")
               ).setScale(x3dpsail.SFVec3f(
                   0.1, 0.1, 0.1
               )).addChild(x3dpsail.PlaneSensor().setDEF(
                   x3dpsail.
                   SFString("clickGenerator")
               ).setMinPosition(x3dpsail.SFVec2f(
                   -50,
                   -50
               )).setMaxPosition(x3dpsail.SFVec2f(
                   50,
                   50
               )).setDescription(
                   x3dpsail
                   .SFString(
                       "click on background to add nodes, click on nodes to add links"
                   ))).addChild(
                       x3dpsail.ProtoInstance().setName(
                           x3dpsail.SFString("node")).setDEF(
                               x3dpsail.SFString("nodeA")).addFieldValue(
                                   x3dpsail.fieldValue().setName(
                                       x3dpsail.SFString("position")).setValue(
                                           x3dpsail.SFString("0 0 0")))
                   ).addChild(
                       x3dpsail.ProtoInstance().setName(
                           x3dpsail.SFString("node")).setDEF(
                               x3dpsail.SFString("nodeB")).addFieldValue(
                                   x3dpsail.fieldValue().setName(
                                       x3dpsail.SFString("position")).setValue(
                                           x3dpsail.SFString("50 50 50")))
                   ).addChild(x3dpsail.ProtoInstance().setName(
                       x3dpsail.SFString("cylinder")).setDEF(
                           x3dpsail.SFString("linkA")
                       ).addFieldValue(x3dpsail.fieldValue().setName(
                           x3dpsail.SFString("set_positionA")).setValue(
                               x3dpsail.SFString("0 0 0"))).addFieldValue(
                                   x3dpsail.fieldValue().setName(
                                       x3dpsail.SFString(
                                           "set_positionB")).setValue(
                                               x3dpsail.SFString("50 50 50"))))
                        ).addChild(x3dpsail.ROUTE().setFromNode(
                            x3dpsail.SFString("nodeA")).setFromField(
                                x3dpsail.SFString("position")).setToNode(
                                    x3dpsail.SFString("linkA")).setToField(
                                        x3dpsail.SFString("set_positionA"))).
               addChild(x3dpsail.ROUTE().setFromNode(
                   x3dpsail.SFString("nodeB")).setFromField(
                       x3dpsail.SFString("position")).setToNode(
                           x3dpsail.SFString("linkA")).setToField(
                               x3dpsail.SFString("set_positionB")))))
Example #7
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Interchange")).setVersion(x3dpsail.SFString("3.3"))
      .setHead(x3dpsail.head()
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("Table5_18PixelTexture")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("PixelTexture example for Table 5.18")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("Leonard Daly and Don Brutzman")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("created")).setContent(x3dpsail.SFString("18 December 2006")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("modified")).setContent(x3dpsail.SFString("2 April 2017")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(x3dpsail.SFString("http://X3dGraphics.com")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(x3dpsail.SFString("http://www.web3d.org/x3d/content/examples/X3dResources.html")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("rights")).setContent(x3dpsail.SFString("Copyright 2006, Daly Realism and Don Brutzman")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("subject")).setContent(x3dpsail.SFString("X3D, PixelTexture")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter05AppearanceMaterialTextures/Table5_18PixelTexture")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("license")).setContent(x3dpsail.SFString("../license.html"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.Background().setSkyColor(x3dpsail.MFColor([0,0,1])))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("Checkerboard")).setTranslation(x3dpsail.SFVec3f(0,0,-10))
          .addChild(x3dpsail.Shape()
            .setAppearance(x3dpsail.Appearance()
              .setTextureTransform(x3dpsail.TextureTransform().setScale(x3dpsail.SFVec2f(500,500)))
              .setTexture(x3dpsail.PixelTexture().setImage(x3dpsail.SFImage(2,2,3,15119869,16767927,16767927,15119869))))
            .setGeometry(x3dpsail.Box().setSize(x3dpsail.SFVec3f(1000,1000,0.01)))))
        .addChild(x3dpsail.Viewpoint().setDescription(x3dpsail.SFString("View All")).setPosition(x3dpsail.SFVec3f(0,0,20)))
        .addChild(x3dpsail.Viewpoint().setDescription(x3dpsail.SFString("Empty Image")).setPosition(x3dpsail.SFVec3f(0,5,5)))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("EmptyImage")).setRotation(x3dpsail.SFRotation(1,1,0,1)).setTranslation(x3dpsail.SFVec3f(0,5,0))
          .addChild(x3dpsail.Shape()
            .setAppearance(x3dpsail.Appearance()
              .setTexture(x3dpsail.PixelTexture()))
            .setGeometry(x3dpsail.Box().setDEF(x3dpsail.SFString("StandardBox")))))
        .addChild(x3dpsail.Viewpoint().setDescription(x3dpsail.SFString("Black and white PixelTexture")).setPosition(x3dpsail.SFVec3f(-5,0,5)))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("BW")).setRotation(x3dpsail.SFRotation(1,1,0,1)).setTranslation(x3dpsail.SFVec3f(-5,0,0))
          .addChild(x3dpsail.Shape()
            .setAppearance(x3dpsail.Appearance()
              .setTexture(x3dpsail.PixelTexture().setImage(x3dpsail.SFImage(1,2,1,255,0))))
            .setGeometry(x3dpsail.Box().setUSE(x3dpsail.SFString("StandardBox")))))
        .addChild(x3dpsail.Viewpoint().setDescription(x3dpsail.SFString("Black and white with Alpha PixelTexture")).setPosition(x3dpsail.SFVec3f(5,0,5)))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("AlphaBW")).setRotation(x3dpsail.SFRotation(1,1,0,1)).setTranslation(x3dpsail.SFVec3f(5,0,0))
          .addChild(x3dpsail.Shape()
            .setAppearance(x3dpsail.Appearance()
              .setTexture(x3dpsail.PixelTexture().setImage(x3dpsail.SFImage(2,1,2,52479,8823))))
            .setGeometry(x3dpsail.Box().setUSE(x3dpsail.SFString("StandardBox")))))
        .addChild(x3dpsail.Viewpoint().setDescription(x3dpsail.SFString("RGB PixelTexture")).setPosition(x3dpsail.SFVec3f(-5,-5,5)))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("RGB")).setRotation(x3dpsail.SFRotation(1,1,0,1)).setTranslation(x3dpsail.SFVec3f(-5,-5,0))
          .addChild(x3dpsail.Shape()
            .setAppearance(x3dpsail.Appearance()
              .setTexture(x3dpsail.PixelTexture().setImage(x3dpsail.SFImage(2,4,3,16711680,65280,0,0,0,0,16777215,16776960))))
            .setGeometry(x3dpsail.Box().setUSE(x3dpsail.SFString("StandardBox")))))
        .addChild(x3dpsail.Viewpoint().setDescription(x3dpsail.SFString("RGB with Alpha PixelTexture")).setPosition(x3dpsail.SFVec3f(5,-5,5)))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("AlphaRGB")).setRotation(x3dpsail.SFRotation(1,1,0,1)).setTranslation(x3dpsail.SFVec3f(5,-5,0))
          .addChild(x3dpsail.Shape()
            .setAppearance(x3dpsail.Appearance()
              .setTexture(x3dpsail.PixelTexture().setImage(x3dpsail.SFImage(3,2,4,-16776961,16711935,65535,-16777089,16711807,65407))))
            .setGeometry(x3dpsail.Box().setUSE(x3dpsail.SFString("StandardBox")))))))
Example #8
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Interchange")).setVersion(x3dpsail.SFString("3.0"))
      .setHead(x3dpsail.head()
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("rgb_alpha.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("Image")).setContent(x3dpsail.SFString("rgb_alpha-front.jpg")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("Image")).setContent(x3dpsail.SFString("rgb_alpha-rear.jpg")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("Image")).setContent(x3dpsail.SFString("rgb_alpha-top.jpg")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("Image")).setContent(x3dpsail.SFString("rgb_alpha-bottom.jpg")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(x3dpsail.SFString("http://www.nist.gov/vrml.html")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(x3dpsail.SFString("http://www.itl.nist.gov/div897/ctg/vrml/vrml.html")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("http://www.itl.nist.gov/div897/ctg/vrml/members.html")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("disclaimer")).setContent(x3dpsail.SFString("This file was provided by the National Institute of Standards and Technology, and is part of the X3D Conformance Test Suite, available at http://www.nist.gov/vrml.html The information contained within this file is provided for use in establishing conformance to the ISO VRML97 Specification. Conformance to this test does not imply recommendation or endorsement by the National Institute of Standards and Technology. This software can be redistributed and/or modified freely provided that any derivative works bear some notice that they are derived from it, and any modified versions bear some notice that they have been modified.")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("info")).setContent(x3dpsail.SFString("Correct definition and compliance of this conformance scene is maintained by the X3D Working Group, http://www.web3d.org/working-groups/x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("translator")).setContent(x3dpsail.SFString("Michael Kass NIST, Don Brutzman NPS")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("translated")).setContent(x3dpsail.SFString("21 January 2001")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("modified")).setContent(x3dpsail.SFString("16 January 2011")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("Test browser ability to map a RGB plus alpha opacity to geometry. A checkerboard of four colored squares: lower left (red), lower right (transparent), uppser left (transparent) and upper right (red) map onto the faces of all geometry. For the sphere, the texture should cover the entire surface, and wrap counterclockwise from the back of the sphere. For the cone, the texture should wrap counterclockwise (from above) starting at the back of the cone. A circle cutout of the texture is applied right side up to the base of the cone when the cone is tilted toward the -z axis. For the cylinder, the texture should wrap counterclockwise (from above) starting at the back of the cylinder. A circle cutout of the texture is applied right side up to the top and bottom caps of the cylinder. For the box, the texture should be applied right side up in its entirety to each face of the box.")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("http://www.web3d.org/x3d/content/examples/ConformanceNist/Appearance/PixelTexture/rgb_alpha.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("license")).setContent(x3dpsail.SFString("../../license.html"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.NavigationInfo().setType(x3dpsail.MFString(["EXAMINE","WALK","FLY","ANY"])))
        .addChild(x3dpsail.Group()
          .addChild(x3dpsail.Transform().setTranslation(x3dpsail.SFVec3f(6.14221,0.0694613,-0.000999451))
            .addChild(x3dpsail.Shape()
              .setAppearance(x3dpsail.Appearance()
                .setMaterial(x3dpsail.Material())
                .setTexture(x3dpsail.PixelTexture().setDEF(x3dpsail.SFString("RgbOpacityCheckerboard")).setImage(x3dpsail.SFImage(2,2,4,-16776961,-65536,-65536,-16776961))))
              .setGeometry(x3dpsail.Box())))
          .addChild(x3dpsail.Transform().setTranslation(x3dpsail.SFVec3f(-4.85443,0.0694381,-0.00149918))
            .addChild(x3dpsail.Shape()
              .setAppearance(x3dpsail.Appearance()
                .setMaterial(x3dpsail.Material())
                .setTexture(x3dpsail.PixelTexture().setUSE(x3dpsail.SFString("RgbOpacityCheckerboard"))))
              .setGeometry(x3dpsail.Sphere())))
          .addChild(x3dpsail.Transform().setTranslation(x3dpsail.SFVec3f(-1.47341,0.036672,-0.00175095))
            .addChild(x3dpsail.Shape()
              .setAppearance(x3dpsail.Appearance()
                .setMaterial(x3dpsail.Material())
                .setTexture(x3dpsail.PixelTexture().setUSE(x3dpsail.SFString("RgbOpacityCheckerboard"))))
              .setGeometry(x3dpsail.Cone())))
          .addChild(x3dpsail.Transform().setTranslation(x3dpsail.SFVec3f(2.31094,0.0694206,-0.00187683))
            .addChild(x3dpsail.Shape()
              .setAppearance(x3dpsail.Appearance()
                .setMaterial(x3dpsail.Material())
                .setTexture(x3dpsail.PixelTexture().setUSE(x3dpsail.SFString("RgbOpacityCheckerboard"))))
              .setGeometry(x3dpsail.Cylinder()))))))
Example #9
0
    x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
        x3dpsail.SFString("3.3")).
    setHead(x3dpsail.head().addComponent(x3dpsail.component().setName(
        x3dpsail.SFString("EnvironmentalEffects")).setLevel(
            x3dpsail.SFInt32(1))).addComponent(x3dpsail.component().setName(
                x3dpsail.SFString("EnvironmentalEffects")).setLevel(
                    x3dpsail.SFInt32(3))).addComponent(
                        x3dpsail.component().setName(
                            x3dpsail.SFString("Shaders")).setLevel(
                                x3dpsail.SFInt32(1))).
            addComponent(x3dpsail.component().setName(
                x3dpsail.SFString("CubeMapTexturing")).setLevel(
                    x3dpsail.SFInt32(1))).addMeta(x3dpsail.meta().setName(
                        x3dpsail.SFString("title")).setContent(
                            x3dpsail.SFString("ball.x3d"))).addMeta(
                                x3dpsail.meta().setName(
                                    x3dpsail.SFString("creator")).setContent(
                                        x3dpsail.SFString("John Carlson"))).
            addMeta(x3dpsail.meta().setName(x3dpsail.SFString(
                "generator")).setContent(x3dpsail.SFString("manual"))).addMeta(
                    x3dpsail.meta().setName(
                        x3dpsail.SFString("identifier")).setContent(
                            x3dpsail.SFString(
                                "https://coderextreme.net/X3DJSONLD/ball.x3d")
                        )).addMeta(x3dpsail.meta().setName(
                            x3dpsail.SFString("description")).setContent(
                                x3dpsail.SFString("a prismatic sphere")))).
    setScene(x3dpsail.Scene().addChild(x3dpsail.NavigationInfo().setType(
        x3dpsail.MFString(["ANY", "EXAMINE", "FLY", "LOOKAT"])
    )).addChild(x3dpsail.Viewpoint().setDescription(
        x3dpsail.SFString("Tour Views")
    )).addChild(x3dpsail.Background().setBackUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_back.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"
        ])
    ).setBottomUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_bottom.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"
        ])
    ).setFrontUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_front.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"
        ])
    ).setLeftUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_left.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"
        ])
    ).setRightUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_right.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"
        ])
    ).setTopUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_top.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"
        ])
    )).addChild(x3dpsail.Transform().addChild(x3dpsail.Shape().setGeometry(
        x3dpsail.Sphere()
    ).setAppearance(x3dpsail.Appearance().setMaterial(x3dpsail.Material(
    ).setDiffuseColor(x3dpsail.SFColor(
        0.7, 0.7, 0.7
    )).setSpecularColor(x3dpsail.SFColor(
        0.5, 0.5, 0.5
    ))).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"
        ]))))
                    #<ProgramShader DEF='ProgramShader' containerField='shaders' language='GLSL'> <ShaderProgram url='\"../shaders/freewrl.vs\" \"https://coderextreme.net/X3DJSONLD/shaders/freewrl.vs\"' containerField='programs' type='VERTEX'> <field name='chromaticDispertion' accessType='initializeOnly' type='SFVec3f' value='0.98 1 1.033'/> <field name='bias' accessType='initializeOnly' type='SFFloat' value='0.5'/> <field name='scale' accessType='initializeOnly' type='SFFloat' value='0.5'/> <field name='power' accessType='initializeOnly' type='SFFloat' value='2'/> </ShaderProgram> <ShaderProgram url='\"../shaders/freewrl.fs\" \"https://coderextreme.net/X3DJSONLD/shaders/freewrl.fs\"' containerField='programs' type='FRAGMENT'/> </ProgramShader>

                    #<ComposedShader language='GLSL'> <field name='chromaticDispertion' accessType='initializeOnly' type='SFVec3f' value='0.98 1 1.033'></field> <field name='fw_Texture_unit0' type='SFNode' accessType=\"initializeOnly\"> <ComposedCubeMapTexture USE=\"texture\"></ComposedCubeMapTexture> </field> <field name='bias' accessType='initializeOnly' type='SFFloat' value='0.5'></field> <field name='scale' accessType='initializeOnly' type='SFFloat' value='0.5'></field> <field name='power' accessType='initializeOnly' type='SFFloat' value='2'></field> <ShaderPart url='\"../shaders/contact.vs\" \"https://coderextreme.net/X3DJSONLD/shaders/contact.vs\"' type=\"VERTEX\" containerField='parts'></ShaderPart> <ShaderPart url='\"../shaders/common.fs\" \"https://coderextreme.net/X3DJSONLD/shaders/common.fs\"' containerField='parts' type='FRAGMENT'></ShaderPart> </ComposedShader>

                    #<ComposedShader language='GLSL'> <field name='chromaticDispertion' accessType='inputOutput' type='SFVec3f' value='0.98 1 1.033'></field> <field name='cube' type='SFNode' accessType=\"inputOutput\"> <ComposedCubeMapTexture USE=\"texture\"></ComposedCubeMapTexture> </field> <field name='bias' accessType='inputOutput' type='SFFloat' value='0.5'></field> <field name='scale' accessType='inputOutput' type='SFFloat' value='0.5'></field> <field name='power' accessType='inputOutput' type='SFFloat' value='2'></field> <ShaderPart url='\"../shaders/octaga.vs\" \"https://coderextreme.net/X3DJSONLD/shaders/octaga.vs\"' type=\"VERTEX\" containerField='parts'></ShaderPart> <ShaderPart url='\"../shaders/common.fs\" \"https://coderextreme.net/X3DJSONLD/shaders/common.fs\"' containerField='parts' type='FRAGMENT'></ShaderPart> </ComposedShader>

                    #<ComposedShader language='GLSL'> <field name='chromaticDispertion' accessType='initializeOnly' type='SFVec3f' value='0.98 1 1.033'></field> <field name='cube' accessType='initializeOnly' type='SFInt32' value='0'></field> <field name='bias' accessType='initializeOnly' type='SFFloat' value='0.5'></field> <field name='scale' accessType='initializeOnly' type='SFFloat' value='0.5'></field> <field name='power' accessType='initializeOnly' type='SFFloat' value='2'></field> <ShaderPart url='\"../shaders/instant.vs\" \"https://coderextreme.net/X3DJSONLD/shaders/instant.vs\"' type=\"VERTEX\" containerField='parts'></ShaderPart> <ShaderPart url='\"../shaders/common.fs\" \"https://coderextreme.net/X3DJSONLD/shaders/common.fs\"' containerField='parts' type='FRAGMENT'></ShaderPart> </ComposedShader>

                    #
                    .addShaders(x3dpsail.ComposedShader().setLanguage(
                        x3dpsail.SFString("GLSL")
                    ).addField(x3dpsail.field().setName(
                        x3dpsail.SFString("chromaticDispertion")
                    ).setAccessType(
                        x3dpsail.SFString("inputOutput")
                    ).setType(
                        x3dpsail.SFString("SFVec3f")
                    ).setValue(
                        x3dpsail
                        .SFString("0.98 1 1.033")
                    )).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("bias"))
                        .setAccessType(x3dpsail.SFString("inputOutput"))
                        .setType(x3dpsail.SFString("SFFloat"))
                        .setValue(x3dpsail.SFString("0.5"))
                    ).addField(
                        x3dpsail
                        .field()
                        .setName(x3dpsail.SFString("scale"))
                        .setAccessType(x3dpsail.SFString("inputOutput"))
                        .setType(x3dpsail.SFString("SFFloat"))
                        .setValue(x3dpsail.SFString("0.5"))
                    ).addField(
                        x3dpsail
                        .field()
                        .setName(x3dpsail.SFString("power"))
                        .setAccessType(x3dpsail.SFString("inputOutput"))
                        .setType(x3dpsail.SFString("SFFloat"))
                        .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().setDEF(
                        x3dpsail
                        .SFString("common")
                    ).setUrl(
                        x3dpsail
                        .MFString([
                            "../shaders/common.fs",
                            "https://coderextreme.net/X3DJSONLD/shaders/common.fs"
                        ])).setType(x3dpsail.SFString("FRAGMENT")))).
                    addShaders(x3dpsail.ComposedShader().setLanguage(
                        x3dpsail.SFString("GLSL")).addField(
                            x3dpsail.field().setName(
                                x3dpsail.SFString("chromaticDispertion")
                            ).setAccessType(
                                x3dpsail.SFString("initializeOnly")).setType(
                                    x3dpsail.SFString("SFVec3f")).setValue(
                                        x3dpsail.SFString("0.98 1 1.033"))
                        ).addField(
                            x3dpsail.field().setName(
                                x3dpsail.SFString("cube")).setType(
                                    x3dpsail.SFString("SFNode")).setAccessType(
                                        x3dpsail.SFString("initializeOnly")).
                            addChild(x3dpsail.ComposedCubeMapTexture().setUSE(
                                x3dpsail.SFString("texture")))
                        ).addField(
                            x3dpsail.field().setName(x3dpsail.SFString("bias"))
                            .setAccessType(x3dpsail.SFString("initializeOnly"))
                            .setType(x3dpsail.SFString("SFFloat"))
                            .setValue(x3dpsail.SFString("0.5"))
                        ).addField(
                            x3dpsail
                            .field()
                            .setName(x3dpsail.SFString("scale"))
                            .setAccessType(x3dpsail.SFString("initializeOnly"))
                            .setType(x3dpsail.SFString("SFFloat"))
                            .setValue(x3dpsail.SFString("0.5"))
                        ).addField(x3dpsail.field().setName(
                            x3dpsail
                            .SFString("power")
                        ).setAccessType(
                            x3dpsail.SFString("initializeOnly")
                        ).setType(
                            x3dpsail.SFString("SFFloat")
                        ).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().setUSE(
                                    x3dpsail.SFString("common")))))))))
Example #10
0
    x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
        x3dpsail.SFString("3.3")).setHead(
            x3dpsail.head().addComponent(x3dpsail.component().setName(
                x3dpsail.SFString("Geospatial")).setLevel(
                    x3dpsail.SFInt32(1))).addMeta(x3dpsail.meta().setName(
                        x3dpsail.SFString("title")).setContent(
                            x3dpsail.SFString("geobubbles.x3d"))).addMeta(
                                x3dpsail.meta().setName(
                                    x3dpsail.SFString("creator")).setContent(
                                        x3dpsail.SFString("John Carlson"))).
            addMeta(x3dpsail.meta().setName(
                x3dpsail.SFString("generator")).setContent(
                    x3dpsail.SFString("manual"))).addMeta(x3dpsail.meta(
                    ).setName(x3dpsail.SFString("identifier")).setContent(
                        x3dpsail.SFString(
                            "https://coderextreme.net/X3DJSONLD/geobubbles.x3d"
                        ))).addMeta(x3dpsail.meta().setName(
                            x3dpsail.SFString("description")).setContent(
                                x3dpsail.SFString("geo bubbles")))).
    setScene(
        x3dpsail.Scene()
        #Viewpoint DEF='Tour' position='0 0 4' orientation='1 0 0 0' description='Tour Views'/

        #PositionInterpolator DEF='TourPosition' key='0 1' keyValue='-0.5 -0.5 4 -0.5 0.5 4'/
        .addChild(x3dpsail.GeoViewpoint().setDEF(
            x3dpsail.SFString("Tour")).setPosition(x3dpsail.SFVec3d(
                0, 0, 4)).setOrientation(x3dpsail.SFRotation(
                    1, 0, 0,
                    0)).setDescription(x3dpsail.SFString("Tour Views"))).
        addChild(x3dpsail.Background().setBackUrl(
            x3dpsail.MFString([
                "../resources/images/BK.png",
                "https://coderextreme.net/X3DJSONLD/images/BK.png"
            ])).setBottomUrl(
                x3dpsail.MFString([
                    "../resources/images/BT.png",
                    "https://coderextreme.net/X3DJSONLD/images/BT.png"
                ])).setFrontUrl(
                    x3dpsail.MFString([
                        "../resources/images/FR.png",
                        "https://coderextreme.net/X3DJSONLD/images/FR.png"
                    ])).setLeftUrl(
                        x3dpsail.MFString([
                            "../resources/images/LF.png",
                            "https://coderextreme.net/X3DJSONLD/images/LF.png"
                        ])).
                 setRightUrl(
                     x3dpsail.MFString([
                         "../resources/images/RT.png",
                         "https://coderextreme.net/X3DJSONLD/images/RT.png"
                     ])).setTopUrl(
                         x3dpsail.MFString([
                             "../resources/images/TP.png",
                             "https://coderextreme.net/X3DJSONLD/images/TP.png"
                         ]))).addChild(x3dpsail.Transform().addChild(
                             x3dpsail.Shape().setGeometry(
                                 x3dpsail.Sphere()).setAppearance(
                                     x3dpsail.Appearance().setMaterial(
                                         x3dpsail.Material().setDiffuseColor(
                                             x3dpsail.SFColor(
                                                 0.7, 0.7,
                                                 0.7)).setSpecularColor(
                                                     x3dpsail.SFColor(
                                                         0.5, 0.5, 0.5)))))).
        addChild(x3dpsail.TimeSensor().setDEF(
            x3dpsail.SFString("TourTime")).setCycleInterval(
                x3dpsail.SFTime(5)).setLoop(x3dpsail.SFBool(True))).addChild(
                    x3dpsail.GeoPositionInterpolator().setDEF(
                        x3dpsail.SFString("TourPosition")).setKey(
                            x3dpsail.MFFloat([0, 1])).setKeyValue(
                                x3dpsail.MFVec3d(
                                    [0.0015708, 0, 4, 0, 0.0015708, 4]))).
        addChild(x3dpsail.Script().setDEF(x3dpsail.SFString(
            "RandomTourTime")).addField(x3dpsail.field().setName(
                x3dpsail.SFString("set_cycle")).setAccessType(
                    x3dpsail.SFString("inputOnly")).setType(
                        x3dpsail.SFString("SFTime"))).addField(
                            x3dpsail.field().setName(
                                x3dpsail.SFString("val")).setAccessType(
                                    x3dpsail.SFString("inputOutput")).setType(
                                        x3dpsail.SFString("SFFloat")).setValue(
                                            x3dpsail.SFString("0"))).
                 addField(x3dpsail.field().setName(
                     x3dpsail.SFString("positions")).setAccessType(
                         x3dpsail.SFString("inputOutput")).setType(
                             x3dpsail.SFString("MFVec3d")).setValue(
                                 x3dpsail.SFString(
                                     "0.0015708 0 4 0 0.0015708 4"))
                          ).addField(x3dpsail.field().setName(
                              x3dpsail.SFString("position")).setAccessType(
                                  x3dpsail.SFString("inputOutput")).setType(
                                      x3dpsail.SFString("MFVec3d")).setValue(
                                          x3dpsail.SFString(
                                              "0.0015708 0 4 0 0.0015708 4"))
                                     ).setSourceCode('''ecmascript:\n"+
"\n"+
"               function set_cycle(value) {\n"+
"                        var cartesianMult = -150;  // -150 if cartesian, 1 if geo\n"+
"                        var ov = val;\n"+
"			// Browser.print('old '+ov);\n"+
"                        do {\n"+
"                                val = Math.floor(Math.random()*2);\n"+
"                                var vc = val;\n"+
"                                positions[vc] = new SFVec3d(Math.round(Math.random()*2)*0.0015708*cartesianMult, Math.round(Math.random()*2)*0.0015708*cartesianMult, 4);\n"+
"                        } while ( positions[ov][0] === positions[vc][0] && positions[ov][1] === positions[vc][1] && positions[ov][2] === positions[vc][2]);\n"+
"			// Browser.println(positions[ov]);\n"+
"			// Browser.println(positions[vc]);\n"+
"                        position = new MFVec3d();\n"+
"                        position[0] = new SFVec3d(positions[ov][0],positions[ov][1],positions[ov][2]);\n"+
"                        position[1] = new SFVec3d(positions[vc][0],positions[vc][1],positions[vc][2]);\n"+
"               }''')
                 ).addChild(x3dpsail.ROUTE().setFromNode(
                     x3dpsail.SFString("TourTime")).setFromField(
                         x3dpsail.SFString("cycleTime")).setToNode(
                             x3dpsail.SFString("RandomTourTime")).setToField(
                                 x3dpsail.SFString("set_cycle"))).
        addChild(x3dpsail.ROUTE().setFromNode(
            x3dpsail.SFString("RandomTourTime")).setFromField(
                x3dpsail.SFString("position")).setToNode(
                    x3dpsail.SFString("TourPosition")).setToField(
                        x3dpsail.SFString("keyValue"))
                 ).addChild(x3dpsail.ROUTE().setFromNode(
                     x3dpsail.SFString("TourTime")).setFromField(
                         x3dpsail.SFString("fraction_changed")).setToNode(
                             x3dpsail.SFString("TourPosition")).setToField(
                                 x3dpsail.SFString("set_fraction"))).
        addChild(x3dpsail.ROUTE().setFromNode(
            x3dpsail.SFString("TourPosition")).setFromField(
                x3dpsail.SFString("geovalue_changed")).setToNode(
                    x3dpsail.SFString("Tour")).setToField(
                        x3dpsail.SFString("set_position")))))
Example #11
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(x3dpsail.SFString("3.3"))
      .setHead(x3dpsail.head()
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("BindingOperations.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("Illustrate Viewpoint binding operations (in gory detail!) as described in Chapter 4 concepts. Scene design: a TimeSensor clock drives and IntegerSequencer for each t0/t1/etc. event, and a customized Script node sends bind/unbind events to the correct Viewpoint. Display the browser console to see occurrence of each event.")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("Don Brutzman")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("created")).setContent(x3dpsail.SFString("5 January 2008")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("modified")).setContent(x3dpsail.SFString("22 July 2013")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(x3dpsail.SFString("BindingOperations.console.txt")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(x3dpsail.SFString("BindingStackOperations.png")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(x3dpsail.SFString("X3D for Web Authors, Section 2.5.1, Figure 4.1")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(x3dpsail.SFString("http://X3dGraphics.com")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(x3dpsail.SFString("http://www.web3d.org/x3d/content/examples/X3dResources.html")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("rights")).setContent(x3dpsail.SFString("Copyright Don Brutzman and Leonard Daly 2007")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("subject")).setContent(x3dpsail.SFString("X3D book, X3D graphics, X3D-Edit, http://www.x3dGraphics.com")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter04ViewingNavigation/BindingOperations.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("license")).setContent(x3dpsail.SFString("../license.html"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("View1")).setCenterOfRotation(x3dpsail.SFVec3f(-6,0,0)).setDescription(x3dpsail.SFString("Viewpoint 1")).setPosition(x3dpsail.SFVec3f(-6,0,5)))
        .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("View2")).setCenterOfRotation(x3dpsail.SFVec3f(-2,0,0)).setDescription(x3dpsail.SFString("Viewpoint 2")).setPosition(x3dpsail.SFVec3f(-2,0,5)))
        .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("View3")).setCenterOfRotation(x3dpsail.SFVec3f(2,0,0)).setDescription(x3dpsail.SFString("Viewpoint 3")).setPosition(x3dpsail.SFVec3f(2,0,5)))
        .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("View4")).setCenterOfRotation(x3dpsail.SFVec3f(6,0,0)).setDescription(x3dpsail.SFString("Viewpoint 4")).setPosition(x3dpsail.SFVec3f(6,0,5)))
        #Script initialization ought to first bind view5 below.

        .addChild(x3dpsail.Group()
          .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("Text1")).setTranslation(x3dpsail.SFVec3f(-6,0,0))
            .addChild(x3dpsail.Shape()
              .setGeometry(x3dpsail.Text().setString(x3dpsail.MFString(["View","# 1"]))
                .setFontStyle(x3dpsail.FontStyle().setDEF(x3dpsail.SFString("CenterJustify")).setJustify(x3dpsail.MFString(["MIDDLE","MIDDLE"]))))
              .setAppearance(x3dpsail.Appearance()
                .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(1,0,0))))))
          .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("Text2")).setTranslation(x3dpsail.SFVec3f(-2,0,0))
            .addChild(x3dpsail.Shape()
              .setGeometry(x3dpsail.Text().setString(x3dpsail.MFString(["View","# 2"]))
                .setFontStyle(x3dpsail.FontStyle().setUSE(x3dpsail.SFString("CenterJustify"))))
              .setAppearance(x3dpsail.Appearance()
                .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0,1,0))))))
          .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("Text3")).setTranslation(x3dpsail.SFVec3f(2,0,0))
            .addChild(x3dpsail.Shape()
              .setGeometry(x3dpsail.Text().setString(x3dpsail.MFString(["View","# 3"]))
                .setFontStyle(x3dpsail.FontStyle().setUSE(x3dpsail.SFString("CenterJustify"))))
              .setAppearance(x3dpsail.Appearance()
                .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0,0,1))))))
          .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("Text4")).setTranslation(x3dpsail.SFVec3f(6,0,0))
            .addChild(x3dpsail.Shape()
              .setGeometry(x3dpsail.Text().setString(x3dpsail.MFString(["View","# 4"]))
                .setFontStyle(x3dpsail.FontStyle().setUSE(x3dpsail.SFString("CenterJustify"))))
              .setAppearance(x3dpsail.Appearance()
                .setMaterial(x3dpsail.Material())))))
        #The following advanced animation sequence uses nodes covered in Chapters 7, 8 and 9.

        #It does not need to be studied in this chapter.

        .addChild(x3dpsail.Transform().setTranslation(x3dpsail.SFVec3f(0,-3,8))
          #notice this next Viewpoint has been transformed with the text, so its position is relative. it is called view5 in the Script.

          .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("ClickToAnimateView")).setDescription(x3dpsail.SFString("Select animation sequence")).setPosition(x3dpsail.SFVec3f(0,0,7)))
          .addChild(x3dpsail.Shape()
            .setGeometry(x3dpsail.Text().setString(x3dpsail.MFString(["Click here to animate"]))
              .setFontStyle(x3dpsail.FontStyle().setJustify(x3dpsail.MFString(["MIDDLE","BEGIN"]))))
            .setAppearance(x3dpsail.Appearance()
              .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0.8,0.4,0)))))
          .addChild(x3dpsail.Shape()
            .setGeometry(x3dpsail.Box().setSize(x3dpsail.SFVec3f(7,1,0.02)))
            .setAppearance(x3dpsail.Appearance()
              .setMaterial(x3dpsail.Material().setTransparency(x3dpsail.SFFloat(1)))))
          .addChild(x3dpsail.TouchSensor().setDEF(x3dpsail.SFString("TextTouchSensor")).setDescription(x3dpsail.SFString("Click to begin animating viewpoint selections")))
          .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("Clock")).setCycleInterval(x3dpsail.SFTime(10)))
          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("touchTime")).setFromNode(x3dpsail.SFString("TextTouchSensor")).setToField(x3dpsail.SFString("set_startTime")).setToNode(x3dpsail.SFString("Clock")))
          .addChild(x3dpsail.IntegerSequencer().setDEF(x3dpsail.SFString("TimingSequencer")).setKey(x3dpsail.MFFloat([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,1])).setKeyValue(x3dpsail.MFInt32([0,1,2,3,4,5,6,7,8,10])))
          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("fraction_changed")).setFromNode(x3dpsail.SFString("Clock")).setToField(x3dpsail.SFString("set_fraction")).setToNode(x3dpsail.SFString("TimingSequencer")))
          .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("BindingSequencerEngine"))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("set_timeEvent")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFInt32")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("bindView1")).setAccessType(x3dpsail.SFString("outputOnly")).setType(x3dpsail.SFString("SFBool")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("bindView2")).setAccessType(x3dpsail.SFString("outputOnly")).setType(x3dpsail.SFString("SFBool")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("bindView3")).setAccessType(x3dpsail.SFString("outputOnly")).setType(x3dpsail.SFString("SFBool")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("bindView4")).setAccessType(x3dpsail.SFString("outputOnly")).setType(x3dpsail.SFString("SFBool")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("bindView5")).setAccessType(x3dpsail.SFString("outputOnly")).setType(x3dpsail.SFString("SFBool")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("view1Bound")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFBool")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("view2Bound")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFBool")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("view3Bound")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFBool")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("view4Bound")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFBool")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("priorInputvalue")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFInt32")).setValue(x3dpsail.SFString("-1"))).setSourceCode('''ecmascript:\n"+
"\n"+
"function initialize ()\n"+
"{\n"+
"    bindView5 = true;\n"+
"    Browser.print ('Timing script initialized and ready for activation');\n"+
"}\n"+
"function set_timeEvent (inputValue)\n"+
"{\n"+
"    if (inputValue == priorInputvalue)\n"+
"    {\n"+
"        return; // ignore repeated inputs\n"+
"    }\n"+
"    // new value provided\n"+
"    priorInputvalue = inputValue;\n"+
"    // Browser.print ('\\ntimeEvent inputValue=' + inputValue);\n"+
"\n"+
"    // mimics user execution of Figure 4.1 steps t_0 through t_8\n"+
"    if (inputValue == 0)\n"+
"    {\n"+
"        Browser.print ('\\n===========\\n time t0');\n"+
"        bindView1 = true;\n"+
"    }\n"+
"    else if (inputValue == 1)\n"+
"    {\n"+
"        Browser.print ('\\n===========\\n time t1');\n"+
"        bindView2 = true;\n"+
"    }\n"+
"    else if (inputValue == 2)\n"+
"    {\n"+
"        Browser.print ('\\n===========\\n time t2');\n"+
"        bindView3 = true;\n"+
"    }\n"+
"    else if (inputValue == 3)\n"+
"    {\n"+
"        Browser.print ('\\n===========\\n time t3');\n"+
"        bindView3 = false;\n"+
"    }\n"+
"    else if (inputValue == 4)\n"+
"    {\n"+
"        Browser.print ('\\n===========\\n time t4');\n"+
"        bindView1 = true;\n"+
"    }\n"+
"    else if (inputValue == 5)\n"+
"    {\n"+
"        Browser.print ('\\n===========\\n time t5');\n"+
"        bindView2 = false;\n"+
"    }\n"+
"    else if (inputValue == 6)\n"+
"    {\n"+
"        Browser.print ('\\n===========\\n time t6');\n"+
"        bindView1 = false;\n"+
"    }\n"+
"    else if (inputValue == 7)\n"+
"    {\n"+
"        Browser.print ('\\n===========\\n time t7');\n"+
"        bindView4 = true;\n"+
"\n"+
"    }\n"+
"    else if (inputValue == 8)\n"+
"    {\n"+
"        Browser.print ('\\n===========\\n time t8');\n"+
"        Browser.print (', no action, all done');\n"+
"        Browser.print ('\\n\\n');\n"+
"    }\n"+
"}\n"+
"\n"+
"function view1Bound (inputValue)\n"+
"{\n"+
"    Browser.print (', view1Bound ' + (inputValue));\n"+
"    if (priorInputvalue == -1) Browser.print ('\\n');\n"+
"}\n"+
"function view2Bound (inputValue)\n"+
"{\n"+
"    Browser.print (', view2Bound ' + (inputValue));\n"+
"}\n"+
"function view3Bound (inputValue)\n"+
"{\n"+
"    Browser.print (', view3Bound ' + (inputValue));\n"+
"}\n"+
"function view4Bound (inputValue)\n"+
"{\n"+
"    Browser.print (', view4Bound ' + (inputValue));\n"+
"}\n"+
"function view5Bound (inputValue)\n"+
"{\n"+
"    Browser.print (', view5Bound ' + (inputValue));\n"+
"}''')
)
          #drive Script with TimeSensor clock

          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("value_changed")).setFromNode(x3dpsail.SFString("TimingSequencer")).setToField(x3dpsail.SFString("set_timeEvent")).setToNode(x3dpsail.SFString("BindingSequencerEngine")))
          #Script will bind and unbind Viewpoint nodes

          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("bindView1")).setFromNode(x3dpsail.SFString("BindingSequencerEngine")).setToField(x3dpsail.SFString("set_bind")).setToNode(x3dpsail.SFString("View1")))
          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("bindView2")).setFromNode(x3dpsail.SFString("BindingSequencerEngine")).setToField(x3dpsail.SFString("set_bind")).setToNode(x3dpsail.SFString("View2")))
          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("bindView3")).setFromNode(x3dpsail.SFString("BindingSequencerEngine")).setToField(x3dpsail.SFString("set_bind")).setToNode(x3dpsail.SFString("View3")))
          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("bindView4")).setFromNode(x3dpsail.SFString("BindingSequencerEngine")).setToField(x3dpsail.SFString("set_bind")).setToNode(x3dpsail.SFString("View4")))
          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("bindView5")).setFromNode(x3dpsail.SFString("BindingSequencerEngine")).setToField(x3dpsail.SFString("set_bind")).setToNode(x3dpsail.SFString("ClickToAnimateView")))
          #Viewpoint nodes report bind and unbind events

          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("isBound")).setFromNode(x3dpsail.SFString("View1")).setToField(x3dpsail.SFString("view1Bound")).setToNode(x3dpsail.SFString("BindingSequencerEngine")))
          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("isBound")).setFromNode(x3dpsail.SFString("View2")).setToField(x3dpsail.SFString("view2Bound")).setToNode(x3dpsail.SFString("BindingSequencerEngine")))
          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("isBound")).setFromNode(x3dpsail.SFString("View3")).setToField(x3dpsail.SFString("view3Bound")).setToNode(x3dpsail.SFString("BindingSequencerEngine")))
          .addChild(x3dpsail.ROUTE().setFromField(x3dpsail.SFString("isBound")).setFromNode(x3dpsail.SFString("View4")).setToField(x3dpsail.SFString("view4Bound")).setToNode(x3dpsail.SFString("BindingSequencerEngine"))))))
Example #12
0

X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(x3dpsail.SFString("3.3"))
      .setHead(x3dpsail.head()
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("John W Carlson")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("created")).setContent(x3dpsail.SFString("December 13 2015")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("force.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("https://coderextreme.net/X3DJSONLD/force.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("beginnings of a force directed graph in 3D")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("Vim, X3D-Edit, https://savage.nps.edu/X3D-Edit"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.Group()
          .addChild(x3dpsail.Shape()
            .setGeometry(x3dpsail.Extrusion().setDEF(x3dpsail.SFString("extrusion")).setSpine(x3dpsail.MFVec3f([-50,-50,0,50,50,0])).setCreaseAngle(x3dpsail.SFFloat(0.785)).setCrossSection(x3dpsail.MFVec2f([1,0,0.92,-0.38,0.71,-0.71,0.38,-0.92,0,-1,-0.38,-0.92,-0.71,-0.71,-0.92,-0.38,-1,0,-0.92,0.38,-0.71,0.71,-0.38,0.92,0,1,0.38,0.92,0.71,0.71,0.92,0.38,1,0])))
            .setAppearance(x3dpsail.Appearance()
              .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0,1,0)))))
          .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("TourTime")).setLoop(x3dpsail.SFBool(True)))
          .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("MoveCylinder"))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("set_cycle")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFTime")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("spine")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("MFVec3f")).setValue(x3dpsail.SFString("-50 -50 0 50 50 0"))).setSourceCode('''ecmascript:\n"+
"\n"+
"                function set_cycle(value) {\n"+
"                        Browser.print(value);\n"+
"                        var endA = new SFVec3f(spine[0].x*Math.random()*2, spine[0].y*Math.random()*2, spine[0].z*Math.random()*2);\n"+
"                        var endB = new SFVec3f(spine[1].x*Math.random()*2, spine[1].y*Math.random()*2, spine[1].z*Math.random()*2);\n"+
"		        spine = new MFVec3f([endA, endB]);\n"+
"                }''')
)
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("TourTime")).setFromField(x3dpsail.SFString("cycleTime")).setToNode(x3dpsail.SFString("MoveCylinder")).setToField(x3dpsail.SFString("set_cycle")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("MoveCylinder")).setFromField(x3dpsail.SFString("spine_changed")).setToNode(x3dpsail.SFString("extrusion")).setToField(x3dpsail.SFString("spine"))))))

X3D0.toFileX3D("./future/./extrusion_RoundTrip.x3d")
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Interactive")).setVersion(x3dpsail.SFString("3.1"))
      .setHead(x3dpsail.head()
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("SimpleCamera.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("Simple video camera shape")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("Jeff Weekley and Don Brutzman")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("created")).setContent(x3dpsail.SFString("2 June 2009")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("translated")).setContent(x3dpsail.SFString("2 June 2009")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("modified")).setContent(x3dpsail.SFString("13 January 2014")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("reference")).setContent(x3dpsail.SFString("CameraExamples.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("http://www.web3d.org/x3d/content/examples/Basic/development/SimpleCamera.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("license")).setContent(x3dpsail.SFString("../../license.html"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.WorldInfo().setInfo(x3dpsail.MFString(["VRML2.0 created with Version 1.3, from Alias Maya 2008"])).setTitle(x3dpsail.SFString("SimpleCamera.x3d")))
        .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("CameraShapeView")).setDescription(x3dpsail.SFString("Camera view, over the shoulder")).setPosition(x3dpsail.SFVec3f(0,0.75,3)))
        .addChild(x3dpsail.Viewpoint().setDescription(x3dpsail.SFString("Camera view through lens")).setPosition(x3dpsail.SFVec3f(0,0,0)))
        .addChild(x3dpsail.Viewpoint().setDescription(x3dpsail.SFString("Camera view from right side")).setOrientation(x3dpsail.SFRotation(0,1,0,1.5708)).setPosition(x3dpsail.SFVec3f(12,0,-4)))
        .addChild(x3dpsail.Viewpoint().setDescription(x3dpsail.SFString("Camera view from above")).setOrientation(x3dpsail.SFRotation(1,0,0,-1.5708)).setPosition(x3dpsail.SFVec3f(0,15,-5)))
        .addChild(x3dpsail.Viewpoint().setDescription(x3dpsail.SFString("Camera view from left side")).setOrientation(x3dpsail.SFRotation(0,1,0,-1.5708)).setPosition(x3dpsail.SFVec3f(-12,0,-4)))
        .addChild(x3dpsail.Transform().setScale(x3dpsail.SFVec3f(0.1,0.1,0.1)).setTranslation(x3dpsail.SFVec3f(0,-0.165,0.02))
          .addChild(x3dpsail.Switch().setWhichChoice(x3dpsail.SFInt32(-1))
            .addChild(x3dpsail.Shape()
              .setAppearance(x3dpsail.Appearance().setDEF(x3dpsail.SFString("CameraAppearance"))
                .setMaterial(x3dpsail.Material().setDEF(x3dpsail.SFString("lambert1_0")).setAmbientIntensity(x3dpsail.SFFloat(0.25)).setDiffuseColor(x3dpsail.SFColor(0.372322,0.371574,0.373173)).setShininess(x3dpsail.SFFloat(0.02)).setSpecularColor(x3dpsail.SFColor(0.890909,0.887832,0.890909))
                  #Universal Media Library: Metals 30

                  )))
            .addChild(x3dpsail.Shape()
              .setGeometry(x3dpsail.IndexedFaceSet().setDEF(x3dpsail.SFString("pCylinder1_0Geo")).setConvex(x3dpsail.SFBool(False)).setCoordIndex(x3dpsail.MFInt32([0,1,13,12,-1,1,2,14,13,-1,2,3,15,14,-1,3,4,16,15,-1,4,5,17,16,-1,5,6,18,17,-1,6,7,19,18,-1,7,8,20,19,-1,8,9,21,20,-1,9,10,22,21,-1,10,11,23,22,-1,11,0,12,23,-1,1,0,24,-1,2,1,24,-1,3,2,24,-1,4,3,24,-1,5,4,24,-1,6,5,24,-1,7,6,24,-1,8,7,24,-1,9,8,24,-1,10,9,24,-1,11,10,24,-1,0,11,24,-1,12,13,25,-1,13,14,25,-1,14,15,25,-1,15,16,25,-1,16,17,25,-1,17,18,25,-1,18,19,25,-1,19,20,25,-1,20,21,25,-1,21,22,25,-1,22,23,25,-1,23,12,25,-1])).setCreaseAngle(x3dpsail.SFFloat(0.7854))
                .setCoord(x3dpsail.Coordinate().setDEF(x3dpsail.SFString("pCylinder1GeoPoints")).setPoint(x3dpsail.MFVec3f([-0.36,-2.39,-0.26,-0.36,-1.77,-0.89,-0.36,0,-1.7,-0.36,0.85,-1.47,-0.36,1.47,-0.85,-0.36,1.7,0,-0.36,1.47,0.85,-0.36,-0.07,2.05,-0.36,-0.92,2.28,-0.36,-1.77,2.05,-0.36,-2.39,1.43,-0.36,-2.62,0.58,0.36,-2.39,-0.26,0.36,-1.77,-0.89,0.36,0,-1.7,0.36,0.85,-1.47,0.36,1.47,-0.85,0.36,1.7,0,0.36,1.47,0.85,0.36,-0.07,2.05,0.36,-0.92,2.28,0.36,-1.77,2.05,0.36,-2.39,1.43,0.36,-2.62,0.58,-0.36,-0.46,0.31,0.36,-0.46,0.31]))))
              .setAppearance(x3dpsail.Appearance().setUSE(x3dpsail.SFString("CameraAppearance"))))
            .addChild(x3dpsail.Shape()
              .setGeometry(x3dpsail.IndexedFaceSet().setDEF(x3dpsail.SFString("pCube1_0Geo")).setConvex(x3dpsail.SFBool(False)).setCoordIndex(x3dpsail.MFInt32([0,1,13,12,-1,2,3,25,24,-1,4,5,11,10,-1,6,7,19,18,-1,1,29,31,13,-1,6,18,23,14,-1,8,9,3,2,-1,10,11,15,14,-1,9,30,25,3,-1,10,21,16,4,-1,12,13,9,8,-1,13,31,30,9,-1,14,23,21,10,-1,14,15,7,6,-1,16,17,5,4,-1,18,19,29,28,-1,22,19,7,15,-1,23,18,28,27,-1,17,20,11,5,-1,16,21,26,24,-1,20,22,15,11,-1,21,23,27,26,-1,24,25,17,16,-1,31,29,19,22,-1,25,30,20,17,-1,30,31,22,20,-1,28,29,1,0,-1,27,28,0,12,-1,24,26,8,2,-1,26,27,12,8,-1])).setCreaseAngle(x3dpsail.SFFloat(0.7854))
                .setCoord(x3dpsail.Coordinate().setDEF(x3dpsail.SFString("pCube1GeoPoints")).setPoint(x3dpsail.MFVec3f([-1.03,-1.26,3,1.03,-1.26,3,-1.03,1.74,3,1.03,1.74,3,-0.78,1.21,-3,0.78,1.21,-3,-0.78,-1.3,-3,0.78,-1.3,-3,-1.03,0.27,3,1.03,0.27,3,-0.78,0.27,-3.43,0.78,0.27,-3.43,-1.03,-0.99,3,1.03,-0.99,3,-0.78,-1.05,-3.43,0.78,-1.05,-3.43,-0.79,1.56,-2.76,0.79,1.56,-2.76,-0.79,-1.56,-2.76,0.79,-1.56,-2.76,1.13,0.27,-2.76,-1.13,0.27,-2.76,1.13,-1.31,-2.76,-1.13,-1.31,-2.76,-1.02,1.73,2.69,1.02,1.73,2.69,-1.36,0.27,2.69,-1.36,-1.45,2.69,-1.02,-1.73,2.69,1.02,-1.73,2.69,1.36,0.27,2.69,1.36,-1.45,2.69]))))
              .setAppearance(x3dpsail.Appearance().setUSE(x3dpsail.SFString("CameraAppearance"))))
            .addChild(x3dpsail.Shape()
              .setGeometry(x3dpsail.IndexedFaceSet().setDEF(x3dpsail.SFString("pPipe1_0Geo")).setConvex(x3dpsail.SFBool(False)).setCoordIndex(x3dpsail.MFInt32([1,0,144,145,-1,2,1,145,146,-1,3,2,146,147,-1,4,3,147,148,-1,5,4,148,149,-1,6,5,149,150,-1,7,6,150,151,-1,8,7,151,152,-1,9,8,152,153,-1,10,9,153,154,-1,11,10,154,155,-1,0,11,155,144,-1,13,12,24,25,-1,14,13,25,26,-1,15,14,26,27,-1,16,15,27,28,-1,17,16,28,29,-1,18,17,29,30,-1,19,18,30,31,-1,20,19,31,32,-1,21,20,32,33,-1,22,21,33,34,-1,23,22,34,35,-1,12,23,35,24,-1,25,24,36,37,-1,26,25,37,38,-1,27,26,38,39,-1,28,27,39,40,-1,29,28,40,41,-1,30,29,41,42,-1,31,30,42,43,-1,32,31,43,44,-1,33,32,44,45,-1,34,33,45,46,-1,35,34,46,47,-1,24,35,47,36,-1,37,36,84,85,-1,38,37,85,86,-1,39,38,86,87,-1,40,39,87,88,-1,41,40,88,89,-1,42,41,89,90,-1,43,42,90,91,-1,44,43,91,92,-1,45,44,92,93,-1,46,45,93,94,-1,47,46,94,95,-1,36,47,95,84,-1,49,48,60,61,-1,50,49,61,62,-1,51,50,62,63,-1,52,51,63,64,-1,53,52,64,65,-1,54,53,65,66,-1,55,54,66,67,-1,56,55,67,68,-1,57,56,68,69,-1,58,57,69,70,-1,59,58,70,71,-1,48,59,71,60,-1,61,60,0,1,-1,62,61,1,2,-1,63,62,2,3,-1,64,63,3,4,-1,65,64,4,5,-1,66,65,5,6,-1,67,66,6,7,-1,68,67,7,8,-1,69,68,8,9,-1,70,69,9,10,-1,71,70,10,11,-1,60,71,11,0,-1,73,72,12,13,-1,74,73,13,14,-1,75,74,14,15,-1,76,75,15,16,-1,77,76,16,17,-1,78,77,17,18,-1,79,78,18,19,-1,80,79,19,20,-1,81,80,20,21,-1,82,81,21,22,-1,83,82,22,23,-1,72,83,23,12,-1,85,84,108,109,-1,86,85,109,110,-1,87,86,110,111,-1,88,87,111,112,-1,89,88,112,113,-1,90,89,113,114,-1,91,90,114,115,-1,92,91,115,116,-1,93,92,116,117,-1,94,93,117,118,-1,95,94,118,119,-1,84,95,119,108,-1,97,96,72,73,-1,98,97,73,74,-1,99,98,74,75,-1,100,99,75,76,-1,101,100,76,77,-1,102,101,77,78,-1,103,102,78,79,-1,104,103,79,80,-1,105,104,80,81,-1,106,105,81,82,-1,107,106,82,83,-1,96,107,83,72,-1,109,108,132,133,-1,110,109,133,134,-1,111,110,134,135,-1,112,111,135,136,-1,113,112,136,137,-1,114,113,137,138,-1,115,114,138,139,-1,116,115,139,140,-1,117,116,140,141,-1,118,117,141,142,-1,119,118,142,143,-1,108,119,143,132,-1,121,120,96,97,-1,122,121,97,98,-1,123,122,98,99,-1,124,123,99,100,-1,125,124,100,101,-1,126,125,101,102,-1,127,126,102,103,-1,128,127,103,104,-1,129,128,104,105,-1,130,129,105,106,-1,131,130,106,107,-1,120,131,107,96,-1,133,132,168,169,-1,134,133,169,170,-1,135,134,170,171,-1,136,135,171,172,-1,137,136,172,173,-1,138,137,173,174,-1,139,138,174,175,-1,140,139,175,176,-1,141,140,176,177,-1,142,141,177,178,-1,143,142,178,179,-1,132,143,179,168,-1,145,144,180,181,-1,146,145,181,182,-1,147,146,182,183,-1,148,147,183,184,-1,149,148,184,185,-1,150,149,185,186,-1,151,150,186,187,-1,152,151,187,188,-1,153,152,188,189,-1,154,153,189,190,-1,155,154,190,191,-1,144,155,191,180,-1,157,156,48,49,-1,158,157,49,50,-1,159,158,50,51,-1,160,159,51,52,-1,161,160,52,53,-1,162,161,53,54,-1,163,162,54,55,-1,164,163,55,56,-1,165,164,56,57,-1,166,165,57,58,-1,167,166,58,59,-1,156,167,59,48,-1,169,168,156,157,-1,170,169,157,158,-1,171,170,158,159,-1,172,171,159,160,-1,173,172,160,161,-1,174,173,161,162,-1,175,174,162,163,-1,176,175,163,164,-1,177,176,164,165,-1,178,177,165,166,-1,179,178,166,167,-1,168,179,167,156,-1,181,180,120,121,-1,182,181,121,122,-1,183,182,122,123,-1,184,183,123,124,-1,185,184,124,125,-1,186,185,125,126,-1,187,186,126,127,-1,188,187,127,128,-1,189,188,128,129,-1,190,189,129,130,-1,191,190,130,131,-1,180,191,131,120,-1])).setCreaseAngle(x3dpsail.SFFloat(0.7854))
                .setCoord(x3dpsail.Coordinate().setDEF(x3dpsail.SFString("pPipe1GeoPoints")).setPoint(x3dpsail.MFVec3f([0.58,0,-1.44,0.5,0.3,-1.44,0.29,0.51,-1.44,0,0.59,-1.44,-0.29,0.51,-1.44,-0.5,0.3,-1.44,-0.58,0,-1.44,-0.5,-0.3,-1.44,-0.29,-0.51,-1.44,0,-0.59,-1.44,0.29,-0.51,-1.44,0.5,-0.3,-1.44,0.34,0,1.44,0.29,0.2,1.44,0.17,0.34,1.44,0,0.4,1.44,-0.17,0.34,1.44,-0.29,0.2,1.44,-0.34,0,1.44,-0.29,-0.2,1.44,-0.17,-0.34,1.44,0,-0.4,1.44,0.17,-0.34,1.44,0.29,-0.2,1.44,0.4,0,1.44,0.34,0.23,1.44,0.2,0.4,1.44,0,0.47,1.44,-0.2,0.4,1.44,-0.34,0.23,1.44,-0.4,0,1.44,-0.34,-0.23,1.44,-0.2,-0.4,1.44,0,-0.47,1.44,0.2,-0.4,1.44,0.34,-0.23,1.44,0.46,0,1.44,0.4,0.27,1.44,0.23,0.46,1.44,0,0.53,1.44,-0.23,0.46,1.44,-0.4,0.27,1.44,-0.46,0,1.44,-0.4,-0.27,1.44,-0.23,-0.46,1.44,0,-0.53,1.44,0.23,-0.46,1.44,0.4,-0.27,1.44,0.78,0,-1.44,0.68,0.4,-1.44,0.39,0.69,-1.44,0,0.8,-1.44,-0.39,0.69,-1.44,-0.68,0.4,-1.44,-0.78,0,-1.44,-0.68,-0.4,-1.44,-0.39,-0.69,-1.44,0,-0.8,-1.44,0.39,-0.69,-1.44,0.68,-0.4,-1.44,0.68,0,-1.44,0.59,0.35,-1.44,0.34,0.6,-1.44,0,0.69,-1.44,-0.34,0.6,-1.44,-0.59,0.35,-1.44,-0.68,0,-1.44,-0.59,-0.35,-1.44,-0.34,-0.6,-1.44,0,-0.69,-1.44,0.34,-0.6,-1.44,0.59,-0.35,-1.44,0.34,0,0.99,0.29,0.2,0.99,0.17,0.34,0.99,0,0.4,0.99,-0.17,0.34,0.99,-0.29,0.2,0.99,-0.34,0,0.99,-0.29,-0.2,0.99,-0.17,-0.34,0.99,0,-0.4,0.99,0.17,-0.34,0.99,0.29,-0.2,0.99,0.46,0,0.99,0.4,0.27,0.99,0.23,0.46,0.99,0,0.53,0.99,-0.23,0.46,0.99,-0.4,0.27,0.99,-0.46,0,0.99,-0.4,-0.27,0.99,-0.23,-0.46,0.99,0,-0.53,0.99,0.23,-0.46,0.99,0.4,-0.27,0.99,0.46,0,0.07,0.4,0.23,0.07,0.23,0.4,0.07,0,0.47,0.07,-0.23,0.4,0.07,-0.4,0.23,0.07,-0.46,0,0.07,-0.4,-0.23,0.07,-0.23,-0.4,0.07,0,-0.47,0.07,0.23,-0.4,0.07,0.4,-0.23,0.07,0.62,0,0.07,0.54,0.31,0.07,0.31,0.55,0.07,0,0.63,0.07,-0.31,0.55,0.07,-0.54,0.31,0.07,-0.62,0,0.07,-0.54,-0.31,0.07,-0.31,-0.55,0.07,0,-0.63,0.07,0.31,-0.55,0.07,0.54,-0.31,0.07,0.46,0,-0.08,0.4,0.23,-0.08,0.23,0.4,-0.08,0,0.47,-0.08,-0.23,0.4,-0.08,-0.4,0.23,-0.08,-0.46,0,-0.08,-0.4,-0.23,-0.08,-0.23,-0.4,-0.08,0,-0.47,-0.08,0.23,-0.4,-0.08,0.4,-0.23,-0.08,0.62,0,-0.08,0.54,0.31,-0.08,0.31,0.55,-0.08,0,0.63,-0.08,-0.31,0.55,-0.08,-0.54,0.31,-0.08,-0.62,0,-0.08,-0.54,-0.31,-0.08,-0.31,-0.55,-0.08,0,-0.63,-0.08,0.31,-0.55,-0.08,0.54,-0.31,-0.08,0.46,0,-1.19,0.4,0.23,-1.19,0.23,0.4,-1.19,0,0.47,-1.19,-0.23,0.4,-1.19,-0.4,0.23,-1.19,-0.46,0,-1.19,-0.4,-0.23,-1.19,-0.23,-0.4,-1.19,0,-0.47,-1.19,0.23,-0.4,-1.19,0.4,-0.23,-1.19,0.62,0,-1.19,0.54,0.31,-1.19,0.31,0.55,-1.19,0,0.63,-1.19,-0.31,0.55,-1.19,-0.54,0.31,-1.19,-0.62,0,-1.19,-0.54,-0.31,-1.19,-0.31,-0.55,-1.19,0,-0.63,-1.19,0.31,-0.55,-1.19,0.54,-0.31,-1.19,0.62,0,-0.98,0.54,0.31,-0.98,0.31,0.55,-0.98,0,0.63,-0.98,-0.31,0.55,-0.98,-0.54,0.31,-0.98,-0.62,0,-0.98,-0.54,-0.31,-0.98,-0.31,-0.55,-0.98,0,-0.63,-0.98,0.31,-0.55,-0.98,0.54,-0.31,-0.98,0.46,0,-0.98,0.4,0.23,-0.98,0.23,0.4,-0.98,0,0.47,-0.98,-0.23,0.4,-0.98,-0.4,0.23,-0.98,-0.46,0,-0.98,-0.4,-0.23,-0.98,-0.23,-0.4,-0.98,0,-0.47,-0.98,0.23,-0.4,-0.98,0.4,-0.23,-0.98]))))
              .setAppearance(x3dpsail.Appearance().setUSE(x3dpsail.SFString("CameraAppearance"))))
            .addChild(x3dpsail.Shape()
              .setGeometry(x3dpsail.IndexedFaceSet().setDEF(x3dpsail.SFString("pSphere1_0Geo")).setConvex(x3dpsail.SFBool(False)).setCoordIndex(x3dpsail.MFInt32([0,1,12,11,-1,1,2,13,12,-1,2,3,14,13,-1,3,4,15,14,-1,4,5,16,15,-1,5,6,17,16,-1,6,7,18,17,-1,7,8,19,18,-1,8,9,20,19,-1,10,0,11,21,-1,11,12,23,22,-1,12,13,24,23,-1,13,14,25,24,-1,14,15,26,25,-1,15,16,27,26,-1,16,17,28,27,-1,17,18,29,28,-1,18,19,30,29,-1,19,20,31,30,-1,21,11,22,32,-1,22,23,34,33,-1,23,24,35,34,-1,24,25,36,35,-1,25,26,37,36,-1,26,27,38,37,-1,27,28,39,38,-1,28,29,40,39,-1,29,30,41,40,-1,30,31,42,41,-1,32,22,33,43,-1,33,34,45,44,-1,34,35,46,45,-1,35,36,47,46,-1,36,37,48,47,-1,37,38,49,48,-1,38,39,50,49,-1,39,40,51,50,-1,40,41,52,51,-1,41,42,53,52,-1,43,33,44,54,-1,44,45,56,55,-1,45,46,57,56,-1,46,47,58,57,-1,47,48,59,58,-1,48,49,60,59,-1,49,50,61,60,-1,50,51,62,61,-1,51,52,63,62,-1,52,53,64,63,-1,54,44,55,65,-1,55,56,67,66,-1,56,57,68,67,-1,57,58,69,68,-1,58,59,70,69,-1,59,60,71,70,-1,60,61,72,71,-1,61,62,73,72,-1,62,63,74,73,-1,63,64,75,74,-1,65,55,66,76,-1,66,67,78,77,-1,67,68,79,78,-1,68,69,80,79,-1,69,70,81,80,-1,70,71,82,81,-1,71,72,83,82,-1,72,73,84,83,-1,73,74,85,84,-1,74,75,86,85,-1,76,66,77,87,-1,77,78,89,88,-1,78,79,90,89,-1,79,80,91,90,-1,80,81,92,91,-1,81,82,93,92,-1,82,83,94,93,-1,83,84,95,94,-1,84,85,96,95,-1,85,86,97,96,-1,87,77,88,98,-1,88,89,100,99,-1,89,90,101,100,-1,90,91,102,101,-1,91,92,103,102,-1,92,93,104,103,-1,93,94,105,104,-1,94,95,106,105,-1,95,96,107,106,-1,96,97,108,107,-1,98,88,99,109,-1,99,100,111,110,-1,100,101,112,111,-1,101,102,113,112,-1,102,103,114,113,-1,103,104,115,114,-1,104,105,116,115,-1,105,106,117,116,-1,106,107,118,117,-1,107,108,119,118,-1,109,99,110,120,-1,110,111,122,121,-1,111,112,123,122,-1,112,113,124,123,-1,113,114,125,124,-1,114,115,126,125,-1,115,116,127,126,-1,116,117,128,127,-1,117,118,129,128,-1,118,119,130,129,-1,120,110,121,131,-1,121,122,133,132,-1,122,123,134,133,-1,123,124,135,134,-1,124,125,136,135,-1,125,126,137,136,-1,126,127,138,137,-1,127,128,139,138,-1,128,129,140,139,-1,129,130,141,140,-1,131,121,132,142,-1,132,133,144,143,-1,133,134,145,144,-1,134,135,146,145,-1,135,136,147,146,-1,136,137,148,147,-1,137,138,149,148,-1,138,139,150,149,-1,139,140,151,150,-1,140,141,152,151,-1,142,132,143,153,-1,143,144,155,154,-1,144,145,156,155,-1,145,146,157,156,-1,146,147,158,157,-1,147,148,159,158,-1,148,149,160,159,-1,149,150,161,160,-1,150,151,162,161,-1,151,152,163,162,-1,153,143,154,164,-1,154,155,166,165,-1,155,156,167,166,-1,156,157,168,167,-1,157,158,169,168,-1,158,159,170,169,-1,159,160,171,170,-1,160,161,172,171,-1,161,162,173,172,-1,162,163,174,173,-1,164,154,165,175,-1,165,166,177,176,-1,166,167,178,177,-1,167,168,179,178,-1,168,169,180,179,-1,169,170,181,180,-1,170,171,182,181,-1,171,172,183,182,-1,172,173,184,183,-1,173,174,185,184,-1,175,165,176,186,-1,176,177,188,187,-1,177,178,189,188,-1,178,179,190,189,-1,179,180,191,190,-1,180,181,192,191,-1,181,182,193,192,-1,182,183,194,193,-1,183,184,195,194,-1,184,185,196,195,-1,186,176,187,197,-1,187,188,199,198,-1,188,189,200,199,-1,189,190,201,200,-1,190,191,202,201,-1,191,192,203,202,-1,192,193,204,203,-1,193,194,205,204,-1,194,195,206,205,-1,195,196,207,206,-1,197,187,198,208,-1,1,0,209,-1,2,1,209,-1,3,2,209,-1,4,3,209,-1,5,4,209,-1,6,5,209,-1,7,6,209,-1,8,7,209,-1,198,199,210,-1,199,200,210,-1,200,201,210,-1,201,202,210,-1,202,203,210,-1,203,204,210,-1,204,205,210,-1,205,206,210,-1])).setCreaseAngle(x3dpsail.SFFloat(0.7854))
                .setCoord(x3dpsail.Coordinate().setDEF(x3dpsail.SFString("pSphere1GeoPoints")).setPoint(x3dpsail.MFVec3f([0.06,-0.43,-0.02,0.05,-0.43,-0.04,0.04,-0.43,-0.05,0.02,-0.43,-0.06,0,-0.43,-0.07,-0.02,-0.43,-0.06,-0.04,-0.43,-0.05,-0.05,-0.43,-0.04,-0.06,-0.43,-0.02,-0.07,-0.43,0,0.07,-0.43,0,0.13,-0.41,-0.04,0.11,-0.41,-0.08,0.08,-0.41,-0.11,0.04,-0.41,-0.13,0,-0.41,-0.13,-0.04,-0.41,-0.13,-0.08,-0.41,-0.11,-0.11,-0.41,-0.08,-0.13,-0.41,-0.04,-0.13,-0.41,0,0.13,-0.41,0,0.19,-0.38,-0.06,0.16,-0.38,-0.11,0.11,-0.38,-0.16,0.06,-0.38,-0.19,0,-0.38,-0.2,-0.06,-0.38,-0.19,-0.11,-0.38,-0.16,-0.16,-0.38,-0.11,-0.19,-0.38,-0.06,-0.2,-0.38,0,0.2,-0.38,0,0.24,-0.35,-0.08,0.2,-0.35,-0.15,0.15,-0.35,-0.2,0.08,-0.35,-0.24,0,-0.35,-0.25,-0.08,-0.35,-0.24,-0.15,-0.35,-0.2,-0.2,-0.35,-0.15,-0.24,-0.35,-0.08,-0.25,-0.35,0,0.25,-0.35,0,0.29,-0.3,-0.09,0.25,-0.3,-0.18,0.18,-0.3,-0.25,0.09,-0.3,-0.29,0,-0.3,-0.3,-0.09,-0.3,-0.29,-0.18,-0.3,-0.25,-0.25,-0.3,-0.18,-0.29,-0.3,-0.09,-0.3,-0.3,0,0.3,-0.3,0,0.33,-0.25,-0.11,0.28,-0.25,-0.2,0.2,-0.25,-0.28,0.11,-0.25,-0.33,0,-0.25,-0.35,-0.11,-0.25,-0.33,-0.2,-0.25,-0.28,-0.28,-0.25,-0.2,-0.33,-0.25,-0.11,-0.35,-0.25,0,0.35,-0.25,0,0.37,-0.2,-0.12,0.31,-0.2,-0.23,0.23,-0.2,-0.31,0.12,-0.2,-0.37,0,-0.2,-0.38,-0.12,-0.2,-0.37,-0.23,-0.2,-0.31,-0.31,-0.2,-0.23,-0.37,-0.2,-0.12,-0.38,-0.2,0,0.38,-0.2,0,0.39,-0.13,-0.13,0.33,-0.13,-0.24,0.24,-0.13,-0.33,0.13,-0.13,-0.39,0,-0.13,-0.41,-0.13,-0.13,-0.39,-0.24,-0.13,-0.33,-0.33,-0.13,-0.24,-0.39,-0.13,-0.13,-0.41,-0.13,0,0.41,-0.13,0,0.4,-0.07,-0.13,0.34,-0.07,-0.25,0.25,-0.07,-0.34,0.13,-0.07,-0.4,0,-0.07,-0.43,-0.13,-0.07,-0.4,-0.25,-0.07,-0.34,-0.34,-0.07,-0.25,-0.4,-0.07,-0.13,-0.43,-0.07,0,0.43,-0.07,0,0.41,0,-0.13,0.35,0,-0.25,0.25,0,-0.35,0.13,0,-0.41,0,0,-0.43,-0.13,0,-0.41,-0.25,0,-0.35,-0.35,0,-0.25,-0.41,0,-0.13,-0.43,0,0,0.43,0,0,0.4,0.07,-0.13,0.34,0.07,-0.25,0.25,0.07,-0.34,0.13,0.07,-0.4,0,0.07,-0.43,-0.13,0.07,-0.4,-0.25,0.07,-0.34,-0.34,0.07,-0.25,-0.4,0.07,-0.13,-0.43,0.07,0,0.43,0.07,0,0.39,0.13,-0.13,0.33,0.13,-0.24,0.24,0.13,-0.33,0.13,0.13,-0.39,0,0.13,-0.41,-0.13,0.13,-0.39,-0.24,0.13,-0.33,-0.33,0.13,-0.24,-0.39,0.13,-0.13,-0.41,0.13,0,0.41,0.13,0,0.37,0.2,-0.12,0.31,0.2,-0.23,0.23,0.2,-0.31,0.12,0.2,-0.37,0,0.2,-0.38,-0.12,0.2,-0.37,-0.23,0.2,-0.31,-0.31,0.2,-0.23,-0.37,0.2,-0.12,-0.38,0.2,0,0.38,0.2,0,0.33,0.25,-0.11,0.28,0.25,-0.2,0.2,0.25,-0.28,0.11,0.25,-0.33,0,0.25,-0.35,-0.11,0.25,-0.33,-0.2,0.25,-0.28,-0.28,0.25,-0.2,-0.33,0.25,-0.11,-0.35,0.25,0,0.35,0.25,0,0.29,0.3,-0.09,0.25,0.3,-0.18,0.18,0.3,-0.25,0.09,0.3,-0.29,0,0.3,-0.3,-0.09,0.3,-0.29,-0.18,0.3,-0.25,-0.25,0.3,-0.18,-0.29,0.3,-0.09,-0.3,0.3,0,0.3,0.3,0,0.24,0.35,-0.08,0.2,0.35,-0.15,0.15,0.35,-0.2,0.08,0.35,-0.24,0,0.35,-0.25,-0.08,0.35,-0.24,-0.15,0.35,-0.2,-0.2,0.35,-0.15,-0.24,0.35,-0.08,-0.25,0.35,0,0.25,0.35,0,0.19,0.38,-0.06,0.16,0.38,-0.11,0.11,0.38,-0.16,0.06,0.38,-0.19,0,0.38,-0.2,-0.06,0.38,-0.19,-0.11,0.38,-0.16,-0.16,0.38,-0.11,-0.19,0.38,-0.06,-0.2,0.38,0,0.2,0.38,0,0.13,0.41,-0.04,0.11,0.41,-0.08,0.08,0.41,-0.11,0.04,0.41,-0.13,0,0.41,-0.13,-0.04,0.41,-0.13,-0.08,0.41,-0.11,-0.11,0.41,-0.08,-0.13,0.41,-0.04,-0.13,0.41,0,0.13,0.41,0,0.06,0.43,-0.02,0.05,0.43,-0.04,0.04,0.43,-0.05,0.02,0.43,-0.06,0,0.43,-0.07,-0.02,0.43,-0.06,-0.04,0.43,-0.05,-0.05,0.43,-0.04,-0.06,0.43,-0.02,-0.07,0.43,0,0.07,0.43,0,0,-0.43,0,0,0.43,0]))))
              .setAppearance(x3dpsail.Appearance().setUSE(x3dpsail.SFString("CameraAppearance")))))
          .addChild(x3dpsail.Group()
            .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("pCylinder1")).setRotation(x3dpsail.SFRotation(-1,0,0,0.373518)).setTranslation(x3dpsail.SFVec3f(-0.038462,3.596312,3.297562))
              .addChild(x3dpsail.Shape()
                .setAppearance(x3dpsail.Appearance().setUSE(x3dpsail.SFString("CameraAppearance")))
                .setGeometry(x3dpsail.IndexedFaceSet().setUSE(x3dpsail.SFString("pCylinder1_0Geo")))))
            .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("pCube1")).setScale(x3dpsail.SFVec3f(1,0.727134,0.801457)).setTranslation(x3dpsail.SFVec3f(-0.030769,1.738461,1.4436))
              .addChild(x3dpsail.Shape()
                .setAppearance(x3dpsail.Appearance().setUSE(x3dpsail.SFString("CameraAppearance")))
                .setGeometry(x3dpsail.IndexedFaceSet().setUSE(x3dpsail.SFString("pCube1_0Geo")))))
            .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("pPipe1")).setScale(x3dpsail.SFVec3f(1,1,0.569444)).setTranslation(x3dpsail.SFVec3f(0.015385,1.630769,-1.973274))
              .addChild(x3dpsail.Shape()
                .setAppearance(x3dpsail.Appearance().setUSE(x3dpsail.SFString("CameraAppearance")))
                .setGeometry(x3dpsail.IndexedFaceSet().setUSE(x3dpsail.SFString("pPipe1_0Geo")))))
            .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("pSphere1")).setScale(x3dpsail.SFVec3f(1.1,1.1,0.1)).setTranslation(x3dpsail.SFVec3f(-0.015385,1.628515,-2.569231))
              .addChild(x3dpsail.Shape()
                .setAppearance(x3dpsail.Appearance().setUSE(x3dpsail.SFString("CameraAppearance")))
                .setGeometry(x3dpsail.IndexedFaceSet().setUSE(x3dpsail.SFString("pSphere1_0Geo")))))))))
Example #14
0
 x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).
 setVersion(x3dpsail.SFString("3.3")).setHead(x3dpsail.head().addMeta(
     x3dpsail.meta().setContent(
         x3dpsail.SFString("HelloWorld.x3d")).setName(
             x3dpsail.SFString("title"))
 ).addMeta(x3dpsail.meta().setContent(
     x3dpsail.SFString("Simple X3D scene example: Hello World!")
 ).setName(
     x3dpsail.SFString("description")
 )).addMeta(x3dpsail.meta().setContent(x3dpsail.SFString(
     "30 October 2000"
 )).setName(x3dpsail.SFString(
     "created"
 ))).addMeta(x3dpsail.meta().setContent(x3dpsail.SFString(
     "14 April 2017"
 )).setName(x3dpsail.SFString(
     "modified"
 ))).addMeta(x3dpsail.meta().setContent(x3dpsail.SFString(
     "Don Brutzman"
 )).setName(x3dpsail.SFString(
     "creator"
 ))).addMeta(x3dpsail.meta().setContent(
     x3dpsail
     .SFString("HelloWorld.tall.png")
 ).setName(x3dpsail.SFString(
     "Image"
 ))).addMeta(x3dpsail.meta().setContent(
     x3dpsail
     .SFString("http://en.wikipedia.org/wiki/Hello_world")
 ).setName(x3dpsail.SFString(
     "reference"
 ))).addMeta(x3dpsail.meta().setContent(
     x3dpsail
     .SFString(
         "https://en.wikipedia.org/wiki/Hello#.22Hello.2C_World.22_computer_program"
     )
 ).setName(x3dpsail.SFString(
     "reference"
 ))).addMeta(x3dpsail.meta().setContent(
     x3dpsail
     .SFString("https://en.wikipedia.org/wiki/\"Hello,_World!\"_program")
 ).setName(x3dpsail.SFString(
     "reference"
 ))).addMeta(x3dpsail.meta().setContent(
     x3dpsail
     .SFString(
         "http://en.wikibooks.org/w/index.php?title=Computer_Programming/Hello_world"
     )
 ).setName(x3dpsail.SFString("reference"))).addMeta(
     x3dpsail.meta().
     setContent(x3dpsail.SFString("http://www.HelloWorldExample.net"
                                  )).setName(x3dpsail.SFString("reference"))
 ).addMeta(x3dpsail.meta().setContent(
     x3dpsail
     .SFString("http://www.web3D.org")
 ).setName(x3dpsail.SFString(
     "reference"
 ))).addMeta(x3dpsail.meta().setContent(
     x3dpsail
     .SFString(
         "http://www.web3d.org/realtime-3d/news/internationalization-x3d")
 ).setName(x3dpsail.SFString(
     "reference"
 ))).addMeta(x3dpsail.meta().setContent(
     x3dpsail
     .SFString("http://www.web3d.org/x3d/content/examples/HelloWorld.x3d")
 ).setName(x3dpsail.SFString(
     "reference"
 ))).addMeta(x3dpsail.meta().setContent(
     x3dpsail
     .SFString(
         "http://X3dGraphics.com/examples/X3dForAdvancedModeling/HelloWorldScenes"
     )
 ).setName(x3dpsail.SFString("reference"))).addMeta(x3dpsail.meta(
 ).setContent(
     x3dpsail
     .SFString(
         "http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorld.x3d"
     )).setName(x3dpsail.SFString("identifier"))).addMeta(
         x3dpsail.meta().setContent(
             x3dpsail.SFString(
                 "http://www.web3d.org/x3d/content/examples/license.html")
         ).setName(x3dpsail.SFString("license"))).addMeta(x3dpsail.meta(
         ).setContent(
             x3dpsail.SFString(
                 "X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit")).setName(
                     x3dpsail.SFString("generator")))
                                              # Alternate encodings: VRML97, X3D ClassicVRML Encoding, X3D Compressed Binary Encoding (CBE), X3DOM, JSON
                                              .addMeta(x3dpsail.meta(
                                              ).setContent(
                                                  x3dpsail.SFString(
                                                      "HelloWorld.wrl"
                                                  )).setName(
                                                      x3dpsail.SFString(
                                                          "reference")
                                                  )).addMeta(x3dpsail.meta(
                                                  ).setContent(
                                                      x3dpsail.SFString(
                                                          "HelloWorld.x3dv")
                                                  ).setName(
                                                      x3dpsail.SFString(
                                                          "reference")
                                                  )).addMeta(x3dpsail.meta(
                                                  ).setContent(
                                                      x3dpsail.SFString(
                                                          "HelloWorld.x3db")
                                                  ).setName(
                                                      x3dpsail.SFString(
                                                          "reference"))).
                                              addMeta(x3dpsail.meta(
                                              ).setContent(
                                                  x3dpsail.SFString(
                                                      "HelloWorld.xhtml"
                                                  )).setName(
                                                      x3dpsail.SFString(
                                                          "reference")
                                                  )).addMeta(x3dpsail.meta(
                                                  ).setContent(
                                                      x3dpsail.SFString(
                                                          "HelloWorld.json")
                                                  ).setName(
                                                      x3dpsail.SFString(
                                                          "reference")))).
 setScene(
     x3dpsail.Scene()
     # Example scene to illustrate X3D nodes and fields (XML elements and attributes)
     .addChild(x3dpsail.WorldInfo().setTitle(
         x3dpsail.SFString("Hello world!")
     )).addChild(x3dpsail.Group().addChild(
         x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("ViewUpClose")).
         setCenterOfRotation(x3dpsail.SFVec3f(0, -1, 0))
         .setDescription(x3dpsail.SFString("Hello world!"))
         .setPosition(x3dpsail.SFVec3f(0, -1, 7))
     ).addChild(x3dpsail.Transform(
     ).setRotation(x3dpsail.SFRotation(
         0, 1, 0, 3
     )).addChild(x3dpsail.Shape().setGeometry(x3dpsail.Sphere(
     )).setAppearance(x3dpsail.Appearance().setMaterial(x3dpsail.Material(
     ).setDEF(x3dpsail.SFString(
         "MaterialLightBlue"
     )).setDiffuseColor(x3dpsail.SFColor(
         0.1, 0.5, 1
     ))).setTexture(x3dpsail.ImageTexture().setDEF(
         x3dpsail
         .SFString("ImageCloudlessEarth")
     ).setUrl(
         x3dpsail
         .MFString([
             "earth-topo.png", "earth-topo.jpg",
             "earth-topo-small.gif",
             "http://www.web3d.org/x3d/content/examples/Basic/earth-topo.png",
             "http://www.web3d.org/x3d/content/examples/Basic/earth-topo.jpg",
             "http://www.web3d.org/x3d/content/examples/Basic/earth-topo-small.gif"
         ])))))).addChild(x3dpsail.Transform().setTranslation(
             x3dpsail.SFVec3f(0, -2, 0)).addChild(
                 x3dpsail.Shape().setGeometry(x3dpsail.Text().setDEF(
                     x3dpsail.SFString("TextMessage")).setString(
                         x3dpsail.MFString([
                             "Hello", "world!"
                         ])).setFontStyle(x3dpsail.FontStyle().setJustify(
                             x3dpsail.MFString(["MIDDLE", "MIDDLE"])))).
                 setAppearance(x3dpsail.Appearance().setMaterial(
                     x3dpsail.Material().setUSE(
                         x3dpsail.SFString("MaterialLightBlue")))))))))
Example #15
0
import x3dpsail


X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(x3dpsail.SFString("3.3"))
      .setHead(x3dpsail.head()
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("hand conversion from http://www.x3dom.org/x3dom/test/functional/flipper.html")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("flipper.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("flipper flopping around")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("http://www.x3dom.org/x3dom/test/functional/flipper.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("Yvonne Jung, metadata by John Carlson"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("cam0")).setDescription(x3dpsail.SFString("cam0 description")).setPosition(x3dpsail.SFVec3f(0,0,800)))
        .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("cam1")).setDescription(x3dpsail.SFString("cam1 description")).setPosition(x3dpsail.SFVec3f(0,0,2000)))
        .addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString("cam2")).setDescription(x3dpsail.SFString("cam2 description")).setPosition(x3dpsail.SFVec3f(0,200,1000)))
        .addChild(x3dpsail.Background().setGroundAngle(x3dpsail.MFFloat([0.9,1.5,1.57])).setGroundColor(x3dpsail.MFColor([0.21,0.18,0.66,0.2,0.44,0.85,0.51,0.81,0.95,0.51,0.81,0.95])).setSkyAngle(x3dpsail.MFFloat([0.9,1.5,1.57])).setSkyColor(x3dpsail.MFColor([0.21,0.18,0.66,0.2,0.44,0.85,0.51,0.81,0.95,0.51,0.81,0.95])))
        .addChild(x3dpsail.NavigationInfo().setDEF(x3dpsail.SFString("user01")).setSpeed(x3dpsail.SFFloat(50)))
        .addChild(x3dpsail.Fog())
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("trans")).setRotation(x3dpsail.SFRotation(1,0,0,0.78))
          .addChild(x3dpsail.Shape()
            .setAppearance(x3dpsail.Appearance()
              .setMaterial(x3dpsail.Material().setDEF(x3dpsail.SFString("mat")).setAmbientIntensity(x3dpsail.SFFloat(0.508497)).setDiffuseColor(x3dpsail.SFColor(0.337255,0.4,0.788235)).setSpecularColor(x3dpsail.SFColor(1,1,1))))
            .setGeometry(x3dpsail.IndexedFaceSet().setCreaseAngle(x3dpsail.SFFloat(2)).setCoordIndex(x3dpsail.MFInt32([0,1,2,-1,2,3,0,-1,3,2,4,-1,4,5,3,-1,5,4,6,-1,6,7,5,-1,7,6,8,-1,9,10,11,-1,12,0,3,-1,3,13,12,-1,13,3,5,-1,5,14,13,-1,14,5,7,-1,15,16,17,-1,16,15,18,-1,18,19,16,-1,20,21,22,-1,22,23,20,-1,24,20,23,-1,23,22,25,-1,25,26,23,-1,26,25,1,-1,1,0,26,-1,26,0,27,-1,27,0,12,-1,12,28,27,-1,28,12,9,-1,9,29,28,-1,29,9,11,-1,30,29,11,-1,11,31,30,-1,30,31,32,-1,32,33,30,-1,33,32,34,-1,34,35,33,-1,35,34,36,-1,36,37,35,-1,37,36,38,-1,38,39,37,-1,39,38,40,-1,40,41,39,-1,42,19,24,-1,43,42,24,-1,44,43,24,-1,24,23,44,-1,44,23,26,-1,26,45,44,-1,45,26,27,-1,27,46,45,-1,46,27,28,-1,28,47,46,-1,47,28,29,-1,29,48,47,-1,48,29,30,-1,30,49,48,-1,49,30,33,-1,43,50,51,-1,51,42,43,-1,42,51,52,-1,52,19,42,-1,19,52,53,-1,53,16,19,-1,16,53,54,-1,50,55,56,-1,56,51,50,-1,51,56,52,-1,53,57,54,-1,58,59,60,-1,60,57,58,-1,61,62,63,-1,63,64,61,-1,16,54,64,-1,64,17,16,-1,17,64,63,-1,65,52,66,-1,66,67,65,-1,68,53,52,-1,52,65,68,-1,68,65,67,-1,67,69,68,-1,57,68,69,-1,69,58,57,-1,59,58,70,-1,70,71,59,-1,70,58,69,-1,69,72,70,-1,69,67,73,-1,72,73,74,-1,74,75,72,-1,64,54,57,-1,76,67,66,-1,76,66,77,-1,76,77,55,-1,76,55,78,-1,76,78,73,-1,76,73,67,-1,79,80,71,-1,71,70,79,-1,75,79,70,-1,70,72,75,-1,81,75,82,-1,82,74,81,-1,83,81,74,-1,75,81,84,-1,84,85,75,-1,83,74,86,-1,86,87,83,-1,86,74,88,-1,88,89,86,-1,74,78,88,-1,88,78,55,-1,55,90,88,-1,55,50,43,-1,43,91,55,-1,90,55,91,-1,88,90,92,-1,92,89,88,-1,89,92,93,-1,93,94,89,-1,94,93,95,-1,95,96,94,-1,96,95,97,-1,97,98,96,-1,98,97,99,-1,99,100,98,-1,100,99,101,-1,101,102,100,-1,102,101,103,-1,103,104,102,-1,104,103,105,-1,105,106,104,-1,106,105,107,-1,107,108,106,-1,92,90,91,-1,92,91,44,-1,44,91,43,-1,92,44,45,-1,45,93,92,-1,93,45,46,-1,46,95,93,-1,95,46,47,-1,47,97,95,-1,97,47,48,-1,48,99,97,-1,99,48,49,-1,49,101,99,-1,101,49,33,-1,33,103,101,-1,103,33,35,-1,35,105,103,-1,105,35,37,-1,37,107,105,-1,107,37,39,-1,39,109,107,-1,109,39,41,-1,86,89,94,-1,94,110,86,-1,110,94,96,-1,96,111,110,-1,111,96,98,-1,98,112,111,-1,112,98,100,-1,100,113,112,-1,113,100,102,-1,102,114,113,-1,114,102,104,-1,104,115,114,-1,115,104,106,-1,106,116,115,-1,116,106,108,-1,108,117,116,-1,117,108,118,-1,87,86,119,-1,119,120,87,-1,119,86,110,-1,110,121,119,-1,119,121,122,-1,122,123,119,-1,124,119,123,-1,110,111,125,-1,125,126,110,-1,127,113,114,-1,114,128,127,-1,129,116,117,-1,117,130,129,-1,131,83,87,-1,87,132,131,-1,132,87,110,-1,110,126,132,-1,133,81,83,-1,83,131,133,-1,134,84,81,-1,81,133,134,-1,135,136,84,-1,84,134,135,-1,136,85,84,-1,135,137,138,-1,138,136,135,-1,139,140,141,-1,142,143,41,-1,41,144,142,-1,145,142,144,-1,144,146,145,-1,107,109,147,-1,147,108,107,-1,108,147,118,-1,64,57,60,-1,60,61,64,-1,61,148,149,-1,149,62,61,-1,148,61,60,-1,60,59,148,-1,85,79,75,-1,85,136,80,-1,80,79,85,-1,138,80,136,-1,80,138,150,-1,150,71,80,-1,71,150,148,-1,148,59,71,-1,150,138,137,-1,137,151,150,-1,151,149,148,-1,148,150,151,-1,66,52,56,-1,56,55,77,-1,73,78,74,-1,53,68,57,-1,56,77,66,-1,123,152,153,-1,153,124,123,-1,120,119,124,-1,124,153,120,-1,152,123,122,-1,87,120,121,-1,121,110,87,-1,153,152,122,-1,122,121,153,-1,120,153,121,-1,12,13,10,-1,10,9,12,-1,14,154,10,-1,10,13,14,-1,8,155,154,-1,154,14,8,-1,7,8,14,-1,156,112,113,-1,113,127,156,-1,111,112,156,-1,156,125,111,-1,115,116,129,-1,129,157,115,-1,115,157,128,-1,128,114,115,-1,158,130,117,-1,117,118,158,-1,140,159,160,-1,160,161,140,-1,118,147,161,-1,161,160,118,-1,159,140,139,-1,40,144,41,-1,146,158,118,-1,162,145,146,-1,146,118,162,-1,160,162,118,-1,159,141,162,-1,162,160,159,-1,139,141,159,-1,162,141,140,-1,140,161,162,-1,142,145,162,-1,162,161,142,-1,143,142,161,-1,147,143,161,-1,109,41,143,-1,143,147,109,-1,20,163,21,-1,163,20,19,-1,19,18,163,-1,20,24,19,-1,164,2,1,-1,1,165,164,-1,166,4,2,-1,2,164,166,-1,167,6,4,-1,4,166,167,-1,8,6,167,-1,11,10,168,-1,169,164,165,-1,165,170,169,-1,171,166,164,-1,164,169,171,-1,167,166,171,-1,17,172,15,-1,173,18,15,-1,15,172,173,-1,22,21,174,-1,174,175,22,-1,176,22,175,-1,177,25,22,-1,22,176,177,-1,165,1,25,-1,25,177,165,-1,178,165,177,-1,179,170,165,-1,165,178,179,-1,180,168,170,-1,170,179,180,-1,11,168,180,-1,31,11,180,-1,180,181,31,-1,182,32,31,-1,31,181,182,-1,183,34,32,-1,32,182,183,-1,184,36,34,-1,34,183,184,-1,185,38,36,-1,36,184,185,-1,186,40,38,-1,38,185,186,-1,175,173,187,-1,175,187,188,-1,176,175,188,-1,188,189,176,-1,190,177,176,-1,176,189,190,-1,191,178,177,-1,177,190,191,-1,192,179,178,-1,178,191,192,-1,193,180,179,-1,179,192,193,-1,194,181,180,-1,180,193,194,-1,182,181,194,-1,187,195,196,-1,196,188,187,-1,173,197,195,-1,195,187,173,-1,198,197,173,-1,173,172,198,-1,199,198,172,-1,195,200,201,-1,201,196,195,-1,197,200,195,-1,199,202,198,-1,202,203,204,-1,204,205,202,-1,206,63,62,-1,62,207,206,-1,17,206,199,-1,199,172,17,-1,63,206,17,-1,208,209,197,-1,197,210,208,-1,210,197,198,-1,198,211,210,-1,212,208,210,-1,210,211,212,-1,205,212,211,-1,211,202,205,-1,213,214,205,-1,205,204,213,-1,215,212,205,-1,205,214,215,-1,216,208,212,-1,217,218,216,-1,216,215,217,-1,202,199,206,-1,209,208,219,-1,220,209,219,-1,201,220,219,-1,221,201,219,-1,216,221,219,-1,208,216,219,-1,214,213,222,-1,222,223,214,-1,215,214,223,-1,223,217,215,-1,224,217,225,-1,225,226,224,-1,218,224,226,-1,227,228,225,-1,225,217,227,-1,229,230,218,-1,218,226,229,-1,231,232,218,-1,218,230,231,-1,232,221,218,-1,233,201,221,-1,221,232,233,-1,188,196,201,-1,201,233,188,-1,234,188,233,-1,231,235,233,-1,233,232,231,-1,236,237,235,-1,235,231,236,-1,238,239,237,-1,237,236,238,-1,240,241,239,-1,239,238,240,-1,242,243,241,-1,241,240,242,-1,244,245,243,-1,243,242,244,-1,246,247,245,-1,245,244,246,-1,248,249,247,-1,247,246,248,-1,250,251,249,-1,249,248,250,-1,234,233,235,-1,189,234,235,-1,188,234,189,-1,237,190,189,-1,189,235,237,-1,239,191,190,-1,190,237,239,-1,241,192,191,-1,191,239,241,-1,243,193,192,-1,192,241,243,-1,245,194,193,-1,193,243,245,-1,247,182,194,-1,194,245,247,-1,249,183,182,-1,182,247,249,-1,251,184,183,-1,183,249,251,-1,252,185,184,-1,184,251,252,-1,186,185,252,-1,253,236,231,-1,231,230,253,-1,254,238,236,-1,236,253,254,-1,255,240,238,-1,238,254,255,-1,256,242,240,-1,240,255,256,-1,257,244,242,-1,242,256,257,-1,258,246,244,-1,244,257,258,-1,259,248,246,-1,246,258,259,-1,260,250,248,-1,248,259,260,-1,261,250,260,-1,262,263,230,-1,230,229,262,-1,264,253,230,-1,230,263,264,-1,265,264,263,-1,263,266,265,-1,267,265,266,-1,126,125,254,-1,254,253,126,-1,128,257,256,-1,256,127,128,-1,130,260,259,-1,259,129,130,-1,132,229,226,-1,226,131,132,-1,126,253,229,-1,229,132,126,-1,131,226,225,-1,225,133,131,-1,133,225,228,-1,228,134,133,-1,134,228,268,-1,268,135,134,-1,228,227,268,-1,268,269,137,-1,137,135,268,-1,270,271,272,-1,144,186,273,-1,273,274,144,-1,146,144,274,-1,274,275,146,-1,250,276,252,-1,252,251,250,-1,261,276,250,-1,207,203,202,-1,202,206,207,-1,62,149,277,-1,277,207,62,-1,204,203,207,-1,207,277,204,-1,217,223,227,-1,223,222,268,-1,268,227,223,-1,268,222,269,-1,213,278,269,-1,269,222,213,-1,204,277,278,-1,278,213,204,-1,151,137,269,-1,269,278,151,-1,278,277,149,-1,149,151,278,-1,200,197,209,-1,220,201,200,-1,218,221,216,-1,202,211,198,-1,209,220,200,-1,266,279,280,-1,280,267,266,-1,279,266,263,-1,263,262,279,-1,265,267,280,-1,253,264,262,-1,262,229,253,-1,265,280,279,-1,279,262,265,-1,264,265,262,-1,168,10,169,-1,169,170,168,-1,169,10,154,-1,154,171,169,-1,154,155,8,-1,8,167,154,-1,171,154,167,-1,127,256,255,-1,255,156,127,-1,125,156,255,-1,255,254,125,-1,157,129,259,-1,259,258,157,-1,257,128,157,-1,157,258,257,-1,261,260,130,-1,130,158,261,-1,281,282,283,-1,283,271,281,-1,282,281,276,-1,276,261,282,-1,272,271,283,-1,186,144,40,-1,261,158,146,-1,146,275,284,-1,284,282,146,-1,261,146,282,-1,282,284,270,-1,270,283,282,-1,283,270,272,-1,281,271,270,-1,270,284,281,-1,281,284,275,-1,275,274,281,-1,281,274,273,-1,281,273,276,-1,276,273,186,-1,186,252,276,-1,21,163,174,-1,18,173,174,-1,174,163,18,-1,173,175,174,-1,212,215,216,-1,73,72,69,-1]))
              .setCoord(x3dpsail.Coordinate().setDEF(x3dpsail.SFString("pointList")).setPoint(x3dpsail.MFVec3f([-23.495,90.55,-8.13,-28.825,91.31,0,9.77497,126.11,0,17.395,124.84,-6.1,42.795,142.11,0,46.105,139.07,-3.56,74.295,144.4,0,76.075,140.08,-1.27,92.325,139.57,0,74.805,80.9,-9.91,74.295,98.93,0,84.965,74.04,0,35.175,88.77,-11.68,50.165,110.11,-6.1,60.835,121.79,-3.56,-194.695,-8,0,-200.025,-15.87,-7.62,-205.105,-19.68,0,-177.165,7.75,0,-180.975,1.39999,-13.97,-156.335,22.23,-5.33,-151.515,27.05,0,-117.475,50.67,0,-118.495,44.58,-18.29,-155.325,20.19,-13.97,-74.805,71.25,0,-75.565,65.91,-22.35,-26.545,75.57,-24.64,31.625,74.04,-26.67,87.755,62.1,-20.32,154.055,26.04,-11.68,155.325,30.1,0,195.965,-4.95001,0,188.345,-14.1,-14.73,213.995,-28.57,0,204.085,-41.02,-11.94,226.445,-52.45,0,217.045,-63.88,-7.87,232.535,-72.52,0,226.945,-79.88,-9.65,228.725,-91.31,0,224.665,-87.5,-7.37,-157.865,13.84,-22.35,-141.605,12.57,-32.77,-112.145,30.61,-29.97,-75.055,47.12,-32,-26.545,57.79,-35.81,24.005,56.52,-34.04,84.455,48.64,-28.45,150.745,19.18,-18.29,-153.285,-0.380005,-36.58,-163.445,1.14001,-31.75,-171.065,-5.97,-27.43,-187.325,-22.99,-20.83,-201.545,-37.21,-10.16,-151.005,-10.29,-35.81,-161.925,-5.97,-30.99,-203.325,-44.83,-13.97,-196.465,-54.48,-14.99,-223.135,-77.6,-7.37,-228.215,-75.31,-7.37,-233.045,-79.12,-4.06,-234.315,-77.6,0,-210.695,-46.1,0,-207.895,-43.81,-5.08,-171.835,-19.68,-30.48,-164.465,-11.81,-30.73,-170.815,-22.48,-30.73,-184.275,-27.05,-26.42,-180.975,-32.38,-25.91,-192.655,-58.29,-16.26,-216.785,-78.61,-8.38,-174.375,-43.31,-25.91,-165.485,-28.07,-34.54,-142.625,-35.94,-34.8,-171.835,-48.89,-27.43,-160.405,-22.73,-34.8,-158.365,-13.59,-34.54,-144.655,-24.26,-38.61,-191.135,-63.37,-18.29,-212.975,-81.41,-10.92,-167.765,-70.48,-17.02,-154.555,-41.02,-31.75,-132.205,-61.09,-22.35,-185.295,-71.25,-10.16,-190.625,-66.93,-17.27,-103.755,-39.75,-43.18,-101.985,-49.66,-35.05,-140.335,-23.24,-40.39,-100.715,-9.51999,-49.28,-135.255,-5.45999,-40.13,-134.235,7.48999,-36.58,-104.015,14.1,-42.67,-72.515,23.75,-46.23,-60.575,-1.39999,-51.05,-21.975,26.04,-48.01,-16.895,7.23999,-51.05,26.035,31.12,-46.23,28.065,7.48999,-49.02,81.915,25.02,-43.94,81.405,-1.89999,-44.7,141.095,0.130005,-33.02,130.935,-22.22,-28.45,176.405,-24.76,-23.37,161.675,-44.58,-21.84,194.185,-48.89,-13.97,183.515,-59.82,-14.22,206.125,-65.4,-9.91,195.455,-72.26,-10.67,220.345,-83.69,-18.29,-64.895,-34.16,-41.15,-15.365,-26.8,-37.59,22.475,-24.76,-38.1,70.735,-27.3,-30.99,120.525,-40.77,-17.27,154.055,-60.83,-9.65,174.875,-69.21,-7.11,195.965,-86.23,-5.59,205.355,-94.36,-11.94,-75.565,-64.9,-73.66,-76.325,-67.69,-71.37,-53.465,-53.72,-64.52,-29.845,-68.96,-77.22,-44.065,-71.75,-80.77,-64.385,-69.21,-80.01,-18.925,-40,0,-62.355,-49.91,0,68.455,-38.23,0,123.825,-45.08,0,171.325,-71.75,0,195.705,-88.26,0,-127.635,-63.63,0,-92.835,-56.51,0,-159.895,-73.28,0,-182.495,-73.28,0,-207.395,-85.72,0,-210.435,-84.45,-7.87,-226.185,-93.85,0,-223.905,-91.57,-4.57,232.285,-144.4,-86.61,217.555,-117.73,-73.15,231.015,-135.76,-63.25,229.745,-112.14,-9.65,224.155,-97.92,-16.51,228.215,-104.01,0,234.315,-121.03,-5.84,230.505,-113.92,0,218.565,-86.23,-24.13,-230.505,-84.45,-3.81,-231.015,-84.2,0,-228.725,-89.53,-4.83,-230.505,-90.3,0,-43.815,-73.02,-79.25,-63.885,-72.01,-78.23,83.695,119.76,0,95.375,131.45,0,24.255,-36.45,0,151.005,-61.59,0,205.615,-96.9,0,215.775,-119.51,-73.15,210.695,-104.52,-52.32,213.745,-101.47,-52.32,232.535,-127.89,-21.59,-154.815,25.02,0,17.395,124.84,6.1,-23.495,90.55,8.13,46.105,139.07,3.56,76.075,140.08,1.27,74.805,80.9,9.91,50.165,110.11,6.1,35.175,88.77,11.68,60.835,121.79,3.56,-200.025,-15.87,7.62,-180.975,1.39999,13.97,-156.335,22.23,5.33,-155.325,20.19,13.97,-118.495,44.58,18.29,-75.565,65.91,22.35,-26.545,75.57,24.64,31.625,74.04,26.67,87.755,62.1,20.32,154.055,26.04,11.68,188.345,-14.1,14.73,204.085,-41.02,11.94,217.045,-63.88,7.87,226.945,-79.88,9.65,224.665,-87.5,7.37,-157.865,13.84,22.35,-141.605,12.57,32.77,-112.145,30.61,29.97,-75.055,47.12,32,-26.545,57.79,35.81,24.005,56.52,34.04,84.455,48.64,28.45,150.745,19.18,18.29,-163.445,1.14001,31.75,-153.285,-0.380005,36.58,-171.065,-5.97,27.43,-187.325,-22.99,20.83,-201.545,-37.21,10.16,-161.925,-5.97,30.99,-151.005,-10.29,35.81,-203.325,-44.83,13.97,-228.215,-75.31,7.37,-223.135,-77.6,7.37,-196.465,-54.48,14.99,-207.895,-43.81,5.08,-233.045,-79.12,4.06,-170.815,-22.48,30.73,-164.465,-11.81,30.73,-171.835,-19.68,30.48,-184.275,-27.05,26.42,-180.975,-32.38,25.91,-216.785,-78.61,8.38,-192.655,-58.29,16.26,-174.375,-43.31,25.91,-165.485,-28.07,34.54,-171.835,-48.89,27.43,-142.625,-35.94,34.8,-160.405,-22.73,34.8,-158.365,-13.59,34.54,-144.655,-24.26,38.61,-212.975,-81.41,10.92,-191.135,-63.37,18.29,-154.555,-41.02,31.75,-167.765,-70.48,17.02,-132.205,-61.09,22.35,-190.625,-66.93,17.27,-185.295,-71.25,10.16,-101.985,-49.66,35.05,-103.755,-39.75,43.18,-100.715,-9.51999,49.28,-140.335,-23.24,40.39,-135.255,-5.45999,40.13,-134.235,7.48999,36.58,-104.015,14.1,42.67,-60.575,-1.39999,51.05,-72.515,23.75,46.23,-16.895,7.23999,51.05,-21.975,26.04,48.01,28.065,7.48999,49.02,26.035,31.12,46.23,81.405,-1.89999,44.7,81.915,25.02,43.94,130.935,-22.22,28.45,141.095,0.130005,33.02,161.675,-44.58,21.84,176.405,-24.76,23.37,183.515,-59.82,14.22,194.185,-48.89,13.97,195.455,-72.26,10.67,206.125,-65.4,9.91,220.345,-83.69,18.29,-64.895,-34.16,41.15,-15.365,-26.8,37.59,22.475,-24.76,38.1,70.735,-27.3,30.99,120.525,-40.77,17.27,154.055,-60.83,9.65,174.875,-69.21,7.11,195.965,-86.23,5.59,205.355,-94.36,11.94,-76.325,-67.69,71.37,-75.565,-64.9,73.66,-53.465,-53.72,64.52,-29.845,-68.96,77.22,-64.385,-69.21,80.01,-44.065,-71.75,80.77,-210.435,-84.45,7.87,-223.905,-91.57,4.57,231.015,-135.76,63.25,217.555,-117.73,73.15,232.285,-144.4,86.61,224.155,-97.92,16.51,229.745,-112.14,9.65,234.315,-121.03,5.84,218.565,-86.23,24.13,-230.505,-84.45,3.81,-228.725,-89.53,4.83,-63.885,-72.01,78.23,-43.815,-73.02,79.25,213.745,-101.47,52.32,210.695,-104.52,52.32,215.775,-119.51,73.15,232.535,-127.89,21.59]))))))
        .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("ts")).setCycleInterval(x3dpsail.SFTime(2)).setLoop(x3dpsail.SFBool(True)))
        .addChild(x3dpsail.ScalarInterpolator().setDEF(x3dpsail.SFString("si")).setKey(x3dpsail.MFFloat([0,0.5,1])).setKeyValue(x3dpsail.MFFloat([0,1,0])))
        .addChild(x3dpsail.CoordinateInterpolator().setDEF(x3dpsail.SFString("ci")).setKey(x3dpsail.MFFloat([0,0.5,1])).setKeyValue(x3dpsail.MFVec3f([-23.495,90.55,-8.13,-28.825,91.31,0,9.77497,126.11,0,17.395,124.84,-6.1,42.795,142.11,0,46.105,139.07,-3.56,74.295,144.4,0,76.075,140.08,-1.27,92.325,139.57,0,74.805,80.9,-9.91,74.295,98.93,0,84.965,74.04,0,35.175,88.77,-11.68,50.165,110.11,-6.1,60.835,121.79,-3.56,-194.695,-8,0,-200.025,-15.87,-7.62,-205.105,-19.68,0,-177.165,7.75,0,-180.975,1.39999,-13.97,-156.335,22.23,-5.33,-151.515,27.05,0,-117.475,50.67,0,-118.495,44.58,-18.29,-155.325,20.19,-13.97,-74.805,71.25,0,-75.565,65.91,-22.35,-26.545,75.57,-24.64,31.625,74.04,-26.67,87.755,62.1,-20.32,154.055,26.04,-11.68,155.325,30.1,0,195.965,-4.95001,0,188.345,-14.1,-14.73,213.995,-28.57,0,204.085,-41.02,-11.94,226.445,-52.45,0,217.045,-63.88,-7.87,232.535,-72.52,0,226.945,-79.88,-9.65,228.725,-91.31,0,224.665,-87.5,-7.37,-157.865,13.84,-22.35,-141.605,12.57,-32.77,-112.145,30.61,-29.97,-75.055,47.12,-32,-26.545,57.79,-35.81,24.005,56.52,-34.04,84.455,48.64,-28.45,150.745,19.18,-18.29,-153.285,-0.380005,-36.58,-163.445,1.14001,-31.75,-171.065,-5.97,-27.43,-187.325,-22.99,-20.83,-201.545,-37.21,-10.16,-151.005,-10.29,-35.81,-161.925,-5.97,-30.99,-203.325,-44.83,-13.97,-196.465,-54.48,-14.99,-223.135,-77.6,-7.37,-228.215,-75.31,-7.37,-233.045,-79.12,-4.06,-234.315,-77.6,0,-210.695,-46.1,0,-207.895,-43.81,-5.08,-171.835,-19.68,-30.48,-164.465,-11.81,-30.73,-170.815,-22.48,-30.73,-184.275,-27.05,-26.42,-180.975,-32.38,-25.91,-192.655,-58.29,-16.26,-216.785,-78.61,-8.38,-174.375,-43.31,-25.91,-165.485,-28.07,-34.54,-142.625,-35.94,-34.8,-171.835,-48.89,-27.43,-160.405,-22.73,-34.8,-158.365,-13.59,-34.54,-144.655,-24.26,-38.61,-191.135,-63.37,-18.29,-212.975,-81.41,-10.92,-167.765,-70.48,-17.02,-154.555,-41.02,-31.75,-132.205,-61.09,-22.35,-185.295,-71.25,-10.16,-190.625,-66.93,-17.27,-103.755,-39.75,-43.18,-101.985,-49.66,-35.05,-140.335,-23.24,-40.39,-100.715,-9.51999,-49.28,-135.255,-5.45999,-40.13,-134.235,7.48999,-36.58,-104.015,14.1,-42.67,-72.515,23.75,-46.23,-60.575,-1.39999,-51.05,-21.975,26.04,-48.01,-16.895,7.23999,-51.05,26.035,31.12,-46.23,28.065,7.48999,-49.02,81.915,25.02,-43.94,81.405,-1.89999,-44.7,141.095,0.130005,-33.02,130.935,-22.22,-28.45,176.405,-24.76,-23.37,161.675,-44.58,-21.84,194.185,-48.89,-13.97,183.515,-59.82,-14.22,206.125,-65.4,-9.91,195.455,-72.26,-10.67,220.345,-83.69,-18.29,-64.895,-34.16,-41.15,-15.365,-26.8,-37.59,22.475,-24.76,-38.1,70.735,-27.3,-30.99,120.525,-40.77,-17.27,154.055,-60.83,-9.65,174.875,-69.21,-7.11,195.965,-86.23,-5.59,205.355,-94.36,-11.94,-75.565,-64.9,-73.66,-76.325,-67.69,-71.37,-53.465,-53.72,-64.52,-29.845,-68.96,-77.22,-44.065,-71.75,-80.77,-64.385,-69.21,-80.01,-18.925,-40,0,-62.355,-49.91,0,68.455,-38.23,0,123.825,-45.08,0,171.325,-71.75,0,195.705,-88.26,0,-127.635,-63.63,0,-92.835,-56.51,0,-159.895,-73.28,0,-182.495,-73.28,0,-207.395,-85.72,0,-210.435,-84.45,-7.87,-226.185,-93.85,0,-223.905,-91.57,-4.57,232.285,-144.4,-86.61,217.555,-117.73,-73.15,231.015,-135.76,-63.25,229.745,-112.14,-9.65,224.155,-97.92,-16.51,228.215,-104.01,0,234.315,-121.03,-5.84,230.505,-113.92,0,218.565,-86.23,-24.13,-230.505,-84.45,-3.81,-231.015,-84.2,0,-228.725,-89.53,-4.83,-230.505,-90.3,0,-43.815,-73.02,-79.25,-63.885,-72.01,-78.23,83.695,119.76,0,95.375,131.45,0,24.255,-36.45,0,151.005,-61.59,0,205.615,-96.9,0,215.775,-119.51,-73.15,210.695,-104.52,-52.32,213.745,-101.47,-52.32,232.535,-127.89,-21.59,-154.815,25.02,0,17.395,124.84,6.1,-23.495,90.55,8.13,46.105,139.07,3.56,76.075,140.08,1.27,74.805,80.9,9.91,50.165,110.11,6.1,35.175,88.77,11.68,60.835,121.79,3.56,-200.025,-15.87,7.62,-180.975,1.39999,13.97,-156.335,22.23,5.33,-155.325,20.19,13.97,-118.495,44.58,18.29,-75.565,65.91,22.35,-26.545,75.57,24.64,31.625,74.04,26.67,87.755,62.1,20.32,154.055,26.04,11.68,188.345,-14.1,14.73,204.085,-41.02,11.94,217.045,-63.88,7.87,226.945,-79.88,9.65,224.665,-87.5,7.37,-157.865,13.84,22.35,-141.605,12.57,32.77,-112.145,30.61,29.97,-75.055,47.12,32,-26.545,57.79,35.81,24.005,56.52,34.04,84.455,48.64,28.45,150.745,19.18,18.29,-163.445,1.14001,31.75,-153.285,-0.380005,36.58,-171.065,-5.97,27.43,-187.325,-22.99,20.83,-201.545,-37.21,10.16,-161.925,-5.97,30.99,-151.005,-10.29,35.81,-203.325,-44.83,13.97,-228.215,-75.31,7.37,-223.135,-77.6,7.37,-196.465,-54.48,14.99,-207.895,-43.81,5.08,-233.045,-79.12,4.06,-170.815,-22.48,30.73,-164.465,-11.81,30.73,-171.835,-19.68,30.48,-184.275,-27.05,26.42,-180.975,-32.38,25.91,-216.785,-78.61,8.38,-192.655,-58.29,16.26,-174.375,-43.31,25.91,-165.485,-28.07,34.54,-171.835,-48.89,27.43,-142.625,-35.94,34.8,-160.405,-22.73,34.8,-158.365,-13.59,34.54,-144.655,-24.26,38.61,-212.975,-81.41,10.92,-191.135,-63.37,18.29,-154.555,-41.02,31.75,-167.765,-70.48,17.02,-132.205,-61.09,22.35,-190.625,-66.93,17.27,-185.295,-71.25,10.16,-101.985,-49.66,35.05,-103.755,-39.75,43.18,-100.715,-9.51999,49.28,-140.335,-23.24,40.39,-135.255,-5.45999,40.13,-134.235,7.48999,36.58,-104.015,14.1,42.67,-60.575,-1.39999,51.05,-72.515,23.75,46.23,-16.895,7.23999,51.05,-21.975,26.04,48.01,28.065,7.48999,49.02,26.035,31.12,46.23,81.405,-1.89999,44.7,81.915,25.02,43.94,130.935,-22.22,28.45,141.095,0.130005,33.02,161.675,-44.58,21.84,176.405,-24.76,23.37,183.515,-59.82,14.22,194.185,-48.89,13.97,195.455,-72.26,10.67,206.125,-65.4,9.91,220.345,-83.69,18.29,-64.895,-34.16,41.15,-15.365,-26.8,37.59,22.475,-24.76,38.1,70.735,-27.3,30.99,120.525,-40.77,17.27,154.055,-60.83,9.65,174.875,-69.21,7.11,195.965,-86.23,5.59,205.355,-94.36,11.94,-76.325,-67.69,71.37,-75.565,-64.9,73.66,-53.465,-53.72,64.52,-29.845,-68.96,77.22,-64.385,-69.21,80.01,-44.065,-71.75,80.77,-210.435,-84.45,7.87,-223.905,-91.57,4.57,231.015,-135.76,63.25,217.555,-117.73,73.15,232.285,-144.4,86.61,224.155,-97.92,16.51,229.745,-112.14,9.65,234.315,-121.03,5.84,218.565,-86.23,24.13,-230.505,-84.45,3.81,-228.725,-89.53,4.83,-63.885,-72.01,78.23,-43.815,-73.02,79.25,213.745,-101.47,52.32,210.695,-104.52,52.32,215.775,-119.51,73.15,232.535,-127.89,21.59,-59.809,52.365,-8.13,-65.138,53.125,0,-26.539,87.925,0,-18.918,86.655,-6.1,6.48099,103.925,0,9.791,100.885,-3.56,37.981,106.215,0,39.761,101.895,-1.27,56.011,101.385,0,38.491,42.715,-9.91,37.981,60.745,0,48.651,35.855,0,-1.138,50.585,-11.68,13.851,71.925,-6.1,24.522,83.605,-3.56,-231.682,-23.267,0,-237.645,-30.669,-7.62,-243.023,-34.045,0,-212.908,-9.02301,0,-217.23,-15.036,-13.97,-190.95,3.68199,-5.33,-185.747,8.08699,0,-149.868,28.807,0,-151.389,22.822,-18.29,-190.112,1.56599,-13.97,-105.641,45.783,0,-106.84,40.524,-22.35,-62.859,37.385,-24.64,-4.68901,35.855,-26.67,51.441,23.915,-20.32,106.312,12.011,-11.68,106.024,16.252,0,147.052,3.38199,0,146.393,-8.34801,-14.73,171.674,-5.229,0,172.586,-21.01,-11.94,195.158,-14.477,0,196.995,-29.125,-7.87,213.773,-23.372,0,215.823,-32.396,-9.65,226.225,-38.058,0,220.317,-38.998,-7.37,-193.17,-4.552,-22.35,-177.07,-7.164,-32.77,-146.218,8.37399,-29.97,-107.888,21.756,-32,-62.859,19.605,-35.81,-12.309,18.335,-34.04,48.141,10.455,-28.45,105.971,4.41499,-18.29,-189.783,-19.103,-36.58,-199.782,-16.746,-31.75,-207.965,-23.201,-27.43,-225.578,-38.816,-20.83,-240.927,-51.8097,-10.16,-188.331,-29.167,-35.81,-198.856,-23.958,-30.99,-243.332,-59.2561,-13.97,-237.294,-69.441,-14.99,-265.787,-90.2731,-7.37,-270.66,-87.5703,-7.37,-275.789,-90.9673,-4.06,-276.929,-89.3473,0,-250.782,-59.9115,0,-247.801,-57.8612,-5.08,-209.867,-36.8,-30.48,-201.871,-29.567,-30.73,-209.083,-39.675,-30.73,-222.875,-43.115,-26.42,-220.028,-48.6996,-25.91,-233.813,-73.5535,-16.26,-259.543,-91.8055,-8.38,-214.355,-60.1386,-25.91,-204.234,-45.6871,-34.54,-182.104,-55.4231,-34.8,-212.286,-65.9098,-27.43,-198.729,-40.786,-34.8,-195.939,-31.846,-34.54,-183.16,-43.615,-38.61,-232.719,-78.7419,-18.29,-255.978,-94.9114,-10.92,-210.018,-87.7627,-17.02,-194.414,-59.4977,-31.75,-173.802,-81.3496,-22.35,-227.551,-87.0784,-10.16,-232.505,-82.3319,-17.27,-143.683,-62.4388,-43.18,-142.74,-72.4613,-35.05,-178.77,-42.956,-40.39,-138.15,-32.564,-49.28,-172.235,-25.658,-40.13,-170.146,-12.837,-36.58,-139.483,-8.75201,-42.67,-107.292,-1.744,-46.23,-97.476,-27.796,-51.05,-58.289,-12.145,-48.01,-53.209,-30.945,-51.05,-10.278,-7.065,-46.23,-8.248,-30.695,-49.02,45.601,-13.165,-43.94,45.091,-40.085,-44.7,104.428,-16.842,-33.02,103.132,-41.349,-28.45,142.888,-23.631,-23.37,140.785,-48.174,-21.84,170.176,-33.299,-13.97,168.47,-48.4858,-14.22,190.176,-37.899,-9.91,186.651,-50.2548,-10.67,214.231,-39.981,-18.29,-104.494,-60.0859,-41.15,-51.679,-64.9852,-37.59,-13.839,-62.9452,-38.1,34.421,-65.4852,-30.99,99.745,-62.3666,-17.27,142.447,-66.0489,-9.65,166.932,-61.2393,-7.11,197.22,-60.0188,-5.59,211.268,-58.5942,-11.94,-117.672,-75.6501,-73.66,-118.661,-77.4442,-71.37,-94.723,-69.5026,-64.52,-72.446,-80.8209,-77.22,-86.848,-81.8791,-80.77,-106.888,-79.097,-80.01,-55.239,-78.1852,0,-103.267,-75.9921,0,32.141,-76.4152,0,104.771,-65.2363,0,165.318,-65.4299,0,198.53,-61.6453,0,-169.458,-84.2593,0,-134.188,-80.0455,0,-202.407,-91.2048,0,-224.929,-89.3333,0,-250.774,-99.6686,0,-253.698,-98.1512,-7.87,-270.172,-106.215,0,-267.711,-104.131,-4.57,276.929,-62.7435,-86.61,240.739,-63.0053,-73.15,267.577,-60.039,-63.25,244.778,-49.169,-9.65,228.522,-45.796,-16.51,236.579,-45.9526,0,256.002,-49.7235,-5.84,246.9,-49.46,0,214.954,-43.007,-24.13,-273.699,-96.4893,-3.81,-274.187,-96.1979,0,-272.346,-101.699,-4.83,-274.184,-102.319,0,-86.704,-82.7284,-79.25,-106.621,-80.9666,-78.23,47.381,81.575,0,59.061,93.265,0,-12.059,-74.6352,0,139.891,-68.2642,0,213.513,-60.0741,0,240.934,-65.579,-73.15,223.876,-60.9112,-52.32,223.725,-56.5192,-52.32,261.158,-54.7995,-21.59,-189.204,6.33699,0,-18.918,86.655,6.1,-59.809,52.365,8.13,9.791,100.885,3.56,39.761,101.895,1.27,38.491,42.715,9.91,13.851,71.925,6.1,-1.138,50.585,11.68,24.522,83.605,3.56,-237.645,-30.669,7.62,-217.23,-15.036,13.97,-190.95,3.68199,5.33,-190.112,1.56599,13.97,-151.389,22.822,18.29,-106.84,40.524,22.35,-62.859,37.385,24.64,-4.68901,35.855,26.67,51.441,23.915,20.32,106.312,12.011,11.68,146.393,-8.34801,14.73,172.586,-21.01,11.94,196.995,-29.125,7.87,215.823,-32.396,9.65,220.317,-38.998,7.37,-193.17,-4.552,22.35,-177.07,-7.164,32.77,-146.218,8.37399,29.97,-107.888,21.756,32,-62.859,19.605,35.81,-12.309,18.335,34.04,48.141,10.455,28.45,105.971,4.41499,18.29,-199.782,-16.746,31.75,-189.783,-19.103,36.58,-207.965,-23.201,27.43,-225.578,-38.816,20.83,-240.927,-51.8097,10.16,-198.856,-23.958,30.99,-188.331,-29.167,35.81,-243.332,-59.2561,13.97,-270.66,-87.5703,7.37,-265.787,-90.2731,7.37,-237.294,-69.441,14.99,-247.801,-57.8612,5.08,-275.789,-90.9673,4.06,-209.083,-39.675,30.73,-201.871,-29.567,30.73,-209.867,-36.8,30.48,-222.875,-43.115,26.42,-220.028,-48.6996,25.91,-259.543,-91.8055,8.38,-233.813,-73.5535,16.26,-214.355,-60.1386,25.91,-204.234,-45.6871,34.54,-212.286,-65.9098,27.43,-182.104,-55.4231,34.8,-198.729,-40.786,34.8,-195.939,-31.846,34.54,-183.16,-43.615,38.61,-255.978,-94.9114,10.92,-232.719,-78.7419,18.29,-194.414,-59.4977,31.75,-210.018,-87.7627,17.02,-173.802,-81.3496,22.35,-232.505,-82.3319,17.27,-227.551,-87.0784,10.16,-142.74,-72.4613,35.05,-143.683,-62.4388,43.18,-138.15,-32.564,49.28,-178.77,-42.956,40.39,-172.235,-25.658,40.13,-170.146,-12.837,36.58,-139.483,-8.75201,42.67,-97.476,-27.796,51.05,-107.292,-1.744,46.23,-53.209,-30.945,51.05,-58.289,-12.145,48.01,-8.248,-30.695,49.02,-10.278,-7.065,46.23,45.091,-40.085,44.7,45.601,-13.165,43.94,103.132,-41.349,28.45,104.428,-16.842,33.02,140.785,-48.174,21.84,142.888,-23.631,23.37,168.47,-48.4858,14.22,170.176,-33.299,13.97,186.651,-50.2548,10.67,190.176,-37.899,9.91,214.231,-39.981,18.29,-104.494,-60.0859,41.15,-51.679,-64.9852,37.59,-13.839,-62.9452,38.1,34.421,-65.4852,30.99,99.745,-62.3666,17.27,142.447,-66.0489,9.65,166.932,-61.2393,7.11,197.22,-60.0188,5.59,211.268,-58.5942,11.94,-118.661,-77.4442,71.37,-117.672,-75.6501,73.66,-94.723,-69.5026,64.52,-72.446,-80.8209,77.22,-106.888,-79.097,80.01,-86.848,-81.8791,80.77,-253.698,-98.1512,7.87,-267.711,-104.131,4.57,267.577,-60.039,63.25,240.739,-63.0053,73.15,276.929,-62.7435,86.61,228.522,-45.796,16.51,244.778,-49.169,9.65,256.002,-49.7235,5.84,214.954,-43.007,24.13,-273.699,-96.4893,3.81,-272.346,-101.699,4.83,-106.621,-80.9666,78.23,-86.704,-82.7284,79.25,223.725,-56.5192,52.32,223.876,-60.9112,52.32,240.934,-65.579,73.15,261.158,-54.7995,21.59,-44.9192,38.3501,-8.13,-50.2492,39.11,0,-11.6492,73.9101,0,-4.0292,72.64,-6.1,21.3708,89.91,0,24.6808,86.8701,-3.56,52.8709,92.2,0,54.6509,87.88,-1.27,70.9009,87.3701,0,53.3809,28.7,-9.91,52.8709,46.7301,0,63.5409,21.84,0,13.7508,36.57,-11.68,28.7409,57.9101,-6.1,39.4109,69.59,-3.56,-214.37,-9.709,0,-221.846,-15.5239,-7.62,-227.869,-17.5109,0,-193.31,0.150703,0,-198.687,-4.8381,-13.97,-170.04,8.4533,-5.33,-164.363,11.8894,0,-127.722,27.055,0,-129.905,21.3163,-18.29,-169.621,6.2233,-13.97,-85.1861,39.428,0,-86.6881,34.2794,-22.35,-47.9692,23.37,-24.64,10.2008,21.84,-26.67,66.3309,9.9,-20.32,114.118,6.9605,-11.68,113.16,11.0842,0,148.859,8.9437,0,152.678,-2.121,-14.73,171.384,11.0823,0,179.82,-2.1085,-11.94,193.495,15.4768,0,203.488,4.9549,-7.87,211.83,20.1639,0,219.173,14.9779,-9.65,230.069,18.5903,0,226.759,13.5161,-7.37,-173.623,0.75,-22.35,-158.647,-4.5872,-32.77,-126.869,6.3294,-29.97,-89.1395,15.6575,-32,-47.9692,5.59,-35.81,2.5808,4.32,-34.04,63.0309,-3.56,-28.45,115.172,-0.560097,-18.29,-172.989,-14.1689,-36.58,-182.241,-10.0034,-31.75,-191.431,-14.7299,-27.43,-211.956,-26.2349,-20.83,-230.148,-35.2539,-10.16,-173.382,-24.3299,-35.81,-182.72,-17.2579,-30.99,-234.379,-41.8749,-13.97,-230.824,-53.2509,-14.99,-265.323,-65.7619,-7.37,-269.53,-61.7589,-7.37,-275.743,-63.4989,-4.06,-276.428,-61.6079,0,-241.975,-40.6069,0,-238.483,-39.3919,-5.08,-196.064,-27.6559,-30.48,-186.752,-22.1789,-30.73,-195.882,-30.6309,-30.73,-210.254,-31.0309,-26.42,-208.666,-37.1109,-25.91,-228.288,-58.0969,-16.26,-259.342,-69.0049,-8.38,-205.474,-49.5209,-25.91,-192.292,-37.5079,-34.54,-171.859,-51.2809,-34.8,-204.62,-55.6069,-27.43,-185.84,-33.7959,-34.8,-181.365,-25.5569,-34.54,-170.829,-39.4709,-38.61,-228.423,-63.4019,-18.29,-256.516,-72.9869,-10.92,-207.002,-77.4509,-17.02,-185.127,-52.9949,-31.75,-167.84,-78.2769,-22.35,-225.091,-72.7539,-10.16,-229.071,-66.9399,-17.27,-133.553,-64.2139,-43.18,-133.918,-74.2739,-35.05,-166.314,-39.5879,-40.39,-124.082,-35.2919,-49.28,-156.943,-23.6179,-40.13,-152.864,-11.2916,-36.58,-122.497,-11.4953,-42.67,-90.4839,-7.8107,-46.23,-82.8456,-34.5569,-51.05,-43.3992,-26.1599,-48.01,-38.3192,-44.9599,-51.05,4.6108,-21.0799,-46.23,6.6408,-44.7099,-49.02,60.4909,-27.1799,-43.94,59.9809,-54.0999,-44.7,117.636,-21.7149,-33.02,120.947,-46.0389,-28.45,155.384,-17.5349,-23.37,162.792,-41.0489,-21.84,183.998,-13.9029,-13.97,190.265,-27.8559,-14.22,203.392,-6.2522,-9.91,207.767,-18.3949,-10.67,223.159,8.3645,-18.29,-92.6284,-66.1809,-41.15,-36.7892,-78.9999,-37.59,1.0508,-76.9599,-38.1,49.3109,-79.4999,-30.99,121.1,-67.3769,-17.27,171.837,-56.7449,-9.65,195.473,-39.6469,-7.11,223.047,-18.8189,-5.59,233.698,-7.2368,-11.94,-107.939,-68.9429,-73.66,-109.174,-70.6239,-71.37,-83.1762,-64.8699,-64.52,-60.2597,-77.5359,-77.22,-75.7239,-77.7709,-80.77,-96.8564,-73.4239,-80.01,-40.3492,-92.1999,0,-92.7342,-82.1339,0,47.0309,-90.4299,0,127.717,-69.1159,0,196.054,-44.1779,0,225.241,-19.1009,0,-163.77,-81.8899,0,-125.906,-82.9039,0,-199.76,-82.4539,0,-222.9,-75.5739,0,-252.398,-79.0009,0,-255.032,-76.7379,-7.87,-274.414,-79.7719,0,-271.253,-78.5029,-4.57,277.433,48.8188,-86.61,258.132,14.5177,-73.15,270.88,41.0393,-63.25,249.887,26.3978,-9.65,237.134,15.1495,-16.51,242.456,21.535,0,256.63,35.8549,-5.84,251.355,28.045,0,225.737,6.7142,-24.13,-275.222,-69.4079,-3.81,-275.637,-68.9829,0,-275.351,-74.7999,-4.83,-277.432,-74.8429,0,-75.6284,-78.6279,-79.25,-96.7464,-75.3099,-78.23,62.2709,67.56,0,73.9509,79.25,0,2.8308,-88.6499,0,169.884,-59.9439,0,236.499,-6.5329,0,260.278,13.1461,-73.15,244.946,1.2884,-52.32,241.616,4.1116,-52.32,263.392,37.7359,-21.59,-167.924,10.7602,0,-4.0292,72.64,6.1,-44.9192,38.3501,8.13,24.6808,86.8701,3.56,54.6509,87.88,1.27,53.3809,28.7,9.91,28.7409,57.9101,6.1,13.7508,36.57,11.68,39.4109,69.59,3.56,-221.846,-15.5239,7.62,-198.687,-4.8381,13.97,-170.04,8.4533,5.33,-169.621,6.2233,13.97,-129.905,21.3163,18.29,-86.6881,34.2794,22.35,-47.9692,23.37,24.64,10.2008,21.84,26.67,66.3309,9.9,20.32,114.118,6.9605,11.68,152.678,-2.121,14.73,179.82,-2.1085,11.94,203.488,4.9549,7.87,219.173,14.9779,9.65,226.759,13.5161,7.37,-173.623,0.75,22.35,-158.647,-4.5872,32.77,-126.869,6.3294,29.97,-89.1395,15.6575,32,-47.9692,5.59,35.81,2.5808,4.32,34.04,63.0309,-3.56,28.45,115.172,-0.560097,18.29,-182.241,-10.0034,31.75,-172.989,-14.1689,36.58,-191.431,-14.7299,27.43,-211.956,-26.2349,20.83,-230.148,-35.2539,10.16,-182.72,-17.2579,30.99,-173.382,-24.3299,35.81,-234.379,-41.8749,13.97,-269.53,-61.7589,7.37,-265.323,-65.7619,7.37,-230.824,-53.2509,14.99,-238.483,-39.3919,5.08,-275.743,-63.4989,4.06,-195.882,-30.6309,30.73,-186.752,-22.1789,30.73,-196.064,-27.6559,30.48,-210.254,-31.0309,26.42,-208.666,-37.1109,25.91,-259.342,-69.0049,8.38,-228.288,-58.0969,16.26,-205.474,-49.5209,25.91,-192.292,-37.5079,34.54,-204.62,-55.6069,27.43,-171.859,-51.2809,34.8,-185.84,-33.7959,34.8,-181.365,-25.5569,34.54,-170.829,-39.4709,38.61,-256.516,-72.9869,10.92,-228.423,-63.4019,18.29,-185.127,-52.9949,31.75,-207.002,-77.4509,17.02,-167.84,-78.2769,22.35,-229.071,-66.9399,17.27,-225.091,-72.7539,10.16,-133.918,-74.2739,35.05,-133.553,-64.2139,43.18,-124.082,-35.2919,49.28,-166.314,-39.5879,40.39,-156.943,-23.6179,40.13,-152.864,-11.2916,36.58,-122.497,-11.4953,42.67,-82.8456,-34.5569,51.05,-90.4839,-7.8107,46.23,-38.3192,-44.9599,51.05,-43.3992,-26.1599,48.01,6.6408,-44.7099,49.02,4.6108,-21.0799,46.23,59.9809,-54.0999,44.7,60.4909,-27.1799,43.94,120.947,-46.0389,28.45,117.636,-21.7149,33.02,162.792,-41.0489,21.84,155.384,-17.5349,23.37,190.265,-27.8559,14.22,183.998,-13.9029,13.97,207.767,-18.3949,10.67,203.392,-6.2522,9.91,223.159,8.3645,18.29,-92.6284,-66.1809,41.15,-36.7892,-78.9999,37.59,1.0508,-76.9599,38.1,49.3109,-79.4999,30.99,121.1,-67.3769,17.27,171.837,-56.7449,9.65,195.473,-39.6469,7.11,223.047,-18.8189,5.59,233.698,-7.2368,11.94,-109.174,-70.6239,71.37,-107.939,-68.9429,73.66,-83.1762,-64.8699,64.52,-60.2597,-77.5359,77.22,-96.8564,-73.4239,80.01,-75.7239,-77.7709,80.77,-255.032,-76.7379,7.87,-271.253,-78.5029,4.57,270.88,41.0393,63.25,258.132,14.5177,73.15,277.433,48.8188,86.61,237.134,15.1495,16.51,249.887,26.3978,9.65,256.63,35.8549,5.84,225.737,6.7142,24.13,-275.222,-69.4079,3.81,-275.351,-74.7999,4.83,-96.7464,-75.3099,78.23,-75.6284,-78.6279,79.25,241.616,4.1116,52.32,244.946,1.2884,52.32,260.278,13.1461,73.15,263.392,37.7359,21.59])))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("ci")).setFromField(x3dpsail.SFString("value_changed")).setToNode(x3dpsail.SFString("pointList")).setToField(x3dpsail.SFString("set_point")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("si")).setFromField(x3dpsail.SFString("value_changed")).setToNode(x3dpsail.SFString("ci")).setToField(x3dpsail.SFString("set_fraction")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("ts")).setFromField(x3dpsail.SFString("fraction_changed")).setToNode(x3dpsail.SFString("si")).setToField(x3dpsail.SFString("set_fraction")))))

X3D0.toFileX3D("./future/./flipper_RoundTrip.x3d")
Example #16
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
    x3dpsail.SFString("3.3")
).setHead(x3dpsail.head().addComponent(
    x3dpsail.component().setName(
        x3dpsail.SFString("EnvironmentalEffects")).setLevel(
            x3dpsail.SFInt32(1))
).addComponent(x3dpsail.component().setName(
    x3dpsail.SFString("EnvironmentalEffects")
).setLevel(x3dpsail.SFInt32(
    3
))).addComponent(x3dpsail.component().setName(x3dpsail.SFString(
    "Shaders"
)).setLevel(x3dpsail.SFInt32(
    1
))).addComponent(x3dpsail.component().setName(
    x3dpsail
    .SFString("CubeMapTexturing")
).setLevel(x3dpsail.SFInt32(
    1
))).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
    x3dpsail
    .SFString("bubbles.x3d")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(
    x3dpsail
    .SFString("John Carlson")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(
    x3dpsail
    .SFString("manual")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(
    x3dpsail
    .SFString("https://coderextreme.net/X3DJSONLD/bubbles.x3d")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString(
    "description"
)).setContent(x3dpsail.SFString(
    "not sure what this is"
)))).setScene(x3dpsail.Scene().addChild(x3dpsail.NavigationInfo(
).setType(x3dpsail.MFString([
    "EXAMINE"
]))).addChild(x3dpsail.Viewpoint().setDEF(x3dpsail.SFString(
    "Tour"
)).setDescription(x3dpsail.SFString(
    "Tour Views"
))).addChild(x3dpsail.Viewpoint().setPosition(x3dpsail.SFVec3f(
    0, 0, 4
)).setDescription(x3dpsail.SFString(
    "sphere in road"
))).addChild(x3dpsail.Background().setBackUrl(
    x3dpsail
    .MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_back.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_back.png"
    ])
).setBottomUrl(
    x3dpsail
    .MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_bottom.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_bottom.png"
    ])
).setFrontUrl(
    x3dpsail
    .MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_front.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_front.png"
    ])
).setLeftUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_left.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_left.png"
    ])
).setRightUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_right.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_right.png"
    ])
).setTopUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_top.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_top.png"
    ])
)).addChild(x3dpsail.Transform().setDEF(
    x3dpsail.SFString("Rose01")
).addChild(x3dpsail.Shape().setGeometry(x3dpsail.Sphere(
)).setAppearance(x3dpsail.Appearance().setDEF(
    x3dpsail
    .SFString("_01_-_Default")
).setMaterial(x3dpsail.Material(
).setDiffuseColor(x3dpsail.SFColor(
    0.7, 0.7, 0.7
)).setSpecularColor(x3dpsail.SFColor(
    0.5, 0.5, 0.5
))).setTexture(x3dpsail.ComposedCubeMapTexture().setBack(x3dpsail.ImageTexture(
).setUrl(
    x3dpsail
    .MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_back.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_back.png"
    ])
)).setBottom(x3dpsail.ImageTexture().setUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_bottom.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_bottom.png"
    ])
)).setFront(x3dpsail.ImageTexture().setUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_front.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_front.png"
    ])
)).setLeft(x3dpsail.ImageTexture().setUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_left.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_left.png"
    ])
)).setRight(x3dpsail.ImageTexture().setUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_right.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_right.png"
    ])
)).setTop(x3dpsail.ImageTexture().setUrl(
    x3dpsail.MFString([
        "../resources/images/all_probes/uffizi_cross/uffizi_top.png",
        "https://coderextreme.net/X3DJSONLD/images/all_probes/uffizi_cross/uffizi_top.png"
    ])))).addShaders(
        x3dpsail.ComposedShader().setDEF(
            x3dpsail.SFString("cobweb")).setLanguage(
                x3dpsail.SFString("GLSL")).addField(
                    x3dpsail.field().setName(
                        x3dpsail.SFString("cube")).setAccessType(
                            x3dpsail.SFString("inputOutput")).setType(
                                x3dpsail.SFString("SFInt32")).setValue(
                                    x3dpsail.SFString("0"))).
        addField(x3dpsail.field().setName(
            x3dpsail.SFString("chromaticDispertion")).setAccessType(
                x3dpsail.SFString("inputOutput")).setType(
                    x3dpsail.SFString("SFVec3f")).setValue(
                        x3dpsail.SFString("0.98 1 1.033"))).addField(
                            x3dpsail.field().setName(
                                x3dpsail.SFString("bias")).setAccessType(
                                    x3dpsail.SFString("inputOutput")).setType(
                                        x3dpsail.SFString("SFFloat")).setValue(
                                            x3dpsail.SFString("0.5"))).
        addField(x3dpsail.field().setName(
            x3dpsail.SFString("scale")).setAccessType(
                x3dpsail.SFString("inputOutput")).setType(
                    x3dpsail.SFString("SFFloat")).setValue(
                        x3dpsail.SFString("0.5"))).addField(
                            x3dpsail.field().setName(
                                x3dpsail.SFString("power")).setAccessType(
                                    x3dpsail.SFString("inputOutput")).setType(
                                        x3dpsail.SFString("SFFloat")).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_bubbles.fs"
            ])).setType(x3dpsail.SFString("FRAGMENT")))
    ).addShaders(x3dpsail.ComposedShader().setDEF(
        x3dpsail.SFString("x3dom")
    ).setLanguage(
        x3dpsail.SFString("GLSL")
    ).addField(
        x3dpsail
        .field()
        .setName(x3dpsail.SFString("cube"))
        .setAccessType(x3dpsail.SFString("inputOutput"))
        .setType(x3dpsail.SFString("SFInt32"))
        .setValue(x3dpsail.SFString("0"))
    ).addField(
        x3dpsail
        .field()
        .setName(x3dpsail.SFString("chromaticDispertion"))
        .setAccessType(x3dpsail.SFString("inputOutput"))
        .setType(x3dpsail.SFString("SFVec3f"))
        .setValue(x3dpsail.SFString("0.98 1 1.033"))
    ).addField(
        x3dpsail
        .field()
        .setName(x3dpsail.SFString("bias"))
        .setAccessType(x3dpsail.SFString("inputOutput"))
        .setType(x3dpsail.SFString("SFFloat"))
        .setValue(x3dpsail.SFString("0.5"))
    ).addField(
        x3dpsail
        .field()
        .setName(x3dpsail.SFString("scale"))
        .setAccessType(x3dpsail.SFString("inputOutput"))
        .setType(x3dpsail.SFString("SFFloat"))
        .setValue(x3dpsail.SFString("0.5"))
    ).addField(
        x3dpsail
        .field()
        .setName(x3dpsail.SFString("power"))
        .setAccessType(x3dpsail.SFString("inputOutput"))
        .setType(x3dpsail.SFString("SFFloat"))
        .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"
    ))))))).addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString(
        "TourTime"
    )).setCycleInterval(x3dpsail.SFTime(
        5
    )).setLoop(x3dpsail.SFBool(
        True
    ))).addChild(x3dpsail.PositionInterpolator().setDEF(
        x3dpsail.
        SFString("TourPosition")
    ).setKey(x3dpsail.MFFloat([
        0, 1
    ])).setKeyValue(x3dpsail.MFVec3f([
        0,
        0, 10, 0,
        0, -10
    ]))).addChild(x3dpsail.OrientationInterpolator().setDEF(
        x3dpsail.SFString("TourOrientation")
    ).setKey(x3dpsail.MFFloat([
        0, 1
    ])).setKeyValue(x3dpsail.MFRotation([
        0, 1,
        0, 0,
        0, 1,
        0, 3.1416
    ]))).addChild(x3dpsail.Script().setDEF(
        x3dpsail.SFString("RandomTourTime")
    ).addField(x3dpsail.field().setName(
        x3dpsail.SFString("set_cycle")
    ).setAccessType(
        x3dpsail.SFString("inputOnly")
    ).setType(
        x3dpsail.SFString("SFTime")
    )).addField(x3dpsail.field().setName(
        x3dpsail.SFString("lastKey")
    ).setAccessType(
        x3dpsail.SFString("inputOutput")
    ).setType(
        x3dpsail.SFString("SFFloat")
    ).setValue(
        x3dpsail.SFString("0")
    )).addField(x3dpsail.field().setName(
        x3dpsail.SFString("orientations")
    ).setAccessType(
        x3dpsail.SFString("inputOutput")
    ).setType(
        x3dpsail.SFString("MFRotation")
    ).setValue(
        x3dpsail.SFString(
            "0 1 0 0 0 1 0 -1.57 0 1 0 3.14 0 1 0 1.57 0 1 0 0 1 0 0 -1.57 0 1 0 0 1 0 0 1.57 0 1 0 0"
        )
    )).addField(x3dpsail.field().setName(
        x3dpsail.SFString("positions")
    ).setAccessType(
        x3dpsail.SFString("inputOutput")
    ).setType(
        x3dpsail.SFString("MFVec3f")
    ).setValue(
        x3dpsail.SFString(
            "0 0 10 -10 0 0 0 0 -10 10 0 0 0 0 10 0 10 0 0 0 10 0 -10 0 0 0 10"
        ))).addField(x3dpsail.field().setName(
            x3dpsail.SFString("position_changed")
        ).setAccessType(x3dpsail.SFString("outputOnly")).setType(
            x3dpsail.SFString("MFVec3f"))).addField(x3dpsail.field().setName(
                x3dpsail.SFString("set_orientation")).setAccessType(
                    x3dpsail.SFString("inputOnly")).setType(
                        x3dpsail.SFString("MFRotation"))).
                  addField(x3dpsail.field().setName(
                      x3dpsail.SFString("orientation_changed")).setAccessType(
                          x3dpsail.SFString("outputOnly")).setType(
                              x3dpsail.SFString("MFRotation"))).setSourceCode(
                                  '''ecmascript:\n"+
"               function set_cycle(value) {\n"+
"                        var ov = lastKey;\n"+
"                        do {\n"+
"                            lastKey = Math.round(Math.random()*(positions.length-1));\n"+
"                        } while (lastKey === ov);\n"+
"                        var vc = lastKey;\n"+
"\n"+
"                        orientation_changed = new MFRotation();\n"+
"                        orientation_changed[0] = new SFRotation(orientations[ov].x, orientations[ov].y, orientations[ov].z, orientations[ov].w);\n"+
"                        orientation_changed[1] = new SFRotation(orientations[vc].x, orientations[vc].y, orientations[vc].z, orientations[vc].w);\n"+
"                        position_changed = new MFVec3f();\n"+
"                        position_changed[0] = new SFVec3f(positions[ov].x,positions[ov].y,positions[ov].z);\n"+
"                        position_changed[1] = new SFVec3f(positions[vc].x,positions[vc].y,positions[vc].z);\n"+
"                    // }\n"+
"               }''')).
              addChild(x3dpsail.ROUTE().setFromNode(
                  x3dpsail.SFString("TourTime")).setFromField(
                      x3dpsail.SFString("cycleTime_changed")).setToNode(
                          x3dpsail.SFString("RandomTourTime")).setToField(
                              x3dpsail.SFString("set_cycle"))).
              addChild(x3dpsail.ROUTE().setFromNode(
                  x3dpsail.SFString("RandomTourTime")).setFromField(
                      x3dpsail.SFString("orientation_changed")).setToNode(
                          x3dpsail.SFString("TourOrientation")).setToField(
                              x3dpsail.SFString("set_keyValue"))).
              addChild(x3dpsail.ROUTE().setFromNode(
                  x3dpsail.SFString("RandomTourTime")).setFromField(
                      x3dpsail.SFString("position_changed")).setToNode(
                          x3dpsail.SFString("TourPosition")).setToField(
                              x3dpsail.SFString("set_keyValue"))).
              addChild(x3dpsail.ROUTE().setFromNode(
                  x3dpsail.SFString("TourTime")).setFromField(
                      x3dpsail.SFString("fraction_changed")).setToNode(
                          x3dpsail.SFString("TourOrientation")).setToField(
                              x3dpsail.SFString("set_fraction"))
                       ).addChild(x3dpsail.ROUTE().setFromNode(
                           x3dpsail.SFString("TourOrientation")).setFromField(
                               x3dpsail.SFString("value_changed")).setToNode(
                                   x3dpsail.SFString("Tour")).setToField(
                                       x3dpsail.SFString("set_orientation"))).
              addChild(x3dpsail.ROUTE().setFromNode(
                  x3dpsail.SFString("TourTime")).setFromField(
                      x3dpsail.SFString("fraction_changed")).setToNode(
                          x3dpsail.SFString("TourPosition")).setToField(
                              x3dpsail.SFString("set_fraction"))
                       ).addChild(x3dpsail.ROUTE().setFromNode(
                           x3dpsail.SFString("TourPosition")).setFromField(
                               x3dpsail.SFString("value_changed")).setToNode(
                                   x3dpsail.SFString("Tour")).setToField(
                                       x3dpsail.SFString("set_position")))))
Example #17
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(x3dpsail.SFString("3.3"))
      .setHead(x3dpsail.head()
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("x3dconnectorProto")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("Lost, Doug Sanden I think")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("manual")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("https://coderextreme.net/X3DJSONLD/x3dconnectorProto.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("a generic proto to connect two objects"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.Viewpoint().setPosition(x3dpsail.SFVec3f(0,0,5)).setDescription(x3dpsail.SFString("Only Viewpoint")))
        .addChild(x3dpsail.Background().setSkyColor(x3dpsail.MFColor([0.4,0.4,0.4])))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("DECLpoint_G1_node"))
          .addChild(x3dpsail.Shape()
            .setGeometry(x3dpsail.Sphere().setRadius(x3dpsail.SFFloat(0.1)))
            .setAppearance(x3dpsail.Appearance()
              .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(1,0,0)))))
          .addChild(x3dpsail.PositionInterpolator().setDEF(x3dpsail.SFString("DECLpoint_G1_PI1")).setKey(x3dpsail.MFFloat([0,1])).setKeyValue(x3dpsail.MFVec3f([0,0,0,0,5,0])))
          .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("DECLpoint_G1_MB1"))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("translation")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0 0 0")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("old")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0 0 0")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("set_location")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFTime")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("keyValue")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("MFVec3f")).setValue(x3dpsail.SFString("0 0 0 0 5 0"))).setSourceCode('''ecmascript:\n"+
"		function set_location(value) {\n"+
"                    old = translation;\n"+
"		    translation = new SFVec3f(Math.random()*10-5, Math.random()*10-5, Math.random()*10-5);\n"+
"                    keyValue = new MFVec3f([old, translation]);\n"+
"		    // Browser.println(keyValue);\n"+
"		}''')
)
          .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("DECLpoint_G1_CL1")).setCycleInterval(x3dpsail.SFTime(3)).setLoop(x3dpsail.SFBool(True)))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G1_CL1")).setFromField(x3dpsail.SFString("cycleTime")).setToNode(x3dpsail.SFString("DECLpoint_G1_MB1")).setToField(x3dpsail.SFString("set_location")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G1_CL1")).setFromField(x3dpsail.SFString("fraction_changed")).setToNode(x3dpsail.SFString("DECLpoint_G1_PI1")).setToField(x3dpsail.SFString("set_fraction")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G1_MB1")).setFromField(x3dpsail.SFString("keyValue")).setToNode(x3dpsail.SFString("DECLpoint_G1_PI1")).setToField(x3dpsail.SFString("keyValue")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G1_PI1")).setFromField(x3dpsail.SFString("value_changed")).setToNode(x3dpsail.SFString("DECLpoint_G1_node")).setToField(x3dpsail.SFString("set_translation"))))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("DECLpoint_G2_node"))
          .addChild(x3dpsail.Shape()
            .setGeometry(x3dpsail.Sphere().setRadius(x3dpsail.SFFloat(0.1)))
            .setAppearance(x3dpsail.Appearance()
              .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(1,0,0)))))
          .addChild(x3dpsail.PositionInterpolator().setDEF(x3dpsail.SFString("DECLpoint_G2_PI1")).setKey(x3dpsail.MFFloat([0,1])).setKeyValue(x3dpsail.MFVec3f([0,0,0,0,5,0])))
          .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("DECLpoint_G2_MB1"))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("translation")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0 0 0")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("old")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0 0 0")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("set_location")).setAccessType(x3dpsail.SFString("inputOnly")).setType(x3dpsail.SFString("SFTime")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("keyValue")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("MFVec3f")).setValue(x3dpsail.SFString("0 0 0 0 5 0"))).setSourceCode('''ecmascript:\n"+
"		function set_location(value) {\n"+
"                    old = translation;\n"+
"		    translation = new SFVec3f(Math.random()*10-5, Math.random()*10-5, Math.random()*10-5);\n"+
"                    keyValue = new MFVec3f([old, translation]);\n"+
"		    // Browser.println(keyValue);\n"+
"		}''')
)
          .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("DECLpoint_G2_CL1")).setCycleInterval(x3dpsail.SFTime(3)).setLoop(x3dpsail.SFBool(True)))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G2_CL1")).setFromField(x3dpsail.SFString("cycleTime")).setToNode(x3dpsail.SFString("DECLpoint_G2_MB1")).setToField(x3dpsail.SFString("set_location")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G2_CL1")).setFromField(x3dpsail.SFString("fraction_changed")).setToNode(x3dpsail.SFString("DECLpoint_G2_PI1")).setToField(x3dpsail.SFString("set_fraction")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G2_MB1")).setFromField(x3dpsail.SFString("keyValue")).setToNode(x3dpsail.SFString("DECLpoint_G2_PI1")).setToField(x3dpsail.SFString("keyValue")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G2_PI1")).setFromField(x3dpsail.SFString("value_changed")).setToNode(x3dpsail.SFString("DECLpoint_G2_node")).setToField(x3dpsail.SFString("set_translation"))))
        .addChild(x3dpsail.Group()
          .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("DECLx3dconnector_connector1_trans"))
            .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("DECLx3dconnector_connector1_rotscale"))
              .addChild(x3dpsail.Shape()
                .setAppearance(x3dpsail.Appearance()
                  .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0.2,0.7,0.7)).setTransparency(x3dpsail.SFFloat(0.5))))
                .setGeometry(x3dpsail.Cylinder().setRadius(x3dpsail.SFFloat(0.05))))))
          .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("DECLx3dconnector_connector1_S1"))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("startnode")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFNode"))
              .addChild(x3dpsail.Group().setUSE(x3dpsail.SFString("DECLpoint_G1_node"))))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("endnode")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFNode"))
              .addChild(x3dpsail.Group().setUSE(x3dpsail.SFString("DECLpoint_G2_node"))))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("position")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFNode"))
              .addChild(x3dpsail.Transform().setUSE(x3dpsail.SFString("DECLx3dconnector_connector1_trans"))))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("rotscale")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFNode"))
              .addChild(x3dpsail.Transform().setUSE(x3dpsail.SFString("DECLx3dconnector_connector1_rotscale"))))
            .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"))).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 if (typeof SFRotation !== 'undefined') {\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"+
"	    } else {\n"+
"		    return {\n"+
"			    scale : new SFVec3f(1.0,dist,1.0),\n"+
"			    translation : transl\n"+
"		    };\n"+
"	    }\n"+
"	}\n"+
"	function recompute_and_route(startpoint, endpoint) {\n"+
"	      var trafo = recompute(startpoint, endpoint);\n"+
"	      position.translation = trafo.translation;\n"+
"	      rotscale.rotation = trafo.rotation;\n"+
"	      rotscale.scale = trafo.scale;\n"+
"	}\n"+
"        function initialize(){\n"+
"            recompute_and_route(startnode.translation,endnode.translation);\n"+
"        }\n"+
"        function set_startpoint(val,t){\n"+
"            recompute_and_route(val,endnode.translation);\n"+
"        }\n"+
"        function set_endpoint(val,t){\n"+
"            recompute_and_route(startnode.translation,val);\n"+
"        }''')
))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G1_node")).setFromField(x3dpsail.SFString("translation")).setToNode(x3dpsail.SFString("DECLx3dconnector_connector1_S1")).setToField(x3dpsail.SFString("set_startpoint")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("DECLpoint_G2_node")).setFromField(x3dpsail.SFString("translation")).setToNode(x3dpsail.SFString("DECLx3dconnector_connector1_S1")).setToField(x3dpsail.SFString("set_endpoint")))))
Example #18
0
    x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
        x3dpsail.SFString("3.3")).setHead(
            x3dpsail.head().addComponent(x3dpsail.component().setName(
                x3dpsail.SFString("Shaders")).setLevel(
                    x3dpsail.SFInt32(1))).addComponent(
                        x3dpsail.component().setName(
                            x3dpsail.SFString("CubeMapTexturing")).setLevel(
                                x3dpsail.SFInt32(1))).addMeta(
                                    x3dpsail.meta().setName(
                                        x3dpsail.SFString("title")).setContent(
                                            x3dpsail.SFString("bub.x3d"))).
            addMeta(x3dpsail.meta().setName(
                x3dpsail.SFString("creator")).setContent(
                    x3dpsail.SFString("John Carlson"))).addMeta(
                        x3dpsail.meta().setName(
                            x3dpsail.SFString("description")).setContent(
                                x3dpsail.SFString("3 prismatic spheres"))).
            addMeta(x3dpsail.meta().setName(
                x3dpsail.SFString("generator")).setContent(
                    x3dpsail.SFString(
                        "X3D-Edit, https://savage.nps.edu/X3D-Edit")
                )).addMeta(x3dpsail.meta().setName(
                    x3dpsail.SFString("identifier")).setContent(
                        x3dpsail.SFString(
                            "https://coderextreme.net/X3DJSONLD/bub.x3d")))).
    setScene(x3dpsail.Scene().addChild(x3dpsail.NavigationInfo(
    )).addChild(x3dpsail.Background().setBackUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_back.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_back.png"
        ])
    ).setBottomUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_bottom.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_bottom.png"
        ])
    ).setFrontUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_front.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_front.png"
        ])
    ).setLeftUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_left.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_left.png"
        ])
    ).setRightUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_right.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_right.png"
        ])
    ).setTopUrl(
        x3dpsail.MFString([
            "../resources/images/all_probes/stpeters_cross/stpeters_top.png",
            "https://coderextreme.net/X3DJSONLD/images/all_probes/stpeters_cross/stpeters_top.png"
        ])
    )).addChild(
        x3dpsail.Viewpoint().setPosition(x3dpsail.SFVec3f(0, 0, 20)).
        setDescription(x3dpsail.SFString("Look at the bubbles flying"))
    ).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"))))
               ).addChild(x3dpsail.ProtoInstance().setName(
                   x3dpsail.SFString("Bubble"))).addChild(
                       x3dpsail.ProtoInstance().setName(
                           x3dpsail.SFString("Bubble"))).addChild(
                               x3dpsail.ProtoInstance().setName(
                                   x3dpsail.SFString("Bubble")))))
Example #19
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
    x3dpsail.SFString("3.3")).setHead(
        x3dpsail.head().addMeta(x3dpsail.meta().setName(
            x3dpsail.SFString("title")).setContent(
                x3dpsail.SFString("box.x3d"))).addMeta(x3dpsail.meta().setName(
                    x3dpsail.SFString("creator")).setContent(
                        x3dpsail.SFString("John Carlson"))).addMeta(
                            x3dpsail.meta().setName(
                                x3dpsail.SFString("generator")).setContent(
                                    x3dpsail.SFString("manual"))).
        addMeta(x3dpsail.meta().setName(
            x3dpsail.SFString("identifier")).setContent(
                x3dpsail.SFString(
                    "https://coderextreme.net/X3DJSONLD/box.x3d"))).addMeta(
                        x3dpsail.meta().setName(
                            x3dpsail.SFString("description")).setContent(
                                x3dpsail.SFString("3 boxes")))
    ).setScene(x3dpsail.Scene().addChild(x3dpsail.NavigationInfo().setType(
        x3dpsail.MFString([
            "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(
                       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.Cylinder()).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("ytranslation")))).
                   addChild(x3dpsail.ProtoInstance().setName(
                       x3dpsail.SFString("anyShape")).addFieldValue(
                           x3dpsail.fieldValue().setName(
                               x3dpsail.SFString("xtranslation")).setValue(
                                   x3dpsail.SFString("0 0 0"))
                       ).setIS(x3dpsail.IS().addConnect(
                           x3dpsail.connect().setNodeField(
                               x3dpsail.SFString("myShape")).setProtoField(
                                   x3dpsail.SFString("myShape"))
                       ))).addChild(x3dpsail.ProtoInstance().setName(
                           x3dpsail.SFString("anyShape")).addFieldValue(
                               x3dpsail.fieldValue().setName(
                                   x3dpsail.SFString("xtranslation")).setValue(
                                       x3dpsail.SFString("2 0 0"))
                           ).setIS(x3dpsail.IS().addConnect(
                               x3dpsail.connect().setNodeField(
                                   x3dpsail.SFString("myShape")).setProtoField(
                                       x3dpsail.SFString("myShape"))))).
                   addChild(x3dpsail.ProtoInstance().setName(
                       x3dpsail.SFString("anyShape")).addFieldValue(
                           x3dpsail.fieldValue().setName(
                               x3dpsail.SFString("xtranslation")).setValue(
                                   x3dpsail.SFString("-2 0 0"))
                       ).setIS(x3dpsail.IS().addConnect(
                           x3dpsail.connect().setNodeField(
                               x3dpsail.SFString("myShape")).setProtoField(
                                   x3dpsail.SFString("myShape")))))))).
               addChild(x3dpsail.ProtoInstance().setName(
                   x3dpsail.SFString("three")).addFieldValue(
                       x3dpsail.fieldValue().setName(
                           x3dpsail.SFString("ytranslation")).setValue(
                               x3dpsail.SFString("0 0 0"))
                   ).addFieldValue(x3dpsail.fieldValue().setName(
                       x3dpsail.SFString("myShape")).addChild(
                           x3dpsail.Shape().setGeometry(x3dpsail.Box().setSize(
                               x3dpsail.SFVec3f(1, 1, 1))).setAppearance(
                                   x3dpsail.Appearance().setMaterial(
                                       x3dpsail.Material().setDiffuseColor(
                                           x3dpsail.SFColor(0, 1, 0)))))))))
Example #20
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Interchange")).setVersion(
    x3dpsail.SFString("3.3")
).setHead(x3dpsail.head().addMeta(
    x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
        x3dpsail.SFString("template.json"))
).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(
    x3dpsail.SFString("http://coderextreme.net/X3DJSONLD/template.json")
)).addMeta(x3dpsail.meta().setName(
    x3dpsail.SFString("description")).setContent(
        x3dpsail.SFString("Template for an Indexed Face Set"))).addMeta(
            x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(
                x3dpsail.SFString("John Carlson"))).addMeta(
                    x3dpsail.meta().setName(
                        x3dpsail.SFString("created")).setContent(
                            x3dpsail.SFString("4 April 2017")))).
        setScene(x3dpsail.Scene().addChild(x3dpsail.Group().addChild(
            x3dpsail.Shape().setGeometry(x3dpsail.IndexedFaceSet().setDEF(
                x3dpsail.SFString("IndexedFaceSet")).setCoordIndex(
                    x3dpsail.MFInt32([
                        0, 0, 1, -1, 0, 1, 1, -1, 2, 2, 3, 3, -1, 0, 3, 3, 0,
                        -1, 0, 3, 2, 1, -1, 1, 2, 2, 1, -1, 1, 2, 3, 0, -1
                    ])).setNormalIndex(x3dpsail.MFInt32(
                        [0, 0, 1, 2, 3, 4, 5])).setNormalPerVertex(
                            x3dpsail.SFBool(False)).setColorIndex(
                                x3dpsail.MFInt32([
                                    0, 0, 0, -1, 0, 0, 0, -1, 0, 0, 0, 0, -1,
                                    0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0,
                                    -1, 0, 0, 0, 0, -1
                                ])).setCoord(x3dpsail.Coordinate().setPoint(
                                    x3dpsail.MFVec3f([
                                        0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1
                                    ]))).setNormal(x3dpsail.Normal().setVector(
                                        x3dpsail.MFVec3f([
                                            1, 0, 0, -1, 0, 0, 0, 1, 0, 0, 0,
                                            -1, 0, -1, 0, 0, 0, 1
                                        ]))).setColor(
                                            x3dpsail.Color().setColor(
                                                x3dpsail.MFColor([0, 1,
                                                                  0]))))))))
Example #21
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(x3dpsail.SFString("3.3"))
      .setHead(x3dpsail.head()
        .addComponent(x3dpsail.component().setName(x3dpsail.SFString("Shaders")).setLevel(x3dpsail.SFInt32(1)))
        .addComponent(x3dpsail.component().setName(x3dpsail.SFString("CubeMapTexturing")).setLevel(x3dpsail.SFInt32(1)))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("flowers7.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("John Carlson")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("manual")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("https://coderextreme.net/X3DJSONLD/flowers7.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("a flower"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.NavigationInfo())
        #Images courtesy of Paul Debevec's Light Probe Image Gallery

        .addChild(x3dpsail.Background().setDEF(x3dpsail.SFString("background")).setBackUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_back.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_back.png"])).setBottomUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_bottom.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_bottom.png"])).setFrontUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_front.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_front.png"])).setLeftUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_left.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_left.png"])).setRightUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_right.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_right.png"])).setTopUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_top.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_top.png"])))
        .addChild(x3dpsail.Viewpoint().setPosition(x3dpsail.SFVec3f(0,0,40)).setDescription(x3dpsail.SFString("Transparent rose")))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("Rose01"))
          .addChild(x3dpsail.Shape()
            .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().setDEF(x3dpsail.SFString("backShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_back.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_back.png"])))
                .setBottom(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("bottomShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_bottom.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_bottom.png"])))
                .setFront(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("frontShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_front.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_front.png"])))
                .setLeft(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("leftShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_left.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_left.png"])))
                .setRight(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("rightShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_right.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_right.png"])))
                .setTop(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("topShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_top.png","https://coderextreme.net/X3DJSONLD/images/all_probes/beach_cross/beach_top.png"]))))
              .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")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFVec3f")).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")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("a")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("10")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("b")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("1")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("c")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("20")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("d")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("20")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("tdelta")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("0")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("pdelta")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("0")))
                #field name='cube' type='SFNode' accessType=\"inputOutput\"> <ComposedCubeMapTexture USE=\"texture\"/> </field

                .addParts(x3dpsail.ShaderPart().setUrl(x3dpsail.MFString(["../shaders/x3dom_flowers_chromatic.vs","https://coderextreme.net/X3DJSONLD/shaders/x3dom_flowers_chromatic.vs"])).setType(x3dpsail.SFString("VERTEX")))
                .addParts(x3dpsail.ShaderPart().setUrl(x3dpsail.MFString(["../shaders/pc_bubbles.fs","https://coderextreme.net/X3DJSONLD/shaders/common.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")).setAccessType(x3dpsail.SFString("initializeOnly")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0.98 1 1.033")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("bias")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")).setValue(x3dpsail.SFString("0.5")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("scale")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")).setValue(x3dpsail.SFString("0.5")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("power")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")).setValue(x3dpsail.SFString("2")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("a")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")).setValue(x3dpsail.SFString("10")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("b")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")).setValue(x3dpsail.SFString("1")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("c")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")).setValue(x3dpsail.SFString("20")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("d")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")).setValue(x3dpsail.SFString("20")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("tdelta")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")).setValue(x3dpsail.SFString("0")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("pdelta")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")).setValue(x3dpsail.SFString("0")))
                .addParts(x3dpsail.ShaderPart().setUrl(x3dpsail.MFString(["../shaders/cobweb_flowers_chromatic.vs","https://coderextreme.net/X3DJSONLD/shaders/cobweb_flowers_chromatic.vs"])).setType(x3dpsail.SFString("VERTEX")))
                .addParts(x3dpsail.ShaderPart().setUrl(x3dpsail.MFString(["../shaders/common.fs","https://coderextreme.net/X3DJSONLD/shaders/common.fs"])).setType(x3dpsail.SFString("FRAGMENT")))))
            .setGeometry(x3dpsail.Sphere().setSolid(x3dpsail.SFBool(False)))))
        .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("UrlSelector")).setDirectOutput(x3dpsail.SFBool(True))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("frontUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_front.png\" \"../resources/images/all_probes/building_cross/building_front.png\" \"../resources/images/all_probes/campus_cross/campus_front.png\" \"../resources/images/all_probes/galileo_cross/galileo_front.png\" \"../resources/images/all_probes/grace_cross/grace_front.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_front.png\" \"../resources/images/all_probes/rnl_cross/rnl_front.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_front.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_front.png\"")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("backUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_back.png\" \"../resources/images/all_probes/building_cross/building_back.png\" \"../resources/images/all_probes/campus_cross/campus_back.png\" \"../resources/images/all_probes/galileo_cross/galileo_back.png\" \"../resources/images/all_probes/grace_cross/grace_back.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_back.png\" \"../resources/images/all_probes/rnl_cross/rnl_back.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_back.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_back.png\"")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("leftUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_left.png\" \"../resources/images/all_probes/building_cross/building_left.png\" \"../resources/images/all_probes/campus_cross/campus_left.png\" \"../resources/images/all_probes/galileo_cross/galileo_left.png\" \"../resources/images/all_probes/grace_cross/grace_left.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_left.png\" \"../resources/images/all_probes/rnl_cross/rnl_left.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_left.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_left.png\"")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("rightUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_right.png\" \"../resources/images/all_probes/building_cross/building_right.png\" \"../resources/images/all_probes/campus_cross/campus_right.png\" \"../resources/images/all_probes/galileo_cross/galileo_right.png\" \"../resources/images/all_probes/grace_cross/grace_right.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_right.png\" \"../resources/images/all_probes/rnl_cross/rnl_right.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_right.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_right.png\"")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("topUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_top.png\" \"../resources/images/all_probes/building_cross/building_top.png\" \"../resources/images/all_probes/campus_cross/campus_top.png\" \"../resources/images/all_probes/galileo_cross/galileo_top.png\" \"../resources/images/all_probes/grace_cross/grace_top.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_top.png\" \"../resources/images/all_probes/rnl_cross/rnl_top.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_top.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_top.png\"")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("bottomUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_bottom.png\" \"../resources/images/all_probes/building_cross/building_bottom.png\" \"../resources/images/all_probes/campus_cross/campus_bottom.png\" \"../resources/images/all_probes/galileo_cross/galileo_bottom.png\" \"../resources/images/all_probes/grace_cross/grace_bottom.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_bottom.png\" \"../resources/images/all_probes/rnl_cross/rnl_bottom.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_bottom.png\"")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("front")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("back")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("left")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("right")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("top")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("bottom")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("inputOutput")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("set_fraction")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("old")).setType(x3dpsail.SFString("SFInt32")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("-1"))).setSourceCode('''ecmascript:\n"+
"        function set_fraction( f, tm ) {\n"+
"            var side = Math.floor(f*frontUrls.length);\n"+
"            if (side > frontUrls.length-1) {\n"+
"                side = 0;\n"+
"            }\n"+
"            if (side != old) {\n"+
"                    old = side;\n"+
"                    front[0] = frontUrls[side];\n"+
"                    back[0] = backUrls[side];\n"+
"                    left[0] = leftUrls[side];\n"+
"                    right[0] = rightUrls[side];\n"+
"                    top[0] = topUrls[side];\n"+
"                    bottom[0] = bottomUrls[side];\n"+
"            }\n"+
"        }''')
)
        #<TimeSensor DEF=\"Clock\" cycleInterval=\"45\" loop='true'/> <ROUTE fromNode='Clock' fromField='fraction_changed' toNode='UrlSelector' toField='set_fraction'/> <ROUTE fromNode='UrlSelector' fromField='front' toNode='background' toField='frontUrl'/> <ROUTE fromNode='UrlSelector' fromField='back' toNode='background' toField='backUrl'/> <ROUTE fromNode='UrlSelector' fromField='left' toNode='background' toField='leftUrl'/> <ROUTE fromNode='UrlSelector' fromField='right' toNode='background' toField='rightUrl'/> <ROUTE fromNode='UrlSelector' fromField='top' toNode='background' toField='topUrl'/> <ROUTE fromNode='UrlSelector' fromField='bottom' toNode='background' toField='bottomUrl'/> <ROUTE fromNode='UrlSelector' fromField='front' toNode='frontShader' toField='url'/> <ROUTE fromNode='UrlSelector' fromField='back' toNode='backShader' toField='url'/> <ROUTE fromNode='UrlSelector' fromField='left' toNode='leftShader' toField='url'/> <ROUTE fromNode='UrlSelector' fromField='right' toNode='rightShader' toField='url'/> <ROUTE fromNode='UrlSelector' fromField='top' toNode='topShader' toField='url'/> <ROUTE fromNode='UrlSelector' fromField='bottom' toNode='bottomShader' toField='url'/>

        .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("Animate")).setDirectOutput(x3dpsail.SFBool(True))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("set_fraction")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("a")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("10")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("b")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("1")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("c")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("20")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("d")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("20")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("tdelta")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("0")))
          .addField(x3dpsail.field().setName(x3dpsail.SFString("pdelta")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("0"))).setSourceCode('''ecmascript:\n"+
"\n"+
"function set_fraction() {\n"+
"	var choice = Math.floor(Math.random() * 4);\n"+
"	if (choice == 0) {\n"+
"		a = a + Math.floor(Math.random() * 2) * 2 - 1;\n"+
"	} else if (choice == 1) {\n"+
"		b = b + Math.floor(Math.random() * 2) * 2 - 1;\n"+
"	} else if (choice == 2) {\n"+
"		c = c + Math.floor(Math.random() * 2) * 2 - 1;\n"+
"	} else if (choice == 3) {\n"+
"		d = d + Math.floor(Math.random() * 2) * 2 - 1;\n"+
"	}\n"+
"	tdelta = tdelta + 0.5;\n"+
"	pdelta = pdelta + 0.5;\n"+
"	if (a < 1) {\n"+
"		a = 10;\n"+
"	}\n"+
"	if (b < 1) {\n"+
"		b = 10;\n"+
"	}\n"+
"	if (c < 1) {\n"+
"		c = 4;\n"+
"	}\n"+
"	if (c > 20) {\n"+
"		c = 4;\n"+
"	}\n"+
"	if (d < 1) {\n"+
"		d = 4;\n"+
"	}\n"+
"	if (d > 20) {\n"+
"		d = 4;\n"+
"	}\n"+
"}''')
)
        .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("TourTime")).setCycleInterval(x3dpsail.SFTime(5)).setLoop(x3dpsail.SFBool(True)))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("TourTime")).setFromField(x3dpsail.SFString("fraction_changed")).setToNode(x3dpsail.SFString("Animate")).setToField(x3dpsail.SFString("set_fraction")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("a")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("a")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("b")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("b")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("c")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("c")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("d")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("d")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("pdelta")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("pdelta")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("tdelta")).setToNode(x3dpsail.SFString("cobweb")).setToField(x3dpsail.SFString("tdelta")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("a")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("a")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("b")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("b")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("c")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("c")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("d")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("d")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("pdelta")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("pdelta")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Animate")).setFromField(x3dpsail.SFString("tdelta")).setToNode(x3dpsail.SFString("x3dom")).setToField(x3dpsail.SFString("tdelta")))))
Example #22
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(x3dpsail.SFString("3.3"))
      .setHead(x3dpsail.head()
        .addComponent(x3dpsail.component().setName(x3dpsail.SFString("Shaders")).setLevel(x3dpsail.SFInt32(1)))
        .addComponent(x3dpsail.component().setName(x3dpsail.SFString("CubeMapTexturing")).setLevel(x3dpsail.SFInt32(1)))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("mirro2.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("John Carlson")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("manual")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("https://coderextreme.net/X3DJSONLD/mirro2.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("a mirrored sphere"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.Viewpoint().setPosition(x3dpsail.SFVec3f(0,5,100)).setDescription(x3dpsail.SFString("Switch background and images texture")))
        .addChild(x3dpsail.Background().setDEF(x3dpsail.SFString("cube")).setLeftUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_left.png","https://coderextreme.net/images/all_probes/beach_cross/beach_left.png"])).setRightUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_right.png","https://coderextreme.net/images/all_probes/beach_cross/beach_right.png"])).setFrontUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_front.png","https://coderextreme.net/images/all_probes/beach_cross/beach_front.png"])).setBackUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_back.png","https://coderextreme.net/images/all_probes/beach_cross/beach_back.png"])).setTopUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_top.png","https://coderextreme.net/images/all_probes/beach_cross/beach_top.png"])).setBottomUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_bottom.png","https://coderextreme.net/images/all_probes/beach_cross/beach_bottom.png"])))
        .addChild(x3dpsail.Transform()
          .addChild(x3dpsail.Shape()
            .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()
                .setBack(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("backShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_back.png","https://coderextreme.net/images/all_probes/beach_cross/beach_back.png"])))
                .setBottom(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("bottomShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_bottom.png","https://coderextreme.net/images/all_probes/beach_cross/beach_bottom.png"])))
                .setFront(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("frontShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_front.png","https://coderextreme.net/images/all_probes/beach_cross/beach_front.png"])))
                .setLeft(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("leftShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_left.png","https://coderextreme.net/images/all_probes/beach_cross/beach_left.png"])))
                .setRight(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("rightShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_right.png","https://coderextreme.net/images/all_probes/beach_cross/beach_right.png"])))
                .setTop(x3dpsail.ImageTexture().setDEF(x3dpsail.SFString("topShader")).setUrl(x3dpsail.MFString(["../resources/images/all_probes/beach_cross/beach_top.png","https://coderextreme.net/images/all_probes/beach_cross/beach_top.png"]))))
              .addShaders(x3dpsail.ComposedShader().setDEF(x3dpsail.SFString("cobweb")).setLanguage(x3dpsail.SFString("GLSL"))
                #http://hypertextbook.com/facts/2005/JustinChe.shtml

                .addField(x3dpsail.field().setName(x3dpsail.SFString("chromaticDispertion")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0.98 1 1.033")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("cube")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFInt32")).setValue(x3dpsail.SFString("0")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("bias")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0.5")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("scale")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0.5")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("power")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFFloat")).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/mix.fs","https://coderextreme.net/X3DJSONLD/shaders/mix.fs"])).setType(x3dpsail.SFString("FRAGMENT"))))
              .addShaders(x3dpsail.ComposedShader().setDEF(x3dpsail.SFString("x3dom")).setLanguage(x3dpsail.SFString("GLSL"))
                #http://hypertextbook.com/facts/2005/JustinChe.shtml

                .addField(x3dpsail.field().setName(x3dpsail.SFString("chromaticDispertion")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFVec3f")).setValue(x3dpsail.SFString("0.98 1 1.033")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("cube")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFInt32")).setValue(x3dpsail.SFString("0")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("bias")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0.5")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("scale")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFFloat")).setValue(x3dpsail.SFString("0.5")))
                .addField(x3dpsail.field().setName(x3dpsail.SFString("power")).setAccessType(x3dpsail.SFString("inputOutput")).setType(x3dpsail.SFString("SFFloat")).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/mix.fs","https://coderextreme.net/X3DJSONLD/shaders/mix.fs"])).setType(x3dpsail.SFString("FRAGMENT")))))
            .setGeometry(x3dpsail.Sphere().setRadius(x3dpsail.SFFloat(30))))
          .addChild(x3dpsail.Script().setDEF(x3dpsail.SFString("UrlSelector")).setDirectOutput(x3dpsail.SFBool(True))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("frontUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_front.png\" \"../resources/images/all_probes/building_cross/building_front.png\" \"../resources/images/all_probes/campus_cross/campus_front.png\" \"../resources/images/all_probes/galileo_cross/galileo_front.png\" \"../resources/images/all_probes/grace_cross/grace_front.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_front.png\" \"../resources/images/all_probes/rnl_cross/rnl_front.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_front.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_front.png\"")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("backUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_back.png\" \"../resources/images/all_probes/building_cross/building_back.png\" \"../resources/images/all_probes/campus_cross/campus_back.png\" \"../resources/images/all_probes/galileo_cross/galileo_back.png\" \"../resources/images/all_probes/grace_cross/grace_back.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_back.png\" \"../resources/images/all_probes/rnl_cross/rnl_back.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_back.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_back.png\"")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("leftUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_left.png\" \"../resources/images/all_probes/building_cross/building_left.png\" \"../resources/images/all_probes/campus_cross/campus_left.png\" \"../resources/images/all_probes/galileo_cross/galileo_left.png\" \"../resources/images/all_probes/grace_cross/grace_left.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_left.png\" \"../resources/images/all_probes/rnl_cross/rnl_left.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_left.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_left.png\"")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("rightUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_right.png\" \"../resources/images/all_probes/building_cross/building_right.png\" \"../resources/images/all_probes/campus_cross/campus_right.png\" \"../resources/images/all_probes/galileo_cross/galileo_right.png\" \"../resources/images/all_probes/grace_cross/grace_right.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_right.png\" \"../resources/images/all_probes/rnl_cross/rnl_right.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_right.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_right.png\"")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("topUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_top.png\" \"../resources/images/all_probes/building_cross/building_top.png\" \"../resources/images/all_probes/campus_cross/campus_top.png\" \"../resources/images/all_probes/galileo_cross/galileo_top.png\" \"../resources/images/all_probes/grace_cross/grace_top.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_top.png\" \"../resources/images/all_probes/rnl_cross/rnl_top.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_top.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_top.png\"")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("bottomUrls")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("initializeOnly")).setValue(x3dpsail.SFString("\"../resources/images/all_probes/beach_cross/beach_bottom.png\" \"../resources/images/all_probes/building_cross/building_bottom.png\" \"../resources/images/all_probes/campus_cross/campus_bottom.png\" \"../resources/images/all_probes/galileo_cross/galileo_bottom.png\" \"../resources/images/all_probes/grace_cross/grace_bottom.png\" \"../resources/images/all_probes/kitchen_cross/kitchen_bottom.png\" \"../resources/images/all_probes/rnl_cross/rnl_bottom.png\" \"../resources/images/all_probes/stpeters_cross/stpeters_bottom.png\" \"../resources/images/all_probes/uffizi_cross/uffizi_bottom.png\"")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("front_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("back_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("left_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("right_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("top_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("bottom_changed")).setType(x3dpsail.SFString("MFString")).setAccessType(x3dpsail.SFString("outputOnly")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("set_fraction")).setType(x3dpsail.SFString("SFFloat")).setAccessType(x3dpsail.SFString("inputOnly")))
            .addField(x3dpsail.field().setName(x3dpsail.SFString("old")).setType(x3dpsail.SFString("SFInt32")).setAccessType(x3dpsail.SFString("inputOutput")).setValue(x3dpsail.SFString("-1"))).setSourceCode('''ecmascript:\n"+
"        function set_fraction( f, tm ) {\n"+
"	    var side = Math.floor(f*frontUrls.length);\n"+
"	    if (side > frontUrls.length-1) {\n"+
"	    	side = 0;\n"+
"	    }\n"+
"	    if (side != old) {\n"+
"	    	    // Browser.print(f+\" \"+side);\n"+
"	    	    old = side;\n"+
"		    front_changed[0] = frontUrls[side];\n"+
"		    back_changed[0] = backUrls[side];\n"+
"		    left_changed[0] = leftUrls[side];\n"+
"		    right_changed[0] = rightUrls[side];\n"+
"		    top_changed[0] = topUrls[side];\n"+
"		    bottom_changed[0] = bottomUrls[side];\n"+
"            }\n"+
"        }''')
)
          .addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString("Clock")).setCycleInterval(x3dpsail.SFTime(45)).setLoop(x3dpsail.SFBool(True)))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("Clock")).setFromField(x3dpsail.SFString("fraction_changed")).setToNode(x3dpsail.SFString("UrlSelector")).setToField(x3dpsail.SFString("set_fraction")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("front_changed")).setToNode(x3dpsail.SFString("cube")).setToField(x3dpsail.SFString("frontUrl")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("back_changed")).setToNode(x3dpsail.SFString("cube")).setToField(x3dpsail.SFString("backUrl")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("left_changed")).setToNode(x3dpsail.SFString("cube")).setToField(x3dpsail.SFString("leftUrl")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("right_changed")).setToNode(x3dpsail.SFString("cube")).setToField(x3dpsail.SFString("rightUrl")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("top_changed")).setToNode(x3dpsail.SFString("cube")).setToField(x3dpsail.SFString("topUrl")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("bottom_changed")).setToNode(x3dpsail.SFString("cube")).setToField(x3dpsail.SFString("bottomUrl")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("front_changed")).setToNode(x3dpsail.SFString("frontShader")).setToField(x3dpsail.SFString("url")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("back_changed")).setToNode(x3dpsail.SFString("backShader")).setToField(x3dpsail.SFString("url")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("left_changed")).setToNode(x3dpsail.SFString("leftShader")).setToField(x3dpsail.SFString("url")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("right_changed")).setToNode(x3dpsail.SFString("rightShader")).setToField(x3dpsail.SFString("url")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("top_changed")).setToNode(x3dpsail.SFString("topShader")).setToField(x3dpsail.SFString("url")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("UrlSelector")).setFromField(x3dpsail.SFString("bottom_changed")).setToNode(x3dpsail.SFString("bottomShader")).setToField(x3dpsail.SFString("url"))))))
Example #23
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
    x3dpsail.SFString("3.3")).setHead(x3dpsail.head().addMeta(
        x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
            x3dpsail.SFString("SFVec3f.x3d"))
    ).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(
        x3dpsail.SFString("John Carlson"))).addMeta(x3dpsail.meta().setName(
            x3dpsail.SFString("description")).setContent(
                x3dpsail.SFString("3 prismatic spheres")
            )).addMeta(x3dpsail.meta().setName(
                x3dpsail.SFString("identifier")).setContent(
                    x3dpsail.SFString(
                        "https://coderextreme.net/X3DJSONLD/SFVec3f.x3d")))).
        setScene(x3dpsail.Scene().addChild(
            x3dpsail.NavigationInfo()).addChild(
                x3dpsail.Transform().setDEF(
                    x3dpsail.SFString("transform")).addChild(
                        x3dpsail.Shape().setAppearance(
                            x3dpsail.Appearance().setMaterial(
                                x3dpsail.Material().setDiffuseColor(
                                    x3dpsail.SFColor(
                                        0.7, 0.7, 0.7)).setSpecularColor(
                                            x3dpsail.SFColor(
                                                0.5, 0.5, 0.5)))).setGeometry(
                                                    x3dpsail.Sphere()))
            ).addChild(x3dpsail.Script().setDEF(
                x3dpsail.SFString("Bounce")).addField(
                    x3dpsail.field().setName(
                        x3dpsail.SFString("set_translation")).setAccessType(
                            x3dpsail.SFString("inputOnly")).setType(
                                x3dpsail.SFString("SFVec3f")).setValue(
                                    x3dpsail.SFString("0 0 0"))
                ).addField(x3dpsail.field().setName(
                    x3dpsail.SFString("translation_changed")).setAccessType(
                        x3dpsail.SFString("outputOnly")).setType(
                            x3dpsail.SFString("SFVec3f")).setValue(
                                x3dpsail.SFString("0 0 0"))
                           ).addField(x3dpsail.field().setName(
                               x3dpsail.SFString("translation")).setAccessType(
                                   x3dpsail.SFString("inputOutput")).setType(
                                       x3dpsail.SFString("SFVec3f")).setValue(
                                           x3dpsail.SFString("0 0 0"))).
                       addField(x3dpsail.field().setName(
                           x3dpsail.SFString("velocity")).setAccessType(
                               x3dpsail.SFString("inputOutput")).setType(
                                   x3dpsail.SFString("SFVec3f")).setValue(
                                       x3dpsail.SFString("0 0 0"))).
                       addField(x3dpsail.field().setName(
                           x3dpsail.SFString("set_fraction")).setAccessType(
                               x3dpsail.SFString("inputOnly")).setType(
                                   x3dpsail.SFString("SFTime"))).setSourceCode(
                                       '''ecmascript:\n"+
"			function newBubble() {\n"+
"			    translation = new SFVec3f(0, 0, 0);\n"+
"			    velocity = new SFVec3f(\n"+
"			    	Math.random() - 0.5,\n"+
"				Math.random() - 0.5,\n"+
"				Math.random() - 0.5);\n"+
"			}\n"+
"			function set_fraction() {\n"+
"			    translation = new SFVec3f(\n"+
"			    	translation.x + velocity.x,\n"+
"				translation.y + velocity.y,\n"+
"				translation.z + velocity.z);\n"+
"				if (Math.abs(translation.x) > 10) {\n"+
"					newBubble();\n"+
"				} else if (Math.abs(translation.y) > 10) {\n"+
"					newBubble();\n"+
"				} else if (Math.abs(translation.z) > 10) {\n"+
"					newBubble();\n"+
"				} else {\n"+
"					velocity = new SFVec3f(\n"+
"						velocity.x + Math.random() * 0.2 - 0.1,\n"+
"						velocity.y + Math.random() * 0.2 - 0.1,\n"+
"						velocity.z + Math.random() * 0.2 - 0.1\n"+
"					);\n"+
"				}\n"+
"			}\n"+
"\n"+
"			function initialize() {\n"+
"			     newBubble();\n"+
"			}''')).addChild(x3dpsail.TimeSensor().setDEF(x3dpsail.SFString(
                                           "TourTime")).setCycleInterval(
                                               x3dpsail.SFTime(0.15)).setLoop(
                                                   x3dpsail.SFBool(True))
                    ).addChild(x3dpsail.ROUTE().setFromNode(
                        x3dpsail.SFString("TourTime")).setFromField(
                            x3dpsail.SFString("cycleTime")).setToNode(
                                x3dpsail.SFString("Bounce")).setToField(
                                    x3dpsail.SFString("set_fraction"))).
                 addChild(x3dpsail.ROUTE().setFromNode(
                     x3dpsail.SFString("Bounce")).setFromField(
                         x3dpsail.SFString("translation_changed")).setToNode(
                             x3dpsail.SFString("transform")).setToField(
                                 x3dpsail.SFString("set_translation")))))
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
    x3dpsail.SFString("3.0")
).setHead(x3dpsail.head().addMeta(
    x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
        x3dpsail.SFString("ExtrusionHeart.x3d"))
).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(
    x3dpsail.SFString("Simple extrusion of a Valentine heart.")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(
    x3dpsail.SFString("Class participants in course Introduction to VRML/X3D.")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("created")).setContent(
    x3dpsail.SFString("14 February 2001")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("modified")).setContent(
    x3dpsail.SFString("27 November 2015")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(
    x3dpsail.SFString(
        "http://www.web3d.org/x3d/content/examples/Basic/course/ExtrusionHeart.x3d"
    )
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(
    x3dpsail.SFString("X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit")
)).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("license")).setContent(
    x3dpsail.SFString("../license.html")))).setScene(x3dpsail.Scene().addChild(
        x3dpsail.Viewpoint().setDescription(
            x3dpsail.SFString("Extrusion Heart")).setOrientation(
                x3dpsail.SFRotation(1, 0, 0, 1.57)).setPosition(
                    x3dpsail.SFVec3f(0, -4, 0))
    ).addChild(x3dpsail.Transform().setTranslation(x3dpsail.SFVec3f(
        0, -0.5, 0)).addChild(
            x3dpsail.Shape().setGeometry(x3dpsail.Extrusion().setCreaseAngle(
                x3dpsail.SFFloat(3.14159)).setCrossSection(
                    x3dpsail.MFVec2f([
                        0, 0.8, 0.2, 1, 0.7, 0.95, 1, 0.5, 0.8, 0, 0.5, -0.3,
                        0, -0.7, -0.5, -0.3, -0.8, 0, -1, 0.5, -0.7, 0.95,
                        -0.2, 1, 0, 0.8
                    ])).setScale(
                        x3dpsail.MFVec2f([
                            0.01, 0.01, 0.8, 0.8, 1, 1, 0.8, 0.8, 0.01, 0.01
                        ])).setSolid(x3dpsail.SFBool(False)).setSpine(
                            x3dpsail.MFVec3f([
                                0, 0, 0, 0, 0.1, 0, 0, 0.5, 0, 0, 0.9, 0, 0, 1,
                                0
                            ]))).setAppearance(
                                x3dpsail.Appearance().setMaterial(
                                    x3dpsail.Material().setDiffuseColor(
                                        x3dpsail.SFColor(0.8, 0.3, 0.3))))))))
Example #25
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
    x3dpsail.SFString("3.3")).setHead(x3dpsail.head().addMeta(
        x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
            x3dpsail.SFString("bubble.x3d"))
    ).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(
        x3dpsail.SFString("John Carlson"))).addMeta(x3dpsail.meta().setName(
            x3dpsail.SFString("description")).setContent(
                x3dpsail.SFString("Tour around a prismatic sphere"))).addMeta(
                    x3dpsail.meta().setName(
                        x3dpsail.SFString("generator")).setContent(
                            x3dpsail.SFString(
                                "X3D-Edit, https://savage.nps.edu/X3D-Edit"))
                ).addMeta(x3dpsail.meta().setName(
                    x3dpsail.SFString("identifier")).setContent(
                        x3dpsail.SFString(
                            "https://coderextreme.net/X3DJSONLD/bubble.x3d"))))
        .setScene(x3dpsail.Scene().addChild(x3dpsail.NavigationInfo().setType(
            x3dpsail.MFString([
                "EXAMINE"
            ]))).addChild(x3dpsail.Viewpoint().setPosition(
                x3dpsail.SFVec3f(0, 0, 4)).setOrientation(
                    x3dpsail.SFRotation(1, 0, 0, 0)).setDescription(
                        x3dpsail.SFString("Bubble in action")
                    )).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.ProtoInstance().setName(
                      x3dpsail.SFString("Bubble")).setDEF(
                          x3dpsail.SFString("bubbleA")))))
Example #26
0
    x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).
    setVersion(x3dpsail.SFString("3.3")).setHead(x3dpsail.head().addComponent(
        x3dpsail.component().setName(x3dpsail.SFString("Geospatial")).setLevel(
            x3dpsail.SFInt32(1))
    ).addComponent(x3dpsail.component().setName(
        x3dpsail.SFString("NURBS")
    ).setLevel(x3dpsail.SFInt32(
        2
    ))).addComponent(x3dpsail.component().setName(x3dpsail.SFString(
        "Core"
    )).setLevel(x3dpsail.SFInt32(
        2
    ))).addComponent(x3dpsail.component().setName(
        x3dpsail
        .SFString("Navigation")
    ).setLevel(x3dpsail.SFInt32(
        1
    ))).addComponent(x3dpsail.component().setName(x3dpsail.SFString(
        "Text"
    )).setLevel(x3dpsail.SFInt32(
        1
    ))).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
        x3dpsail
        .SFString("X3dHeaderPrototypeSyntaxExamples.x3d")
    )).addMeta(x3dpsail.meta().setName(x3dpsail.SFString(
        "description"
    )).setContent(
        x3dpsail
        .SFString(
            "X3D scene header and prototype syntax examples. This example header indicates that the content is XML encoded, follows the Interactive Profile and explicitly lists additional necessary components. The X3D header may also contain additional semantic information. Used for specification EXAMPLE excerpts in 19776:1 XML Encoding."
        )
    )).addMeta(x3dpsail.meta().setName(
        x3dpsail.SFString("created")
    ).setContent(x3dpsail.SFString("14 October 2002"))).addMeta(
        x3dpsail.meta().
        setName(x3dpsail.SFString("modified"))
        .setContent(x3dpsail.SFString("7 May 2017"))
    ).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(
        x3dpsail
        .SFString("Don Brutzman")
    )).addMeta(x3dpsail.meta().setName(
        x3dpsail
        .SFString("specificationSection")
    ).setContent(
        x3dpsail
        .SFString(
            "X3D encodings, ISO/IEC 19776-1.3, Part 1: XML encoding, 4.3 XML file syntax"
        )
    )).addMeta(x3dpsail.meta(
    ).setName(x3dpsail.SFString("specificationUrl")).setContent(
        x3dpsail
        .SFString(
            "http://www.web3d.org/documents/specifications/19776-1/V3.3/Part01/concepts.html#XMLFileSyntax"
        )
    )).addMeta(x3dpsail.meta(
    ).setName(x3dpsail.SFString("identifier")).setContent(
        x3dpsail
        .SFString(
            "http://www.web3d.org/x3d/content/examples/Basic/X3dSpecifications/X3dHeaderPrototypeSyntaxExamples.x3d"
        ))).addMeta(x3dpsail.meta().setName(
            x3dpsail.SFString("generator")).setContent(
                x3dpsail.SFString(
                    "X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit"))).addMeta(
                        x3dpsail.meta().setName(
                            x3dpsail.SFString("license")).setContent(
                                x3dpsail.SFString("../license.html")))).
    setScene(x3dpsail.Scene().addChild(x3dpsail.ExternProtoDeclare(
    ).setName(x3dpsail.SFString("ViewPositionOrientation")).setUrl(
        x3dpsail.MFString([
            "../../Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation",
            "https://savage.nps.edu/Savage/Tools/Authoring/ViewPositionOrientationPrototype.x3d#ViewPositionOrientation",
            "../../Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation",
            "https://savage.nps.edu/Savage/Tools/Authoring/ViewPositionOrientationPrototype.wrl#ViewPositionOrientation"
        ])
    ).addField(
        x3dpsail.field().setName(x3dpsail.SFString("enabled"))
        .setAccessType(x3dpsail.SFString("inputOutput")
                       ).setType(x3dpsail.SFString("SFBool"))
    ).addField(x3dpsail.field().setName(x3dpsail.SFString(
        "traceEnabled"
    )).setAccessType(x3dpsail.SFString(
        "initializeOnly"
    )).setType(x3dpsail.SFString(
        "SFBool"
    ))).addField(x3dpsail.field().setName(x3dpsail.SFString(
        "set_traceEnabled"
    )).setAccessType(x3dpsail.SFString(
        "inputOnly"
    )).setType(x3dpsail.SFString(
        "SFBool"
    ))).addField(x3dpsail.field().setName(x3dpsail.SFString(
        "position_changed"
    )).setAccessType(x3dpsail.SFString(
        "outputOnly"
    )).setType(x3dpsail.SFString(
        "SFVec3f"
    ))).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"))
    )).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"))
        .setBboxSize(x3dpsail.SFVec3f(2, 2, 2))
        #Authors need to override this node when creating the ProtoInstance fieldValue name=\"children\"
    ))).setProtoBody(
        x3dpsail.ProtoBody().addChild(x3dpsail.Transform().setTranslation(
            x3dpsail.SFVec3f(0, 2, 0)).addChild(x3dpsail.Group().setIS(
                x3dpsail.IS().addConnect(x3dpsail.connect().setNodeField(
                    x3dpsail.SFString("children")).setProtoField(
                        x3dpsail.SFString("children")))))))).addChild(
                            x3dpsail.ProtoInstance().setName(
                                x3dpsail.SFString("ShiftGroupUp2m")))
             #====================
             .addChild(x3dpsail.Viewpoint().setDEF(
                 x3dpsail.SFString("ExampleSingleElement")).setDescription(
                     x3dpsail.SFString("Hello syntax")
                 )).addChild(x3dpsail.Group().setDEF(
                     x3dpsail.SFString("ExampleChildElement")).addChild(
                         x3dpsail.Shape().setGeometry(
                             x3dpsail.Box()).setAppearance(
                                 x3dpsail.Appearance().setMaterial(
                                     x3dpsail.Material().setDiffuseColor(
                                         x3dpsail.SFColor(0.6, 0.4, 0.2)))))).
             addChild(x3dpsail.Transform().setDEF(
                 x3dpsail.SFString("TransformExampleUSE")).setRotation(
                     x3dpsail.SFRotation(0, 1, 0, 0.78)).setTranslation(
                         x3dpsail.SFVec3f(0, 2.5, 0)).addChild(
                             x3dpsail.Group().setUSE(
                                 x3dpsail.SFString("ExampleChildElement")))).
             addChild(x3dpsail.Collision().setProxy(
                 x3dpsail.Shape()
                 #note that Collision proxy Shape is not rendered

                 #alternative: Text string='\"He said, \\&quot;Immel did it!\\&quot;\"'
                 .setGeometry(x3dpsail.Text().setString(
                     x3dpsail.MFString([
                         "He said, \"Immel did it!\""
                     ]))).setAppearance(x3dpsail.Appearance().setMaterial(
                         x3dpsail.Material()))).setProxy(
                             x3dpsail.Group().setUSE(
                                 x3dpsail.SFString("ExampleChildElement")))).
             addChild(x3dpsail.Transform().setTranslation(
                 x3dpsail.SFVec3f(0, -2.5, 0)
             ).addChild(x3dpsail.Shape().setAppearance(
                 x3dpsail.Appearance().setMaterial(
                     x3dpsail.ProtoInstance().setName(
                         x3dpsail.SFString("EmissiveMaterial")).addFieldValue(
                             x3dpsail.fieldValue().setName(
                                 x3dpsail.SFString("onlyColor")).setValue(
                                     x3dpsail.SFString("0.2 0.6 0.6"))))
             ).setGeometry(x3dpsail.Text().setString(
                 x3dpsail.MFString([
                     "X3D Header Prototype syntax examples",
                     "(view console for EXTERNPROTO output)"
                 ])).setFontStyle(x3dpsail.FontStyle().setJustify(
                     x3dpsail.MFString(["MIDDLE", "MIDDLE"
                                        ])).setSize(x3dpsail.SFFloat(0.6)))))).
             addChild(x3dpsail.ProtoInstance().setName(
                 x3dpsail.SFString("ViewPositionOrientation")).addFieldValue(
                     x3dpsail.fieldValue().setName(
                         x3dpsail.SFString("enabled")).setValue(
                             x3dpsail.SFString("true"))
                 )).addChild(x3dpsail.TimeSensor().setDEF(
                     x3dpsail.SFString("Clock")).setCycleInterval(
                         x3dpsail.SFTime(4)).setLoop(
                             x3dpsail.SFBool(True))).addChild(
                                 x3dpsail.OrientationInterpolator().setDEF(
                                     x3dpsail.SFString("Spinner")).setKey(
                                         x3dpsail.MFFloat(
                                             [0, 0.5,
                                              1])).setKeyValue(
                                                  x3dpsail.MFRotation([
                                                      0, 1, 0, 0, 0, 1, 0,
                                                      3.14159, 0, 1, 0, 6.28318
                                                  ]))).
             addChild(x3dpsail.ROUTE().setFromField(
                 x3dpsail.SFString("fraction_changed")).setFromNode(
                     x3dpsail.SFString("Clock")).setToField(
                         x3dpsail.SFString("set_fraction")).setToNode(
                             x3dpsail.SFString("Spinner"))).
             addChild(x3dpsail.ROUTE().setFromField(
                 x3dpsail.SFString("value_changed")).setFromNode(
                     x3dpsail.SFString("Spinner")).setToField(
                         x3dpsail.SFString("rotation")).setToNode(
                             x3dpsail.SFString("TransformExampleUSE"))).
             addChild(x3dpsail.Inline(
             ).setDEF(x3dpsail.SFString("someInline")).setUrl(
                 x3dpsail.MFString([
                     "someUrl.x3d",
                     "http://www.web3d.org/x3d/content/examples/Basic/X3dSpecifications/someUrl.x3d"
                 ]))).addChild(x3dpsail.IMPORT().setAS(
                     x3dpsail.SFString("someInlineRoot")).setImportedDEF(
                         x3dpsail.SFString("someName")).setInlineDEF(
                             x3dpsail.SFString("someInline"))).addChild(
                                 x3dpsail.PositionInterpolator().setDEF(
                                     x3dpsail.SFString("StayInPlace")).setKey(
                                         x3dpsail.MFFloat([0, 1])).setKeyValue(
                                             x3dpsail.MFVec3f(
                                                 [0, 0, 0, 0, 0, 0]))).
             addChild(x3dpsail.ROUTE().setFromField(
                 x3dpsail.SFString("fraction_changed")).setFromNode(
                     x3dpsail.SFString("Clock")).setToField(
                         x3dpsail.SFString("set_fraction")).setToNode(
                             x3dpsail.SFString("StayInPlace"))).
             addChild(x3dpsail.ROUTE().setFromField(
                 x3dpsail.SFString("value_changed")).setFromNode(
                     x3dpsail.SFString("StayInPlace")).setToField(
                         x3dpsail.SFString("set_translation")).setToNode(
                             x3dpsail.SFString("someInlineRoot")))))
Example #27
0
 x3dpsail.X3D().setProfile(x3dpsail.SFString("Interchange")).
 setVersion(x3dpsail.SFString("3.3")).setHead(x3dpsail.head().addMeta(
     x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(
         x3dpsail.SFString("ArchHalf.x3d"))
 ).addMeta(x3dpsail.meta().setName(
     x3dpsail.SFString("description")
 ).setContent(
     x3dpsail
     .SFString(
         "Create a half arch with parameters clearSpanWidth=4; riseHeight=2; depth=3; topAbutmentHeight=0.5; pierWidth=0.5; pierHeight=1. Parameter clearSpanWidth measure refers to a full arc, consider clearSpanWidth/2 for the archHalf width. Modify them with Transform > scale or editing the IndexedFileSet node. See the reference file ArchModelingDiagrams.pdf and the ArchScript_more_readable.js script to find further information."
     )
 )).addMeta(
     x3dpsail.meta().setName(x3dpsail.SFString("creator")).
     setContent(x3dpsail.SFString("Michele Foti, Don Brutzman"))
 ).addMeta(x3dpsail.meta().setName(x3dpsail.SFString("created")).setContent(
     x3dpsail
     .SFString("15 December 2014")
 )).addMeta(x3dpsail.meta().setName(x3dpsail.SFString(
     "modified"
 )).setContent(x3dpsail.SFString(
     "16 February 2016"
 ))).addMeta(x3dpsail.meta().setName(x3dpsail.SFString(
     "reference"
 )).setContent(x3dpsail.SFString(
     "ArchModelingDiagrams.pdf"
 ))).addMeta(x3dpsail.meta().setName(x3dpsail.SFString(
     "reference"
 )).setContent(x3dpsail.SFString(
     "https://en.wikipedia.org/wiki/Arch"
 ))).addMeta(x3dpsail.meta().setName(x3dpsail.SFString(
     "identifier"
 )).setContent(
     x3dpsail
     .SFString(
         "http://X3dGraphics.com/examples/X3dForAdvancedModeling/Buildings/ArchHalf.x3d"
     ))).addMeta(x3dpsail.meta().setName(
         x3dpsail.SFString("generator")).setContent(
             x3dpsail.SFString(
                 "X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit"))).addMeta(
                     x3dpsail.meta().setName(
                         x3dpsail.SFString("license")).setContent(
                             x3dpsail.SFString("../license.html")))).
 setScene(x3dpsail.Scene().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)).setCoordIndex(
                 x3dpsail.MFInt32([
                     31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
                     45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
                     59, 60, 61, 62, 144, -1, 149, 31, 144, 147, -1, 134,
                     147, 144, 145, -1, 145, 144, 62, 141, -1, 132, 133,
                     141, 62, -1, 94, 95, 96, 97, 98, 99, 100, 101, 102,
                     103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
                     114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
                     125, 143, -1, 148, 94, 143, 146, -1, 142, 128, 146,
                     143, -1, 140, 125, 143, 142, -1, 125, 126, 127, 140,
                     -1, 31, 94, 95, 32, -1, 32, 95, 96, 33, -1, 33, 96, 97,
                     34, -1, 34, 97, 98, 35, -1, 35, 98, 99, 36, -1, 36, 99,
                     100, 37, -1, 37, 100, 101, 38, -1, 38, 101, 102, 39,
                     -1, 39, 102, 103, 40, -1, 40, 103, 104, 41, -1, 41,
                     104, 105, 42, -1, 42, 105, 106, 43, -1, 43, 106, 107,
                     44, -1, 44, 107, 108, 45, -1, 45, 108, 109, 46, -1, 46,
                     109, 110, 47, -1, 47, 110, 111, 48, -1, 48, 111, 112,
                     49, -1, 49, 112, 113, 50, -1, 50, 113, 114, 51, -1, 51,
                     114, 115, 52, -1, 52, 115, 116, 53, -1, 53, 116, 117,
                     54, -1, 54, 117, 118, 55, -1, 55, 118, 119, 56, -1, 56,
                     119, 120, 57, -1, 57, 120, 121, 58, -1, 58, 121, 122,
                     59, -1, 59, 122, 123, 60, -1, 60, 123, 124, 61, -1, 61,
                     124, 125, 62, -1, 148, 149, 147, 146, -1, 146, 147,
                     134, 128, -1, 128, 134, 145, 142, -1, 140, 141, 145,
                     142, -1, 127, 133, 141, 140, -1, 127, 126, 132, 133,
                     -1, 126, 132, 62, 125, -1, 31, 94, 143, 144, -1, 142,
                     143, 144, 145, -1, 140, 125, 62, 141, -1, 31, 94, 148,
                     149, -1
                 ])
             ).setSolid(
                 x3dpsail.SFBool(False)
             ).setCoord(x3dpsail.Coordinate().setDEF(
                 x3dpsail
                 .SFString("ArchChord")
             ).setPoint(
                 x3dpsail
                 .MFVec3f([
                     2, 0, 0,
                     1.997498435543818, 0.1, 0, 1.98997487421324, 0.2, 0,
                     1.977371993328519, 0.3, 0, 1.9595917942265424, 0.4,
                     0, 1.9364916731037085, 0.5, 0, 1.907878402833891, 0.6,
                     0, 1.8734993995195193, 0.7, 0, 1.833030277982336, 0.8,
                     0, 1.786057109949175, 0.9, 0, 1.7320508075688774, 1,
                     0, 1.6703293088490068, 1.1, 0, 1.6, 1.2,
                     0, 1.5198684153570663, 1.3, 0, 1.42828568570857, 1.4,
                     0, 1.3228756555322954, 1.5, 0, 1.2, 1.6,
                     0, 1.0535653752852738, 1.7, 0, 0.9020947843768965,
                     1.785, 0, 0.7599342076785331, 1.85,
                     0, 0.6244997998398398, 1.9, 0, 0.5425633603552678,
                     1.925, 0, 0.4444097208657794, 1.95,
                     0, 0.36181625170796194, 1.967, 0, 0.2821347195933173,
                     1.98,
                     0, 0.19974984355438344, 1.99, 0, 0.16718552568927703,
                     1.993, 0, 0.14133294025102577, 1.995,
                     0, 0.10950342460398416, 1.997, 0, 0.08942035562443253,
                     1.998, 0, 0.06323764701505419, 1.999, 0, 0, 2, 0,
                     -0.06323764701505419, 1.999, 0, -0.08942035562443253,
                     1.998, 0, -0.10950342460398416, 1.997, 0,
                     -0.14133294025102577, 1.995, 0, -0.16718552568927703,
                     1.993, 0, -0.19974984355438344, 1.99,
                     0, -0.2821347195933173, 1.98, 0, -0.36181625170796194,
                     1.967, 0, -0.4444097208657794, 1.95,
                     0, -0.5425633603552678, 1.925, 0, -0.6244997998398398,
                     1.9,
                     0, -0.7599342076785331, 1.85, 0, -0.9020947843768965,
                     1.785, 0, -1.0535653752852738, 1.7, 0, -1.2, 1.6,
                     0, -1.3228756555322954, 1.5, 0, -1.42828568570857, 1.4,
                     0, -1.5198684153570663, 1.3, 0, -1.6, 1.2, 0,
                     -1.6703293088490068, 1.1, 0, -1.7320508075688774, 1, 0,
                     -1.786057109949175, 0.9, 0, -1.833030277982336, 0.8, 0,
                     -1.8734993995195193, 0.7, 0, -1.907878402833891, 0.6,
                     0, -1.9364916731037085, 0.5, 0, -1.9595917942265424,
                     0.4, 0, -1.977371993328519, 0.3, 0, -1.98997487421324,
                     0.2, 0, -1.997498435543818, 0.1, 0, -2, 0, 0, 2, 0, 3,
                     1.997498435543818, 0.1, 3, 1.98997487421324, 0.2, 3,
                     1.977371993328519, 0.3, 3, 1.9595917942265424, 0.4, 3,
                     1.9364916731037085, 0.5, 3, 1.907878402833891, 0.6, 3,
                     1.8734993995195193, 0.7, 3, 1.833030277982336, 0.8, 3,
                     1.786057109949175, 0.9, 3, 1.7320508075688774, 1, 3,
                     1.6703293088490068, 1.1, 3, 1.6, 1.2, 3,
                     1.5198684153570663, 1.3, 3, 1.42828568570857, 1.4, 3,
                     1.3228756555322954, 1.5, 3, 1.2, 1.6, 3,
                     1.0535653752852738, 1.7, 3, 0.9020947843768965, 1.785,
                     3, 0.7599342076785331, 1.85, 3, 0.6244997998398398,
                     1.9, 3, 0.5425633603552678, 1.925, 3,
                     0.4444097208657794, 1.95, 3, 0.36181625170796194,
                     1.967, 3, 0.2821347195933173, 1.98, 3,
                     0.19974984355438344, 1.99, 3, 0.16718552568927703,
                     1.993, 3, 0.14133294025102577, 1.995, 3,
                     0.10950342460398416, 1.997, 3, 0.08942035562443253,
                     1.998, 3, 0.06323764701505419, 1.999, 3, 0, 2, 3,
                     -0.06323764701505419, 1.999, 3, -0.08942035562443253,
                     1.998, 3, -0.10950342460398416, 1.997, 3,
                     -0.14133294025102577, 1.995, 3, -0.16718552568927703,
                     1.993, 3, -0.19974984355438344, 1.99, 3,
                     -0.2821347195933173, 1.98, 3, -0.36181625170796194,
                     1.967, 3, -0.4444097208657794, 1.95, 3,
                     -0.5425633603552678, 1.925, 3, -0.6244997998398398,
                     1.9, 3, -0.7599342076785331, 1.85, 3,
                     -0.9020947843768965, 1.785, 3, -1.0535653752852738,
                     1.7, 3, -1.2, 1.6, 3, -1.3228756555322954, 1.5, 3,
                     -1.42828568570857, 1.4, 3, -1.5198684153570663, 1.3, 3,
                     -1.6, 1.2, 3, -1.6703293088490068, 1.1, 3,
                     -1.7320508075688774, 1, 3, -1.786057109949175, 0.9, 3,
                     -1.833030277982336, 0.8, 3, -1.8734993995195193, 0.7,
                     3, -1.907878402833891, 0.6, 3, -1.9364916731037085,
                     0.5, 3, -1.9595917942265424, 0.4, 3,
                     -1.977371993328519, 0.3, 3, -1.98997487421324, 0.2, 3,
                     -1.997498435543818, 0.1, 3, -2, 0, 3, -2, -1, 3, -2.5,
                     -1, 3, -2.5, 2.5, 3, 2.5, 2.5, 3, 2.5, -1, 3, 2, -1, 3,
                     -2, -1, 0, -2.5, -1, 0, -2.5, 2.5, 0, 2.5, 2.5, 0, 2.5,
                     -1, 0, 2, -1, 0, 2.5, 0, 3, 2.5, 0, 0, -2.5, 0, 3,
                     -2.5, 0, 0, -2.5, 2, 3, -2, 2, 3, -2, 2, 0, -2.5, 2, 0,
                     -2, 2.5, 3, -2, 2.5, 0, 0, 2.5, 3, 0, 2.5, 0, 2, 2, 3,
                     2.5, 2, 3, 2.5, 2, 0, 2, 2, 0, 2, 2.5, 3, 2, 2.5, 0
                 ])))).setAppearance(x3dpsail.Appearance().setMaterial(
                     x3dpsail.Material().setDEF(
                         x3dpsail.SFString("MaterialNode")).setDiffuseColor(
                             x3dpsail.SFColor(1, 0.75, 0.25)))))))
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(x3dpsail.SFString("3.3"))
      .setHead(x3dpsail.head()
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("title")).setContent(x3dpsail.SFString("x3dconnectorProto")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("creator")).setContent(x3dpsail.SFString("Lost, Doug Sanden I think")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("generator")).setContent(x3dpsail.SFString("manual")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("identifier")).setContent(x3dpsail.SFString("https://coderextreme.net/X3DJSONLD/x3dconnectorProto.x3d")))
        .addMeta(x3dpsail.meta().setName(x3dpsail.SFString("description")).setContent(x3dpsail.SFString("a generic proto to connect two objects"))))
      .setScene(x3dpsail.Scene()
        .addChild(x3dpsail.Viewpoint().setPosition(x3dpsail.SFVec3f(0,0,5)).setDescription(x3dpsail.SFString("Only Viewpoint")))
        .addChild(x3dpsail.Background().setSkyColor(x3dpsail.MFColor([0.4,0.4,0.4])))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("G1"))
          .addChild(x3dpsail.Shape()
            .setAppearance(x3dpsail.Appearance()
              .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0.7,0.2,0.2))))
            .setGeometry(x3dpsail.Sphere().setRadius(x3dpsail.SFFloat(0.1))))
          .addChild(x3dpsail.PlaneSensor().setDescription(x3dpsail.SFString("Grab to move")).setDEF(x3dpsail.SFString("PS1")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("PS1")).setFromField(x3dpsail.SFString("translation_changed")).setToNode(x3dpsail.SFString("G1")).setToField(x3dpsail.SFString("set_translation"))))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("G2")).setTranslation(x3dpsail.SFVec3f(1,-1,0.01))
          .addChild(x3dpsail.Shape()
            .setAppearance(x3dpsail.Appearance()
              .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0.2,0.7,0.2))))
            .setGeometry(x3dpsail.Sphere().setRadius(x3dpsail.SFFloat(0.1))))
          .addChild(x3dpsail.PlaneSensor().setDescription(x3dpsail.SFString("Grab to move")).setOffset(x3dpsail.SFVec3f(1,-1,0.01)).setDEF(x3dpsail.SFString("PS2")))
          .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("PS2")).setFromField(x3dpsail.SFString("translation_changed")).setToNode(x3dpsail.SFString("G2")).setToField(x3dpsail.SFString("set_translation"))))
        .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("transC1"))
          .addChild(x3dpsail.Transform().setDEF(x3dpsail.SFString("rotscaleC1"))
            .addChild(x3dpsail.Shape()
              .setAppearance(x3dpsail.Appearance()
                .setMaterial(x3dpsail.Material().setDiffuseColor(x3dpsail.SFColor(0.2,0.7,0.7)).setTransparency(x3dpsail.SFFloat(0.5))))
              .setGeometry(x3dpsail.Cylinder().setRadius(x3dpsail.SFFloat(0.05))))))
        .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"+
"        }''')
)))
        .addChild(x3dpsail.ProtoInstance().setName(x3dpsail.SFString("x3dconnector")).setDEF(x3dpsail.SFString("connector1"))
          .addFieldValue(x3dpsail.fieldValue().setName(x3dpsail.SFString("startnode"))
            .addChild(x3dpsail.Transform().setUSE(x3dpsail.SFString("G1"))))
          .addFieldValue(x3dpsail.fieldValue().setName(x3dpsail.SFString("endnode"))
            .addChild(x3dpsail.Transform().setUSE(x3dpsail.SFString("G2"))))
          .addFieldValue(x3dpsail.fieldValue().setName(x3dpsail.SFString("transnode"))
            .addChild(x3dpsail.Transform().setUSE(x3dpsail.SFString("transC1"))))
          .addFieldValue(x3dpsail.fieldValue().setName(x3dpsail.SFString("rotscalenode"))
            .addChild(x3dpsail.Transform().setUSE(x3dpsail.SFString("rotscaleC1"))))
          .addFieldValue(x3dpsail.fieldValue().setName(x3dpsail.SFString("set_startpoint")))
          .addFieldValue(x3dpsail.fieldValue().setName(x3dpsail.SFString("set_endpoint"))))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("G1")).setFromField(x3dpsail.SFString("translation_changed")).setToNode(x3dpsail.SFString("connector1")).setToField(x3dpsail.SFString("set_startpoint")))
        .addChild(x3dpsail.ROUTE().setFromNode(x3dpsail.SFString("G2")).setFromField(x3dpsail.SFString("translation_changed")).setToNode(x3dpsail.SFString("connector1")).setToField(x3dpsail.SFString("set_endpoint")))))
Example #29
0
import x3dpsail

X3D0 = x3dpsail.X3D()
X3D0.setProfile("Immersive")
X3D0.setVersion("3.3")
head1 = x3dpsail.head()
meta2 = x3dpsail.meta()
meta2.setName("title")
meta2.setContent("HelloWorld.x3d")

head1.addMeta(meta2)
meta3 = x3dpsail.meta()
meta3.setName("description")
meta3.setContent("Simple X3D scene example: Hello World!")

head1.addMeta(meta3)
meta4 = x3dpsail.meta()
meta4.setName("created")
meta4.setContent("30 October 2000")

head1.addMeta(meta4)
meta5 = x3dpsail.meta()
meta5.setName("modified")
meta5.setContent("14 April 2017")

head1.addMeta(meta5)
meta6 = x3dpsail.meta()
meta6.setName("creator")
meta6.setContent("Don Brutzman")

head1.addMeta(meta6)
Example #30
0
X3D0 = (x3dpsail.X3D().setProfile(x3dpsail.SFString("Immersive")).setVersion(
    x3dpsail.SFString("3.3")).setHead(
        x3dpsail.head().addMeta(x3dpsail.meta().setName(
            x3dpsail.SFString("creator")).setContent(
                x3dpsail.SFString("John W Carlson"))).addMeta(
                    x3dpsail.meta().setName(
                        x3dpsail.SFString("created")).setContent(
                            x3dpsail.SFString("December 13 2015"))).addMeta(
                                x3dpsail.meta().setName(
                                    x3dpsail.SFString("title")).setContent(
                                        x3dpsail.SFString("text.x3d"))).
        addMeta(x3dpsail.meta().setName(
            x3dpsail.SFString("identifier")).setContent(
                x3dpsail.SFString(
                    "https://coderextreme.net/X3DJSONLD/text.x3d"))).addMeta(
                        x3dpsail.meta().setName(
                            x3dpsail.SFString("description")).setContent(
                                x3dpsail.SFString("test \\n text"))).
        addMeta(x3dpsail.meta().setName(
            x3dpsail.SFString("generator")).setContent(
                x3dpsail.SFString(
                    "Vim, X3D-Edit, https://savage.nps.edu/X3D-Edit")))
    ).setScene(x3dpsail.Scene().addChild(x3dpsail.Transform().addChild(
        x3dpsail.Shape().setGeometry(x3dpsail.Text().setString(
            x3dpsail.MFString(["Node\"\"\""])).setFontStyle(
                x3dpsail.FontStyle())).setAppearance(
                    x3dpsail.Appearance().setMaterial(x3dpsail.Material()))
    ).addChild(x3dpsail.Shape().setGeometry(x3dpsail.Text().setString(
        x3dpsail.MFString([
            "Node2", "\\\\",
            "\\\\\\\\", "Node2"
        ])).setFontStyle(x3dpsail.FontStyle())).setAppearance(
            x3dpsail.Appearance().setMaterial(x3dpsail.Material()))).addChild(
                x3dpsail.Shape().setGeometry(x3dpsail.Text().setString(
                    x3dpsail.MFString([
                        "Node3 \\\\\\\\ \\\\ ", "Node3\"\"\""
                    ])).setFontStyle(x3dpsail.FontStyle())).setAppearance(
                        x3dpsail.Appearance().setMaterial(x3dpsail.Material()))
            ).addChild(x3dpsail.Script().addField(x3dpsail.field().setName(
                x3dpsail.SFString("frontUrls")).setType(
                    x3dpsail.SFString("MFString")).setAccessType(
                        x3dpsail.SFString("initializeOnly")).setValue(
                            x3dpsail.SFString(
                                "\"rnl_front.png\" \"uffizi_front.png\""))).
                       setSourceCode('''ecmascript:\n"+
"			    var me = '\"1\" \"\"2\" \"\\n3\"';''')))))