X3D Model Documentation: CameraExamples.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2  <!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "https://www.web3d.org/specifications/x3d-3.3.dtd">
  3  <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'>
  4       <head>
  5            <meta name='titlecontent=' CameraExamples.x3d '/>
  6            <meta name='descriptioncontent='Camera, CameraShot and CameraMove examples that demonstrate storyboard capabilities and precise camera operation. This is a developmental effort for potential X3D Specification improvement.'/>
  7            <meta name='documentationcontent='Two demos are found in the scene, click the "red text" on left or right to start. (a) SimpleShotsTest shows Zoom in/out, Pan left/right, Boom up/down, Tilt left/right, with each is defined by a CameraShot collecting a series of CameraMovements. (b) AimPointTest gradually slews the camera view to look at the sliding cube, then follows it around before returning to original viewpoint.'/>
  8            <meta name='creatorcontent='Don Brutzman and Jeff Weekley'/>
  9            <meta name='createdcontent='18 June 2009'/>
 10            <meta name='modifiedcontent='18 July 2025'/>
 11            <meta name=' TODO content=' Schematron rules, backed up by initialize() checks '/>
 12            <meta name='referencecontent=' BeyondViewpointCameraNodesWeb3D2009.pdf '/>
 13            <meta name='MovingImagecontent=' CameraExamplesDemo.mp4 '/>
 14            <meta name='referencecontent=' https://www.web3d.org/x3d/specifications/ISO-IEC-FDIS-19775-1.2-X3D-AbstractSpecification/Part01/components/navigation.html '/>
 15            <meta name='subjectcontent='Camera nodes for Viewpoint navigation control'/>
 16            <meta name='referencecontent=' CameraPrototypes.x3d '/>
 17            <meta name='referencecontent=' CameraExamplesConsoleLog.txt '/>
 18            <meta name='referencecontent='http://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/development/CameraExamples.avi'/>
 19            <meta name='referencecontent=' https://www.web3d.org/x3d/content/examples/Basic/UniversalMediaMaterials/gridBack.x3d '/>
 20            <meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Basic/development/CameraExamples.x3d '/>
 21            <meta name='referencecontent=' http://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/development/CameraExamples.x3d '/>
 22            <meta name='generatorcontent='X3D-Edit 4.0, https://www.web3d.org/x3d/tools/X3D-Edit'/>
 23            <meta name='licensecontent='../license.html'/>
 24       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top DEF nodes index: AnimationGroup_AimPointTest, AnimationGroup_SimpleShots, ArtDeco5, BoomDown, BoomPause, BoxPath, BoxTimer, Camera_AimPointTest, Camera_SimpleShotsTest, CameraBoom, CameraBoomUp, CameraOffsetTransform, CameraShape, CameraShapeTouched, CameraShapeTransform, CameraTilt, CameraTimer_AimPointTest, CameraTimer_SimpleShots, CoordinateAxes, CrossHairInstance, Dolly, DollyMove1, FrustumViewpoint, MoveAimPoint3a, MoveAimPoint3b, MoveAimPoint3c, MoveAimPoint3d, MovingBoxTransform, Pan, PanLeft, PanRight, Shot5, SightLine, SimpleShotsTargets, TargetBoxBoom, TargetBoxDolly, TargetBoxPan, TargetBoxTilt, TargetBoxZoom, TestNavigationInfo, TextTouch_AimPointTest, TextTouch_SimpleShots, TextTouchActive_AimPointFilter, TextTouchActive_SimpleShotsFilter, TiltDown, TiltPause, TiltReset, TiltUp, TransparentBox, Trigger_AimPointTest, Trigger_SimpleShots, ViewFrustumNode, ViewFrustumToggle, Zoom

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, FrustumViewpoint

