X3D Model Documentation: SeaDiver.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2 
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
  3  <X3D profile='Immersive' version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'>
  4       <head>
  5            <meta name='titlecontent=' SeaDiver.x3d '/>
  6            <meta name='descriptioncontent="Systeme d'Exploration Autonome D'Intervention VERsatile (SeaDiver) is an unmanned underwater vehicle (UUV) based on an underwater-glider concept. Dimensions: 2.8m long x 1.7m wide x 0.6m high. Hint: click on plane surfaces for simple animation."/>
  7            <meta name='creatorcontent='Don Brutzman et Didier Leandri'/>
  8            <meta name='createdcontent='17 Avril 2002'/>
  9            <meta name='modifiedcontent='20 October 2019'/>
 10            <meta name='referencecontent='http://www.univ-tln.fr'/>
 11            <meta name='referencecontent=' SeaDiverConceptPresentation.ppt '/>
 12            <meta name='Imagecontent='SeaDiverIsometricForwardStarboardQuarterView.jpg'/>
 13            <meta name='Imagecontent='SeaDiverSideViewPeauQueue.jpg'/>
 14            <meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Savage/Robots/UnmannedUnderwaterVehicles/SeaDiver.x3d '/>
 15            <meta name='generatorcontent='X3D-Edit 3.2, https://www.web3d.org/x3d/tools/X3D-Edit'/>
 16            <meta name='licensecontent='../../license.html'/>
 17       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top DEF nodes index: HullAppearance, LeftDivePlane, OffsetRudderLeft, OffsetRudderRight, PlaneWiggler, RightDivePlane, RotateDivePlanes, RotateRudderLeft, RotateRudderRight, Rudder, RudderGroup, RudderWaggler, StarboardView, SurfaceLight, TouchDivePlanes, TouchRudders, WaggleClock, WiggleClock

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4, Viewpoint_5, Viewpoint_6, Viewpoint_7, StarboardView
-->
 18       <Scene>
 19            <Background skyColor='0.05 0.1 0.3'/>
 20            <PointLight DEF='SurfaceLightcolor='0.6 0.6 0.6intensity='0.5location='0 3 0radius='8'/>
 21            <Viewpoint DEF='StarboardViewdescription='SeaDiver starboard side 5mposition='0 0 5'/>
 22            <Transform rotation='0 1 0 -1.57translation='-5 1 0'>
 23                 <Viewpoint description='SeaDiver over-the-shoulder 5morientation='1 0 0 -0.25position='0 0 0'/>
 24            </Transform>
 25            <LOD range='1000'>
 26                 <Group>
 27                      <Viewpoint description='SeaDiver from above 100morientation='-0.58 -0.58 -0.58 2.09position='0 100 0'/>
 28                      <Viewpoint description='SeaDiver starboard side 25mposition='0 0 25'/>
 29                      <Viewpoint description='SeaDiver astern 25morientation='0 1 0 -1.57position='-25 0 0'/>
 30                      <Viewpoint description='SeaDiver astern 5morientation='0 1 0 -1.57position='-5 0 0'/>
 31                      <Viewpoint description='SeaDiver port side 25morientation='0 1 0 3.14position='0 0 -25'/>
 32                      <Viewpoint description='SeaDiver port side 5morientation='0 1 0 3.14position='0 0 -5'/>
 33                 </Group>
 34                 <WorldInfo info='"null node outside of LOD range"'/>
 35            </LOD>
 36            <!-- This file builds the SeaDiver Unmanned Underwater Vehicle (UUV). -->
 37            <Transform>
 38                 <!-- Body -->
 39                 <Shape>
 40                      <Extrusion creaseAngle='3.14crossSection='0.3 0 0.3 -0.7 0.2 -0.8 0 -.85 -0.2 -0.8 -0.3 -0.7 -0.3 0 -0.3 0.7 -0.2 0.8 0 .85 0.2 0.8 0.3 0.7 0.3 0scale='0.3 0.3 0.6 0.6 0.77 0.77 0.95 0.95 1 1 0.9 0.95 0.7 0.9 0.4 0.86 0.1 0.8spine='1.3 0 0 1.25 0 0 1.15 0 0 1.0 0 0 0.7 0 0 0.0 0 0 -0.7 0 0 -1.1 0 0 -1.5 0 0'/>
 41 
                    <!-- Appearance HullAppearance is a DEF node that has 4 USE nodes: USE_1, USE_2, USE_3, USE_4 -->
                    <Appearance DEF='HullAppearance'>
 42                           <Material ambientIntensity='0.6diffuseColor='0.94 0.94 1shininess='0.9specularColor='0.7 1 0.8'/>
 43                      </Appearance>
 44                 </Shape>
 45                 <!-- Astern diving planes -->
 46                 <Transform translation='-1.5 0 0'>
 47 
                    <!-- ROUTE information for RotateDivePlanes node:  [from PlaneWiggler.value_changed to set_rotation ] -->
                    <Transform DEF='RotateDivePlanescenter='0.25 0 0'>
 48 
                         <!-- ROUTE information for TouchDivePlanes node:  [from touchTime to WiggleClock.set_startTime ] -->
                         <TouchSensor DEF='TouchDivePlanesdescription='waggle dive planes'/>
 49                           <Transform translation='0 0 0.7'>
 50                                <Shape DEF='RightDivePlane'>
 51                                     <IndexedFaceSet creaseAngle='3.14solid='falsecoordIndex='0 3 2 1 0 -1 4 7 6 5 4 -1 1 2 6 5 -1 2 3 7 6 2 -1 3 0 4 7 3 -1 0 1 5 4 0 -1'>
 52                                          <Coordinate point='0 0.02 0 0.57 0.02 0.06 0.25 0.02 0.25 0 0.02 0.28 0 -0.02 0 0.57 -0.02 0.06 0.25 -0.02 0.25 0 -0.02 0.28'/>
 53                                     </IndexedFaceSet>
 54                                     <Appearance USE='HullAppearance'/>
 55                                </Shape>
 56                           </Transform>
 57                           <Transform translation='0 0 -0.7'>
 58                                <Shape DEF='LeftDivePlane'>
 59                                     <IndexedFaceSet creaseAngle='3.14solid='falsecoordIndex='0 3 2 1 0 -1 4 7 6 5 4 -1 1 2 6 5 -1 2 3 7 6 2 -1 3 0 4 7 3 -1 0 1 5 4 0 -1'>
 60                                          <Coordinate point='0 0.02 0 0.57 0.02 -0.06 0.25 0.02 -0.25 0 0.02 -0.28 0 -0.02 0 0.57 -0.02 -0.06 0.25 -0.02 -0.25 0 -0.02 -0.28'/>
 61                                     </IndexedFaceSet>
 62                                     <Appearance USE='HullAppearance'/>
 63                                </Shape>
 64                           </Transform>
 65                      </Transform>
 66                      <Group DEF='RudderGroup'>
 67 
                         <!-- ROUTE information for TouchRudders node:  [from touchTime to WaggleClock.set_startTime ] -->
                         <TouchSensor DEF='TouchRuddersdescription='wiggle rudders'/>
 68                           <Transform DEF='OffsetRudderLefttranslation='0 0.05 -0.3'>
 69 
                              <!-- ROUTE information for RotateRudderLeft node:  [from RudderWaggler.value_changed to set_rotation ] -->
                              <Transform DEF='RotateRudderLeftcenter='0.25 0 0'>
 70 
                                   <!-- Shape Rudder is a DEF node that has 1 USE node: USE_1 -->
                                   <Shape DEF='Rudder'>
 71                                          <IndexedFaceSet creaseAngle='3.14solid='falsecoordIndex='0 3 2 1 0 -1 4 7 6 5 4 -1 1 2 6 5 -1 2 3 7 6 2 -1 3 0 4 7 3 -1 0 1 5 4 0 -1'>
 72                                               <Coordinate point='0 0 0.02 0.0 0.25 0.02 0.25 0.25 0.02 0.5 0.125 0.02 0 0 -0.02 0.0 0.25 -0.02 0.25 0.25 -0.02 0.5 0.125 -0.02'/>
 73                                          </IndexedFaceSet>
 74                                          <Appearance USE='HullAppearance'/>
 75                                     </Shape>
 76                                </Transform>
 77                           </Transform>
 78                           <Transform DEF='OffsetRudderRighttranslation='0 0.05 0.3'>
 79 
                              <!-- ROUTE information for RotateRudderRight node:  [from RudderWaggler.value_changed to set_rotation ] -->
                              <Transform DEF='RotateRudderRightcenter='0.25 0 0'>
 80                                     <Shape USE='Rudder'/>
 81                                </Transform>
 82                           </Transform>
 83                      </Group>
 84                 </Transform>
 85                 <!-- Astern diving-planes shaft -->
 86                 <Transform rotation='1 0 0 1.57translation='-1.25 0 0'>
 87                      <Shape>
 88                           <Cylinder bottom='falseheight='1.5radius='0.01top='false'/>
 89                           <Appearance USE='HullAppearance'/>
 90                      </Shape>
 91                 </Transform>
 92            </Transform>
 93            <!-- Example animation for dive planes -->
 94 
          <!-- ROUTE information for WiggleClock node:  [from TouchDivePlanes.touchTime to set_startTime ] [from fraction_changed to PlaneWiggler.set_fraction ] -->
          <TimeSensor DEF='WiggleClockcycleInterval='4'/>
 95            < ROUTE  fromNode='TouchDivePlanes' fromField='touchTime' toNode='WiggleClock' toField='set_startTime'/>
 96 
          <!-- ROUTE information for PlaneWiggler node:  [from WiggleClock.fraction_changed to set_fraction ] [from value_changed to RotateDivePlanes.set_rotation ] -->
          <OrientationInterpolator DEF='PlaneWigglerkey='0 0.25 0.75 1keyValue='0 0 1 0 0 0 1 0.15 0 0 1 -0.15 0 0 1 0'/>
 97            < ROUTE  fromNode='WiggleClock' fromField='fraction_changed' toNode='PlaneWiggler' toField='set_fraction'/>
 98            < ROUTE  fromNode='PlaneWiggler' fromField='value_changed' toNode='RotateDivePlanes' toField='set_rotation'/>
 99            <!-- Example animation for rudders -->
