<?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 version='3.0profile='Immersivexmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation=' http://www.web3d.org/specifications/x3d-3.0.xsd '>
<head>
<meta name='titlecontent='HalfMoonProtoype.x3d'/>
<meta name='descriptioncontent='Prototype for a group of Halfmoon fish in the Kelp forest.'/>
<meta name='creatorcontent='Ildeniz Duman'/>
<meta name='translatorcontent='Scott Tufts'/>
<meta name='createdcontent='1 June 1998'/>
<meta name='modifiedcontent='4 May 2004'/>
<meta name='warningcontent='Additional PositionInterpolator present but disabled.'/>
<meta name='warningcontent='Wiggle causes texture flashing.'/>
<meta name='identifiercontent=' http://www.web3d.org/x3d/content/examples/Basic/KelpForestExhibit/HalfMoonProtoype.x3d '/>
<meta name='generatorcontent='X3D-Edit, http://www.web3d.org/x3d/content/README.X3D-Edit.html'/>
<meta name='licensecontent='../../license.html'/>
</head>
<!--

Index for ProtoDeclare definition: HalfMoon
Index for DEF nodes: AnimationGroup, Eye, Fin_Skin, Fish_Shape, FishColor, FishTexture, HalfmoonPath, Left_Pectoral, Left_Pectoral_Rotation, MyHalfmoon, Orbit, OrbitClock, Right_Pectoral, Right_Pectoral_Rotation, Timer, Waggler
-->
<Scene>
<ProtoDeclare name='HalfMoon'>
<ProtoInterface>
<field name='skinTextureUrltype='MFStringvalue=' "halfmoonScalesPatch.jpg" ' accessType='inputOutput'/>
<field name='fishScaletype='SFVec3fvalue='0.3 0.25 0.25accessType='inputOutput'/>
<field name='fishColortype='SFColorvalue='0.7 0.7 0.7accessType='inputOutput'/>
</ProtoInterface>
<ProtoBody>
<!-- MyHalfmoon ROUTEs:  [from Orbit.value_changed to set_rotation ] [from HalfmoonPath.value_changed to set_translation ] -->
<Transform DEF='MyHalfmoon'>
<IS>
<connect nodeField='scaleprotoField='fishScale'/>
</IS>
<Shape>
<Appearance>
<Material DEF='FishColor'>
<IS>
<connect nodeField='diffuseColorprotoField='fishColor'/>
</IS>
</Material>
<ImageTexture DEF='FishTexture'>
<IS>
<connect nodeField='urlprotoField='skinTextureUrl'/>
</IS>
</ImageTexture>
</Appearance>
<!-- Fish_Shape ROUTE:  [from Waggler.value_changed to set_spine ] -->
<Extrusion DEF='Fish_ShapecreaseAngle='1.57crossSection='-0.1 1.0,0.1 1,0.5 0.5, 0.5 -0.5, 0.1 -1,-0.1 -1, -0.5 -0.5, -0.5 0.5, -0.1 1scale='0.03 0.03 0.3 0.3, 0.2 0.4, 0.1 0.5, 0.1 0.15, 0.03 0.4,spine='0 1.5 0, 0 1.2 0, 0 0.5 0, 0 0.3 0, 0 0 0, 0 -0.3 0'/>
</Shape>
<Shape>
<Appearance DEF='Fin_Skin'>
<Material diffuseColor='0.5 0.5 0.5transparency='0.2'/>
</Appearance>
</Shape>
<Transform translation='1.37 0.1 0.1'>
<Shape DEF='Eye'>
<Appearance>
<Material diffuseColor='0.5 0.5 0.5shininess='1specularColor='0.3 0.3 0.3'/>
</Appearance>
<Sphere radius='0.04'/>
</Shape>
</Transform>
<Transform translation='1.37 0.1 -0.1'>
<Shape USE='Eye'/>
</Transform>
<Transform scale='2.6 1 0.7translation='1.46 0 0'>
<!-- Mouth -->
<Shape USE='Eye'/>
</Transform>
<!-- Left_Pectoral ROUTE:  [from Left_Pectoral_Rotation.value_changed to set_rotation ] -->
<Transform DEF='Left_Pectoraltranslation='1.1 -0.15 -0.1'>
<Shape>
<Appearance USE='Fin_Skin'/>
<IndexedFaceSet solid='falsecoordIndex='0, 1, 2, -1'>
<Coordinate point='0 0 0, 0.2 0 0, -0.2 0 -0.2 '/>
</IndexedFaceSet>
</Shape>
</Transform>
<!-- Right_Pectoral ROUTE:  [from Right_Pectoral_Rotation.value_changed to set_rotation ] -->
<Transform DEF='Right_Pectoraltranslation='1.1 -0.15 0.1'>
<Shape>
<Appearance USE='Fin_Skin'/>
<IndexedFaceSet solid='falsecoordIndex='0, 1, 2, -1'>
<Coordinate point='0 0 0, 0.2 0 0, -0.2 0 0.2'/>
</IndexedFaceSet>
</Shape>
</Transform>
<Group DEF='AnimationGroup'>
<!-- Timer ROUTEs:  [from fraction_changed to Waggler.set_fraction ] [from fraction_changed to Left_Pectoral_Rotation.set_fraction ] [from fraction_changed to Right_Pectoral_Rotation.set_fraction ] -->
<TimeSensor DEF='TimercycleInterval='5loop='true'/>
<!-- Waggler ROUTEs:  [from Timer.fraction_changed to set_fraction ] [from value_changed to Fish_Shape.set_spine ] -->
<CoordinateInterpolator DEF='Wagglerkey='0.0, 0.15,0.28,0.4,0.55,0.7,0.85,1keyValue=' 1.5 0 0, 1.2 0 0, 0.5 0 0, 0.3 0 0, 0 0 0, -0.3 0 0, 1.5 0 0, 1.20 0 0, 0.5 0 .1, 0.3 0 .2, 0 0 0.25, -0.3 0 0.3, 1.5 0 0, 1.20 0 0, 0.5 0 0, 0.3 0 0, 0 0 0, -0.3 0 0, 1.5 0 0, 1.2 0 0, 0.5 0 -0.1, 0.3 0 -0.2, 0 0 -0.25, -0.3 0 -0.3, 1.5 0 0, 1.2 0 0, 0.5 0 0, 0.3 0 0, 0 0 0, -0.3 0 0, 1.5 0 0, 1.2 0 0, 0.5 0 0.1, 0.3 0 0.2, 0 0 0.25, -0.3 0 0.3, 1.5 0 0, 1.2 0 0, 0.5 0 0, 0.3 0 0, 0 0 0, -0.3 0 0, 1.5 0 0, 1.2 0 0, 0.5 0 -0.1, 0.3 0 -0.2, 0 0 -0.25, -0.3 0 -0.3, '/>
<!-- Left_Pectoral_Rotation ROUTEs:  [from Timer.fraction_changed to set_fraction ] [from value_changed to Left_Pectoral.set_rotation ] -->
<OrientationInterpolator DEF='Left_Pectoral_Rotationkey=' 0 0.3 0.7 1keyValue='1 0 0 -0.52 1 0 0 0 1 0 0 0 1 0 0 -0.52'/>
<!-- Right_Pectoral_Rotation ROUTEs:  [from Timer.fraction_changed to set_fraction ] [from value_changed to Right_Pectoral.set_rotation ] -->
<OrientationInterpolator DEF='Right_Pectoral_Rotationkey='0 0.3 0.7 1keyValue='1 0 0 -0.52 1 0 0 0 1 0 0 0 1 0 0 -0.52'/>
<!-- orbiting time -->
<!-- OrbitClock ROUTEs:  [from fraction_changed to Orbit.set_fraction ] [from fraction_changed to HalfmoonPath.set_fraction ] -->
<TimeSensor DEF='OrbitClockcycleInterval='90enabled='falseloop='true'/>
<!-- Orbit ROUTEs:  [from OrbitClock.fraction_changed to set_fraction ] [from value_changed to MyHalfmoon.set_rotation ] -->
<OrientationInterpolator DEF='Orbitkey='0.0, 0.25, 0.5, 0.750, 1keyValue='0 1 0 6.28 0 1 0 1.57 0 1 0 3.14 0 1 0 4.71 0 1 0 6.28'/>
<!-- HalfmoonPath ROUTEs:  [from OrbitClock.fraction_changed to set_fraction ] [from value_changed to MyHalfmoon.set_translation ] -->
<PositionInterpolator DEF='HalfmoonPathkey='0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.750, 0.875,1keyValue='15 2 0, 15 0 -10, 0 -1 -10, -15 0 -10, -15 2 0, -15 0 10, 0 -2 10, 15 0 10, 15 2 0'/>
<ROUTE fromNode='TimerfromField='fraction_changedtoNode='WagglertoField='set_fraction'/>
<ROUTE fromNode='WagglerfromField='value_changedtoNode='Fish_ShapetoField='set_spine'/>
<ROUTE fromNode='TimerfromField='fraction_changedtoNode='Left_Pectoral_RotationtoField='set_fraction'/>
<ROUTE fromNode='Left_Pectoral_RotationfromField='value_changedtoNode='Left_PectoraltoField='set_rotation'/>
<ROUTE fromNode='TimerfromField='fraction_changedtoNode='Right_Pectoral_RotationtoField='set_fraction'/>
<ROUTE fromNode='Right_Pectoral_RotationfromField='value_changedtoNode='Right_PectoraltoField='set_rotation'/>
<ROUTE fromNode='OrbitClockfromField='fraction_changedtoNode='OrbittoField='set_fraction'/>
<ROUTE fromNode='OrbitClockfromField='fraction_changedtoNode='HalfmoonPathtoField='set_fraction'/>
<ROUTE fromNode='OrbitfromField='value_changedtoNode='MyHalfmoontoField='set_rotation'/>
<ROUTE fromNode='HalfmoonPathfromField='value_changedtoNode='MyHalfmoontoField='set_translation'/>
</Group>
</Transform>
</ProtoBody>
</ProtoDeclare>
<!-- ==================== -->
<!-- Scene graph nodes are added here -->
<ProtoInstance name='HalfMooncontainerField='children'/>
</Scene>
</X3D>
<!--

Index for ProtoDeclare definition: HalfMoon
Index for DEF nodes: AnimationGroup, Eye, Fin_Skin, Fish_Shape, FishColor, FishTexture, HalfmoonPath, Left_Pectoral, Left_Pectoral_Rotation, MyHalfmoon, Orbit, OrbitClock, Right_Pectoral, Right_Pectoral_Rotation, Timer, Waggler
-->

<!-- Tag color codes: <Node DEF='NodeName' attribute='value'/> <Prototype name='ProtoName'> <field name='fieldName'/> </Prototype> -->