X3D Model Documentation: Example17.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='Interactive' 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='Example17.x3d'/>
  6            <meta name='translatorcontent='Don Brutzman'/>
  7            <meta name='createdcontent='26 June 2000'/>
  8            <meta name='modifiedcontent='28 October 2019'/>
  9            <meta name='creatorcontent='X3D working group'/>
 10            <meta name='descriptioncontent="VRML 97 specification example: VRML provides control of the viewer's camera through use of a script. This is useful for things such as guided tours, merry-go-round rides, and transportation devices such as buses and elevators. These next two examples show a couple of ways to use this feature. This example is a simple guided tour through the world. Upon entry, a guide orb hovers in front of the viewer. Click on this and a tour through the world begins. The orb follows the user around on his tour. A ProximitySensor ensures that the tour is started only if the user is close to the initial starting point. Note that this is done without scripts thanks to the touchTime output of the TouchSensor."/>
 11            <meta name='referencecontent='originals/exampleD_17.wrl'/>
 12            <meta name='specificationSectioncontent='VRML 97, ISO/IEC 14772-1, Part 1: Functional specification and UTF-8 encoding, D.17 Guided tour'/>
 13            <meta name='specificationUrlcontent='https://www.web3d.org/documents/specifications/14772/V2.0/part1/examples.html#D.17'/>
 14            <meta name='identifiercontent='https://www.web3d.org/x3d/content/examples/Basic/Vrml97Specification/Example17.x3d'/>
 15            <meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
 16            <meta name='licensecontent='../license.html'/>
 17       </head>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: GuidePI, GuideRI, GuideTransform, ProxSensor, StartTour, TourGuide, TS

Index for Viewpoint node: TourGuide
-->
 18       <Scene>
 19            <WorldInfo title='Example17.x3d'/>
 20            <Group>
 21                 <Transform translation='0.0 -1.0 0.0'>
 22                      <Shape>
 23                           <Box size='30.0 0.2 30.0'/>
 24                           <Appearance>
 25                                <Material/>
 26                           </Appearance>
 27                      </Shape>
 28                 </Transform>
 29                 <Transform translation='-1.0 0.0 0.0'>
 30                      <Shape>
 31                           <Cone/>
 32                           <Appearance>
 33                                <Material diffuseColor='0.5 0.8 0.0'/>
 34                           </Appearance>
 35                      </Shape>
 36                 </Transform>
 37                 <Transform translation='1.0 0.0 0.0'>
 38                      <Shape>
 39                           <Cylinder/>
 40                           <Appearance>
 41                                <Material diffuseColor='0.0 0.2 0.7'/>
 42                           </Appearance>
 43                      </Shape>
 44                 </Transform>
 45 
               <!-- ROUTE information for GuideTransform node:  [from GuidePI.value_changed to translation ] [from GuideRI.value_changed to rotation ] -->
               <Transform DEF='GuideTransform'>
 46 
                    <!-- ROUTE information for TourGuide node:  [from TS.isActive to set_bind ] -->
                    <Viewpoint DEF='TourGuidedescription='Tour Guidejump='false'/>
 47 
                    <!-- ROUTE information for ProxSensor node:  [from isActive to StartTour.enabled ] -->
                    <ProximitySensor DEF='ProxSensorsize='50.0 50.0 50.0'/>
 48 
                    <!-- ROUTE information for StartTour node:  [from ProxSensor.isActive to enabled ] [from touchTime to TS.startTime ] -->
                    <TouchSensor DEF='StartTourdescription='touch to start guided tour'/>
 49                      <Transform translation='0.6 0.4 8.0'>
 50                           <Shape>
 51                                <Sphere radius='0.2'/>
 52                                <Appearance>
 53                                     <Material diffuseColor='1.0 0.6 0.0'/>
 54                                </Appearance>
 55                           </Shape>
 56                      </Transform>
 57                 </Transform>
 58            </Group>
 59 
          <!-- ROUTE information for GuidePI node:  [from TS.fraction_changed to set_fraction ] [from value_changed to GuideTransform.translation ] -->
          <PositionInterpolator DEF='GuidePIkey='0.0 0.2 0.3 0.5 0.6 0.8 0.9 1.0keyValue='0.0 0.0 0.0 0.0 0.0 -5.0 2.0 0.0 -5.0 2.0 6.0 -15.0 -4.0 6.0 -15.0 -4.0 0.0 -5.0 0.0 0.0 -5.0 0.0 0.0 0.0'/>
 60 
          <!-- ROUTE information for GuideRI node:  [from TS.fraction_changed to set_fraction ] [from value_changed to GuideTransform.rotation ] -->
          <OrientationInterpolator DEF='GuideRIkey='0.0 0.2 0.3 0.5 0.6 0.8 0.9 1.0keyValue='0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 1.2 0.0 1.0 0.0 3.0 0.0 1.0 0.0 3.5 0.0 1.0 0.0 5.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0'/>
 61 
          <!-- ROUTE information for TS node:  [from StartTour.touchTime to startTime ] [from isActive to TourGuide.set_bind ] [from fraction_changed to GuidePI.set_fraction ] [from fraction_changed to GuideRI.set_fraction ] -->
          <TimeSensor DEF='TScycleInterval='30.0'/>
 62            < ROUTE  fromNode='ProxSensor' fromField='isActive' toNode='StartTour' toField='enabled'/>
 63            < ROUTE  fromNode='StartTour' fromField='touchTime' toNode='TS' toField='startTime'/>
 64            < ROUTE  fromNode='TS' fromField='isActive' toNode='TourGuide' toField='set_bind'/>
 65            < ROUTE  fromNode='TS' fromField='fraction_changed' toNode='GuidePI' toField='set_fraction'/>
 66            < ROUTE  fromNode='TS' fromField='fraction_changed' toNode='GuideRI' toField='set_fraction'/>
 67            < ROUTE  fromNode='GuidePI' fromField='value_changed' toNode='GuideTransform' toField='translation'/>
 68            < ROUTE  fromNode='GuideRI' fromField='value_changed' toNode='GuideTransform' toField='rotation'/>
 69       </Scene>
 70  </X3D>