100 
          <!-- ROUTE information for WaggleClock node:  [from TouchRudders.touchTime to set_startTime ] [from fraction_changed to RudderWaggler.set_fraction ] -->
          <TimeSensor DEF='WaggleClockcycleInterval='4'/>
101            < ROUTE  fromNode='TouchRudders' fromField='touchTime' toNode='WaggleClock' toField='set_startTime'/>
102 
          <!-- ROUTE information for RudderWaggler node:  [from WaggleClock.fraction_changed to set_fraction ] [from value_changed to RotateRudderLeft.set_rotation ] [from value_changed to RotateRudderRight.set_rotation ] -->
          <OrientationInterpolator DEF='RudderWagglerkey='0 0.25 0.75 1keyValue='0 1 0 0 0 1 0 0.15 0 1 0 -0.15 0 1 0 0'/>
103            < ROUTE  fromNode='WaggleClock' fromField='fraction_changed' toNode='RudderWaggler' toField='set_fraction'/>
104            < ROUTE  fromNode='RudderWaggler' fromField='value_changed' toNode='RotateRudderLeft' toField='set_rotation'/>
105            < ROUTE  fromNode='RudderWaggler' fromField='value_changed' toNode='RotateRudderRight' toField='set_rotation'/>
106       </Scene>
107  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top DEF nodes index: HullAppearance, LeftDivePlane, OffsetRudderLeft, OffsetRudderRight, PlaneWiggler, RightDivePlane, RotateDivePlanes, RotateRudderLeft, RotateRudderRight, Rudder, RudderGroup, RudderWaggler, StarboardView, SurfaceLight, TouchDivePlanes, TouchRudders, WaggleClock, WiggleClock

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, Viewpoint_3, Viewpoint_4, Viewpoint_5, Viewpoint_6, Viewpoint_7, StarboardView
-->
X3D Tooltips element index: Appearance, Background, Coordinate, Cylinder, Extrusion, Group, head, IndexedFaceSet, LOD, Material, meta, OrientationInterpolator, PointLight, ROUTE, Scene, Shape, TimeSensor, TouchSensor, Transform, Viewpoint, WorldInfo, X3D, plus documentation for accessType definitions, type definitions, XML data types, and field types

Event Graph ROUTE Table entries with 7 ROUTE connections total, showing X3D event-model relationships for this scene.

Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.

TouchDivePlanes
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
WiggleClock
TimeSensor
set_startTime
SFTime
then
 
 
 
WiggleClock
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
PlaneWiggler
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
PlaneWiggler
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
RotateDivePlanes
Transform
set_rotation
SFRotation

TouchRudders
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
WaggleClock
TimeSensor
set_startTime
SFTime
then
 
 
 
WaggleClock
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
RudderWaggler
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
RudderWaggler
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
RotateRudderLeft
Transform
set_rotation
SFRotation
  then
 
 
 
RudderWaggler
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(3)
RotateRudderRight
Transform
set_rotation
SFRotation


Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with X3D! 😀

-->
<!-- Online at
https://www.web3d.org/x3d/content/examples/Savage/Robots/UnmannedUnderwaterVehicles/SeaDiverIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Savage/Robots/UnmannedUnderwaterVehicles/SeaDiver.x3d -->

<!-- Color-coding legend: X3D terminology <X3dNode  DEF='idNamefield='value'/> matches XML terminology <XmlElement  DEF='idNameattribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
-->

to top <!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->