Index for ExternProtoDeclare definitions: Camera, CameraMovement, CameraShot, CrossHair, OfflineRender, ViewFrustum
-->
 25       <Scene>
 26            <!-- =============== Camera ============== -->
 27            <WorldInfo title='CameraExamples.x3d'/>
 28            <ExternProtoDeclare name='Cameraappinfo='Camera node provides direct control of scene view to enable cinematic camera animation shot by shot and move by move along with still digital-photography settings for offline rendering of camera images'   url=' "CameraPrototypes.x3d#Camera" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraPrototypes.x3d#Camera" "CameraPrototypes.wrl#Camera" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraPrototypes.wrl#Camera" '>
 29                 <field name='descriptiontype='SFStringaccessType='inputOutput'
                appinfo='Text description to be displayed for this Camera'/>
 30                 <field name='positiontype='SFVec3faccessType='inputOutput'
                appinfo='Camera position in local transformation frame, which is default prior to first CameraShot initialPosition getting activated'/>
 31                 <field name='orientationtype='SFRotationaccessType='inputOutput'
                appinfo='Camera rotation in local transformation frame, which is default prior to first CameraShot initialPosition getting activated'/>
 32                 <field name='fieldOfViewtype='SFFloataccessType='inputOutput'
                appinfo='pi/4'/>
 33                 <field name='set_fractiontype='SFFloataccessType='inputOnly'
                appinfo='input fraction drives interpolators'/>
 34                 <field name='set_bindtype='SFBoolaccessType='inputOnly'
                appinfo='input event binds or unbinds this Camera'/>
 35                 <field name='bindTimetype='SFTimeaccessType='outputOnly'
                appinfo='output event indicates when this Camera is bound'/>
 36                 <field name='isBoundtype='SFBoolaccessType='outputOnly'
                appinfo='output event indicates whether this Camera is bound or unbound'/>
 37                 <field name='nearClipPlanetype='SFFloataccessType='inputOutput'
                appinfo='Vector distance to near clipping plane corresponds to NavigationInfo.avatarSize[0]'/>
 38                 <field name='farClipPlanetype='SFFloataccessType='inputOutput'
                appinfo='Vector distance to far clipping plane corresponds to NavigationInfo.visibilityLimit'/>
 39                 <field name='shotstype='MFNodeaccessType='inputOutput'
                appinfo='Array of CameraShot nodes which in turn contain CameraMovement nodes'/>
 40                 <field name='headlighttype='SFBoolaccessType='inputOutput'
                appinfo='Whether camera headlight is on or off'/>
 41                 <field name='headlightColortype='SFColoraccessType='inputOutput'
                appinfo='Camera headlight color'/>
 42                 <field name='headlightIntensitytype='SFFloataccessType='inputOutput'
                appinfo='Camera headlight intensity'/>
 43                 <field name='filterColortype='SFColoraccessType='inputOutput'
                appinfo='Camera filter color that modifies virtual lens capture'/>
 44                 <field name='filterTransparencytype='SFFloataccessType='inputOutput'
                appinfo='Camera filter transparency that modifies virtual lens capture'/>
 45                 <field name='upVectortype='SFVec3faccessType='inputOutput'
                appinfo='upVector changes modify camera orientation (and possibly vice versa)'/>
 46                 <field name='fStoptype='SFFloataccessType='inputOutput'
                appinfo='Focal length divided effective aperture diameter indicating width of focal plane'/>
 47                 <field name='focusDistancetype='SFFloataccessType='inputOutput'
                appinfo='Distance to focal plane of sharpest focus'/>
 48                 <field name='isActivetype='SFBoolaccessType='outputOnly'
                appinfo='Mark start/stop with true/false output respectively useful to trigger external animations'/>
 49                 <field name='totalDurationtype='SFTimeaccessType='outputOnly'
                appinfo='Total duration of contained enabled CameraShot (and thus CameraMovement) move durations'/>
 50                 <field name='offlineRendertype='SFNodeaccessType='inputOutput'
                appinfo='OfflineRender node'/>
 51                 <field name='traceEnabledtype='SFBoolaccessType='initializeOnly'
                appinfo='enable console output to trace script computations and prototype progress'/>
 52                 <!-- Viewpoint-related fields, NavigationInfo-related fields and Camera-unique fields -->
 53            </ExternProtoDeclare>
 54            <!-- =============== CameraShot ============== -->
 55            <ExternProtoDeclare name='CameraShotappinfo='CameraShot collects a specific set of CameraMovement animations that make up an individual shot'   url=' "CameraPrototypes.x3d#CameraShot" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraPrototypes.x3d#CameraShot" "CameraPrototypes.wrl#CameraShot" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraPrototypes.wrl#CameraShot" '>
 56                 <field name='descriptiontype='SFStringaccessType='inputOutput'
                appinfo='Text description to be displayed for this CameraShot'/>
 57                 <field name='enabledtype='SFBoolaccessType='inputOutput'
                appinfo='Whether this CameraShot can be activated'/>
 58                 <field name='movestype='MFNodeaccessType='inputOutput'
                appinfo='Set of CameraMovement nodes'>
 59                      <!-- initializing CameraMovement nodes are inserted here by scene author using ProtoInstance -->
 60                 </field>
 61                 <field name='initialPositiontype='SFVec3faccessType='inputOutput'
                appinfo='Setup to reinitialize camera position for this shot'/>
 62                 <field name='initialOrientationtype='SFRotationaccessType='inputOutput'
                appinfo='Setup to reinitialize camera rotation for this shot'/>
 63                 <field name='initialAimPointtype='SFVec3faccessType='inputOutput'
                appinfo='Setup to reinitialize aimpoint (relative location for camera direction) for this shot'/>
 64                 <field name='initialFieldOfViewtype='SFFloataccessType='inputOutput'
                appinfo='pi/4'/>
 65                 <field name='initialFStoptype='SFFloataccessType='inputOutput'
                appinfo='Focal length divided effective aperture diameter indicating width of focal plane'/>
 66                 <field name='initialFocusDistancetype='SFFloataccessType='inputOutput'
                appinfo='Distance to focal plane of sharpest focus'/>
 67                 <field name='shotDurationtype='SFTimeaccessType='outputOnly'
                appinfo='Subtotal duration of contained CameraMovement move durations'/>
 68                 <field name='isActivetype='SFBoolaccessType='outputOnly'
                appinfo='Mark start/stop with true/false output respectively useful to trigger external animations'/>
 69                 <field name='traceEnabledtype='SFBoolaccessType='initializeOnly'
                appinfo='enable console output to trace script computations and prototype progress'/>
 70            </ExternProtoDeclare>
 71            <!-- =============== CameraMovement ============== -->
 72            <ExternProtoDeclare name='CameraMovementappinfo='CameraMovement defines a single camera movement animation'   url=' "CameraPrototypes.x3d#CameraMovement" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraPrototypes.x3d#CameraMovement" "CameraPrototypes.wrl#CameraMovement" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraPrototypes.wrl#CameraMovement" '>
 73                 <field name='descriptiontype='SFStringaccessType='inputOutput'
                appinfo='Text description to be displayed for this CameraMovement'/>
 74                 <field name='enabledtype='SFBoolaccessType='inputOutput'
                appinfo='Whether this CameraMovement can be activated'/>
 75                 <field name='durationtype='SFFloataccessType='inputOutput'
                appinfo='Duration in seconds for this move'/>
 76                 <field name='goalPositiontype='SFVec3faccessType='inputOutput'
                appinfo='Goal camera position for this move'/>
 77                 <field name='goalOrientationtype='SFRotationaccessType='inputOutput'
                appinfo='Goal camera rotation for this move'/>
 78                 <field name='trackingtype='SFBoolaccessType='inputOutput'
                appinfo='Whether or not camera direction is tracking towards the aimPoint'/>
 79                 <field name='goalAimPointtype='SFVec3faccessType='inputOutput'
                appinfo='Goal aimPoint for this move, ignored if tracking=false'/>
 80                 <field name='goalFieldOfViewtype='SFFloataccessType='inputOutput'
                appinfo='Goal fieldOfView for this move'/>
 81                 <field name='goalFStoptype='SFFloataccessType='inputOutput'
                appinfo='Focal length divided effective aperture diameter indicating width of focal plane'/>
 82                 <field name='goalFocusDistancetype='SFFloataccessType='inputOutput'
                appinfo='Distance to focal plane of sharpest focus'/>
 83                 <field name='isActivetype='SFBoolaccessType='outputOnly'
                appinfo='Mark start/stop with true/false output respectively useful to trigger external animations'/>
 84                 <field name='traceEnabledtype='SFBoolaccessType='initializeOnly'
                appinfo='enable console output to trace script computations and prototype progress'/>
 85            </ExternProtoDeclare>
 86            <!-- =============== OfflineRender ============== -->
 87            <ExternProtoDeclare name='OfflineRenderappinfo='OfflineRender defines a parameters for offline rendering of Camera animation output to a movie file (or possibly a still shot)'   url=' "CameraPrototypes.x3d#OfflineRender" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraPrototypes.x3d#OfflineRender" "CameraPrototypes.wrl#OfflineRender" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraPrototypes.wrl#OfflineRender" '>
 88                 <field name='descriptiontype='SFStringaccessType='inputOutput'
                appinfo='Text description to be displayed for this OfflineRender'/>
 89                 <field name='enabledtype='SFBoolaccessType='inputOutput'
                appinfo='Whether this OfflineRender can be activated'/>
 90                 <field name='frameRatetype='SFFloataccessType='inputOutput'
                appinfo='Frames per second recorded for this rendering'/>
 91                 <field name='frameSizetype='SFVec2faccessType='inputOutput'
                appinfo='Size of frame in number of pixels width and height'/>
 92                 <field name='pixelAspectRatiotype='SFFloataccessType='inputOutput'
                appinfo='Relative dimensions of pixel height/width typically 1.33 or 1'/>
 93                 <field name='set_startTimetype='SFTimeaccessType='inputOnly'
                appinfo='Begin render operation'/>
 94                 <field name='progresstype='SFFloataccessType='outputOnly'
                appinfo='Progress performing render operation (0..1)'/>
 95                 <field name='renderCompleteTimetype='SFTimeaccessType='outputOnly'
                appinfo='Render operation complete'/>
 96                 <field name='movieFormattype='MFStringaccessType='initializeOnly'
                appinfo='Format of rendered output movie (mpeg mp4 etc.), use first supported format'/>
 97                 <field name='imageFormattype='MFStringaccessType='initializeOnly'
                appinfo='Format of rendered output images (png jpeg gif tiff etc.) use first supported format'/>
 98                 <field name='traceEnabledtype='SFBoolaccessType='initializeOnly'
                appinfo='enable console output to trace script computations and prototype progress'/>
 99                 <!-- TODO non-photorealistic rendering (NPR) parameters -->