<!--

<!--
Event Graph ROUTE Table shows event connections.
-->

<!-- to top Index for DEF nodes: GuidePI, GuideRI, GuideTransform, ProxSensor, StartTour, TourGuide, TS

Index for Viewpoint node: TourGuide
-->
X3D Tooltips element index: Appearance, Box, Cone, Cylinder, Group, head, Material, meta, OrientationInterpolator, PositionInterpolator, ProximitySensor, ROUTE, Scene, Shape, Sphere, TimeSensor, TouchSensor, Transform, Viewpoint, WorldInfo, X3D, accessType and type, XML data types, 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.

StartTour
TouchSensor
touchTime
SFTime

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

ROUTE
event to
(2)
GuidePI
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
GuidePI
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(3)
GuideTransform
Transform
translation
SFVec3f
  then
 
 
 
TS
TimeSensor
fraction_changed
SFFloat

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

ROUTE
event to
(3)
GuideTransform
Transform
rotation
SFRotation
  then
 
 
 
TS
TimeSensor
isActive
SFBool

ROUTE
event to
(2)
TourGuide
Viewpoint
set_bind
SFBool

ProxSensor
ProximitySensor
isActive
SFBool

ROUTE
event to
(1)
StartTour
TouchSensor
enabled
SFBool
then
 
 
 
StartTour
TouchSensor
touchTime
SFTime

ROUTE
event to
(2)
TS
TimeSensor
startTime
SFTime
then
 
 
 
TS
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(3)
GuidePI
PositionInterpolator
set_fraction
SFFloat
then
 
 
 
GuidePI
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(4)
GuideTransform
Transform
translation
SFVec3f
  then
 
 
 
TS
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(3)
GuideRI
OrientationInterpolator
set_fraction
SFFloat
then
 
 
 
GuideRI
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(4)
GuideTransform
Transform
rotation
SFRotation
  then
 
 
 
TS
TimeSensor
isActive
SFBool

ROUTE
event to
(3)
TourGuide
Viewpoint
set_bind
SFBool
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/Vrml97Specification/Example17Index.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/Vrml97Specification/Example17.x3d -->

<!-- Color legend: X3D terminology <X3dNode DEF='idName' field='value'/> matches XML terminology <XmlElement DEF='idName' attribute='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. -->