X3D Model Documentation: LOA1_SwimmingFlutterKickAnimation.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2  <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
  3  <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'>
  4       <head>
  5            <meta name='titlecontent=' LOA1_SwimmingFlutterKickAnimation.x3d '/>
  6            <meta name='descriptioncontent='Humanoid animation prototype reusable by any Humanoid.'/>
  7            <meta name='creatorcontent='Etsuko Lippi'/>
  8            <meta name='createdcontent='13 December 2001'/>
  9            <meta name='modifiedcontent='28 December 2025'/>
 10            <meta name=' warning content=' not yet tested, need to compare with NancyDivingExample interpolators '/>
 11            <meta name='referencecontent='http://www.HAnim.org'/>
 12            <meta name='referencecontent='http://HAnim.org/Models'/>
 13            <meta name='referencecontent='http://HAnim.org/Nodes'/>
 14            <meta name='subjectcontent='Swimming flutter kick Animation HAnim 2001'/>
 15            <meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/LOA1_SwimmingFlutterKickAnimation.x3d '/>
 16            <meta name='generatorcontent='X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit'/>
 17            <meta name='licensecontent='../license.html'/>
 18       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top DEF nodes index: HUMANOIDROOT_ANIMATOR, HUMANOIDROOT_POSITION_ANIMATOR, L_ANKLE_ANIMATOR, L_ELBOW_ANIMATOR, L_HIP_ANIMATOR, L_KNEE_ANIMATOR, L_SHOULDER_ANIMATOR, L_WRIST_ANIMATOR, R_ANKLE_ANIMATOR, R_ELBOW_ANIMATOR, R_HIP_ANIMATOR, R_KNEE_ANIMATOR, R_SHOULDER_ANIMATOR, R_WRIST_ANIMATOR, SKULLBASE_ANIMATOR, TIMER, VL5_ANIMATOR

Index for Viewpoint node: Viewpoint_1