100            </ExternProtoDeclare>
101            <!-- =============== Lights, camera, action! ============== -->
102            <DirectionalLight direction='0 -1 0global='trueintensity='0.8'/>
103            <NavigationInfo type='"EXAMINE" "FLY" "ANY"'/>
104            <Viewpoint description='Camera test scene entry viewposition='0 2 12'/>
105            <Viewpoint description='Camera test scene from aboveorientation='1 0 0 -1.57079position='0 150 0'/>
106            <!-- Keep prototype instances in same file while developing, then move later -->
107            <!-- We will create examples matching those in the paper -->
108            <!-- =============== Camera_SimpleShotsTest ============== -->
109 
110                 <fieldValue name='descriptionvalue='SimpleShotsTest for camera Zoom Dolly Pan Boom and Tilt'/>
111                 <fieldValue name='headlightvalue='true'/>
112                 <fieldValue name='positionvalue='-4 4 10'/>
113                 <fieldValue name='shots'>
114                      <ProtoInstance name='CameraShotDEF='Zoom'>
115                           <fieldValue name='descriptionvalue='Simple shot of Camera Zoom'/>
116                           <fieldValue name='initialPositionvalue='-50 1 -10'/>
117                           <fieldValue name='initialOrientationvalue='0 1 0 0'/>
118                           <fieldValue name='moves'>
119                                <ProtoInstance name='CameraMovement'>
120                                     <fieldValue name='descriptionvalue='Camera Zoom In'/>
121                                     <fieldValue name='durationvalue='3'/>
122                                     <fieldValue name='goalPositionvalue='-50 1 -15'/>
123                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
124                                </ProtoInstance>
125                                <ProtoInstance name='CameraMovement'>
126                                     <fieldValue name='descriptionvalue='Camera Zoom Out'/>
127                                     <fieldValue name='durationvalue='3'/>
128                                     <fieldValue name='goalPositionvalue='-50 1 -10'/>
129                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
130                                </ProtoInstance>
131                                <ProtoInstance name='CameraMovement'>
132                                     <fieldValue name='descriptionvalue='Camera Pause'/>
133                                     <fieldValue name='durationvalue='1'/>
134                                     <fieldValue name='goalPositionvalue='-50 1 -10'/>
135                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
136                                </ProtoInstance>
137                           </fieldValue>
138                      </ProtoInstance>
139                      <ProtoInstance name='CameraShotDEF='Dolly'>
140                           <fieldValue name='descriptionvalue='Simple shot of Camera Dolly'/>
141                           <fieldValue name='initialPositionvalue='-40 1 -10'/>
142                           <fieldValue name='initialOrientationvalue='0 1 0 0'/>
143                           <fieldValue name='moves'>
144                                <ProtoInstance name='CameraMovementDEF='DollyMove1'>
145                                     <fieldValue name='descriptionvalue='Camera Dolly from Right to Left'/>
146                                     <fieldValue name='durationvalue='3'/>
147                                     <fieldValue name='goalPositionvalue='-45 1 -10'/>
148                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
149                                </ProtoInstance>
150                                <ProtoInstance name='CameraMovement'>
151                                     <fieldValue name='descriptionvalue='Camera Dolly from Left to Right'/>
152                                     <fieldValue name='durationvalue='3'/>
153                                     <fieldValue name='goalPositionvalue='-40 1 -10'/>
154                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
155                                </ProtoInstance>
156                                <ProtoInstance name='CameraMovement'>
157                                     <fieldValue name='descriptionvalue='Camera Pause'/>
158                                     <fieldValue name='durationvalue='1'/>
159                                     <fieldValue name='goalPositionvalue='-40 1 -10'/>
160                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
161                                </ProtoInstance>
162                           </fieldValue>
163                      </ProtoInstance>
164                      <ProtoInstance name='CameraShotDEF='Pan'>
165                           <fieldValue name='descriptionvalue='Simple shot of Camera Pan left right and back to center'/>
166                           <fieldValue name='initialPositionvalue='-30 1 -10'/>
167                           <fieldValue name='initialOrientationvalue='0 1 0 0'/>
168                           <fieldValue name='moves'>
169                                <ProtoInstance name='CameraMovementDEF='PanLeft'>
170                                     <fieldValue name='descriptionvalue='Pan Left'/>
171                                     <fieldValue name='durationvalue='2'/>
172                                     <fieldValue name='goalPositionvalue='-30 1 -10'/>
173                                     <fieldValue name='goalOrientationvalue='0 1 0 0.4'/>
174                                </ProtoInstance>
175                                <ProtoInstance name='CameraMovementDEF='PanRight'>
176                                     <fieldValue name='descriptionvalue='Pan Right'/>
177                                     <fieldValue name='durationvalue='3'/>
178                                     <fieldValue name='goalPositionvalue='-30 1 -10'/>
179                                     <fieldValue name='goalOrientationvalue='0 1 0 -0.4'/>
180                                </ProtoInstance>
181                                <ProtoInstance name='CameraMovement'>
182                                     <fieldValue name='descriptionvalue='Camera Pan back to Center'/>
183                                     <fieldValue name='durationvalue='2'/>
184                                     <fieldValue name='goalPositionvalue='-30 1 -10'/>
185                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
186                                </ProtoInstance>
187                                <ProtoInstance name='CameraMovement'>
188                                     <fieldValue name='descriptionvalue='Camera Pause'/>
189                                     <fieldValue name='durationvalue='2'/>
190                                     <fieldValue name='goalPositionvalue='-30 1 -10'/>
191                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
192                                </ProtoInstance>
193                           </fieldValue>
194                      </ProtoInstance>
195                      <ProtoInstance name='CameraShotDEF='CameraBoom'>
196                           <fieldValue name='descriptionvalue='Camera Boom'/>
197                           <fieldValue name='initialPositionvalue='-20 1 -10'/>
198                           <fieldValue name='initialOrientationvalue='0 1 0 0'/>
199                           <fieldValue name='moves'>
200                                <ProtoInstance name='CameraMovementDEF='CameraBoomUp'>
201                                     <fieldValue name='descriptionvalue='Camera Boom Up'/>
202                                     <fieldValue name='durationvalue='3'/>
203                                     <fieldValue name='goalPositionvalue='-20 5 -10'/>
204                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
205                                </ProtoInstance>
206                                <ProtoInstance name='CameraMovementDEF='BoomDown'>
207                                     <fieldValue name='descriptionvalue='Camera Boom Down'/>
208                                     <fieldValue name='durationvalue='3'/>
209                                     <fieldValue name='goalPositionvalue='-20 1 -10'/>
210                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
211                                </ProtoInstance>
212                                <ProtoInstance name='CameraMovementDEF='BoomPause'>
213                                     <fieldValue name='descriptionvalue='Camera Pause'/>
214                                     <fieldValue name='durationvalue='2'/>
215                                     <fieldValue name='goalPositionvalue='-20 1 -10'/>
216                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
217                                </ProtoInstance>
218                           </fieldValue>
219                      </ProtoInstance>
220                      <ProtoInstance name='CameraShotDEF='CameraTilt'>
221                           <fieldValue name='descriptionvalue='Camera Tilt'/>
222                           <fieldValue name='initialPositionvalue='-10 1 -10'/>
223                           <fieldValue name='initialOrientationvalue='0 0 1 0'/>
224                           <fieldValue name='traceEnabledvalue='true'/>
225                           <fieldValue name='moves'>
226                                <ProtoInstance name='CameraMovement'>
227                                     <fieldValue name='descriptionvalue='Camera Tilt Pause'/>
228                                     <fieldValue name='durationvalue='1'/>
229                                     <fieldValue name='goalPositionvalue='-10 1 -10'/>
230                                     <fieldValue name='goalOrientationvalue='0 0 1 0'/>
231                                </ProtoInstance>
232                                <ProtoInstance name='CameraMovementDEF='TiltDown'>
233                                     <fieldValue name='descriptionvalue='Camera Tilt Left'/>
234                                     <fieldValue name='durationvalue='3'/>
235                                     <fieldValue name='goalPositionvalue='-10 1 -10'/>
236                                     <fieldValue name='goalOrientationvalue='0 0 1 0.785'/>
237                                </ProtoInstance>
238                                <ProtoInstance name='CameraMovementDEF='TiltPause'>
239                                     <fieldValue name='descriptionvalue='Camera Tilt Pause'/>
240                                     <fieldValue name='durationvalue='1'/>
241                                     <fieldValue name='goalPositionvalue='-10 1 -10'/>
242                                     <fieldValue name='goalOrientationvalue='0 0 1 0.785'/>
243                                </ProtoInstance>
244                                <ProtoInstance name='CameraMovement'>
245                                     <fieldValue name='descriptionvalue='Camera Tilt Right'/>
246                                     <fieldValue name='durationvalue='3'/>
247                                     <fieldValue name='goalPositionvalue='-10 1 -10'/>
248                                     <fieldValue name='goalOrientationvalue='0 0 1 -0.785'/>
249                                </ProtoInstance>
250                                <ProtoInstance name='CameraMovement'>
251                                     <fieldValue name='descriptionvalue='Camera Tilt Pause'/>
252                                     <fieldValue name='durationvalue='1'/>
253                                     <fieldValue name='goalPositionvalue='-10 1 -10'/>
254                                     <fieldValue name='goalOrientationvalue='0 0 1 -0.785'/>
255                                </ProtoInstance>
256                                <ProtoInstance name='CameraMovementDEF='TiltReset'>
257                                     <fieldValue name='descriptionvalue='Camera Tilt Reset'/>
258                                     <fieldValue name='durationvalue='1'/>
259                                     <fieldValue name='goalPositionvalue='-10 1 -10'/>
260                                     <fieldValue name='goalOrientationvalue='0 0 1 0'/>
261                                </ProtoInstance>
262                                <ProtoInstance name='CameraMovementDEF='TiltUp'>
263                                     <fieldValue name='descriptionvalue='Return to home'/>
264                                     <fieldValue name='durationvalue='2'/>
265                                     <fieldValue name='goalPositionvalue='0 2 12'/>
266                                     <fieldValue name='goalOrientationvalue='0 0 1 0'/>
267                                </ProtoInstance>
268                           </fieldValue>
269                      </ProtoInstance>
270                 </fieldValue>
271            </ProtoInstance>
272            <Group DEF='AnimationGroup_SimpleShots'>
273 
               <!-- ROUTE information for CameraTimer_SimpleShots node:  [from Camera_SimpleShotsTest.totalDuration to cycleInterval ] [from TextTouch_SimpleShots.touchTime to startTime ] [from fraction_changed to Camera_SimpleShotsTest.set_fraction ] -->
               <TimeSensor DEF='CameraTimer_SimpleShots'/>
