<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.2//EN" "https://www.web3d.org/specifications/x3d-3.2.dtd">
<X3D profile='Immersive'  version='3.2 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-3.2.xsd ' >
<head>
<component level='3name='Navigation'/>
<meta name='titlecontent=' Web3dTimeline.x3d '/>
<meta name='infocontent='Presenters can edit events under TimelineEventsGroup.'/>
<meta name='descriptioncontent='Time line of X3D history with a viewpoint for each milestone. Use PgDown and PgUp to look through each viewpoint. Clicking (selecting) text for any milestone binds that viewpoint, then returns to prior milestone when unclicked (deselected).'/>
<meta name='creatorcontent='Don Brutzman, Anita Havele, Johannes Behr, Byounghyun Yoo'/>
<meta name=' TODO content=' BS Contact BitManagement Bug Report, problem with .x3dv encoding http://www.bitmanagement.de/en/contact '/>
<meta name='createdcontent='28 July 2008'/>
<meta name='modifiedcontent='20 October 2019'/>
<meta name='Imagecontent='Web3dTimelineEntryView.png' />
<meta name='Imagecontent='Web3dTimelinePanorama.png' />
<meta name='infocontent='Point paper by Anita Havele and Don Brutzman'/>
<meta name='referencecontent=' Declarative3dTimelineSceneUseCaseHaveleBrutzman.pdf '/>
<meta name='referencecontent='Declarative3dTimelineSceneUseCaseHaveleBrutzman.doc'/>
<meta name='referencecontent=' http://events.declarative3d.org/Dec3D2012 '/>
<meta name='infocontent='Corresponding X3DOM translation by Nils Michaelis of Fraunhofer'/>
<meta name='referencecontent=' http://examples.x3dom.org/x3dTimeLine '/>
<meta name='referencecontent=' http://examples.x3dom.org/x3dTimeLine/timeline.js '/>
<meta name='referencecontent=' http://examples.x3dom.org/x3dTimeLine/timeline.css '/>
<meta name='referencecontent=' http://examples.x3dom.org/x3dTimeLine/timestamps.txt '/>
<meta name=' TODO content=' side by side scene and information page, as adjacent frames in HTML parent '/>
<meta name=' TODO content=' better images '/>
<meta name=' TODO content=' hidden attribute '/>
<meta name=' TODO content=' confirm dates and events '/>
<meta name='identifiercontent=' https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/Web3dTimeline.x3d '/>
<meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='licensecontent=' ../license.html'/>
</head>
<!-- -->
<Scene>
<WorldInfo title='Web3D Timeline'/>
<Background groundColor='1 1 1skyColor='1 1 1'/>
<DirectionalLight direction='0 -0.5 -1'/>
<Viewpoint DEF='OverviewViewpointdescription='Web3D Timelineorientation='-0.33 0.94 0 0.4position='18 8 21'/>
<!-- <Fog visibilityRange='2000'/> <Viewpoint DEF='vp2' description='Starting view' position='3 10 20'/> -->
<Group DEF='InitialSetupAndPrototype'>
<!-- floor -->
<Transform translation='0 0 -50'>
<Shape>
<Appearance>
<Material diffuseColor='1 1 1emissiveColor='1 1 1'/>
<ImageTexture
  url=' "images/lines.png " "https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/lines.png " ' />

<TextureTransform rotation='1.57'/>
</Appearance>
<Box size='125 0.01 125'/>
</Shape>
</Transform>
<ProtoDeclare name='TimelineElement'>
<ProtoInterface>
<field name='nametype='MFStringaccessType='inputOutput'
 appinfo='Name for this timeline element' />

<field name='titletype='MFStringaccessType='inputOutput'
 appinfo='Displayed title' />

<field name='descriptiontype='SFStringaccessType='inputOutput'
 appinfo='Viewpoint, Anchor description' />

<field name='hiddentype='SFBoolvalue='falseaccessType='inputOutput'
 appinfo='Whether to hide this entry. TODO: is Viewpoint hidden also?' />

<field name='imageUrltype='MFStringaccessType='inputOutput'
 appinfo='"Link to display image"' />

<field name='soundUrltype='MFStringaccessType='inputOutput'
 appinfo='"Link to narrative"' />

<field name='referenceUrltype='MFStringaccessType='inputOutput'
 appinfo='"Link to reference, launched in separate frame"' />

<field name='imagePixelHeighttype='SFInt32value='0accessType='inputOutput'
 appinfo='author must initialize' />

<field name='imagePixelWidthtype='SFInt32value='0accessType='inputOutput'
 appinfo='author must initialize' />

<field name='translationtype='SFVec3fvalue='0 0 0accessType='inputOutput'
 appinfo='default value 0 0 0' />
