<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D profile='Interchange' version='3.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.0.xsd'>
  <head>
    <meta content='Figure18.27RotatingFanAnimatedTextureTransform.x3d' name='title'/>
    <meta content='Figure 18.27, The VRML 2.0 Sourcebook, Copyright [1997] By Andrea L. Ames, David R. Nadeau, and John L. Moreland' name='creator'/>
    <meta content='http://www.wiley.com/legacy/compbooks/vrml2sbk/ch18/18fig27.htm' name='reference'/>
    <meta content='Don Brutzman' name='translator'/>
    <meta content='4 September 2000' name='created'/>
    <meta content='11 January 2014' name='modified'/>
    <meta content='A rotating fan, made realistic by animating a TextureTransform.' name='description'/>
    <meta content='http://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter18-TextureMapping/Figure18.27RotatingFanAnimatedTextureTransform.x3d' name='identifier'/>
    <meta content='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit' name='generator'/>
    <meta content='../../license.html' name='license'/>
  </head>
  <Scene>
    <Viewpoint description='That feels good' position='0 0 4'/>
    <Group>
      <Shape>
        <Appearance>
          <ImageTexture repeatS='false' repeatT='false' url='"fan.png" "http://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter18-TextureMapping/fan.png"'/>
          <!-- Negative coordinates applied to TextureTransform center since opposite effect occurs when texture is mapped to geometry. These values center the fan blade. Thanks to Emanuele Ruffaldi for providing the correct values. -->
          <TextureTransform DEF='FanRotation' center='-0.5 -0.5'/>
        </Appearance>
        <IndexedFaceSet DEF='Square' coordIndex='0 1 2 3' solid='false' texCoordIndex='0 1 2 3'>
          <Coordinate point='-1 -1 -0.1 1 -1 -0.1 1 1 -0.1 -1 1 -0.1'/>
          <TextureCoordinate point='0 0 1 0 1 1 0 1'/>
        </IndexedFaceSet>
      </Shape>
      <Transform translation='0 0 0.1'>
        <Shape>
          <Appearance>
            <ImageTexture url='"grill.png" "http://www.web3d.org/x3d/content/examples/Vrml2Sourcebook/Chapter18-TextureMapping/grill.png"'/>
            <TextureTransform center='0.5 0.5' rotation='0.785' scale='8 8'/>
          </Appearance>
          <IndexedFaceSet USE='Square'/>
        </Shape>
      </Transform>
      <TimeSensor DEF='Clock' cycleInterval='4' loop='true'/>
      <ScalarInterpolator DEF='FanPath' key='0 0.5 1' keyValue='0 3.14 6.28'/>
    </Group>
    <ROUTE fromField='fraction_changed' fromNode='Clock' toField='set_fraction' toNode='FanPath'/>
    <ROUTE fromField='value_changed' fromNode='FanPath' toField='set_rotation' toNode='FanRotation'/>
  </Scene>
</X3D>