Index for ProtoDeclare definition: LOA1_DivingAnimation
-->
 19       <Scene>
 20            <WorldInfo title='LOA1_SwimmingFlutterKickAnimation.x3d'/>
 21            <ProtoDeclare name='LOA1_DivingAnimation'>
 22                 <ProtoInterface>
 23                      <field name='cycleIntervaltype='SFTimevalue='7accessType='inputOutput'/>
 24                      <field name='enabledtype='SFBoolvalue='trueaccessType='inputOutput'/>
 25                      <field name='looptype='SFBoolvalue='trueaccessType='inputOutput'/>
 26                      <field name='startTimetype='SFTimevalue='0accessType='inputOutput'/>
 27                      <field name='stopTimetype='SFTimevalue='-1accessType='inputOutput'/>
 28                      <field name='fraction_changedtype='SFFloataccessType='outputOnly'/>
 29                      <field name='isActivetype='SFBoolaccessType='outputOnly'/>
 30                      <field name='HumanoidRoot_translation_changedtype='SFVec3faccessType='outputOnly'/>
 31                      <field name='HumanoidRoot_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 32                      <field name='lower_body_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 33                      <field name='l_hip_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 34                      <field name='l_knee_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 35                      <field name='l_ankle_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 36                      <field name='l_midtarsal_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 37                      <field name='r_hip_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 38                      <field name='r_knee_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 39                      <field name='r_ankle_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 40                      <field name='r_midtarsal_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 41                      <field name='vl5_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 42                      <field name='skullbase_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 43                      <field name='l_shoulder_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 44                      <field name='l_elbow_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 45                      <field name='l_wrist_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 46                      <field name='r_shoulder_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 47                      <field name='r_elbow_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 48                      <field name='r_wrist_rotation_changedtype='SFRotationaccessType='outputOnly'/>
 49                 </ProtoInterface>
 50                 <ProtoBody>
 51                      <Group>
 52 
 53                                <IS>
 54                                     <connect nodeField='cycleIntervalprotoField='cycleInterval'/>
 55                                     <connect nodeField='enabledprotoField='enabled'/>
 56                                     <connect nodeField='loopprotoField='loop'/>
 57                                     <connect nodeField='startTimeprotoField='startTime'/>
 58                                     <connect nodeField='stopTimeprotoField='stopTime'/>
 59                                     <connect nodeField='fraction_changedprotoField='fraction_changed'/>
 60                                     <connect nodeField='isActiveprotoField='isActive'/>
 61                                </IS>
 62                           </TimeSensor>
 63 
                         <!-- ROUTE information for HUMANOIDROOT_POSITION_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <PositionInterpolator DEF='HUMANOIDROOT_POSITION_ANIMATORkey='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 1keyValue='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'>
 64                                <IS>
 65                                     <connect nodeField='value_changedprotoField='HumanoidRoot_translation_changed'/>
 66                                </IS>
 67                           </PositionInterpolator>
 68 
                         <!-- ROUTE information for HUMANOIDROOT_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='HUMANOIDROOT_ANIMATORkey='0 1keyValue='0 0 1 0 0 0 1 0'>
 69                                <IS>
 70                                     <connect nodeField='value_changedprotoField='HumanoidRoot_rotation_changed'/>
 71                                </IS>
 72                           </OrientationInterpolator>
 73                           <!-- no SACROILIAC_ANIMATOR -->
 74 
                         <!-- ROUTE information for L_HIP_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='L_HIP_ANIMATORkey='0 0.25 0.375 0.6667 0.7917 0.9167 1keyValue='-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'>
 75                                <IS>
 76                                     <connect nodeField='value_changedprotoField='l_hip_rotation_changed'/>
 77                                </IS>
 78                           </OrientationInterpolator>
 79 
                         <!-- ROUTE information for L_KNEE_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='L_KNEE_ANIMATORkey='0 0.2083 0.375 0.5 0.6667 0.7917 0.9167 1keyValue='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'>
 80                                <IS>
 81                                     <connect nodeField='value_changedprotoField='l_knee_rotation_changed'/>
 82                                </IS>
 83                           </OrientationInterpolator>
 84 
                         <!-- ROUTE information for L_ANKLE_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='L_ANKLE_ANIMATORkey='0 0.125 0.2083 0.375 0.4583 0.5 0.6667 0.75 0.7917 0.9167 1keyValue='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'>
 85                                <IS>
 86                                     <connect nodeField='value_changedprotoField='l_ankle_rotation_changed'/>
 87                                </IS>
 88                           </OrientationInterpolator>
 89                           <!-- no L_MIDTARSAL_ANIMATOR -->
 90 
                         <!-- ROUTE information for R_HIP_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='R_HIP_ANIMATORkey='0 0.125 0.2083 0.2917 0.5 0.7917 0.9167 1keyValue='-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'>
 91                                <IS>
 92                                     <connect nodeField='value_changedprotoField='r_hip_rotation_changed'/>
 93                                </IS>
 94                           </OrientationInterpolator>
 95 
                         <!-- ROUTE information for R_KNEE_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='R_KNEE_ANIMATORkey='0 0.125 0.2083 0.375 0.5 0.6667 0.9167 1keyValue='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'>
 96                                <IS>
 97                                     <connect nodeField='value_changedprotoField='r_knee_rotation_changed'/>
 98                                </IS>
 99                           </OrientationInterpolator>
100 
                         <!-- ROUTE information for R_ANKLE_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='R_ANKLE_ANIMATORkey='0 0.125 0.2083 0.375 0.4583 0.5 0.6667 0.75 0.7917 0.9167 1keyValue='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'>
101                                <IS>
102                                     <connect nodeField='value_changedprotoField='r_ankle_rotation_changed'/>
103                                </IS>
104                           </OrientationInterpolator>
105                           <!-- no L_MIDTARSAL_ANIMATOR -->
106 
                         <!-- ROUTE information for VL5_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='VL5_ANIMATORkey='0 0.2083 0.375 0.75 0.8333 1keyValue='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'>