</ProtoInterface>
<ProtoBody>
<Transform DEF='RootTransform'>
<IS>
<connect nodeField='translationprotoField='translation'/>
</IS>
<!-- TODO try to omit this viewpoint from scene's active list of viewpoints if hidden='true' -->
<Switch DEF='HideSwitchwhichChoice='0'>
<!-- ROUTE information for TimelineElementViewpointGroup node:  [from TimelineElementScript.displayViewpointGroup to displayed ] -->
<ViewpointGroup DEF='TimelineElementViewpointGroupcontainerField='children'>
<!-- test ability to hide in BSContact -->
</ViewpointGroup>
</Switch>
<!-- ROUTE information for TimelineElementViewpoint node:  [from TouchViewpointSelectBooleanFilter.inputTrue to set_bind ] -->
<Viewpoint DEF='TimelineElementViewpointposition='2 3 14'>
<IS>
<connect nodeField='descriptionprotoField='description'/>
</IS>
</Viewpoint>
<!-- ROUTE information for proximity node:  [from isActive to it0.set_boolean ] [from exitTime to bt.set_triggerTime ] -->
<ProximitySensor DEF='proximitycenter='0 0 12size='40 40 13'/>

<Transform translation='-0.2 -0.3 0'>
<Shape>
<Appearance>
<Material DEF='NameMaterialdiffuseColor='0.619608 0.258824 0'/>
</Appearance>
<Text>
<IS>
<connect nodeField='stringprotoField='name'/>
</IS>
<FontStyle family='"SANS"justify='"END" "FIRST"size='1.5spacing='0.8'/>
</Text>
</Shape>
</Transform>
<Transform translation='0.2 0 0'>
<Shape>
<Appearance>
<Material DEF='TitleMaterialdiffuseColor='0 0.184314 0.658824'/>
</Appearance>
<Text>
<IS>
<connect nodeField='stringprotoField='title'/>
</IS>
<FontStyle family='"SANS"justify='"BEGIN" "FIRST"size='0.9'/>
</Text>
</Shape>
</Transform>
<Group>
<!-- ROUTE information for TouchToView node:  [from isActive to TouchViewpointSelectBooleanFilter.set_boolean ] -->
<TouchSensor DEF='TouchToViewdescription='touch to view'/>

<!-- ROUTE information for TouchViewpointSelectBooleanFilter node:  [from TouchToView.isActive to set_boolean ] [from inputTrue to TimelineElementViewpoint.set_bind ] -->
<BooleanFilter DEF='TouchViewpointSelectBooleanFilter'/>

< ROUTE  fromNode=' TouchToView' fromField='isActive' toNode=' TouchViewpointSelectBooleanFilter' toField='set_boolean'/>
< ROUTE  fromNode=' TouchViewpointSelectBooleanFilter' fromField='inputTrue' toNode=' TimelineElementViewpoint' toField='set_bind'/>
<Shape DEF='TransparentTouchForNameTitleShape'>
<Box size='8 3 0.1'/>
<Appearance>
<Material transparency='1'/>
</Appearance>
</Shape>
</Group>
<Group>
<Transform DEF='HideBackgroundTextTransformscale='12 8 0.01translation='0 3.5 -0.5'>
<!-- Hide other TimeLineElement entries that are behind this one -->
<Shape>
<Appearance>
<Material diffuseColor='1 1 1'/>
</Appearance>
<!-- hide next entry, but try not to chop of dates from perspective view -->
<Box size='0.9 1 0.01'/>
</Shape>
</Transform>
<Transform DEF='ImageTransformscale='8 8 0.01translation='-4 1 0'>
<Anchor parameter='"target=Web3dTimelineReferenceFrame"'>
<IS>
<connect nodeField='urlprotoField='referenceUrl'/>
<connect nodeField='descriptionprotoField='description'/>
</IS>
<Shape>
<Appearance>
<Material diffuseColor='1 1 1emissiveColor='1 1 1'/>
<ImageTexture>
<IS>
<connect nodeField='urlprotoField='imageUrl'/>
</IS>
</ImageTexture>
</Appearance>
<IndexedFaceSet DEF='ImageIFSsolid='falsecoordIndex='0 1 2 3 -1'>
<!-- ROUTE information for ImageCoordinate node:  [from TimelineElementScript.pointArray to point ] -->
<Coordinate DEF='ImageCoordinate'/>

<TextureCoordinate point='0 0 0 1 1 1 1 0'/>
</IndexedFaceSet>
</Shape>
</Anchor>
</Transform>
</Group>
<Group DEF='EmptyNode'/>
</Switch>
<!-- ROUTE information for bt node:  [from proximity.exitTime to set_triggerTime ] [from triggerTrue to it1.set_boolean ] -->
<BooleanTrigger DEF='bt'/>

<!-- ROUTE information for it0 node:  [from proximity.isActive to set_boolean ] [from triggerValue to TimelineElementSwitch.whichChoice ] -->
<IntegerTrigger DEF='it0integerKey='0'/>