274                 <!-- initialize clock to match totalDuration of combined Shot Moves -->
275                 < ROUTE  fromNode='Camera_SimpleShotsTest' fromField='totalDuration' toNode='CameraTimer_SimpleShots' toField='cycleInterval'/>
276                 <!-- TimeSensor animates the CameraClock since that maintains the computed PositionInterpolator and OrientationInterpolator -->
277                 < ROUTE  fromNode='CameraTimer_SimpleShots' fromField='fraction_changed' toNode='Camera_SimpleShotsTest' toField='set_fraction'/>
278                 <Transform DEF='Trigger_SimpleShotstranslation='-4 4 0'>
279 
                    <!-- ROUTE information for TextTouchActive_SimpleShotsFilter node:  [from TextTouch_SimpleShots.isActive to set_boolean ] [from inputTrue to Camera_SimpleShotsTest.set_bind ] -->
                    <BooleanFilter DEF='TextTouchActive_SimpleShotsFilter'/>
280 
                    <!-- ROUTE information for TextTouch_SimpleShots node:  [from isActive to TextTouchActive_SimpleShotsFilter.set_boolean ] [from touchTime to CameraTimer_SimpleShots.startTime ] -->
                    <TouchSensor DEF='TextTouch_SimpleShotsdescription='touch to animate Camera SimpleShotsTest'/>
281                      < ROUTE  fromNode='TextTouchActive_SimpleShotsFilter' fromField='inputTrue' toNode='Camera_SimpleShotsTest' toField='set_bind'/>
282                      < ROUTE  fromNode='TextTouch_SimpleShots' fromField='isActive' toNode='TextTouchActive_SimpleShotsFilter' toField='set_boolean'/>
283                      < ROUTE  fromNode='TextTouch_SimpleShots' fromField='touchTime' toNode='CameraTimer_SimpleShots' toField='startTime'/>
284                      <!-- Selectable Text design pattern has transparent Box and TouchSensor description as a tooltip -->
285                      <Shape>
286                           <Text string='"Click to animate" "SimpleShotsTest"'>
287                                <FontStyle justify='"MIDDLE" "MIDDLE"'/>
288                           </Text>
289                           <Appearance>
290 
                              <!-- Material ArtDeco5 is a DEF node that has 1 USE node: USE_1 -->
                              <Material DEF='ArtDeco5ambientIntensity='0.24diffuseColor='0.945455 0.318988 0.321717shininess='0.01specularColor='0.072727 0.021705 0.010732'>
291                                     <!-- Universal Media Library: ArtDeco 5 -->
292                                </Material>
293                           </Appearance>
294                      </Shape>
295                      <!-- Simplify intersection test for user selecting text -->
296 
                    <!-- Shape TransparentBox is a DEF node that has 1 USE node: USE_1 -->
                    <Shape DEF='TransparentBox'>
297                           <Appearance>
298                                <Material transparency='1'/>
299                           </Appearance>
300                           <Box size='6 2 0.0001'/>
301                      </Shape>
302                      <TouchSensor description='Click to animate SimpleShotsTest'/>
303                 </Transform>
304            </Group>
305            <Group DEF='SimpleShotsTargets'>
306                 <Transform DEF='TargetBoxZoomtranslation='-50 1 -20'>
307                      <Shape>
308                           <Box/>
309                           <Appearance>
310                                <Material/>
311                                <ImageTexture   url=' "images/CameraMoveZoom.png " "https://www.web3d.org/x3d/content/examples/Basic/development/images/CameraMoveZoom.png " '/>
312                           </Appearance>
313                      </Shape>
314                      <Transform translation='0 2 0'>
315                           <Shape>
316                                <Text string='"Zoom in, out"'>
317                                     <FontStyle justify='"MIDDLE" "MIDDLE"'/>
318                                </Text>
319                                <Appearance>
320                                     <Material/>
321                                </Appearance>
322                           </Shape>
323                      </Transform>
324                 </Transform>
325                 <Transform DEF='TargetBoxDollytranslation='-40 1 -20'>
326                      <Shape>
327                           <Box/>
328                           <Appearance>
329                                <Material/>
330                                <ImageTexture   url=' "images/CameraMoveDolly.png " "https://www.web3d.org/x3d/content/examples/Basic/development/images/CameraMoveDolly.png " '/>
331                           </Appearance>
332                      </Shape>
333                      <Transform translation='0 2 0'>
334                           <Shape>
335                                <Text string='"Dolly left, right"'>
336                                     <FontStyle justify='"MIDDLE" "MIDDLE"'/>
337                                </Text>
338                                <Appearance>
339                                     <Material/>
340                                </Appearance>
341                           </Shape>
342                      </Transform>
343                 </Transform>
344                 <Transform DEF='TargetBoxPantranslation='-30 1 -20'>
345                      <Shape>
346                           <Box/>
347                           <Appearance>
348                                <Material/>
349                                <ImageTexture   url=' "images/CameraMovePan.png " "https://www.web3d.org/x3d/content/examples/Basic/development/images/CameraMovePan.png " '/>
350                           </Appearance>
351                      </Shape>
352                      <Transform translation='0 2 0'>
353                           <Shape>
354                                <Text string='"Pan left, right"'>
355                                     <FontStyle justify='"MIDDLE" "MIDDLE"'/>
356                                </Text>
357                                <Appearance>
358                                     <Material/>
359                                </Appearance>
360                           </Shape>
361                      </Transform>
362                 </Transform>
363                 <Transform DEF='TargetBoxBoomtranslation='-20 1 -20'>
364                      <Shape>
365                           <Box/>
366                           <Appearance>
367                                <Material/>
368                                <ImageTexture   url=' "images/CameraMoveBoom.png " "https://www.web3d.org/x3d/content/examples/Basic/development/images/CameraMoveBoom.png " '/>
369                           </Appearance>
370                      </Shape>
371                      <Transform translation='0 2 0'>
372                           <Shape>
373                                <Text string='"Boom up, down"'>
374                                     <FontStyle justify='"MIDDLE" "MIDDLE"'/>
375                                </Text>
376                                <Appearance>
377                                     <Material/>
378                                </Appearance>
379                           </Shape>
380                      </Transform>
381                 </Transform>
382                 <Transform DEF='TargetBoxTilttranslation='-10 1 -20'>
383                      <Shape>
384                           <Box/>
385                           <Appearance>
386                                <Material/>
387                                <ImageTexture   url=' "images/CameraMoveTilt.png " "https://www.web3d.org/x3d/content/examples/Basic/development/images/CameraMoveTilt.png " '/>
388                           </Appearance>
389                      </Shape>
390                      <Transform translation='0 2 0'>
391                           <Shape>
392                                <Text string='"Tilt left, right"'>
393                                     <FontStyle justify='"MIDDLE" "MIDDLE"'/>
394                                </Text>
395                                <Appearance>
396                                     <Material/>
397                                </Appearance>
398                           </Shape>
399                      </Transform>
400                 </Transform>
401            </Group>
402            <!-- =============== Camera_AimPointTest ============== -->
403 
404                 <fieldValue name='descriptionvalue='AimPointTest for moving camera tracking moving target'/>
405                 <fieldValue name='positionvalue='4 4 10'/>
406                 <fieldValue name='shots'>
407                      <ProtoInstance name='CameraShotDEF='Shot5'>
408                           <fieldValue name='descriptionvalue='#3 Tracking shot'/>
409                           <fieldValue name='initialPositionvalue='6 6 10'/>
410                           <fieldValue name='initialOrientationvalue='0 1 0 0'/>
411                           <fieldValue name='moves'>
412 
                              <!-- ROUTE information for MoveAimPoint3a node:  [from BoxPath.value_changed to goalAimPoint ] -->
                              <ProtoInstance name='CameraMovementDEF='MoveAimPoint3a'>