107                                <IS>
108                                     <connect nodeField='value_changedprotoField='vl5_rotation_changed'/>
109                                </IS>
110                           </OrientationInterpolator>
111 
                         <!-- ROUTE information for SKULLBASE_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='SKULLBASE_ANIMATORkey='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 1keyValue='-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'>
112                                <IS>
113                                     <connect nodeField='value_changedprotoField='skullbase_rotation_changed'/>
114                                </IS>
115                           </OrientationInterpolator>
116 
                         <!-- ROUTE information for L_SHOULDER_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='L_SHOULDER_ANIMATORkey='0 0.25 0.375 0.6667 0.7917 0.9167 1keyValue='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'>
117                                <IS>
118                                     <connect nodeField='value_changedprotoField='l_shoulder_rotation_changed'/>
119                                </IS>
120                           </OrientationInterpolator>
121 
                         <!-- ROUTE information for L_ELBOW_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='L_ELBOW_ANIMATORkey='0 0.28 0.32 0.64 0.76 1keyValue='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'>
122                                <IS>
123                                     <connect nodeField='value_changedprotoField='l_elbow_rotation_changed'/>
124                                </IS>
125                           </OrientationInterpolator>
126 
                         <!-- ROUTE information for L_WRIST_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='L_WRIST_ANIMATORkey='0 0.32 0.64 0.88 1keyValue='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'>
127                                <IS>
128                                     <connect nodeField='value_changedprotoField='l_wrist_rotation_changed'/>
129                                </IS>
130                           </OrientationInterpolator>
131 
                         <!-- ROUTE information for R_SHOULDER_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='R_SHOULDER_ANIMATORkey='0 0.45 0.64 0.76 0.88 1keyValue='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'>
132                                <IS>
133                                     <connect nodeField='value_changedprotoField='r_shoulder_rotation_changed'/>
134                                </IS>
135                           </OrientationInterpolator>
136 
                         <!-- ROUTE information for R_ELBOW_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='R_ELBOW_ANIMATORkey='0 0.28 0.32 0.64 0.76 1keyValue='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'>
137                                <IS>
138                                     <connect nodeField='value_changedprotoField='r_elbow_rotation_changed'/>
139                                </IS>
140                           </OrientationInterpolator>
141 
                         <!-- ROUTE information for R_WRIST_ANIMATOR node:  [from TIMER.fraction_changed to set_fraction ] -->
                         <OrientationInterpolator DEF='R_WRIST_ANIMATORkey='0 0.28 0.32 0.64 0.76 1keyValue='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'>
