<?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='FishSchool.x3d' name='title'/>
    <meta content='Fish Schooling Demo' name='description'/>
    <meta content='Stewart Liles, Sean Hynes' name='creator'/>
    <meta content='25 September 1998' name='created'/>
    <meta content='14 December 2024' name='modified'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/KelpForestDesignPaperWeb3dSymposiumFebruary2002.pdf' name='reference'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/Teaching3d-KelpForestCaseStudy.pdf' name='reference'/>
    <meta content='All content has permissions for free use. Please provide credit to the Naval Postgraduate School (NPS) Modeling Virtual Environments and Simulation (MOVES) Institute.' name='accessRights'/>
    <meta content='https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/FishSchool.x3d' name='identifier'/>
    <meta content='Audacity, https://www.audacityteam.org' name='reference'/>
    <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='FishSchool.x3d'/>
    <NavigationInfo speed='5.0' type='"EXAMINE"' visibilityLimit='250.0'/>
    <Viewpoint description='Close to School - FS' position='0.0 1.0 75.0'/>
    <Viewpoint description='Nose on Glass - FS' fieldOfView='1.0' position='0.0 1.0 30.0'/>
    <Viewpoint description='Fish Feeding - FS' fieldOfView='1.0' orientation='1.0 0.0 0.0 -1.57' position='0.0 40.0 0.0'/>
    <Viewpoint description='Left Side - FS' fieldOfView='1.0' orientation='0.0 1.0 0.0 -1.57' position='-40.0 0.0 0.0'/>
    <Viewpoint description='Right Side - FS' fieldOfView='1.0' orientation='0.0 1.0 0.0 1.57' position='40.0 0.0 0.0'/>
    <Viewpoint description='Middle Looking Out - FS' jump='false' orientation='0.0 1.0 0.0 2.2' position='0.0 0.0 0.0'/>
    <SpotLight ambientIntensity='1.0' direction='0.0 -1.0 0.0' location='0.0 50.0 0.0'/>
    <Sound location='0 0.1 0' maxBack='50' maxFront='50' minBack='50' minFront='50'>
      <!-- updated original Sound2 as Sound3 using Audacity -->
      <AudioClip description='Sound for Fish' loop='true' url='"Sound3.wav" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/Sound3.wav" "Sound2.wav" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/Sound2.wav"'/>
    </Sound>
    <TimeSensor DEF='GlobalClock' loop='true'/>
    <Shape>
      <Appearance>
        <Material/>
      </Appearance>
      <IndexedLineSet coordIndex='0 1 2 3 0 -1 4 5 6 7 4 -1 0 4 -1 1 5 -1 2 6 -1 3 7'>
        <Coordinate point='-30.0 30.0 30.0 30.0 30.0 30.0 30.0 30.0 -30.0 -30.0 30.0 -30.0 -30.0 -30.0 30.0 30.0 -30.0 30.0 30.0 -30.0 -30.0 -30.0 -30.0 -30.0'/>
      </IndexedLineSet>
    </Shape>
    <Fog color='0.1 0.3 0.1' visibilityRange='70.0'/>
    <Transform DEF='Fish0' translation='-5.0 0.0 0.0'>
      <Viewpoint description='Fish 0 view' fieldOfView='1.8' position='0.0 1.0 -0.5'/>
      <Inline DEF='FishIN' url='"Fish.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/Fish.x3d" "Fish.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/Fish.wrl"'/>
    </Transform>
    <Transform DEF='Fish1' translation='-4.0 0.0 0.0'>
      <Viewpoint description='Fish 1 view' fieldOfView='1.8' position='0.0 1.0 -0.5'/>
      <Inline USE='FishIN'/>
    </Transform>
    <Transform DEF='Fish2' translation='-3.0 0.0 0.0'>
      <Viewpoint description='Fish 2 view' fieldOfView='1.8' position='0.0 1.0 -0.5'/>
      <Inline USE='FishIN'/>
    </Transform>
    <Transform DEF='Fish3' translation='-2.0 0.0 0.0'>
      <Viewpoint description='Fish 3 view' fieldOfView='1.8' position='0.0 1.0 -0.5'/>
      <Inline USE='FishIN'/>
    </Transform>
    <Transform DEF='Fish4' translation='-1.0 0.0 0.0'>
      <Viewpoint description='Fish 4 view' fieldOfView='1.8' position='0.0 1.0 -0.5'/>
      <Inline USE='FishIN'/>
    </Transform>
    <Transform DEF='Fish5'>
      <Viewpoint description='Fish 5 view' fieldOfView='1.8' position='0.0 1.0 -0.5'/>
      <Inline USE='FishIN'/>
    </Transform>
    <Transform DEF='Fish6' translation='1.0 0.0 0.0'>
      <Viewpoint description='Fish 6 view' fieldOfView='1.8' position='0.0 1.0 -0.5'/>
      <Inline USE='FishIN'/>
    </Transform>
    <Transform DEF='Fish7' translation='2.0 0.0 0.0'>
      <Viewpoint description='Fish 7 view' fieldOfView='1.8' position='0.0 1.0 -0.5'/>
      <Inline USE='FishIN'/>
    </Transform>
    <Transform DEF='Fish8' translation='3.0 0.0 0.0'>
      <Viewpoint description='Fish 8 view' fieldOfView='1.8' position='0.0 1.0 -0.5'/>
      <Inline USE='FishIN'/>
    </Transform>
    <Transform DEF='Fish9' translation='4.0 0.0 0.0'>
      <Viewpoint description='Fish 9 view' fieldOfView='1.8' position='0.0 1.0 -0.5'/>
      <Inline USE='FishIN'/>
    </Transform>
    <!-- Warning: VRML97-style scripting, not X3D Scene Authoring Interface (SAI) -->
    <Script DEF='BoidScript' directOutput='true' mustEvaluate='true' url='"FishSchoolCode/Demo.class" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/KelpForestExhibit/FishSchoolCode/Demo.class"'>
      <field accessType='inputOnly' name='GlobalTick' type='SFFloat'/>
      <field accessType='initializeOnly' name='B9' type='SFNode'>
        <Transform USE='Fish9'/>
      </field>
      <field accessType='initializeOnly' name='B8' type='SFNode'>
        <Transform USE='Fish8'/>
      </field>
      <field accessType='initializeOnly' name='B7' type='SFNode'>
        <Transform USE='Fish7'/>
      </field>
      <field accessType='initializeOnly' name='B6' type='SFNode'>
        <Transform USE='Fish6'/>
      </field>
      <field accessType='initializeOnly' name='B5' type='SFNode'>
        <Transform USE='Fish5'/>
      </field>
      <field accessType='initializeOnly' name='B4' type='SFNode'>
        <Transform USE='Fish4'/>
      </field>
      <field accessType='initializeOnly' name='B3' type='SFNode'>
        <Transform USE='Fish3'/>
      </field>
      <field accessType='initializeOnly' name='B2' type='SFNode'>
        <Transform USE='Fish2'/>
      </field>
      <field accessType='initializeOnly' name='B1' type='SFNode'>
        <Transform USE='Fish1'/>
      </field>
      <field accessType='initializeOnly' name='B0' type='SFNode'>
        <Transform USE='Fish0'/>
      </field>
    </Script>
    <ROUTE fromField='fraction_changed' fromNode='GlobalClock' toField='GlobalTick' toNode='BoidScript'/>
  </Scene>
</X3D>