{ "X3D": {
    "encoding":"UTF-8",
    "@profile":"Immersive",
    "@version":"3.3",
    "@xsd:noNamespaceSchemaLocation":"https://www.web3d.org/specifications/x3d-3.3.xsd",
    "JSON schema":"https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json",
    "head": {
        "meta": [
          {
            "@name":"title",
            "@content":"LOA1_SwimmingFlutterKickAnimation.x3d"
          },
          {
            "@name":"description",
            "@content":"Humanoid animation prototype reusable by any Humanoid."
          },
          {
            "@name":"creator",
            "@content":"Etsuko Lippi"
          },
          {
            "@name":"created",
            "@content":"13 December 2001"
          },
          {
            "@name":"modified",
            "@content":"16 March 2026"
          },
          {
            "@name":"warning",
            "@content":"not yet tested, need to compare with NancyDivingExample interpolators"
          },
          {
            "@name":"reference",
            "@content":"http://www.HAnim.org"
          },
          {
            "@name":"reference",
            "@content":"http://HAnim.org/Models"
          },
          {
            "@name":"reference",
            "@content":"http://HAnim.org/Nodes"
          },
          {
            "@name":"subject",
            "@content":"Swimming flutter kick Animation HAnim 2001"
          },
          {
            "@name":"identifier",
            "@content":"https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/LOA1_SwimmingFlutterKickAnimation.x3d"
          },
          {
            "@name":"generator",
            "@content":"X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit"
          },
          {
            "@name":"license",
            "@content":"../license.html"
          },
          {
            "@name":"translated",
            "@content":"15 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":"LOA1_SwimmingFlutterKickAnimation.x3d"
            }
          },
          { "Viewpoint":
            {
              "@description":"LOA1_SwimmingFlutterKickAnimation.x3d",
              "@position":[0,0,15]
            }
          },
          { "ProtoDeclare":
            {
              "@name":"LOA1_DivingAnimation",
              "ProtoInterface": {
                  "field": [
                    {
                      "@name":"cycleInterval",
                      "@accessType":"inputOutput",
                      "@type":"SFTime",
                      "@value":7
                    },
                    {
                      "@name":"enabled",
                      "@accessType":"inputOutput",
                      "@type":"SFBool",
                      "@value":true
                    },
                    {
                      "@name":"loop",
                      "@accessType":"inputOutput",
                      "@type":"SFBool",
                      "@value":true
                    },
                    {
                      "@name":"startTime",
                      "@accessType":"inputOutput",
                      "@type":"SFTime",
                      "@value":0
                    },
                    {
                      "@name":"stopTime",
                      "@accessType":"inputOutput",
                      "@type":"SFTime",
                      "@value":-1
                    },
                    {
                      "@name":"fraction_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFFloat"
                    },
                    {
                      "@name":"isActive",
                      "@accessType":"outputOnly",
                      "@type":"SFBool"
                    },
                    {
                      "@name":"HumanoidRoot_translation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFVec3f"
                    },
                    {
                      "@name":"HumanoidRoot_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"lower_body_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"l_hip_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"l_knee_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"l_ankle_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"l_midtarsal_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"r_hip_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"r_knee_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"r_ankle_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"r_midtarsal_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"vl5_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"skullbase_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"l_shoulder_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"l_elbow_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"l_wrist_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"r_shoulder_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"r_elbow_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    },
                    {
                      "@name":"r_wrist_rotation_changed",
                      "@accessType":"outputOnly",
                      "@type":"SFRotation"
                    }
                  ]
              },
              "ProtoBody": {
                  "-children":[
                    { "Group":
                      {
                        "-children":[
                          { "TimeSensor":
                            {
                              "@DEF":"TIMER",
                              "@loop":true,
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"cycleInterval",
                                      "@protoField":"cycleInterval"
                                    },
                                    {
                                      "@nodeField":"enabled",
                                      "@protoField":"enabled"
                                    },
                                    {
                                      "@nodeField":"loop",
                                      "@protoField":"loop"
                                    },
                                    {
                                      "@nodeField":"startTime",
                                      "@protoField":"startTime"
                                    },
                                    {
                                      "@nodeField":"stopTime",
                                      "@protoField":"stopTime"
                                    },
                                    {
                                      "@nodeField":"fraction_changed",
                                      "@protoField":"fraction_changed"
                                    },
                                    {
                                      "@nodeField":"isActive",
                                      "@protoField":"isActive"
                                    }
                                  ]
                              }
                            }
                          },
                          { "PositionInterpolator":
                            {
                              "@DEF":"HUMANOIDROOT_POSITION_ANIMATOR",
                              "@key":[0,0.0417,0.125,0.1667,0.2083,0.25,0.2917,0.375,0.4583,0.5,0.5417,0.5833,0.625,0.7083,0.75,0.7917,0.875,0.9167,1],
                              "@keyValue":[0,-0.0093,0,0,-0.0039,0,0,-0.0088,0,0,-0.0149,0,0,-0.0264,0,0,-0.0393,0,0,-0.0502,0,0,-0.0747,0,0,-0.0273,0,0,-0.0161,0,0,-0.0113,0,0,-0.0058,0,0,-0.002,0,0,-0.0026,0,0,-0.0143,0,0,-0.038,0,0,-0.0565,0,0,-0.045,0,0,-0.0093,0],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"HumanoidRoot_translation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"HUMANOIDROOT_ANIMATOR",
                              "@key":[0,1],
                              "@keyValue":[0,0,1,0,0,0,1,0],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"HumanoidRoot_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          {
                            "#comment":"no SACROILIAC_ANIMATOR"
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"L_HIP_ANIMATOR",
                              "@key":[0,0.25,0.375,0.6667,0.7917,0.9167,1],
                              "@keyValue":[-0.873,0.0609,0.484,0.2865,0.9963,-0.0106,0.0848,0.2488,0.9965,0.0159,-0.0822,0.3836,-1,0,0,0.5518,-0.9964,0.0223,0.0817,0.5351,-0.9809,0.0491,0.1881,0.5204,-0.873,0.0609,0.484,0.2865],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"l_hip_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"L_KNEE_ANIMATOR",
                              "@key":[0,0.2083,0.375,0.5,0.6667,0.7917,0.9167,1],
                              "@keyValue":[1,0,0,0.3226,1,0,0,0.1556,1,0,0,0.0868,1,0,0,0.8751,1,0,0,1.131,1,0,0,0.0996,1,0,0,0.3942,1,0,0,0.3226],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"l_knee_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"L_ANKLE_ANIMATOR",
                              "@key":[0,0.125,0.2083,0.375,0.4583,0.5,0.6667,0.75,0.7917,0.9167,1],
                              "@keyValue":[1,0,0,0.6001,1,0,0,0.6509,1,0,0,0.6001,1,0,0,0.6001,1,0,0,0.6509,1,0,0,0.6001,1,0,0,0.6001,1,0,0,0.6509,1,0,0,0.6001,1,0,0,0.6509,1,0,0,0.6001],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"l_ankle_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          {
                            "#comment":"no L_MIDTARSAL_ANIMATOR"
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"R_HIP_ANIMATOR",
                              "@key":[0,0.125,0.2083,0.2917,0.5,0.7917,0.9167,1],
                              "@keyValue":[-0.5831,0.0351,0.8116,0.1481,-0.995,0.023,0.0967,0.4683,-1,0.0019,0.008,0.4732,-0.998,-0.0158,-0.061,0.5079,-0.9131,-0.0624,-0.403,0.3361,1,0,0,0.2571,0.9891,-0.0281,0.1444,0.3879,-0.5831,0.0351,0.8116,0.1481],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"r_hip_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"R_KNEE_ANIMATOR",
                              "@key":[0,0.125,0.2083,0.375,0.5,0.6667,0.9167,1],
                              "@keyValue":[1,0,0,0.8573,1,0,0,0.5351,1,0,0,0.1756,1,0,0,0.1194,1,0,0,0.3153,1,0,0,0.0935,1,0,0,0.0856,1,0,0,0.8573],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"r_knee_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"R_ANKLE_ANIMATOR",
                              "@key":[0,0.125,0.2083,0.375,0.4583,0.5,0.6667,0.75,0.7917,0.9167,1],
                              "@keyValue":[1,0,0,0.8001,1,0,0,0.8509,1,0,0,0.8001,1,0,0,0.8001,1,0,0,0.8509,1,0,0,0.8001,1,0,0,0.8001,1,0,0,0.8001,1,0,0,0.8001,1,0,0,0.8509,1,0,0,0.86],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"r_ankle_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          {
                            "#comment":"no L_MIDTARSAL_ANIMATOR"
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"VL5_ANIMATOR",
                              "@key":[0,0.2083,0.375,0.75,0.8333,1],
                              "@keyValue":[0,1,0,0.0826,-0.0197,-0.5974,0.8017,0.0823,0.0093,-0.9648,0.2627,0.1734,-0.0124,0.9549,-0.2968,0.0873,-0.0081,0.9691,-0.2463,0.158,0,1,0,0.0826],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"vl5_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"SKULLBASE_ANIMATOR",
                              "@key":[0,0.28,0.3,0.32,0.4,0.45,0.6,0.65,0.7,0.75,0.85,0.9,0.95,1],
                              "@keyValue":[-1,0,0,1,-1,0,0,1,-1,0,0,0.999,-1,0,0,0.99,-1,0,0,0.99,-1,0,0,0.9,-1,0,0,0.9,-1,0,0,0.9,-1,0,0,0.9,-1,0,0,0.9,-1,0,0,0.9,-1,0,0,0.9,-1,0,0,0.9,-1,0,0,1],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"skullbase_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"L_SHOULDER_ANIMATOR",
                              "@key":[0,0.25,0.375,0.6667,0.7917,0.9167,1],
                              "@keyValue":[0,0,1,0.1,0,0,1,0.2,0,0,1,0.2,0.86,0.25,0.42,0.5,0.86,0.25,0.42,0.8,0.86,0.25,0.42,0.4,0.86,0.25,0.42,0.2],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"l_shoulder_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"L_ELBOW_ANIMATOR",
                              "@key":[0,0.28,0.32,0.64,0.76,1],
                              "@keyValue":[0,0,1,0,-1,0,0,0.1229,-1,0,0,0.1229,-1,0,0,0.5976,-1,0,0,0.3917,0,0,1,0],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"l_elbow_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"L_WRIST_ANIMATOR",
                              "@key":[0,0.32,0.64,0.88,1],
                              "@keyValue":[0,0,1,0,0.067,0.98,-0.128,4.15,0.067,0.98,-0.128,4.15,0.067,0.98,-0.128,4.15,0,0,1,0],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"l_wrist_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"R_SHOULDER_ANIMATOR",
                              "@key":[0,0.45,0.64,0.76,0.88,1],
                              "@keyValue":[0,0,1,0,0.9992,0.0204,0.0356,7.2,0.9989,-0.0462,0.0052,4.079,-0.8687,-0.2525,-0.4261,1.501,-0.941,-0.2893,-0.1754,0.4788,0,0,1,0],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"r_shoulder_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"R_ELBOW_ANIMATOR",
                              "@key":[0,0.28,0.32,0.64,0.76,1],
                              "@keyValue":[0,0,1,0,-1,0,0,0.0415,-1,0,0,0.0415,-1,0,0,0.5855,-1,0,0,0.5852,0,0,1,0],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"r_elbow_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          },
                          { "OrientationInterpolator":
                            {
                              "@DEF":"R_WRIST_ANIMATOR",
                              "@key":[0,0.28,0.32,0.64,0.76,1],
                              "@keyValue":[0,0,1,0,-0.0585,0.9839,-0.1688,1.8596,-0.0585,0.9839,-0.1688,1.8596,-0.0022,0.998,-0.063,1.4607,0,1,0,0.4973,0,0,1,0],
                              "IS": {
                                  "connect": [
                                    {
                                      "@nodeField":"value_changed",
                                      "@protoField":"r_wrist_rotation_changed"
                                    }
                                  ]
                              }
                            }
                          }
                        ]
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"HUMANOIDROOT_POSITION_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"HUMANOIDROOT_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"SKULLBASE_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"VL5_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"L_HIP_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"L_KNEE_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"L_ANKLE_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"R_HIP_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"R_KNEE_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"R_ANKLE_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"L_SHOULDER_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"L_ELBOW_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"L_WRIST_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"R_SHOULDER_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"R_ELBOW_ANIMATOR"
                      }
                    },
                    { "ROUTE":
                      {
                        "@fromField":"fraction_changed",
                        "@fromNode":"TIMER",
                        "@toField":"set_fraction",
                        "@toNode":"R_WRIST_ANIMATOR"
                      }
                    }
                  ]
              }
            }
          },
          { "Viewpoint":
            {
              "@description":"LOA1_SwimmingFlutterKickAnimation scene",
              "@position":[0,0,12]
            }
          },
          { "Anchor":
            {
              "@description":"Nancy Diving",
              "@parameter":["target=_blank"],
              "@url":["NancyDivingProtoInstances.x3d","https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/NancyDivingProtoInstances.x3d","NancyDivingProtoInstances.wrl","https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/NancyDivingProtoInstances.wrl"],
              "-children":[
                { "Shape":
                  {
                    "-geometry":
                      { "Text":
                        {
                          "@string":["LOA1_SwimmingFlutterKickAnimation.x3d","defines a prototype","for animating a humanoid.","Click text to see example."],
                          "-fontStyle":
                            { "FontStyle":
                              {
                                "@justify":["MIDDLE","MIDDLE"],
                                "@size":0.8
                              }
                            }
                        }
                      },
                    "-appearance":
                      { "Appearance":
                        {
                          "-material":
                            { "Material":
                              {
                                "@diffuseColor":[1,1,0.2]
                              }
                            }
                        }
                      }
                  }
                }
              ]
            }
          }
        ]
    }
  }
}