<!-- ROUTE information for it1 node:  [from bt.triggerTrue to set_boolean ] [from triggerValue to TimelineElementSwitch.whichChoice ] -->
<IntegerTrigger DEF='it1integerKey='1'/>

< ROUTE  fromNode=' proximity' fromField='isActive' toNode=' it0' toField='set_boolean'/>
< ROUTE  fromNode=' it0' fromField='triggerValue' toNode=' TimelineElementSwitch' toField='whichChoice'/>
< ROUTE  fromNode=' proximity' fromField='exitTime' toNode=' bt' toField='set_triggerTime'/>
< ROUTE  fromNode=' bt' fromField='triggerTrue' toNode=' it1' toField='set_boolean'/>
< ROUTE  fromNode=' it1' fromField='triggerValue' toNode=' TimelineElementSwitch' toField='whichChoice'/>
</Transform>
<!-- This embedded Script computes and updates IFS/Coordinate geometry dimensions to match image size -->
<field name='nametype='MFStringaccessType='inputOutput'/>
<field name='imagePixelHeighttype='SFInt32accessType='inputOutput'
 appinfo='default value 0' />

<field name='imagePixelWidthtype='SFInt32accessType='inputOutput'
 appinfo='default value 0' />

<field name='hiddentype='SFBoolaccessType='inputOutput'
 appinfo='Whether to hide this entry. TODO: is Viewpoint hidden also?' />

<field name='traceEnabledtype='SFBoolvalue='falseaccessType='inputOutput'
 appinfo='debug trace to Browser output console' />

<field name='pointArraytype='MFVec3faccessType='outputOnly'
 appinfo='compute scale based on image pixel height, width' />

<field name='hideSwitchChoicetype='SFInt32accessType='outputOnly'
 appinfo='hide node if hidden' />

<field name='displayViewpointGrouptype='SFBoolaccessType='outputOnly'
 appinfo='display Viewpoint if not hidden' />

<IS>
<connect nodeField='nameprotoField='name'/>
<connect nodeField='imagePixelHeightprotoField='imagePixelHeight'/>
<connect nodeField='imagePixelWidthprotoField='imagePixelWidth'/>
<connect nodeField='hiddenprotoField='hidden'/>
</IS>
<![CDATA[
            
ecmascript:

function initialize ()
{
    computePointArray ();
    
    hide ();

    tracePrint ('initialization() successful');
}
function computePointArray ()
{
    if ((imagePixelHeight <= 0) || (imagePixelWidth <= 0))
    {
        tracePrint ('cannot compute new scale, imagePixelHeight=' + imagePixelHeight.toString() + ', imagePixelWidth=' + imagePixelWidth.toString());
        return;
    }
    else if (imagePixelHeight < imagePixelWidth)
    {
        height = imagePixelHeight/imagePixelWidth;
        width  = 1.0;
    }
    else if (imagePixelHeight > imagePixelWidth)
    {
        height = 1.0;
        width  = imagePixelWidth/imagePixelHeight;
    }
    else // same
    {
        height = 1.0;
        width  = 1.0;
    }
    p0 = new SFVec3f (0.0,   0.0,    0.0);
    p1 = new SFVec3f (0.0,   height, 0.0);
    p2 = new SFVec3f (width, height, 0.0);
    p3 = new SFVec3f (width, 0.0,    0.0);
    pointArray = new MFVec3f (p0, p1, p2, p3);
    tracePrint ('computed new ImageCoordinate.point=' + pointArray.toString());
    
    if (hidden)
    {
        hideSwitchChoice = -1;
    }
}
function set_imagePixelHeight (eventValue)
{
    computePointArray ();
}
function set_imagePixelWidth (eventValue)
{
    computePointArray ();
}

function set_name (eventValue)
{
   // input eventValue received for inputOutput field
    name = eventValue;
}
function hide ()
{
    // input eventValue received for inputOutput field
    tracePrint ("set_hidden: hidden=" + hidden);
    if (hidden)
    {
         hideSwitchChoice      = -1;
         displayViewpointGroup = false;
    }
    else
    {
        hideSwitchChoice      = 0;
        displayViewpointGroup = true;
    }
}

function set_hidden (eventValue)
{
    hidden = eventValue;
    hide ();
}
// ================== Trace output functions ==================

function tracePrint (outputString)
{
   // if traceEnabled is true, print outputString on X3D browser console
   if (traceEnabled)
      Browser.println ('[TimelineElementScript ' + name.toString() + ': ' + outputString.toString() + ']');
}
function alwaysPrint (outputString)
{
      // always print outputString on X3D browser console
      Browser.println ('[TimelineElementScript ' + name.toString() + ': ' + outputString.toString() + ']');
}
function set_traceEnabled (eventValue)
{
      // input eventValue received for inputOutput field
      traceEnabled = eventValue;
}
// ===========================================================

          
]]>
</Script>
< ROUTE  fromNode=' TimelineElementScript' fromField='pointArray' toNode=' ImageCoordinate' toField='point'/>
< ROUTE  fromNode=' TimelineElementScript' fromField='hideSwitchChoice' toNode=' TimelineElementSwitch' toField='whichChoice'/>
< ROUTE  fromNode=' TimelineElementScript' fromField='displayViewpointGroup' toNode=' TimelineElementViewpointGroup' toField='displayed'/>
</ProtoBody>
</ProtoDeclare>
</Group>
<Transform DEF='TimelineEventsGrouptranslation='0 5 0'>
<!-- Depends on the audience, but Len suggests removal of the following for most audiences: 1) 1997 Community 2) 1999 MPEG 3) 2005 April (membership & IPR) Add x3dom - year? X3D V3.3 (Volume, Units) - 2012 -->
<!-- 1994 -->
<ProtoInstance name='TimelineElementDEF='Slide1_VRML1.0'>
<fieldValue name='namevalue='"1994"'/>
<fieldValue name='titlevalue='"SIGGRAPH meeting " "VRML 1.0 Specification"'/>
<fieldValue name='descriptionvalue='Community effort adapted SGI OpenInventor'/>
<fieldValue name='imageUrlvalue=' "images/vrml.banner.gif"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/vrml.banner.gif" '/>