413                                     <fieldValue name='descriptionvalue='AimPoint 3a moving BoxPath'/>
414                                     <fieldValue name='trackingvalue='true'/>
415                                     <fieldValue name='durationvalue='8'/>
416                                     <fieldValue name='goalPositionvalue='6 6 10'/>
417                                     <!-- goalAimPoint modified by ROUTE to match moving Box -->
418                                </ProtoInstance>
419 
                              <!-- ROUTE information for MoveAimPoint3b node:  [from BoxPath.value_changed to goalAimPoint ] -->
                              <ProtoInstance name='CameraMovementDEF='MoveAimPoint3b'>
420                                     <fieldValue name='descriptionvalue='AimPoint 3b pan right while tracking'/>
421                                     <fieldValue name='trackingvalue='true'/>
422                                     <fieldValue name='durationvalue='8'/>
423                                     <fieldValue name='goalPositionvalue='40 6 12'/>
424                                     <!-- goalAimPoint modified by ROUTE to match moving Box -->
425                                </ProtoInstance>
426 
                              <!-- ROUTE information for MoveAimPoint3c node:  [from BoxPath.value_changed to goalAimPoint ] -->
                              <ProtoInstance name='CameraMovementDEF='MoveAimPoint3c'>
427                                     <fieldValue name='descriptionvalue='AimPoint 3c boom up while tracking'/>
428                                     <fieldValue name='trackingvalue='true'/>
429                                     <fieldValue name='durationvalue='3'/>
430                                     <fieldValue name='goalPositionvalue='40 20 13'/>
431                                     <!-- goalAimPoint modified by ROUTE to match moving Box -->
432                                </ProtoInstance>
433                                <ProtoInstance name='CameraMovementDEF='MoveAimPoint3d'>
434                                     <fieldValue name='descriptionvalue='AimPoint 3d restore camera back to home'/>
435                                     <fieldValue name='trackingvalue='true'/>
436                                     <fieldValue name='durationvalue='5'/>
437                                     <fieldValue name='goalPositionvalue='4 4 10'/>
438                                     <fieldValue name='goalAimPointvalue='4 4 0'/>
439                                     <fieldValue name='goalOrientationvalue='0 1 0 0'/>
440                                     <!-- can test tracking or not using these values -->
441                                </ProtoInstance>
442                           </fieldValue>
443                      </ProtoInstance>
444                 </fieldValue>
445            </ProtoInstance>
446            <Group DEF='AnimationGroup_AimPointTest'>
447 
               <!-- ROUTE information for CameraTimer_AimPointTest node:  [from Camera_AimPointTest.totalDuration to cycleInterval ] [from TextTouch_AimPointTest.touchTime to startTime ] [from fraction_changed to Camera_AimPointTest.set_fraction ] -->
               <TimeSensor DEF='CameraTimer_AimPointTest'/>
448                 <!-- initialize clock to match totalDuration of combined Shot Moves -->
449                 < ROUTE  fromNode='Camera_AimPointTest' fromField='totalDuration' toNode='CameraTimer_AimPointTest' toField='cycleInterval'/>
450                 <!-- TimeSensor animates the CameraClock since that maintains the computed PositionInterpolator and OrientationInterpolator -->
451                 < ROUTE  fromNode='CameraTimer_AimPointTest' fromField='fraction_changed' toNode='Camera_AimPointTest' toField='set_fraction'/>
452                 <Transform DEF='Trigger_AimPointTesttranslation='4 4 0'>
453 
                    <!-- ROUTE information for TextTouchActive_AimPointFilter node:  [from TextTouch_AimPointTest.isActive to set_boolean ] [from inputTrue to Camera_AimPointTest.set_bind ] -->
                    <BooleanFilter DEF='TextTouchActive_AimPointFilter'/>
454 
                    <!-- ROUTE information for TextTouch_AimPointTest node:  [from isActive to TextTouchActive_AimPointFilter.set_boolean ] [from touchTime to CameraTimer_AimPointTest.startTime ] -->
                    <TouchSensor DEF='TextTouch_AimPointTestdescription='touch to animate Camera AimPointTest'/>
455                      < ROUTE  fromNode='TextTouchActive_AimPointFilter' fromField='inputTrue' toNode='Camera_AimPointTest' toField='set_bind'/>
456                      < ROUTE  fromNode='TextTouch_AimPointTest' fromField='isActive' toNode='TextTouchActive_AimPointFilter' toField='set_boolean'/>
457                      < ROUTE  fromNode='TextTouch_AimPointTest' fromField='touchTime' toNode='CameraTimer_AimPointTest' toField='startTime'/>
458                      <Shape>
459                           <Text string='"Click to animate" "AimPointTest"'>
460                                <FontStyle justify='"MIDDLE" "MIDDLE"'/>
461                           </Text>
462                           <Appearance>
463                                <Material USE='ArtDeco5'/>
464                           </Appearance>
465                      </Shape>
466                      <Shape USE='TransparentBox'/>
467                      <TouchSensor description='Click to animate AimPointTest'/>
468                 </Transform>
469            </Group>
470            <!-- TODO build a test once implemented -->
471            <ProtoInstance name='OfflineRender'/>
472            <!-- =============== animate a camera shape to visualize view changes ============== -->
473 
474                 <!-- move CameraShape using active Camera -->
475                 < ROUTE  fromNode='Camera_SimpleShotsTest' fromField='position' toNode='CameraShapeTransform' toField='translation'/>
476                 < ROUTE  fromNode='Camera_SimpleShotsTest' fromField='orientation' toNode='CameraShapeTransform' toField='rotation'/>
477                 < ROUTE  fromNode='Camera_AimPointTest' fromField='position' toNode='CameraShapeTransform' toField='translation'/>
478                 < ROUTE  fromNode='Camera_AimPointTest' fromField='orientation' toNode='CameraShapeTransform' toField='rotation'/>
479                 <Transform DEF='CameraOffsetTransformtranslation='0 0 0.25'>
480 
                    <!-- ROUTE information for CameraShapeTouched node:  [from isActive to ViewFrustumToggle.set_boolean ] -->
                    <TouchSensor DEF='CameraShapeTouched'/>
