<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Immersive' version='3.3' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.3.xsd'>
  <head>
    <meta content='LOA1_StandAnimation.x3d' name='title'/>
    <meta content='Humanoid animation prototype reusable by any Humanoid.' name='description'/>
    <meta content='Cindy Ballreich cindy@ballreich.net 3Name3D, Joe Williams, Don Brutzman' name='creator'/>
    <meta content='1997 3Name3D / Yglesias, Wallock, Divekar, Inc., all rights reserved.' name='rights'/>
    <meta content='Ozan APAYDIN' name='translator'/>
    <meta content='1 December 2001' name='created'/>
    <meta content='16 March 2026' name='modified'/>
    <meta content='consider adding eyeball animation' name='TODO'/>
    <meta content='http://www.ballreich.net/vrml/HAnim/nancy_HAnim.wrl' name='reference'/>
    <meta content='http://www.HAnim.org' name='reference'/>
    <meta content='http://HAnim.org/Models' name='reference'/>
    <meta content='http://HAnim.org/Nodes' name='reference'/>
    <meta content='Nancy Stand Animation HAnim 2001' name='subject'/>
    <meta content='https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/LOA1_StandAnimation.x3d' name='identifier'/>
    <meta content='X3D-Edit 3.3, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../license.html' name='license'/>
  </head>
  <Scene>
    <WorldInfo title='LOA1_StandAnimation.x3d'/>
    <ProtoDeclare name='LOA1_StandAnimation'>
      <ProtoInterface>
        <field accessType='inputOutput' name='cycleInterval' type='SFTime' value='0.01'/>
        <field accessType='inputOutput' name='enabled' type='SFBool' value='true'/>
        <field accessType='inputOutput' name='loop' type='SFBool' value='true'/>
        <field accessType='inputOutput' name='startTime' type='SFTime' value='0'/>
        <field accessType='inputOutput' name='stopTime' type='SFTime' value='-1'/>
        <field accessType='outputOnly' name='fraction_changed' type='SFFloat'/>
        <field accessType='outputOnly' name='isActive' type='SFBool'/>
        <field accessType='outputOnly' name='HumanoidRoot_translation_changed' type='SFVec3f'/>
        <field accessType='outputOnly' name='HumanoidRoot_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='lower_body_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='l_hip_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='l_knee_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='l_ankle_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='l_midtarsal_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='r_hip_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='r_knee_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='r_ankle_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='r_midtarsal_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='vl5_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='skullbase_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='l_shoulder_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='l_elbow_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='l_wrist_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='r_shoulder_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='r_elbow_rotation_changed' type='SFRotation'/>
        <field accessType='outputOnly' name='r_wrist_rotation_changed' type='SFRotation'/>
      </ProtoInterface>
      <ProtoBody>
        <Group>
          <TimeSensor DEF='TIMER'>
            <IS>
              <connect nodeField='cycleInterval' protoField='cycleInterval'/>
              <connect nodeField='enabled' protoField='enabled'/>
              <connect nodeField='loop' protoField='loop'/>
              <connect nodeField='startTime' protoField='startTime'/>
              <connect nodeField='stopTime' protoField='stopTime'/>
              <connect nodeField='fraction_changed' protoField='fraction_changed'/>
              <connect nodeField='isActive' protoField='isActive'/>
            </IS>
          </TimeSensor>
          <PositionInterpolator DEF='HUMANOIDROOT_POSITION_ANIMATOR' key='0 1' keyValue='0 0 0 0 0 0'>
            <IS>
              <connect nodeField='value_changed' protoField='HumanoidRoot_translation_changed'/>
            </IS>
          </PositionInterpolator>
          <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'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='SACROILIAC_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='lower_body_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='L_HIP_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='l_hip_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='L_KNEE_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='l_knee_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='L_ANKLE_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='l_ankle_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='L_MIDTARSAL_ANIMATOR' key='0 1' keyValue='1 0 0 0 1 0 0 0'>
            <IS>
              <connect nodeField='value_changed' protoField='l_midtarsal_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='R_HIP_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='r_hip_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='R_KNEE_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='r_knee_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='R_ANKLE_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='r_ankle_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='R_MIDTARSAL_ANIMATOR' key='0 1' keyValue='1 0 0 0 1 0 0 0'>
            <IS>
              <connect nodeField='value_changed' protoField='r_midtarsal_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='VL5_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='vl5_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='SKULLBASE_ANIMATOR' key='0 0.5 1' keyValue='0 0 1 0 -1 0 0 0.5 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='skullbase_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='L_SHOULDER_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='l_shoulder_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='L_ELBOW_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='l_elbow_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='L_WRIST_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='l_wrist_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='R_SHOULDER_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='r_shoulder_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='R_ELBOW_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='r_elbow_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
          <OrientationInterpolator DEF='R_WRIST_ANIMATOR' key='0 1' keyValue='0 0 1 0 0 0 1 0'>
            <IS>
              <connect nodeField='value_changed' protoField='r_wrist_rotation_changed'/>
            </IS>
          </OrientationInterpolator>
        </Group>
        <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='SACROILIAC_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='L_MIDTARSAL_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='R_MIDTARSAL_ANIMATOR'/>
        <ROUTE fromField='fraction_changed' fromNode='TIMER' toField='set_fraction' toNode='VL5_ANIMATOR'/>
        <ROUTE fromField='fraction_changed' fromNode='TIMER' toField='set_fraction' toNode='SKULLBASE_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'/>
      </ProtoBody>
    </ProtoDeclare>
    <!-- ====================================== -->
    <!-- Point to example use in case someone inspects this file -->
    <Anchor description='InterchangableActorsViaDynamicRouting' parameter='"target=_blank"' url='"InterchangableActorsViaDynamicRoutingPrototypes.x3d" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/InterchangableActorsViaDynamicRoutingPrototypes.x3d" "InterchangableActorsViaDynamicRoutingPrototypes.wrl" "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/InterchangableActorsViaDynamicRoutingPrototypes.wrl"'>
      <Shape>
        <Text string='"LOA1_StandAnimation.x3d" "defines a prototype" "for animating a humanoid." "" "Click this text to see" "InterchangableActorsViaDynamicRouting example."'>
          <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.8'/>
        </Text>
        <Appearance>
          <Material diffuseColor='1 1 0.2'/>
        </Appearance>
      </Shape>
    </Anchor>
  </Scene>
</X3D>