<fieldValue name='imagePixelHeightvalue='130'/>
<fieldValue name='imagePixelWidthvalue='560'/>
<fieldValue name='referenceUrlvalue=' "https://www.web3d.org/x3d/specifications/vrml/VRML1.0" '/>
<!-- ensure MFString referenceUrl value is surrounded by "quotation marks"
-->
</ProtoInstance>
<!-- 1997 -->
<ProtoInstance name='TimelineElementDEF='Slide2_VRML2.0'>
<fieldValue name='translationvalue='0 0 -15'/>
<fieldValue name='namevalue='"1997"'/>
<fieldValue name='titlevalue='"VRML 2.0" "Community standard"'/>
<fieldValue name='descriptionvalue='VRML 2.0 revised the VRML 1 architecture for better performance'/>
<fieldValue name='imageUrlvalue=' "images/vrml97.gif"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/vrml97.gif" '/>

<fieldValue name='imagePixelHeightvalue='85'/>
<fieldValue name='imagePixelWidthvalue='470'/>
<fieldValue name='referenceUrlvalue=' "http://new.web3d.org/files/specifications/14772/V2.0" '/>
</ProtoInstance>
<!-- 1997 -->
<ProtoInstance name='TimelineElementDEF='Slide3_VRML97'>
<fieldValue name='translationvalue='0 0 -30'/>
<fieldValue name='namevalue='"1997"'/>
<fieldValue name='titlevalue='"VRML 97" "International Standard"'/>
<fieldValue name='descriptionvalue='VRML 2.0 became the VRML 97 ISO International Standard'/>
<fieldValue name='imageUrlvalue=' "images/vrml97-0.gif"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/vrml97-0.gif" '/>

<fieldValue name='imagePixelHeightvalue='85'/>
<fieldValue name='imagePixelWidthvalue='470'/>
<fieldValue name='referenceUrlvalue=' "http://new.web3d.org/files/specifications/14772/V2.0" '/>
</ProtoInstance>
<!-- 1999 -->
<ProtoInstance name='TimelineElementDEF='Slide4_MPEG-4'>
<fieldValue name='translationvalue='0 0 -45'/>
<fieldValue name='namevalue='"1999"'/>
<fieldValue name='titlevalue='"MPEG-4" "Interactive Profile"'/>
<fieldValue name='descriptionvalue='MPEG-4 adopted an X3D subset for encoding 3D graphics'/>
<fieldValue name='hiddenvalue='true'/>
<fieldValue name='imageUrlvalue=' "images/mpeg_logo_bw.gif"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/mpeg_logo_bw.gif" '/>

<fieldValue name='referenceUrlvalue=' "https://www.web3d.org/files/specifications/19775-1/V3.2/Part01/MPEG4interactive.html" "http://www.ece.cmu.edu/~ee899/project/jie_sem/index.html" '/>
<fieldValue name='imagePixelHeightvalue='74'/>
<fieldValue name='imagePixelWidthvalue='256'/>
<!-- only first available choice in url array will be launched -->
</ProtoInstance>
<!-- 2001 -->
<ProtoInstance name='TimelineElementDEF='Slide5_X3dDesign'>
<fieldValue name='translationvalue='0 0 -60'/>
<fieldValue name='namevalue='"2001"'/>
<fieldValue name='titlevalue='"X3D architecture design" "Extensible 3D Graphics"'/>
<fieldValue name='descriptionvalue='X3D architecture extensions to VRML defined'/>
<fieldValue name='imageUrlvalue=' "images/x3d2-s.gif"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/x3d2-s.gif" '/>