481                      <Inline DEF='CameraShape'   url=' "CameraShape.x3d" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraShape.x3d" '/>
482                      <Shape DEF='SightLine'>
483                           <IndexedLineSet coordIndex='0 1'>
484                                <Coordinate point='0 0 0 0 0 -100'/>
485                           </IndexedLineSet>
486                           <Appearance>
487                                <Material emissiveColor='0.8 0.8 0.4'/>
488                           </Appearance>
489                      </Shape>
490                 </Transform>
491                 <!-- Display frustum to show camera view within the scene, toggled by user selecting CameraShape -->
492                 <ExternProtoDeclare name='ViewFrustumappinfo='Display view frustum associated with a given pair of Viewpoint NavigationInfo nodes'   url=' "../../X3dForWebAuthors/Chapter14Prototypes/ViewFrustumPrototype.x3d#ViewFrustum" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/ViewFrustumPrototype.x3d#ViewFrustum" "../../X3dForWebAuthors/Chapter14Prototypes/ViewFrustumPrototype.wrl#ViewFrustum" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter14Prototypes/ViewFrustumPrototype.wrl#ViewFrustum" '>
493                      <field name='ViewpointNodetype='SFNodeaccessType='initializeOnly'
                     appinfo='required: insert Viewpoint DEF or USE node for view of interest'/>
494                      <field name='NavigationInfoNodetype='SFNodeaccessType='initializeOnly'
                     appinfo='required: insert NavigationInfo DEF or USE node of interest'/>
495                      <field name='visibletype='SFBoolaccessType='inputOutput'
                     appinfo='whether or not frustum geometry is rendered'/>
496                      <field name='lineColortype='SFColoraccessType='inputOutput'
                     appinfo='RGB color of ViewFrustum outline, default value 0.9 0.9 0.9'/>
497                      <field name='frustumColortype='SFColoraccessType='inputOutput'
                     appinfo='RGB color of ViewFrustum hull geometry, default value 0.8 0.8 0.8'/>
498                      <field name='transparencytype='SFFloataccessType='inputOutput'
                     appinfo='transparency of ViewFrustum hull geometry, default value 0.5'/>
499                      <field name='aspectRatiotype='SFFloataccessType='inputOutput'
                     appinfo='assumed ratio height/width, default value 0.75'/>
500                      <field name='tracetype='SFBoolaccessType='initializeOnly'
                     appinfo='debug support, default false'/>
501                 </ExternProtoDeclare>
502 
               <!-- ROUTE information for ViewFrustumNode node:  [from ViewFrustumToggle.toggle to visible ] -->
               <ProtoInstance name='ViewFrustumDEF='ViewFrustumNode'>
503                      <fieldValue name='ViewpointNode'>
504                           <Viewpoint DEF='FrustumViewpointdescription='viewpoint for ViewFrustumposition='0 0 0'/>
505                      </fieldValue>
506                      <fieldValue name='NavigationInfoNode'>
507                           <NavigationInfo DEF='TestNavigationInfotransitionType='"ANIMATE"visibilityLimit='100'/>
508                      </fieldValue>
509                      <fieldValue name='visiblevalue='false'/>
510                      <fieldValue name='lineColorvalue='0.9 0.9 0.9'/>
511                      <fieldValue name='frustumColorvalue='0.8 0.8 0.8'/>
512                      <fieldValue name='transparencyvalue='0.95'/>
513                 </ProtoInstance>
514 
               <!-- ROUTE information for ViewFrustumToggle node:  [from CameraShapeTouched.isActive to set_boolean ] [from toggle to ViewFrustumNode.visible ] -->
               <BooleanToggle DEF='ViewFrustumTogglecontainerField='children'/>
515                 < ROUTE  fromNode='CameraShapeTouched' fromField='isActive' toNode='ViewFrustumToggle' toField='set_boolean'/>
516                 < ROUTE  fromNode='ViewFrustumToggle' fromField='toggle' toNode='ViewFrustumNode' toField='visible'/>
517            </Transform>
518            <!-- =============== add checkerboard, axes and other things to look at while animating ============== -->
519            <Background skyColor='0.282353 0.380392 0.470588'/>
520            <Transform rotation='1 0 0 -1.57079scale='10 10 10'>
521                 <Shape>
522                      <Appearance>
523                           <Material ambientIntensity='0.01diffuseColor='1.0 1.0 1.0shininess='0.05'/>
524                      </Appearance>
525                      <IndexedFaceSet colorPerVertex='falsenormalPerVertex='falsesolid='falsecolorIndex='0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0coordIndex='0 8 9 1 -1 1 9 10 2 -1 2 10 11 3 -1 3 11 12 4 -1 4 12 13 5 -1 5 13 14 6 -1 6 14 15 7 -1 8 16 17 9 -1 9 17 18 10 -1 10 18 19 11 -1 11 19 20 12 -1 12 20 21 13 -1 13 21 22 14 -1 14 22 23 15 -1 16 24 25 17 -1 17 25 26 18 -1 18 26 27 19 -1 19 27 28 20 -1 20 28 29 21 -1 21 29 30 22 -1 22 30 31 23 -1 24 32 33 25 -1 25 33 34 26 -1 26 34 35 27 -1 27 35 36 28 -1 28 36 37 29 -1 29 37 38 30 -1 30 38 39 31 -1 32 40 41 33 -1 33 41 42 34 -1 34 42 43 35 -1 35 43 44 36 -1 36 44 45 37 -1 37 45 46 38 -1 38 46 47 39 -1 40 48 49 41 -1 41 49 50 42 -1 42 50 51 43 -1 43 51 52 44 -1 44 52 53 45 -1 45 53 54 46 -1 46 54 55 47 -1 48 56 57 49 -1 49 57 58 50 -1 50 58 59 51 -1 51 59 60 52 -1 52 60 61 53 -1 53 61 62 54 -1 54 62 63 55 -1'>
526                           <Coordinate point='-5.25 5.25 0.0 -3.75 5.25 0.0 -2.25 5.25 0.0 -0.75 5.25 0.0 0.75 5.25 0.0 2.25 5.25 0.0 3.75 5.25 0.0 5.25 5.25 0.0 -5.25 3.75 0.0 -3.75 3.75 0.0 -2.25 3.75 0.0 -0.75 3.75 0.0 0.75 3.75 0.0 2.25 3.75 0.0 3.75 3.75 0.0 5.25 3.75 0.0 -5.25 2.25 0.0 -3.75 2.25 0.0 -2.25 2.25 0.0 -0.75 2.25 0.0 0.75 2.25 0.0 2.25 2.25 0.0 3.75 2.25 0.0 5.25 2.25 0.0 -5.25 0.75 0.0 -3.75 0.75 0.0 -2.25 0.75 0.0 -0.75 0.75 0.0 0.75 0.75 0.0 2.25 0.75 0.0 3.75 0.75 0.0 5.25 0.75 0.0 -5.25 -0.75 0.0 -3.75 -0.75 0.0 -2.25 -0.75 0.0 -0.75 -0.75 0.0 0.75 -0.75 0.0 2.25 -0.75 0.0 3.75 -0.75 0.0 5.25 -0.75 0.0 -5.25 -2.25 0.0 -3.75 -2.25 0.0 -2.25 -2.25 0.0 -0.75 -2.25 0.0 0.75 -2.25 0.0 2.25 -2.25 0.0 3.75 -2.25 0.0 5.25 -2.25 0.0 -5.25 -3.75 0.0 -3.75 -3.75 0.0 -2.25 -3.75 0.0 -0.75 -3.75 0.0 0.75 -3.75 0.0 2.25 -3.75 0.0 3.75 -3.75 0.0 5.25 -3.75 0.0 -5.25 -5.25 0.0 -3.75 -5.25 0.0 -2.25 -5.25 0.0 -0.75 -5.25 0.0 0.75 -5.25 0.0 2.25 -5.25 0.0 3.75 -5.25 0.0 5.25 -5.25 0.0'/>
527                           <Color color='0.435294 0.741176 0 0 0.560784 0.580392'/>
528                      </IndexedFaceSet>
529                 </Shape>
530            </Transform>
531            <Transform scale='3 3 3translation='0 0.25 0'>
532                 <Inline DEF='CoordinateAxes'   url=' "../../X3dForWebAuthors/Chapter03Grouping/CoordinateAxes.x3d" "../../Savage/Tools/Authoring/CoordinateAxes.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter03Grouping/CoordinateAxes.x3d" "https://savage.nps.edu/Savage/Tools/Authoring/CoordinateAxes.x3d" "../../X3dForWebAuthors/Chapter03Grouping/CoordinateAxes.wrl" "../../Savage/Tools/Authoring/CoordinateAxes.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter03Grouping/CoordinateAxes.wrl" "https://savage.nps.edu/Savage/Tools/Authoring/CoordinateAxes.wrl" '/>
533            </Transform>
534 
          <!-- ROUTE information for MovingBoxTransform node:  [from BoxPath.value_changed to translation ] -->
          <Transform DEF='MovingBoxTransform'>
