{ "X3D": {
    "encoding":"UTF-8",
    "@profile":"Full",
    "@version":"4.0",
    "@xsd:noNamespaceSchemaLocation":"https://www.web3d.org/specifications/x3d-4.0.xsd",
    "JSON schema":"https://www.web3d.org/specifications/x3d-4.0-JSONSchema.autogenerated.json",
    "head": {
        "meta": [
          {
            "@name":"title",
            "@content":"HAnimPoseExternProtoDeclare.x3d"
          },
          {
            "@name":"description",
            "@content":"Define ExternProtoDeclare for an experimental new node to simply capture a single pose for an HAnimHumanoid model. Expected usage is to allow HAnimHumanoid to contain multiple Pose nodes which can be activated and composed."
          },
          {
            "@name":"created",
            "@content":"1 November 2025"
          },
          {
            "@name":"modified",
            "@content":"24 February 2026"
          },
          {
            "@name":"creator",
            "@content":"Don Brutzman"
          },
          {
            "@name":"creator",
            "@content":"Joe Williams"
          },
          {
            "@name":"contributor",
            "@content":"Holger Seelig for X_ITE, Sunrize on Windows, scripting guidance, and Inline IMPORT functionality as node-reference equivalent to USE"
          },
          {
            "@name":"specificationSection",
            "@content":"HAnim Architecture volume 1 version 2.1 draft, clause 6 Object interfaces, section 6.4 Pose"
          },
          {
            "@name":"specificationUrl",
            "@content":"https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/ObjectInterfaces.html#Pose"
          },
          {
            "@name":"specificationSection",
            "@content":"HAnim Architecture volume 1 version 2.1 draft, clause 4 Concepts, section 4.8.2 Modelling of human-like HAnim figures"
          },
          {
            "@name":"specificationUrl",
            "@content":"https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#ModellingHumanLikeHAnimFigures"
          },
          {
            "@name":"specificationSection",
            "@content":"HAnim Architecture volume 1 version 2.1 draft, clause 4 Concepts, section 4.8.3 Poses"
          },
          {
            "@name":"specificationUrl",
            "@content":"https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19774/ISO-IEC19774-1/ISO-IEC19774-1v2.1/ISO-IEC19774-1v2.1-WD/Architecture/concepts.html#Poses"
          },
          {
            "@name":"reference",
            "@content":"Direct scene manipulations with Javascript, https://doc.instantreality.org/tutorial/direct-scene-manipulations-with-javascript"
          },
          {
            "@name":"generator",
            "@content":"X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit"
          },
          {
            "@name":"generator",
            "@content":"Sunrize X3D Editor V1.11.1, https://create3000.github.io/sunrize"
          },
          {
            "@name":"identifier",
            "@content":"https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Poses/HAnimPoseExternProtoDeclare.x3d"
          },
          {
            "@name":"license",
            "@content":"https://www.web3d.org/x3d/content/examples/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":
            {
              "@DEF":"ModelInfo",
              "@info":["Design to illustrate a potential HAnimPose node"],
              "@title":"HAnimPoseExternProtoDeclare"
            }
          },
          { "Background":
            {
              "@skyColor":[0.6,0.6,0.8]
            }
          },
          { "NavigationInfo":
            {
            }
          },
          { "ExternProtoDeclare":
            {
              "@name":"HAnimPose",
              "@appinfo":"Experimental node to assign joint values to a humanoid and assume a pose. Assumes that baseline HAnimHumanoid configuration must be I pose, which can be achieved by resetting every HAnimJoint to default values.",
              "@url":["Filename.x3d#HAnimPose","https://some.address.org/Filename.x3d#HAnimPose"],
              "field": [
                {
                  "@name":"parentHAnimHumanoid",
                  "@accessType":"inputOutput",
                  "@appinfo":"HAnimHumanoid for this Pose to act upon",
                  "@type":"SFNode"
                },
                {
                  "@name":"name",
                  "@accessType":"inputOutput",
                  "@appinfo":"name of this pose",
                  "@type":"SFString"
                },
                {
                  "@name":"children",
                  "@accessType":"inputOutput",
                  "@appinfo":"joint values to apply to HAnimHumanoid",
                  "@type":"MFNode",
                  "-children":[
                    {
                      "#comment":"initializating Joint nodes (if any) go here"
                    }
                  ]
                },
                {
                  "@name":"description",
                  "@accessType":"inputOutput",
                  "@appinfo":"explanation of purpose",
                  "@type":"SFString"
                },
                {
                  "@name":"enabled",
                  "@accessType":"inputOutput",
                  "@appinfo":"default value true",
                  "@type":"SFBool"
                },
                {
                  "@name":"loa",
                  "@accessType":"initializeOnly",
                  "@appinfo":"default is no loa",
                  "@type":"SFInt32"
                },
                {
                  "@name":"transitionDuration",
                  "@accessType":"inputOutput",
                  "@appinfo":"how many seconds to achieve the pose",
                  "@type":"SFTime"
                },
                {
                  "@name":"metadata",
                  "@accessType":"inputOutput",
                  "@appinfo":"single Metadata* node",
                  "@type":"SFNode"
                },
                {
                  "@name":"isActive",
                  "@accessType":"outputOnly",
                  "@appinfo":"event indicating when pose transition is active",
                  "@type":"SFBool"
                },
                {
                  "@name":"commencePose",
                  "@accessType":"inputOnly",
                  "@appinfo":"this event tells the HAnimPose node to fully transition, equivalent to set_fraction=1",
                  "@type":"SFBool"
                },
                {
                  "@name":"resetAllJoints",
                  "@accessType":"inputOnly",
                  "@appinfo":"reset the skeleton to I pose with all joints zeroed",
                  "@type":"SFBool"
                },
                {
                  "@name":"set_fraction",
                  "@accessType":"inputOnly",
                  "@appinfo":"allows transition to proceed incrementally from fraction [0..10",
                  "@type":"SFFloat"
                },
                {
                  "@name":"set_startTime",
                  "@accessType":"inputOnly",
                  "@appinfo":"starts the animation clock",
                  "@type":"SFTime"
                },
                {
                  "@name":"isLoaded",
                  "@accessType":"inputOnly",
                  "@appinfo":"possible notification from LoadSensor if using HAnimHumanoid Inline/IMPORT AS/USE",
                  "@type":"SFBool"
                },
                {
                  "@name":"traceEnabled",
                  "@accessType":"inputOutput",
                  "@appinfo":"debug trace to Browser output console this is a local prototype field",
                  "@type":"SFBool"
                }
              ]
            }
          },
          { "Viewpoint":
            {
              "@description":"HAnimPoseExternProtoDeclare description",
              "@position":[0,1,4]
            }
          },
          { "Transform":
            {
              "@DEF":"DisplayHeader1",
              "@translation":[0,1.5,0],
              "-children":[
                { "Anchor":
                  {
                    "@description":"go to HAnimPoseExternProtoDeclareIndex page",
                    "@parameter":["target=_blank"],
                    "@url":["https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Poses/HAnimPoseExternProtoDeclareIndex.html"],
                    "-children":[
                      { "Shape":
                        {
                          "-geometry":
                            { "Text":
                              {
                                "@string":["Utility scene","HAnimPoseExternProtoDeclare.x3d"],
                                "-fontStyle":
                                  { "FontStyle":
                                    {
                                      "@DEF":"HeaderFont",
                                      "@family":["SANS"],
                                      "@justify":["MIDDLE","MIDDLE"],
                                      "@size":0.15,
                                      "@style":"BOLD"
                                    }
                                  }
                              }
                            },
                          "-appearance":
                            { "Appearance":
                              {
                                "@DEF":"PoseTextAppearance",
                                "-material":
                                  { "Material":
                                    {
                                      "@diffuseColor":[0.1,0.3,0.5]
                                    }
                                  }
                              }
                            }
                        }
                      },
                      { "Shape":
                        {
                          "-geometry":
                            { "Box":
                              {
                                "@size":[3.5,0.5,0.001]
                              }
                            },
                          "-appearance":
                            { "Appearance":
                              {
                                "@DEF":"TransparentAppearance",
                                "-material":
                                  { "Material":
                                    {
                                      "@transparency":1
                                    }
                                  }
                              }
                            }
                        }
                      }
                    ]
                  }
                }
              ]
            }
          },
          { "Transform":
            {
              "@DEF":"DisplayHeader2",
              "@translation":[0,0.5,0],
              "-children":[
                { "Anchor":
                  {
                    "@description":"go to HAnimPosePrototypeIndex page",
                    "@parameter":["target=_blank"],
                    "@url":["https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Poses/HAnimPosePrototypeIndex.html"],
                    "-children":[
                      { "Shape":
                        {
                          "-geometry":
                            { "Text":
                              {
                                "@string":["This model supports","HAnimPosePrototype.x3d"],
                                "-fontStyle":
                                  { "FontStyle":
                                    {
                                      "@USE":"HeaderFont"
                                    }
                                  }
                              }
                            },
                          "-appearance":
                            { "Appearance":
                              {
                                "@USE":"PoseTextAppearance"
                              }
                            }
                        }
                      }
                    ]
                  }
                },
                { "Shape":
                  {
                    "-geometry":
                      { "Box":
                        {
                          "@size":[2.6,0.5,0.001]
                        }
                      },
                    "-appearance":
                      { "Appearance":
                        {
                          "@USE":"TransparentAppearance"
                        }
                      }
                  }
                }
              ]
            }
          }
        ]
    }
  }
}