<?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='Hand.x3d' name='title'/>
    <meta content='Robotic hand juggling primitives: this scene illustrates the use of the primitive shapes and a lot of nested Transform nodes to created articulated structures.' name='description'/>
    <meta content='David R. Nadeau' name='creator'/>
    <meta content='Don Brutzman' name='translator'/>
    <meta content='1 July 1998' name='created'/>
    <meta content='2 February 2014' name='translated'/>
    <meta content='3 September 2023' name='modified'/>
    <meta content='Hand.png' name='Image'/>
    <meta content='originals/hand.wrl' name='reference'/>
    <meta content='http://www.siggraph.org/s98' name='reference'/>
    <meta content='http://www.siggraph.org/s98/conference/courses/18.html' name='reference'/>
    <meta content='http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0063.htm' name='reference'/>
    <meta content='http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/slides/mt0115.htm' name='reference'/>
    <meta content='http://www.sdsc.edu/~moreland/courses/Siggraph98/vrml97/vrml97.htm' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dResources.html' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Siggraph98Course/Hand.x3d' name='identifier'/>
    <meta content='Vrml97ToX3dNist, http://ovrt.nist.gov/v2_x3d.html' name='generator'/>
    <meta content='X3D-Edit, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../license.html' name='license'/>
  </head>
  <Scene>
    <!-- Each of the finger joints are controlled by a separate rotation. Changing the rotation angles (by editing this file) will open and close the hand. -->
    <!-- For convenience, each of the hand's parts are spearately authored within a Switch node whose 'whichChoice' field is set to -1 which forces the parts to be skipped during drawing. The parts in the Switch, however, are assembled later in a 'hand' shape at the end of the Switch, and that shape is then instanced outside of the Switch. The effect is to create a file structure that enables you to build things piece by piece, then use Transform's later on to assemble those pieces into a drawn shape. -->
    <WorldInfo info='"copyright (c) 1997, David R. Nadeau"' title='Robotic hand juggling primitives'/>
    <Viewpoint description='Entry view'/>
    <NavigationInfo/>
    <Switch whichChoice='-1'>
      <Shape>
        <Appearance DEF='HandColor'>
          <Material ambientIntensity='0.3' diffuseColor='0.3 0.3 0.5' shininess='0.1' specularColor='0.7 0.7 0.8'/>
        </Appearance>
      </Shape>
      <Group DEF='finger_base'>
        <Shape>
          <Appearance USE='HandColor'/>
          <Sphere radius='0.41'/>
        </Shape>
        <Transform translation='0.0 0.875 0.0'>
          <Shape>
            <Appearance USE='HandColor'/>
            <Cylinder height='1.75' radius='0.35'/>
          </Shape>
          <Transform translation='0.0 0.835 0.0'>
            <Shape>
              <Appearance USE='HandColor'/>
              <Sphere radius='0.35'/>
            </Shape>
          </Transform>
        </Transform>
      </Group>
      <Transform DEF='finger_middle' translation='0.0 0.5 0.0'>
        <Shape>
          <Appearance USE='HandColor'/>
          <Cylinder height='1.0' radius='0.315'/>
        </Shape>
        <Transform translation='0.0 0.5 0.0'>
          <Shape>
            <Appearance USE='HandColor'/>
            <Sphere radius='0.32'/>
          </Shape>
        </Transform>
      </Transform>
      <Transform DEF='finger_tip' rotation='1.0 0.0 0.0 -0.1'>
        <Transform translation='0.0 0.4 0.0'>
          <Shape>
            <Appearance USE='HandColor'/>
            <Cylinder height='0.75' radius='0.27'/>
          </Shape>
          <Transform scale='1.0 0.7 1.0' translation='0.0 0.35 0.0'>
            <Shape>
              <Appearance USE='HandColor'/>
              <Sphere radius='0.235'/>
            </Shape>
          </Transform>
        </Transform>
      </Transform>
      <Transform DEF='finger1' rotation='0.0 0.0 1.0 0.035'>
        <Transform rotation='0.0 1.0 0.0 -0.03'>
          <Transform rotation='1.0 0.0 0.0 -0.2'>
            <Group USE='finger_base'/>
            <Transform rotation='1.0 0.0 0.0 -0.2' translation='0.0 1.71 0.0'>
              <Transform USE='finger_middle'/>
              <Transform rotation='1.0 0.0 0.0 -0.2' translation='0.0 1.0 0.0'>
                <Transform USE='finger_tip'/>
              </Transform>
            </Transform>
          </Transform>
        </Transform>
      </Transform>
      <Transform DEF='finger2' scale='1.01 1.15 1.01'>
        <Transform>
          <Transform rotation='1.0 0.0 0.0 -0.4' translation='0.0 0.2 0.0'>
            <Group USE='finger_base'/>
            <Transform rotation='1.0 0.0 0.0 -0.4' translation='0.0 1.71 0.0'>
              <Transform USE='finger_middle'/>
              <Transform rotation='1.0 0.0 0.0 -0.4' translation='0.0 1.0 0.0'>
                <Transform USE='finger_tip'/>
              </Transform>
            </Transform>
          </Transform>
        </Transform>
      </Transform>
      <Transform DEF='finger3' rotation='0.0 0.0 1.0 -0.0175' scale='1.0 1.05 1.0'>
        <Transform rotation='0.0 1.0 0.0 0.065'>
          <Transform rotation='1.0 0.0 0.0 -0.6' translation='0.0 0.1 0.0'>
            <Group USE='finger_base'/>
            <Transform rotation='1.0 0.0 0.0 -0.4' translation='0.0 1.71 0.0'>
              <Transform USE='finger_middle'/>
              <Transform rotation='1.0 0.0 0.0 -0.4' translation='0.0 1.0 0.0'>
                <Transform USE='finger_tip'/>
              </Transform>
            </Transform>
          </Transform>
        </Transform>
      </Transform>
      <Transform DEF='finger4' rotation='0.0 0.0 1.0 -0.0698' scale='0.9 0.9 0.9'>
        <Transform rotation='0.0 1.0 0.0 0.1'>
          <Transform rotation='1.0 0.0 0.0 -0.7' translation='0.0 -0.2 0.0'>
            <Group USE='finger_base'/>
            <Transform rotation='1.0 0.0 0.0 -0.4' translation='0.0 1.71 0.0'>
              <Transform USE='finger_middle'/>
              <Transform rotation='1.0 0.0 0.0 -0.4' translation='0.0 1.0 0.0'>
                <Transform USE='finger_tip'/>
              </Transform>
            </Transform>
          </Transform>
        </Transform>
      </Transform>
      <Transform DEF='thumb' rotation='0.0 0.0 1.0 0.7'>
        <Transform rotation='0.0 0.0 1.0 0.1'>
          <Transform rotation='0.0 1.0 0.0 -0.9' scale='0.7 0.7 0.8'>
            <Shape>
              <Appearance USE='HandColor'/>
              <Sphere radius='0.9'/>
            </Shape>
            <Transform translation='0.0 1.1 0.0'>
              <Shape>
                <Appearance USE='HandColor'/>
                <Cylinder radius='0.55'/>
              </Shape>
              <Transform translation='0.0 0.85 0.0'>
                <Shape>
                  <Appearance USE='HandColor'/>
                  <Sphere radius='0.58'/>
                </Shape>
                <Transform rotation='1.0 0.0 0.0 0.08'>
                  <Transform translation='0.0 0.6 0.0'>
                    <Shape>
                      <Appearance USE='HandColor'/>
                      <Cylinder height='1.2' radius='0.41'/>
                    </Shape>
                    <Transform translation='0.0 0.6 0.0'>
                      <Shape>
                        <Appearance USE='HandColor'/>
                        <Sphere radius='0.45'/>
                      </Shape>
                      <Transform rotation='1.0 0.0 0.0 0.13'>
                        <Transform rotation='1.0 0.0 0.0 -0.1'>
                          <Transform translation='0.0 0.5 0.05'>
                            <Shape>
                              <Appearance USE='HandColor'/>
                              <Cylinder height='1.0' radius='0.325'/>
                            </Shape>
                            <Transform scale='1.0 0.7 1.0' translation='0.0 0.5 0.0'>
                              <Shape>
                                <Appearance USE='HandColor'/>
                                <Sphere radius='0.29'/>
                              </Shape>
                            </Transform>
                          </Transform>
                        </Transform>
                      </Transform>
                    </Transform>
                  </Transform>
                </Transform>
              </Transform>
            </Transform>
          </Transform>
        </Transform>
      </Transform>
      <Group DEF='palm'>
        <Transform translation='-0.05 0.875 -0.03'>
          <Shape>
            <Appearance USE='HandColor'/>
            <Box size='2.85 2.45 0.6'/>
          </Shape>
        </Transform>
        <Transform scale='1.1 0.7 0.3' translation='-0.9 0.2 -0.2'>
          <Shape>
            <Appearance USE='HandColor'/>
            <Sphere radius='1.1'/>
          </Shape>
        </Transform>
        <Transform scale='0.9 0.8 0.3' translation='0.5 0.0 -0.2'>
          <Shape>
            <Appearance USE='HandColor'/>
            <Sphere/>
          </Shape>
        </Transform>
        <Transform scale='1.5 1.0 1.0' translation='0.0 -0.6 0.0'>
          <Transform rotation='1.0 0.0 0.0 -0.4'>
            <Shape>
              <Appearance USE='HandColor'/>
              <Cylinder height='0.1' radius='1.1'/>
            </Shape>
            <Transform translation='0.0 -0.3 0.0'>
              <Shape>
                <Appearance USE='HandColor'/>
                <Sphere radius='0.8'/>
              </Shape>
              <Shape>
                <Appearance USE='HandColor'/>
                <Cylinder height='0.1' radius='1.1'/>
              </Shape>
              <Transform translation='0.0 -1.3 0.0'>
                <Shape>
                  <Appearance USE='HandColor'/>
                  <Cylinder radius='0.6'/>
                </Shape>
              </Transform>
            </Transform>
          </Transform>
        </Transform>
        <Transform translation='0.0 -0.475 0.345'>
          <Transform rotation='0.0 0.0 1.0 0.15'>
            <Transform DEF='vein' translation='0.0 1.375 0.0'>
              <Shape>
                <Appearance USE='HandColor'/>
                <Cylinder height='2.85' radius='0.15'/>
              </Shape>
            </Transform>
          </Transform>
          <Transform rotation='0.0 0.0 1.0 0.45'>
            <Transform USE='vein'/>
          </Transform>
          <Transform rotation='0.0 0.0 1.0 -0.15'>
            <Transform USE='vein'/>
          </Transform>
          <Transform rotation='0.0 0.0 1.0 -0.45'>
            <Transform USE='vein'/>
          </Transform>
          <Transform rotation='0.0 0.0 1.0 1.15'>
            <Transform translation='0.0 0.875 0.0'>
              <Shape>
                <Appearance USE='HandColor'/>
                <Cylinder height='1.75' radius='0.15'/>
              </Shape>
            </Transform>
          </Transform>
        </Transform>
      </Group>
      <Group DEF='hand'>
        <Transform USE='finger1'/>
        <Transform translation='0.8 0.0 0.0'>
          <Transform USE='finger2'/>
          <Transform translation='0.8 0.0 0.0'>
            <Transform USE='finger3'/>
            <Transform translation='0.8 0.0 0.0'>
              <Transform USE='finger4'/>
            </Transform>
          </Transform>
        </Transform>
        <Transform translation='-0.4 -2.0 0.0'>
          <Transform USE='thumb'/>
        </Transform>
        <Transform translation='1.2 -2.2 0.0'>
          <Group USE='palm'/>
        </Transform>
      </Group>
    </Switch>
    <Transform rotation='0.0 1.0 0.0 1.0' translation='0.0 -2.0 0.0'>
      <Transform rotation='1.0 0.0 0.0 1.9'>
        <Group USE='hand'/>
      </Transform>
    </Transform>
    <Transform rotation='1.0 0.0 1.0 0.3' translation='1.5 1.0 0.0'>
      <Shape>
        <Appearance>
          <Material diffuseColor='1.0 0.0 0.0'/>
        </Appearance>
        <Cone/>
      </Shape>
    </Transform>
    <Transform translation='2.0 3.0 -0.5'>
      <Shape>
        <Appearance>
          <Material diffuseColor='1.0 1.0 0.0'/>
        </Appearance>
        <Sphere/>
      </Shape>
    </Transform>
    <Transform rotation='1.0 0.0 0.2 0.82' translation='-0.6 0.8 0.5'>
      <Shape>
        <Appearance>
          <Material diffuseColor='0.0 0.7 1.0'/>
        </Appearance>
        <Cylinder height='1.5' radius='0.75'/>
      </Shape>
    </Transform>
    <Transform rotation='1.0 0.0 0.7 1.3' translation='0.0 2.6 -1.1'>
      <Shape>
        <Appearance>
          <Material diffuseColor='0.0 1.0 0.0'/>
        </Appearance>
        <Box size='1.25 1.25 1.25'/>
      </Shape>
    </Transform>
  </Scene>
</X3D>