535 
               <!-- ROUTE information for BoxPath node:  [from BoxTimer.fraction_changed to set_fraction ] [from value_changed to MovingBoxTransform.translation ] [from value_changed to MoveAimPoint3a.goalAimPoint ] [from value_changed to MoveAimPoint3b.goalAimPoint ] [from value_changed to MoveAimPoint3c.goalAimPoint ] -->
               <PositionInterpolator DEF='BoxPathkey='0 0.25 0.5 0.75 1keyValue='-5 1 5 45 1 5 45 1 -45 -5 1 -45 -5 1 5'/>
536 
               <!-- ROUTE information for BoxTimer node:  [from fraction_changed to BoxPath.set_fraction ] -->
               <TimeSensor DEF='BoxTimercycleInterval='10loop='true'/>
537                 < ROUTE  fromNode='BoxPath' fromField='value_changed' toNode='MovingBoxTransform' toField='translation'/>
538                 < ROUTE  fromNode='BoxPath' fromField='value_changed' toNode='MoveAimPoint3a' toField='goalAimPoint'/>
539                 < ROUTE  fromNode='BoxPath' fromField='value_changed' toNode='MoveAimPoint3b' toField='goalAimPoint'/>
540                 < ROUTE  fromNode='BoxPath' fromField='value_changed' toNode='MoveAimPoint3c' toField='goalAimPoint'/>
541                 < ROUTE  fromNode='BoxTimer' fromField='fraction_changed' toNode='BoxPath' toField='set_fraction'/>
542                 <Shape>
543                      <Box/>
544                      <Appearance>
545                           <Material/>
546                           <ImageTexture   url=' "../earth-topo.png " "https://www.web3d.org/x3d/content/examples/Basic/earth-topo.png " '/>
547                      </Appearance>
548                 </Shape>
549            </Transform>
550            <!-- ================ CrossHair visualization for center of screen ================ -->
551            <ExternProtoDeclare name='CrossHairappinfo='CrossHair prototype provides a heads-up display (HUD) crosshair at the view center, which is useful for assessing NavigationInfo lookAt point'   url=' "../../Savage/Tools/HeadsUpDisplays/CrossHairPrototype.x3d#CrossHair" "https://savage.nps.edu/Savage/Tools/HeadsUpDisplays/CrossHairPrototype.x3d#CrossHair" "../../Savage/Tools/HeadsUpDisplays/CrossHairPrototype.wrl#CrossHair" "https://savage.nps.edu/Savage/Tools/HeadsUpDisplays/CrossHairPrototype.wrl#CrossHair" '>
552                 <field name='enabledtype='SFBoolaccessType='initializeOnly'
                appinfo='whether CrissHair orititype is enabled or not'/>
553                 <field name='set_enabledtype='SFBoolaccessType='inputOnly'
                appinfo='control whether enabled/disabled'/>
554                 <field name='markerColortype='SFColoraccessType='inputOutput'
                appinfo='color of CrossHair marker'/>
555                 <field name='scaletype='SFVec3faccessType='inputOutput'
                appinfo='size of CrossHair in meters'/>
556                 <field name='positionOffsetFromCameratype='SFVec3faccessType='inputOutput'
                appinfo='distance in front of HUD viewpoint'/>
557            </ExternProtoDeclare>
558 
          <!-- ROUTE information for CrossHairInstance node:  [from Camera_SimpleShotsTest.isBound to set_enabled ] [from Camera_AimPointTest.isBound to set_enabled ] -->
          <ProtoInstance name='CrossHairDEF='CrossHairInstance'>
559                 <fieldValue name='enabledvalue='true'/>
560                 <fieldValue name='markerColorvalue='1 0.5 0'/>
561                 <fieldValue name='scalevalue='1 1 1'/>
562                 <fieldValue name='positionOffsetFromCameravalue='0 0 -6'/>
563            </ProtoInstance>
564            <!-- turn on CrossHairInstance when animated camera viewpoints are bound -->
565            < ROUTE  fromNode='Camera_SimpleShotsTest' fromField='isBound' toNode='CrossHairInstance' toField='set_enabled'/>
566            < ROUTE  fromNode='Camera_AimPointTest' fromField='isBound' toNode='CrossHairInstance' toField='set_enabled'/>
567            <!-- turn off CrossHairInstance when animated camera viewpoints are unbound <BooleanFilter DEF='NegateCrossHair'/> <ROUTE fromField='isBound' fromNode='Camera_SimpleShotsTest' toField='set_boolean' toNode='NegateCrossHair'/> <ROUTE fromField='isBound' fromNode='Camera_AimPointTest' toField='set_boolean' toNode='NegateCrossHair'/> <ROUTE fromField='inputNegate' fromNode='NegateCrossHair' toField='set_enabled' toNode='CrossHairInstance'/> -->
568            <!-- =============== TODO Launch Prototype Example ============== -->
569            <Anchor description='launch CameraExample sceneparameter='"target=_blank"'   url=' "CameraExample.x3d" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraExample.x3d" "CameraExample.wrl" "https://www.web3d.org/x3d/content/examples/Basic/development/CameraExample.wrl" '>
570                 <Transform translation='0 -3 0'>
571                      <Shape>
572                           <Text string='"CameraPrototype" "defines a prototype" "" "Click on this text to see" "CameraExample scene"'>
573                                <FontStyle justify='"MIDDLE" "MIDDLE"size='0.5'/>
574                           </Text>
575                           <Appearance>
576                                <Material diffuseColor='1 1 0.2'/>
577                           </Appearance>
578                      </Shape>
579                 </Transform>
580            </Anchor>
581       </Scene>
582  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->
<!-- to top DEF nodes index: AnimationGroup_AimPointTest, AnimationGroup_SimpleShots, ArtDeco5, BoomDown, BoomPause, BoxPath, BoxTimer, Camera_AimPointTest, Camera_SimpleShotsTest, CameraBoom, CameraBoomUp, CameraOffsetTransform, CameraShape, CameraShapeTouched, CameraShapeTransform, CameraTilt, CameraTimer_AimPointTest, CameraTimer_SimpleShots, CoordinateAxes, CrossHairInstance, Dolly, DollyMove1, FrustumViewpoint, MoveAimPoint3a, MoveAimPoint3b, MoveAimPoint3c, MoveAimPoint3d, MovingBoxTransform, Pan, PanLeft, PanRight, Shot5, SightLine, SimpleShotsTargets, TargetBoxBoom, TargetBoxDolly, TargetBoxPan, TargetBoxTilt, TargetBoxZoom, TestNavigationInfo, TextTouch_AimPointTest, TextTouch_SimpleShots, TextTouchActive_AimPointFilter, TextTouchActive_SimpleShotsFilter, TiltDown, TiltPause, TiltReset, TiltUp, TransparentBox, Trigger_AimPointTest, Trigger_SimpleShots, ViewFrustumNode, ViewFrustumToggle, Zoom

Index for Viewpoint nodes: Viewpoint_1, Viewpoint_2, FrustumViewpoint

Index for ExternProtoDeclare definitions: Camera, CameraMovement, CameraShot, CrossHair, OfflineRender, ViewFrustum
-->
X3D Tooltips element index: Anchor, Appearance, Background, BooleanFilter, BooleanToggle, Box, Color, Coordinate, DirectionalLight, ExternProtoDeclare, field, fieldValue, FontStyle, Group, head, ImageTexture, IndexedFaceSet, IndexedLineSet, Inline, Material, meta, NavigationInfo, PositionInterpolator, ProtoInstance, ROUTE, Scene, Shape, Text, 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 23 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.

