<?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='PixelTextureSnowman.x3d' name='title'/>
    <meta content='This snowman example shows a colorful PixelTexture applied to X3D primitive shapes - happy holidays!' name='description'/>
    <meta content='Craig Schwetje, Leonard Daly and Don Brutzman' name='creator'/>
    <meta content='2 February 2006' name='created'/>
    <meta content='25 August 2008' name='translated'/>
    <meta content='22 August 2024' name='modified'/>
    <meta content='frosty2.mid' name='Sound'/>
    <meta content='https://en.wikipedia.org/wiki/Snowman' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter05AppearanceMaterialTextures/frosty2.mid' name='Sound'/>
    <meta content='http://www.the-north-pole.com/carols/frosty.html' name='reference'/>
    <meta content='https://X3dGraphics.com' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dResources.html' name='reference'/>
    <meta content='PixelTexture, MIDI, X3D book, X3D graphics, X3D-Edit, http://www.x3dGraphics.com' name='subject'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter05AppearanceMaterialTextures/PixelTextureSnowman.x3d' name='identifier'/>
    <meta content='X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit' name='generator'/>
    <meta content='../license.html' name='license'/>
  </head>
  <Scene>
    <WorldInfo title='PixelTextureSnowman.x3d'/>
    <Background skyColor='1 1 1'/>
    <Viewpoint description='PixelTexture Snowman' orientation='1 0 0 -0.17985' position='0 2 11'/>
    <Sound location='0 1.6 0' maxBack='50' maxFront='50' minBack='5' minFront='5' priority='1'>
      <AudioClip description='Frosty the Snowman' loop='true' url='"frosty2.mid" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter05AppearanceMaterialTextures/frosty2.mid"'/>
    </Sound>
    <Transform translation='0 -2.5 2'>
      <Billboard>
        <Anchor DEF='WikipediaAnchorLink' description='Wikipedia Snowman entry' parameter='"target=_blank"' url='"https://en.wikipedia.org/wiki/Snowman"'>
          <Shape>
            <Text string='"Click here to learn more" "about snowmen"'>
              <FontStyle justify='"MIDDLE" "MIDDLE"' size='0.6'/>
            </Text>
            <Appearance>
              <Material DEF='Autumn11' ambientIntensity='0.25641' diffuseColor='1 0.160784 0.764706' shininess='1' specularColor='0.48655 0.319155 0.444036'/>
            </Appearance>
          </Shape>
          <!-- Add transparent geometry over the text to make clicking (i.e. Anchor selection) easier -->
          <Shape>
            <Box size='6 1.5 0.02'/>
            <Appearance>
              <Material transparency='1'/>
            </Appearance>
          </Shape>
        </Anchor>
      </Billboard>
    </Transform>
    <Transform DEF='SnowmanRoot'>
      <OrientationInterpolator DEF='TwistInterpolator' key='0 0.22 0.25 0.5 0.73 0.75 1' keyValue='0 1 0 0 0 1 0 5.75959 0 1 0 5.75959 0 1 0 0 0 1 0 0.5236 0 1 0 0.5236 0 1 0 0'/>
      <TimeSensor DEF='Clock' cycleInterval='6' loop='true'/>
      <ROUTE fromField='value_changed' fromNode='TwistInterpolator' toField='rotation' toNode='SnowmanRoot'/>
      <ROUTE fromField='fraction_changed' fromNode='Clock' toField='set_fraction' toNode='TwistInterpolator'/>
      <!-- Hat -->
      <Transform translation='0 3.6 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0.003922 0.003922 0.003922'/>
          </Appearance>
          <Cylinder height='1' radius='0.5'/>
        </Shape>
      </Transform>
      <Transform translation='0 3.2 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0.003922 0.003922 0.003922'/>
          </Appearance>
          <Cylinder height='0.2'/>
        </Shape>
      </Transform>
      <!-- Head -->
      <Transform translation='0 2.6 0'>
        <Shape>
          <Appearance>
            <PixelTexture DEF='PixelColors' image='2 4 3 0xff0000 0xffff00 0x007700 0xff0077 0x0000ff 0xff7700 0x00ff77 0x888888' repeatS='false' repeatT='false'/>
          </Appearance>
          <Sphere radius='.75'/>
        </Shape>
      </Transform>
      <!-- Eyes -->
      <Transform translation='0.3 2.7 .55'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 0 0'/>
          </Appearance>
          <Sphere radius='.18'/>
        </Shape>
      </Transform>
      <Transform translation='-0.3 2.7 .55'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 0 0'/>
          </Appearance>
          <Sphere radius='.18'/>
        </Shape>
      </Transform>
      <!-- Nose -->
      <Transform rotation='1 0 0 1.57' translation='0 2.5 0.55'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0.901961 0.403922 0' emissiveColor='1 0.145098 0.058824' specularColor='1 0.454902 0.360784'/>
          </Appearance>
          <Cone bottomRadius='0.3' height='1.75'/>
        </Shape>
      </Transform>
      <!-- Scarf -->
      <Transform translation='0 1.975 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Cylinder height='0.175' radius='0.8'/>
        </Shape>
      </Transform>
      <Transform translation='.7 1.1 .8'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='.725 1.2 .85'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='.7 1.3 .8'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='.7 1.4 .75'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='.7 1.5 .75'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='.7 1.6 .7'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='.7 1.7 .65'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='.6 1.8 .65'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='.55 1.9 .65'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='.55 2 .65'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <!-- Backside of scarf -->
      <Transform translation='-.7 1.1 -.8'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-.725 1.2 -.85'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-.7 1.3 -.8'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-.7 1.4 -.75'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-.7 1.5 -.75'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-.7 1.6 -.7'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-.7 1.7 -.65'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-.6 1.8 -.65'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-.55 1.9 -.65'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-.55 2 -.65'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <!-- Mouth -->
      <!-- Middle Mouthpiece -->
      <Transform translation='0 2.2 .55'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 0 0'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='0.1 2.2 .55'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 0 0'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='0.2 2.2 .55'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 0 0'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-0.1 2.2 .55'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 0 0'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='-0.2 2.2 .55'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 0 0'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <!-- Pipe -->
      <Transform rotation='0.96225 0.19245 -0.19245 1.57' translation='0.1 2.2 0.55'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0.219608 0.137255 0'/>
          </Appearance>
          <Cylinder radius='0.03'/>
        </Shape>
      </Transform>
      <Transform translation='.45 2.3 1.5'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0.219608 0.137255 0'/>
          </Appearance>
          <Cylinder height='.2' radius='.1'/>
        </Shape>
      </Transform>
      <!-- Body -->
      <Transform translation='0 1.15 0'>
        <Shape>
          <Appearance>
            <PixelTexture USE='PixelColors'/>
          </Appearance>
          <Sphere radius='1.1'/>
        </Shape>
      </Transform>
      <!-- Arms -->
      <Transform rotation='0 0 1 1.57' translation='0 1.5 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='.5 .25 .05'/>
          </Appearance>
          <Cylinder height='4.9' radius='0.1'/>
        </Shape>
      </Transform>
      <Transform rotation='0 0.92848 0.37139 1.57' translation='2 1.5 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='.5 .25 .05'/>
          </Appearance>
          <Cylinder height='.9' radius='0.05'/>
        </Shape>
      </Transform>
      <Transform rotation='0.84515 -0.50709 0.16903 1.57' translation='1.5 1.5 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='.5 .25 .05'/>
          </Appearance>
          <Cylinder height='.7' radius='0.03'/>
        </Shape>
      </Transform>
      <Transform rotation='0 0.64018 0.76822 1.57' translation='-1 1.5 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='.5 .25 .05'/>
          </Appearance>
          <Cylinder height='1' radius='0.05'/>
        </Shape>
      </Transform>
      <Transform rotation='0 0.70711 -0.70711 1' translation='-1.9 1.5 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='.5 .25 .05'/>
          </Appearance>
          <Cylinder height='.5' radius='0.04'/>
        </Shape>
      </Transform>
      <!-- Left Glove -->
      <Transform rotation='0 0 1 1.57' translation='2.45 1.5 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Box size='0.5 0.5 0.25'/>
        </Shape>
      </Transform>
      <Transform rotation='0.95285 0 0.30345 1.57' translation='2.75 1.5 0.05'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Cylinder height='.25' radius='0.25'/>
        </Shape>
      </Transform>
      <Transform rotation='0.96352 0 0.26764 1.57' translation='2.55 1.85 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Cylinder height='.15' radius='0.15'/>
        </Shape>
      </Transform>
      <!-- Right Glove -->
      <Transform rotation='0 0 1 1.57' translation='-2.45 1.5 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Box size='0.5 0.5 0.25'/>
        </Shape>
      </Transform>
      <Transform rotation='-0.95285 0 0.30345 1.57' translation='-2.75 1.5 0.05'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Cylinder height='.25' radius='0.25'/>
        </Shape>
      </Transform>
      <Transform rotation='-0.96352 0 0.26764 1.57' translation='-2.55 1.85 0'>
        <Shape>
          <Appearance>
            <Material diffuseColor='1 0.039216 0.243137'/>
          </Appearance>
          <Cylinder height='.15' radius='0.15'/>
        </Shape>
      </Transform>
      <!-- Buttons -->
      <Transform translation='0 1.7 .95'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 0 0'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='0 1.25 1.05'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 0 0'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <Transform translation='0 .8 1.05'>
        <Shape>
          <Appearance>
            <Material diffuseColor='0 0 0'/>
          </Appearance>
          <Sphere radius='.1'/>
        </Shape>
      </Transform>
      <!-- Lower Body -->
      <Transform translation='0 -1 0'>
        <Shape>
          <Appearance>
            <PixelTexture USE='PixelColors'/>
          </Appearance>
          <Sphere radius='1.75'/>
        </Shape>
      </Transform>
    </Transform>
  </Scene>
</X3D>