<fieldValue name='imagePixelHeightvalue='97'/>
<fieldValue name='imagePixelWidthvalue='154'/>
<fieldValue name='referenceUrlvalue=' "https://www.web3d.org/about/faq" '/>
</ProtoInstance>
<!-- December 2004 -->
<ProtoInstance name='TimelineElementDEF='Slide6_X3dEncoding'>
<fieldValue name='translationvalue='0 0 -75'/>
<fieldValue name='namevalue='"2004" "December"'/>
<fieldValue name='titlevalue='".x3d Encoding" "XML Validation"'/>
<fieldValue name='descriptionvalue='XML-X3D'/>
<fieldValue name='imageUrlvalue=' "images/X3dSpecificationLogo.png"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/X3dSpecificationLogo.png" '/>

<fieldValue name='imagePixelHeightvalue='88'/>
<fieldValue name='imagePixelWidthvalue='176'/>
<fieldValue name='referenceUrlvalue=' "http://www.w3.org/XML/1999/XML-in-10-points.html" "https://www.web3d.org/files/specifications/19776-1/V3.2/Part01/X3D_XML.html" '/>
<!-- only first available choice in url array will be launched -->
</ProtoInstance>
<!-- 2005 -->
<ProtoInstance name='TimelineElementDEF='Slide7_Web3DConsortium'>
<fieldValue name='translationvalue='0 0 -90'/>
<fieldValue name='namevalue='"2005" "April"'/>
<fieldValue name='titlevalue='"Web3D Consortium" "Non-profit Membership" "Royalty-Free IPR Policy"'/>
<fieldValue name='descriptionvalue='Web3D Intellectual Property Rights Policy keeps X3D royalty free for any use'/>
<fieldValue name='imageUrlvalue=' "images/web3d-Consortium-3dlogo.jpg"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/web3d-Consortium-3dlogo.jpg" '/>

<fieldValue name='imagePixelHeightvalue='108'/>
<fieldValue name='imagePixelWidthvalue='214'/>
<fieldValue name='referenceUrlvalue=' "https://www.web3d.org/realtime-3d/about/legal" '/>
<!-- 1072 x 540 -->
</ProtoInstance>
<!-- November 2005 -->
<ProtoInstance name='TimelineElementDEF='Slide8_X3dStandard'>
<fieldValue name='translationvalue='0 0 -105'/>
<fieldValue name='namevalue='"2005" "November"'/>
<fieldValue name='titlevalue='"X3D Graphics Standard" "version 3.0" "ISO approved"'/>
<fieldValue name='descriptionvalue='X3D version 3.0'/>
<fieldValue name='imageUrlvalue=' "images/X3dSpecificationLogo.png"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/X3dSpecificationLogo.png" '/>

<fieldValue name='imagePixelHeightvalue='88'/>
<fieldValue name='imagePixelWidthvalue='176'/>
<fieldValue name='referenceUrlvalue=' "https://www.web3d.org/realtime-3d/specification/current" '/>
</ProtoInstance>
<!-- 2006 -->
<ProtoInstance name='TimelineElementDEF='Slide9_SceneAcessInterface'>
<fieldValue name='translationvalue='0 0 -120'/>
<fieldValue name='namevalue='"2006" "April"'/>
<fieldValue name='titlevalue='"Scene Acess Interface:" "SAI for JavaScript Java"'/>
<fieldValue name='descriptionvalue='SAI APIs provide consistent X3D code access using JavaScript or Java'/>
<fieldValue name='imageUrlvalue=' "images/X3dAnywhere_150_138.gif"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/X3dAnywhere_150_138.gif" '/>

<fieldValue name='imagePixelHeightvalue='138'/>
<fieldValue name='imagePixelWidthvalue='150'/>
<fieldValue name='referenceUrlvalue=' "https://www.web3d.org/files/specifications/19777-1/V3.0/Part1/X3D_ECMAScript.html" '/>
</ProtoInstance>
<!-- December 2006 -->
<ProtoInstance name='TimelineElementDEF='Slide10_X3dVersion3.1'>
<fieldValue name='translationvalue='0 0 -135'/>
<fieldValue name='namevalue='"2006" "December"'/>
<fieldValue name='titlevalue='"X3D" "version 3.1"'/>
<fieldValue name='descriptionvalue='Computer Aided Design (CAD) 3D Textures and Shaders support'/>
<fieldValue name='imageUrlvalue=' "images/logo_iso.gif"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/logo_iso.gif" '/>