line 302
TouchSensor
description='Click to animate SimpleShotsTest' 
User-interaction hint for this node.(TouchSensor description is providing a tooltip)  

line 467
TouchSensor
description='Click to animate AimPointTest' 
User-interaction hint for this node.(TouchSensor description is providing a tooltip)  

CameraShapeTouched
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
ViewFrustumToggle
BooleanToggle
set_boolean
SFBool
then
 
 
 
ViewFrustumToggle
BooleanToggle
toggle
SFBool

ROUTE
event to
(2)
ViewFrustumNode
ProtoInstance
visible
SFBool

The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=5.
 
ROUTE Camera_AimPointTest.totalDuration TO CameraTimer_AimPointTest.cycleInterval
TextTouch_AimPointTest
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
TextTouchActive_AimPointFilter
BooleanFilter
set_boolean
SFBool
then
 
 
 
TextTouchActive_AimPointFilter
BooleanFilter
inputTrue
SFBool

ROUTE
event to
(2)
Camera_AimPointTest
ProtoInstance
set_bind
SFBool
then
 
 
 
Camera_AimPointTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(3)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_AimPointTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(3)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_AimPointTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(3)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_AimPointTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(3)
CameraTimer_AimPointTest
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(4)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_AimPointTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(5)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_AimPointTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(5)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_AimPointTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(5)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_AimPointTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(5)
CameraTimer_AimPointTest
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(6)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_AimPointTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(7)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_AimPointTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(7)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_AimPointTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(7)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_AimPointTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(7)
CameraTimer_AimPointTest
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(8)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat
TextTouch_AimPointTest
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
CameraTimer_AimPointTest
TimeSensor
startTime
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_AimPointTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(3)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_AimPointTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(3)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_AimPointTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(3)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_AimPointTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(3)
CameraTimer_AimPointTest
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(4)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_AimPointTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(5)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_AimPointTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(5)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_AimPointTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(5)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_AimPointTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(5)
CameraTimer_AimPointTest
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(6)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_AimPointTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(7)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_AimPointTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(7)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_AimPointTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(7)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_AimPointTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(7)
CameraTimer_AimPointTest
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(8)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat

The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=5.
 
ROUTE Camera_SimpleShotsTest.totalDuration TO CameraTimer_SimpleShots.cycleInterval
TextTouch_SimpleShots
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
TextTouchActive_SimpleShotsFilter
BooleanFilter
set_boolean
SFBool
then
 
 
 
TextTouchActive_SimpleShotsFilter
BooleanFilter
inputTrue
SFBool

ROUTE
event to
(2)
Camera_SimpleShotsTest
ProtoInstance
set_bind
SFBool
then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(3)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(3)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(3)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(3)
CameraTimer_SimpleShots
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(4)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(5)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(5)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(5)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(5)
CameraTimer_SimpleShots
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(6)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(7)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(7)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(7)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(7)
CameraTimer_SimpleShots
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(8)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat
TextTouch_SimpleShots
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
CameraTimer_SimpleShots
TimeSensor
startTime
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(3)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(3)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(3)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(3)
CameraTimer_SimpleShots
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(4)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(5)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(5)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(5)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(5)
CameraTimer_SimpleShots
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(6)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(7)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(7)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(7)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(7)
CameraTimer_SimpleShots
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(8)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat

BoxTimer
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
BoxPath
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
BoxPath
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(2)
MovingBoxTransform
Transform
translation
SFVec3f
  then
 
 
 
BoxPath
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(2)
MoveAimPoint3a
ProtoInstance
goalAimPoint
SFVec3f
  then
 
 
 
BoxPath
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(2)
MoveAimPoint3b
ProtoInstance
goalAimPoint
SFVec3f
  then
 
 
 
BoxPath
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(2)
MoveAimPoint3c
ProtoInstance
goalAimPoint
SFVec3f

line 119
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 125
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 131
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 150
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 156
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 181
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 187
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 226
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 244
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 250
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 471
ProtoInstance
OfflineRender
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

BoomDown
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

BoomPause
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

     
The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=3.
 
ROUTE Camera_AimPointTest.totalDuration TO CameraTimer_AimPointTest.cycleInterval
Camera_AimPointTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(1)
CameraTimer_AimPointTest
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_AimPointTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(3)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_AimPointTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(3)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_AimPointTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(3)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_AimPointTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(3)
CameraTimer_AimPointTest
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(4)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_AimPointTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(5)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_AimPointTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(5)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_AimPointTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(5)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_AimPointTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(5)
CameraTimer_AimPointTest
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(6)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_AimPointTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(7)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_AimPointTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(7)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_AimPointTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(7)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_AimPointTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(7)
CameraTimer_AimPointTest
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_AimPointTest
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(8)
Camera_AimPointTest
ProtoInstance
set_fraction
SFFloat
Camera_AimPointTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(1)
CameraShapeTransform
Transform
translation
SFVec3f
Camera_AimPointTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(1)
CameraShapeTransform
Transform
rotation
SFRotation
Camera_AimPointTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(1)
CrossHairInstance
ProtoInstance
set_enabled
SFBool

     
The following ROUTE chain begins an event-routing loop! Loop occurs at nodeDepth=3.
 
ROUTE Camera_SimpleShotsTest.totalDuration TO CameraTimer_SimpleShots.cycleInterval
Camera_SimpleShotsTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(1)
CameraTimer_SimpleShots
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(2)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(3)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(3)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(3)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(3)
CameraTimer_SimpleShots
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(4)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(5)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(5)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(5)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(5)
CameraTimer_SimpleShots
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(6)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat
then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(7)
CrossHairInstance
ProtoInstance
set_enabled
SFBool
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(7)
CameraShapeTransform
Transform
rotation
SFRotation
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(7)
CameraShapeTransform
Transform
translation
SFVec3f
  then
 
 
 
Camera_SimpleShotsTest
ProtoInstance
totalDuration
SFTime

ROUTE
event to
(7)
CameraTimer_SimpleShots
TimeSensor
cycleInterval
SFTime
then
 
 
 
CameraTimer_SimpleShots
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(8)
Camera_SimpleShotsTest
ProtoInstance
set_fraction
SFFloat
Camera_SimpleShotsTest
ProtoInstance
position
SFVec3f

ROUTE
event to
(1)
CameraShapeTransform
Transform
translation
SFVec3f
Camera_SimpleShotsTest
ProtoInstance
orientation
SFRotation

ROUTE
event to
(1)
CameraShapeTransform
Transform
rotation
SFRotation
Camera_SimpleShotsTest
ProtoInstance
isBound
SFBool

ROUTE
event to
(1)
CrossHairInstance
ProtoInstance
set_enabled
SFBool

CameraBoom
ProtoInstance
CameraShot
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

CameraBoomUp
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

CameraTilt
ProtoInstance
CameraShot
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

      CrossHairInstance
ProtoInstance
CrossHair
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

Dolly
ProtoInstance
CameraShot
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

DollyMove1
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

      MoveAimPoint3a
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

      MoveAimPoint3b
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

      MoveAimPoint3c
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

MoveAimPoint3d
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

Pan
ProtoInstance
CameraShot
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

PanLeft
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

PanRight
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

Shot5
ProtoInstance
CameraShot
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

TiltDown
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

TiltPause
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

TiltReset
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

TiltUp
ProtoInstance
CameraMovement
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

      ViewFrustumNode
ProtoInstance
ViewFrustum
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

Zoom
ProtoInstance
CameraShot
No direct ROUTE connection found for events to/from this node.
This ProtoInstance contains SFNode/MFNode fieldValue declarations with
direct access to other nodes, and thus has potential to produce run-time animation. 

line 569
Anchor
description='launch CameraExample scene' 
User-interaction hint for this node. 

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/Basic/development/CameraExamplesIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/development/CameraExamples.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)
    <ProtoInstance name='ProtoName'> <field name='fieldName'/> </ProtoInstance> -->

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