{ "X3D": {
    "encoding":"UTF-8",
    "@profile":"Immersive",
    "@version":"3.0",
    "@xsd:noNamespaceSchemaLocation":"https://www.web3d.org/specifications/x3d-3.0.xsd",
    "JSON schema":"https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json",
    "head": {
        "meta": [
          {
            "@name":"title",
            "@content":"XvlShellProtoDeclare.x3d"
          },
          {
            "@name":"description",
            "@content":"This is a development scene used to define the ProtoDeclaration for the XvlShell native node."
          },
          {
            "@name":"warning",
            "@content":"This scene is not for example use, instead it is a development scene used during X3D design."
          },
          {
            "@name":"creator",
            "@content":"Marc Jablonski"
          },
          {
            "@name":"created",
            "@content":"22 November 2001"
          },
          {
            "@name":"modified",
            "@content":"20 October 2019"
          },
          {
            "@name":"error",
            "@content":"Test X3D DTD experimental extensions mechanisms, the XVL nodes are not legal X3D"
          },
          {
            "@name":"reference",
            "@content":"readme.txt"
          },
          {
            "@name":"reference",
            "@content":"docs/LatticeXvl/LatticeXvlOverview.html"
          },
          {
            "@name":"reference",
            "@content":"https://www.web3d.org/x3d/content/examples/Basic/LatticeXvl/docs/LatticeXvl/LatticeXvlOverview.html"
          },
          {
            "@name":"reference",
            "@content":"http://www.xvl3d.com"
          },
          {
            "@name":"subject",
            "@content":"Lattice XVL parametric geometry X3D VRML"
          },
          {
            "@name":"identifier",
            "@content":"https://www.web3d.org/x3d/content/examples/Basic/LatticeXvl/XvlShellProtoDeclare.x3d"
          },
          {
            "@name":"generator",
            "@content":"X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit"
          },
          {
            "@name":"license",
            "@content":"../license.html"
          },
          {
            "@name":"translated",
            "@content":"20 April 2026"
          },
          {
            "@name":"generator",
            "@content":"X3dToJson.xslt, https://www.web3d.org/x3d/stylesheets/X3dToJson.html"
          },
          {
            "@name":"reference",
            "@content":"X3D JSON encoding: https://www.web3d.org/wiki/index.php/X3D_JSON_Encoding"
          }
        ]
    },
    "Scene": {
        "-children":[
          { "WorldInfo":
            {
              "@title":"XvlShellProtoDeclare.x3d"
            }
          },
          { "ProtoDeclare":
            {
              "@name":"XvlShell",
              "ProtoInterface": {
                  "-children":[
                    {
                      "#comment":"Allowable children of XvlShell: a single Coordinate node (required for rendering) and a single TextureCoordinate node (optional)"
                    }
                  ],
                  "field": [
                    {
                      "@name":"shellType",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":1
                    },
                    {
                      "@name":"numberOfDivisions",
                      "@accessType":"initializeOnly",
                      "@type":"SFInt32",
                      "@value":4
                    },
                    {
                      "@name":"coord",
                      "@accessType":"initializeOnly",
                      "@type":"SFNode"
                    },
                    {
                      "@name":"texCoord",
                      "@accessType":"initializeOnly",
                      "@type":"SFNode"
                    },
                    {
                      "@name":"vertexRound",
                      "@accessType":"initializeOnly",
                      "@type":"MFFloat"
                    },
                    {
                      "@name":"edgeBeginCoordIndex",
                      "@accessType":"initializeOnly",
                      "@type":"MFInt32"
                    },
                    {
                      "@name":"edgeEndCoordIndex",
                      "@accessType":"initializeOnly",
                      "@type":"MFInt32"
                    },
                    {
                      "@name":"edgeRound",
                      "@accessType":"initializeOnly",
                      "@type":"MFFloat"
                    },
                    {
                      "@name":"edgeBeginVector",
                      "@accessType":"initializeOnly",
                      "@type":"MFVec3f"
                    },
                    {
                      "@name":"edgeEndVector",
                      "@accessType":"initializeOnly",
                      "@type":"MFVec3f"
                    },
                    {
                      "@name":"faceCoordIndex",
                      "@accessType":"initializeOnly",
                      "@type":"MFInt32"
                    },
                    {
                      "@name":"faceTexCoordIndex",
                      "@accessType":"initializeOnly",
                      "@type":"MFInt32"
                    },
                    {
                      "@name":"faceEmpty",
                      "@accessType":"initializeOnly",
                      "@type":"MFBool"
                    },
                    {
                      "@name":"faceHidden",
                      "@accessType":"initializeOnly",
                      "@type":"MFBool"
                    }
                  ]
              },
              "ProtoBody": {
                  "-children":[
                    { "IndexedFaceSet":
                      {
                        "@DEF":"IFS",
                        "-coord":
                          { "Coordinate":
                            {
                            }
                          },
                        "-normal":
                          { "Normal":
                            {
                            }
                          },
                        "-texCoord":
                          { "TextureCoordinate":
                            {
                            }
                          }
                      }
                    },
                    {
                      "#comment":"Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI)"
                    },
                    { "Script":
                      {
                        "@DEF":"XvlShellScript",
                        "@directOutput":true,
                        "@url":["XvlShell.class","https://www.web3d.org/x3d/content/examples/Basic/LatticeXvl/XvlShell.class"],
                        "field": [
                          {
                            "@name":"mShellType",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"mNumDiv",
                            "@accessType":"initializeOnly",
                            "@type":"SFInt32"
                          },
                          {
                            "@name":"mCoord",
                            "@accessType":"initializeOnly",
                            "@type":"SFNode"
                          },
                          {
                            "@name":"mTexCoord",
                            "@accessType":"initializeOnly",
                            "@type":"SFNode"
                          },
                          {
                            "@name":"mVtxRound",
                            "@accessType":"initializeOnly",
                            "@type":"MFFloat"
                          },
                          {
                            "@name":"mEdgeV0",
                            "@accessType":"initializeOnly",
                            "@type":"MFInt32"
                          },
                          {
                            "@name":"mEdgeV1",
                            "@accessType":"initializeOnly",
                            "@type":"MFInt32"
                          },
                          {
                            "@name":"mEdgeRound",
                            "@accessType":"initializeOnly",
                            "@type":"MFFloat"
                          },
                          {
                            "@name":"mEdgeVec0",
                            "@accessType":"initializeOnly",
                            "@type":"MFVec3f"
                          },
                          {
                            "@name":"mEdgeVec1",
                            "@accessType":"initializeOnly",
                            "@type":"MFVec3f"
                          },
                          {
                            "@name":"mFaceCoordIndex",
                            "@accessType":"initializeOnly",
                            "@type":"MFInt32"
                          },
                          {
                            "@name":"mFaceTexCoordIndex",
                            "@accessType":"initializeOnly",
                            "@type":"MFInt32"
                          },
                          {
                            "@name":"mFaceEmpty",
                            "@accessType":"initializeOnly",
                            "@type":"MFBool"
                          },
                          {
                            "@name":"mFaceHidden",
                            "@accessType":"initializeOnly",
                            "@type":"MFBool"
                          },
                          {
                            "@name":"coord_changed",
                            "@accessType":"outputOnly",
                            "@type":"SFNode"
                          },
                          {
                            "@name":"coordIndex_changed",
                            "@accessType":"outputOnly",
                            "@type":"MFInt32"
                          },
                          {
                            "@name":"texCoord_changed",
                            "@accessType":"outputOnly",
                            "@type":"SFNode"
                          },
                          {
                            "@name":"normal_changed",
                            "@accessType":"outputOnly",
                            "@type":"SFNode"
                          }
                        ],
                        "IS": {
                            "connect": [
                              {
                                "@nodeField":"mShellType",
                                "@protoField":"shellType"
                              },
                              {
                                "@nodeField":"mNumDiv",
                                "@protoField":"numberOfDivisions"
                              },
                              {
                                "@nodeField":"mCoord",
                                "@protoField":"coord"
                              },
                              {
                                "@nodeField":"mTexCoord",
                                "@protoField":"texCoord"
                              },
                              {
                                "@nodeField":"mVtxRound",
                                "@protoField":"vertexRound"
                              },
                              {
                                "@nodeField":"mEdgeV0",
                                "@protoField":"edgeBeginCoordIndex"
                              },
                              {
                                "@nodeField":"mEdgeV1",
                                "@protoField":"edgeEndCoordIndex"
                              },
                              {
                                "@nodeField":"mEdgeRound",
                                "@protoField":"edgeRound"
                              },
                              {
                                "@nodeField":"mEdgeVec0",
                                "@protoField":"edgeBeginVector"
                              },
                              {
                                "@nodeField":"mEdgeVec1",
                                "@protoField":"edgeEndVector"
                              },
                              {
                                "@nodeField":"mFaceCoordIndex",
                                "@protoField":"faceCoordIndex"
                              },
                              {
                                "@nodeField":"mFaceTexCoordIndex",
                                "@protoField":"faceTexCoordIndex"
                              },
                              {
                                "@nodeField":"mFaceEmpty",
                                "@protoField":"faceEmpty"
                              },
                              {
                                "@nodeField":"mFaceHidden",
                                "@protoField":"faceHidden"
                              }
                            ]
                        }
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"coord_changed",
                        "@fromNode":"XvlShellScript",
                        "@toField":"set_coord",
                        "@toNode":"IFS"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"coordIndex_changed",
                        "@fromNode":"XvlShellScript",
                        "@toField":"set_coordIndex",
                        "@toNode":"IFS"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"texCoord_changed",
                        "@fromNode":"XvlShellScript",
                        "@toField":"set_texCoord",
                        "@toNode":"IFS"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"normal_changed",
                        "@fromNode":"XvlShellScript",
                        "@toField":"set_normal",
                        "@toNode":"IFS"
                      }
                    }
                  ]
              }
            }
          },
          { "Background":
            {
              "@groundColor":[0,0.1,0.2],
              "@skyColor":[0,0.1,0.2]
            }
          },
          { "Viewpoint":
            {
              "@description":"Hello LatticeXvl prototype",
              "@position":[0,0,8]
            }
          },
          {
            "#comment":"Redirection text in case a user examines this PROTO file via a 3D browser:"
          },
          { "Anchor":
            {
              "@description":"XvlShellAttributeAll",
              "@parameter":["target=_blank"],
              "@url":["XvlShellAttributeAll.wrl","https://www.web3d.org/x3d/content/examples/Basic/LatticeXvl/XvlShellAttributeAll.wrl","XvlShellAttributeAll.x3d","https://www.web3d.org/x3d/content/examples/Basic/LatticeXvl/XvlShellAttributeAll.x3d"],
              "-children":[
                { "Shape":
                  {
                    "-appearance":
                      { "Appearance":
                        {
                          "-material":
                            { "Material":
                              {
                                "@diffuseColor":[0,1,1],
                                "@emissiveColor":[0,1,1]
                              }
                            }
                        }
                      },
                    "-geometry":
                      { "Text":
                        {
                          "@string":["XvlShellProtoDeclare.wrl","is a ProtoDeclare definition file.","To see an example scene using this new node,","click this text and view XvlShellAttributeAll"],
                          "-fontStyle":
                            { "FontStyle":
                              {
                                "@justify":["MIDDLE","MIDDLE"],
                                "@size":0.5
                              }
                            }
                        }
                      }
                  }
                }
              ]
            }
          }
        ]
    }
  }
}