<fieldValue name='imagePixelHeightvalue='58'/>
<fieldValue name='imagePixelWidthvalue='202'/>
<fieldValue name='referenceUrlvalue=' "https://www.web3d.org/files/specifications/19775-1/V3.1/index.html" '/>
<!-- Web3dBanner.jpg 864 x 432, reduced 216 x 106 -->
</ProtoInstance>
<!-- 2007 -->
<ProtoInstance name='TimelineElementDEF='Slide11_X3dForWebAuthors'>
<fieldValue name='translationvalue='0 0 -150'/>
<fieldValue name='namevalue='"2007" "March"'/>
<fieldValue name='titlevalue='"X3D for Web Authors" "Book slides examples" "Don Brutzman Leonard Daly"'/>
<fieldValue name='descriptionvalue='X3D for Web Authors book slidesets example scenes and video Don Brutzman and Leonard Daly'/>
<fieldValue name='imageUrlvalue=' "images/X3dForWebAuthorsBookCoverScan.400x498.jpg"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/X3dForWebAuthorsBookCoverScan.400x498.jpg" '/>

<fieldValue name='imagePixelHeightvalue='125'/>
<fieldValue name='imagePixelWidthvalue='100'/>
<fieldValue name='referenceUrlvalue=' "https://x3dgraphics.com" '/>
</ProtoInstance>
<!-- December 2007 -->
<ProtoInstance name='TimelineElementDEF='Slide12_X3dCompressedBinaryEncoding'>
<fieldValue name='translationvalue='0 0 -165'/>
<fieldValue name='namevalue='"2007" "December"'/>
<fieldValue name='titlevalue='"X3D Compressed" "Binary Encoding (CBE)" "for geometry and data"'/>
<fieldValue name='descriptionvalue='X3D Compressed Binary Encoding provides geometric and XML compression'/>
<fieldValue name='imageUrlvalue=' "images/CadTeapot.png"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/CadTeapot.png" '/>

<fieldValue name='imagePixelHeightvalue='243'/>
<fieldValue name='imagePixelWidthvalue='427'/>
<fieldValue name='referenceUrlvalue=' "http://web3d.org/x3d/wiki/index.php/X3D_Binary_Compression_Capabilities_and_Plans" '/>
</ProtoInstance>
<!-- 2008 -->
<ProtoInstance name='TimelineElementDEF='Slide13_X3dEarth'>
<fieldValue name='translationvalue='0 0 -180'/>
<fieldValue name='namevalue='"2008" "March"'/>
<fieldValue name='titlevalue='"X3D Earth" "Geospatial Component"'/>
<fieldValue name='descriptionvalue='X3D Earth working group has built a Geospatial component for X3D'/>
<fieldValue name='imageUrlvalue=' "images/x3d-earth.jpg"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/x3d-earth.jpg" '/>

<fieldValue name='imagePixelHeightvalue='368'/>
<fieldValue name='imagePixelWidthvalue='368'/>
<fieldValue name='referenceUrlvalue=' "https://www.web3d.org/realtime-3d/working-groups/x3d-earth" '/>
</ProtoInstance>
<!-- June 2008 -->
<ProtoInstance name='TimelineElementDEF='Slide14_X3dVersion3.2'>
<fieldValue name='translationvalue='0 0 -195'/>
<fieldValue name='namevalue='"2008" "June"'/>
<fieldValue name='titlevalue='"X3D" "version 3.2"'/>
<fieldValue name='descriptionvalue='X3D v3.2 is the current version of X3D in common use'/>
<fieldValue name='imageUrlvalue=' "images/logo_iso.gif"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/logo_iso.gif" '/>

<fieldValue name='imagePixelHeightvalue='58'/>
<fieldValue name='imagePixelWidthvalue='202'/>
<fieldValue name='referenceUrlvalue=' "https://www.web3d.org/files/specifications/19775-1/V3.2/Part01/Architecture.html" '/>
</ProtoInstance>
<!-- February 2009 -->
<ProtoInstance name='TimelineElementDEF='Slide15_DICOM'>
<fieldValue name='translationvalue='0 0 -210'/>
<fieldValue name='namevalue='"2009" "February"'/>
<fieldValue name='titlevalue='"X3D and DICOM" "Medical standards"'/>
<fieldValue name='descriptionvalue='X3D volume visualization for DICOM'/>
<fieldValue name='imageUrlvalue=' "images/DicomLogo.png"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/DicomLogo.png" '/>

<fieldValue name='imagePixelHeightvalue='105'/>
<fieldValue name='imagePixelWidthvalue='377'/>
<fieldValue name='referenceUrlvalue=' "http://medical.nema.org" '/>
</ProtoInstance>
<!-- March 2010 -->
<ProtoInstance name='TimelineElementDEF='Slide16_X3DOM'>
<fieldValue name='translationvalue='0 0 -225'/>
<fieldValue name='namevalue='"2010" "March"'/>
<fieldValue name='titlevalue='"X3DOM" "development begins"'/>
<fieldValue name='descriptionvalue='X3DOM maps X3D to HTML5'/>
<fieldValue name='imageUrlvalue=' "images/X3domTeaser.png"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/X3domTeaser.png" "http://www.x3dom.org/wp-content/uploads/2009/10/teaser.png" '/>