142                                <IS>
143                                     <connect nodeField='value_changedprotoField='r_wrist_rotation_changed'/>
144                                </IS>
145                           </OrientationInterpolator>
146                      </Group>
147                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='HUMANOIDROOT_POSITION_ANIMATOR' toField='set_fraction'/>
148                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='HUMANOIDROOT_ANIMATOR' toField='set_fraction'/>
149                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='SKULLBASE_ANIMATOR' toField='set_fraction'/>
150                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='VL5_ANIMATOR' toField='set_fraction'/>
151                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='L_HIP_ANIMATOR' toField='set_fraction'/>
152                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='L_KNEE_ANIMATOR' toField='set_fraction'/>
153                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='L_ANKLE_ANIMATOR' toField='set_fraction'/>
154                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='R_HIP_ANIMATOR' toField='set_fraction'/>
155                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='R_KNEE_ANIMATOR' toField='set_fraction'/>
156                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='R_ANKLE_ANIMATOR' toField='set_fraction'/>
157                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='L_SHOULDER_ANIMATOR' toField='set_fraction'/>
158                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='L_ELBOW_ANIMATOR' toField='set_fraction'/>
159                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='L_WRIST_ANIMATOR' toField='set_fraction'/>
160                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='R_SHOULDER_ANIMATOR' toField='set_fraction'/>
161                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='R_ELBOW_ANIMATOR' toField='set_fraction'/>
162                      < ROUTE  fromNode='TIMER' fromField='fraction_changed' toNode='R_WRIST_ANIMATOR' toField='set_fraction'/>
163                 </ProtoBody>
164            </ProtoDeclare>
165            <Viewpoint description='LOA1_SwimmingFlutterKickAnimation sceneposition='0 0 12'/>
166            <Anchor description='Nancy Divingparameter='"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" '>
167                 <Shape>
168                      <Text string='"LOA1_SwimmingFlutterKickAnimation.x3d" "defines a prototype" "for animating a humanoid." "" "Click text to see example."'>
169                           <FontStyle justify='"MIDDLE" "MIDDLE"size='0.8'/>
170                      </Text>
171                      <Appearance>
172                           <Material diffuseColor='1 1 0.2'/>
173                      </Appearance>
174                 </Shape>
175            </Anchor>
176       </Scene>
177  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top DEF nodes index: HUMANOIDROOT_ANIMATOR, HUMANOIDROOT_POSITION_ANIMATOR, L_ANKLE_ANIMATOR, L_ELBOW_ANIMATOR, L_HIP_ANIMATOR, L_KNEE_ANIMATOR, L_SHOULDER_ANIMATOR, L_WRIST_ANIMATOR, R_ANKLE_ANIMATOR, R_ELBOW_ANIMATOR, R_HIP_ANIMATOR, R_KNEE_ANIMATOR, R_SHOULDER_ANIMATOR, R_WRIST_ANIMATOR, SKULLBASE_ANIMATOR, TIMER, VL5_ANIMATOR

Index for Viewpoint node: Viewpoint_1

Index for ProtoDeclare definition: LOA1_DivingAnimation
-->
X3D Tooltips element index: Anchor, Appearance, connect, field, FontStyle, Group, head, IS, Material, meta, OrientationInterpolator, PositionInterpolator, ProtoBody, ProtoDeclare, ProtoInterface, ROUTE, Scene, Shape, Text, TimeSensor, Viewpoint, WorldInfo, X3D, plus documentation for accessType definitions, type definitions, XML data types, and field types

Event Graph ROUTE Table entries with 16 ROUTE connections total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.

TIMER
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
HUMANOIDROOT_POSITION_ANIMATOR
PositionInterpolator
set_fraction
SFFloat
TIMER
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
HUMANOIDROOT_ANIMATOR
OrientationInterpolator
set_fraction
SFFloat
TIMER
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
SKULLBASE_ANIMATOR
OrientationInterpolator
set_fraction
SFFloat
TIMER
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
VL5_ANIMATOR
OrientationInterpolator
set_fraction
SFFloat
TIMER
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
L_HIP_ANIMATOR
OrientationInterpolator
set_fraction
SFFloat
TIMER
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
L_KNEE_ANIMATOR
OrientationInterpolator
set_fraction
SFFloat
TIMER
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
L_ANKLE_ANIMATOR
OrientationInterpolator
set_fraction
SFFloat
TIMER
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
R_HIP_ANIMATOR
OrientationInterpolator
set_fraction
SFFloat

line 166
Anchor
description='Nancy Diving' 
No direct ROUTE connection found for events to/from this node. 

Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with X3D! 😀

-->
<!-- Online at
https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/LOA1_SwimmingFlutterKickAnimationIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/LOA1_SwimmingFlutterKickAnimation.x3d -->

<!-- Color-coding legend: X3D terminology <X3dNode DEF='idNamefield='value'/> matches XML terminology <XmlElement DEF='idNameattribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
    <ProtoDeclare name='ProtoName'> <field name='fieldName'/> </ProtoDeclare> -->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->