<fieldValue name='imagePixelHeightvalue='370'/>
<fieldValue name='imagePixelWidthvalue='270'/>
<fieldValue name='referenceUrlvalue=' "http://www.x3dom.org" '/>
</ProtoInstance>
<!-- June 2011 -->
<ProtoInstance name='TimelineElementDEF='Slide17_X3dAugmentedReality'>
<fieldValue name='translationvalue='0 0 -240'/>
<fieldValue name='namevalue='"2011" "June"'/>
<fieldValue name='titlevalue='"X3D AR" "Augmented Reality"'/>
<fieldValue name='descriptionvalue='Augmented Reality working group efforts'/>
<fieldValue name='imageUrlvalue=' "images/X3dArImage4.jpg"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/X3dArImage4.jpg" '/>

<fieldValue name='imagePixelHeightvalue='120'/>
<fieldValue name='imagePixelWidthvalue='168'/>
<fieldValue name='referenceUrlvalue=' "https://www.web3d.org/realtime-3d/working-groups/augmented-reality-ar" '/>
</ProtoInstance>
<!-- November 2011 -->
<ProtoInstance name='TimelineElementDEF='Slide18_Declarative3D'>
<fieldValue name='translationvalue='0 0 -255'/>
<fieldValue name='namevalue='"2011" "November"'/>
<fieldValue name='titlevalue='"Declarative 3D" "W3C Community Group"'/>
<fieldValue name='descriptionvalue='W3C Community Group efforts for Declarative 3D begin'/>
<fieldValue name='imageUrlvalue=' "images/W3cCommunityGroupLogo.png"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/W3cCommunityGroupLogo.png" '/>

<fieldValue name='imagePixelHeightvalue='91'/>
<fieldValue name='imagePixelWidthvalue='209'/>
<fieldValue name='referenceUrlvalue=' "http://www.w3.org/community/declarative3d" '/>
</ProtoInstance>
<!-- April 2012 -->
<ProtoInstance name='TimelineElementDEF='Slide19_WWW2012'>
<fieldValue name='translationvalue='0 0 -270'/>
<fieldValue name='namevalue='"2012" "April"'/>
<fieldValue name='titlevalue='"WWW 2012 Workshop" "on Declarative 3D"'/>
<fieldValue name='descriptionvalue='X3D v3.2 is draft international standard'/>
<fieldValue name='imageUrlvalue=' "images/Www2012Logo.png"
"https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/images/Www2012Logo.png" '/>

<fieldValue name='imagePixelHeightvalue='170'/>
<fieldValue name='imagePixelWidthvalue='348'/>
<fieldValue name='referenceUrlvalue=' "http://events.declarative3d.org/Dec3D2012" '/>
</ProtoInstance>
</Transform>
<!-- Web3D 3D logo -->
<Transform DEF='trans_web3dlogorotation='0 1 0 3.14scale='0.7 0.7 0.7translation='14 9.4 12'>
<Group>
<!-- TODO Animation to spin logo, user-controllable or in different place -->
<Billboard axisOfRotation='0 0 0'>
<!-- ROUTE information for Web3dLogoTransform node:  [from Web3dLogoSpinner.value_changed to set_rotation ] -->
<Transform DEF='Web3dLogoTransformscale='0.6 0.6 0.6'>
<!-- TODO White box behind -->
<Anchor parameter='"target=Web3dTimelineReferenceFrame"'
  url=' "https://www.web3d.org" ' >
</Anchor>
<!-- ROUTE information for Web3dLogoSpinner node:  [from Web3dLogoClock.fraction_changed to set_fraction ] [from value_changed to Web3dLogoTransform.set_rotation ] -->
<OrientationInterpolator DEF='Web3dLogoSpinnerkey='0 0.3333 0.6667 1keyValue='0 1 0 0 0 1 0 2.094395 0 1 0 4.18879 0 1 0 0'/>

<!-- ROUTE information for Web3dLogoClock node:  [from fraction_changed to Web3dLogoSpinner.set_fraction ] -->
<TimeSensor DEF='Web3dLogoClockcycleInterval='30loop='true'/>

< ROUTE  fromNode=' Web3dLogoSpinner' fromField='value_changed' toNode=' Web3dLogoTransform' toField='set_rotation'/>
< ROUTE  fromNode=' Web3dLogoClock' fromField='fraction_changed' toNode=' Web3dLogoSpinner' toField='set_fraction'/>
</Transform>
</Billboard>
</Group>
<Transform translation='0 -6.2 0'>
<Billboard axisOfRotation='0 0 0'>
<TouchSensor description='Select PageUp/PageDown to see each milestone, click on images for detail links'/>
<Shape>
<Text string='"Web3D Progress Timeline"'>
<FontStyle justify='"MIDDLE" "MIDDLE"style='BOLD'/>
</Text>
<Appearance>
<Material ambientIntensity='0diffuseColor='0.337 0.392 0.556shininess='0'/>
</Appearance>
</Shape>
<Shape>
<Box size='10 3 0.1'/>
<Appearance>
<Material transparency='1.0'/>
</Appearance>
</Shape>
</Billboard>
</Transform>
</Transform>
<!-- start and end at same Viewpoint to enable a consistent Viewpoint tour by browser -->
<Viewpoint USE=' OverviewViewpoint'/>
</Scene>
</X3D>
<!--

to top <!-- Event Graph ROUTE Table shows event connections -->
 
<!-- Index for DEF nodes: bt, EmptyNode, HideBackgroundTextTransform, HideSwitch, ImageCoordinate, ImageIFS, ImageTransform, InitialSetupAndPrototype, it0, it1, NameMaterial, OverviewViewpoint, proximity, RootTransform, Slide1_VRML1.0, Slide10_X3dVersion3.1, Slide11_X3dForWebAuthors, Slide12_X3dCompressedBinaryEncoding, Slide13_X3dEarth, Slide14_X3dVersion3.2, Slide15_DICOM, Slide16_X3DOM, Slide17_X3dAugmentedReality, Slide18_Declarative3D, Slide19_WWW2012, Slide2_VRML2.0, Slide3_VRML97, Slide4_MPEG-4, Slide5_X3dDesign, Slide6_X3dEncoding, Slide7_Web3DConsortium, Slide8_X3dStandard, Slide9_SceneAcessInterface, TimelineElementScript, TimelineElementSwitch, TimelineElementViewpoint, TimelineElementViewpointGroup, TimelineEventsGroup, TitleMaterial, TouchToView, TouchViewpointSelectBooleanFilter, trans_web3dlogo, TransparentTouchForNameTitleShape, Web3dLogoClock, Web3dLogoSpinner, Web3dLogoTransform

Index for Viewpoint nodes: Viewpoint_1, OverviewViewpoint, TimelineElementViewpoint

Index for ProtoDeclare definition: TimelineElement
-->

Event Graph ROUTE Table entries with 12 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.

TouchToView
TouchSensor
isActive
SFBool

ROUTE
event to
(1)
TouchViewpointSelectBooleanFilter
BooleanFilter
set_boolean
SFBool

 
 
then
TouchViewpointSelectBooleanFilter
BooleanFilter
inputTrue
SFBool

ROUTE
event to
(2)
TimelineElementViewpoint
Viewpoint
set_bind
SFBool


Web3dLogoClock
TimeSensor
fraction_changed
SFFloat

ROUTE
event to
(1)
Web3dLogoSpinner
OrientationInterpolator
set_fraction
SFFloat

 
 
then
Web3dLogoSpinner
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
Web3dLogoTransform
Transform
set_rotation
SFRotation


TimelineElementScript
Script
pointArray
MFVec3f

ROUTE
event to
(1)
ImageCoordinate
Coordinate
point
MFVec3f
TimelineElementScript
Script
hideSwitchChoice
SFInt32

ROUTE
event to
(1)
TimelineElementSwitch
Switch
whichChoice
SFInt32
TimelineElementScript
Script
displayViewpointGroup
SFBool

ROUTE
event to
(1)
TimelineElementViewpointGroup
ViewpointGroup
displayed
SFBool


proximity
ProximitySensor
isActive
SFBool

ROUTE
event to
(1)
it0
IntegerTrigger
set_boolean
SFBool

 
 
then
it0
IntegerTrigger
triggerValue
SFInt32

ROUTE
event to
(2)
TimelineElementSwitch
Switch
whichChoice
SFInt32
proximity
ProximitySensor
exitTime
SFTime

ROUTE
event to
(1)
bt
BooleanTrigger
set_triggerTime
SFTime

 
 
then
bt
BooleanTrigger
triggerTrue
SFBool

ROUTE
event to
(2)
it1
IntegerTrigger
set_boolean
SFBool

 
 
then
it1
IntegerTrigger
triggerValue
SFInt32

ROUTE
event to
(3)
TimelineElementSwitch
Switch
whichChoice
SFInt32


Slide1_VRML1.0
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide10_X3dVersion3.1
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide11_X3dForWebAuthors
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide12_X3dCompressedBinaryEncoding
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide13_X3dEarth
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide14_X3dVersion3.2
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide15_DICOM
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide16_X3DOM
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide17_X3dAugmentedReality
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide18_Declarative3D
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide19_WWW2012
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide2_VRML2.0
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide3_VRML97
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide4_MPEG-4
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide5_X3dDesign
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide6_X3dEncoding
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide7_Web3DConsortium
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide8_X3dStandard
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


Slide9_SceneAcessInterface
ProtoInstance
TimelineElement
No ROUTE connection found for output from this node.
Contains SFNode/MFNode field with indirect access to other nodes. 


-->

<!-- Online at
https://www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/Web3dTimelineIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/Web3dOutreach/Web3dTimeline.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)
    <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. -->