<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.2//EN" "http://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='TODOcontent=' 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='TODOcontent='side by side scene and information page, as adjacent frames in HTML parent'/>
<meta name='TODOcontent='better images'/>
<meta name='TODOcontent='hidden attribute'/>
<meta name='TODOcontent='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 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='TimelineElementViewpointGroup'>
<!-- 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='TouchToViewfromField='isActivetoNode='TouchViewpointSelectBooleanFiltertoField='set_boolean'/>
<ROUTE fromNode='TouchViewpointSelectBooleanFilterfromField='inputTruetoNode='TimelineElementViewpointtoField='set_bind'/>
<Shape DEF='TransparentTouchForNameTitleShape'>
<Box size='8 3 0.1'/>
<Appearance>
<Material transparency='1'/>
</Appearance>
</Shape>
</Group>
<!-- ROUTE information for TimelineElementSwitch node:  [from it0.triggerValue to whichChoice ] [from it1.triggerValue to whichChoice ] [from TimelineElementScript.hideSwitchChoice to whichChoice ] -->
<Switch DEF='TimelineElementSwitchwhichChoice='1'>
<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 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='proximityfromField='isActivetoNode='it0toField='set_boolean'/>
<ROUTE fromNode='it0fromField='triggerValuetoNode='TimelineElementSwitchtoField='whichChoice'/>
<ROUTE fromNode='proximityfromField='exitTimetoNode='bttoField='set_triggerTime'/>
<ROUTE fromNode='btfromField='triggerTruetoNode='it1toField='set_boolean'/>
<ROUTE fromNode='it1fromField='triggerValuetoNode='TimelineElementSwitchtoField='whichChoice'/>
</Transform>
<!-- This embedded Script computes and updates IFS/Coordinate geometry dimensions to match image size -->
<!-- ROUTE information for TimelineElementScript node:  [from pointArray to ImageCoordinate.point ] [from hideSwitchChoice to TimelineElementSwitch.whichChoice ] [from displayViewpointGroup to TimelineElementViewpointGroup.displayed ] -->
<Script DEF='TimelineElementScript'>
<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='TimelineElementScriptfromField='pointArraytoNode='ImageCoordinatetoField='point'/>
<ROUTE fromNode='TimelineElementScriptfromField='hideSwitchChoicetoNode='TimelineElementSwitchtoField='whichChoice'/>
<ROUTE fromNode='TimelineElementScriptfromField='displayViewpointGrouptoNode='TimelineElementViewpointGrouptoField='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=' "http://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='Web3dLogoSpinnerfromField='value_changedtoNode='Web3dLogoTransformtoField='set_rotation'/>
<ROUTE fromNode='Web3dLogoClockfromField='fraction_changedtoNode='Web3dLogoSpinnertoField='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>
<!--

Index for ProtoDeclare definition : TimelineElement

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 images : Viewpoint_1, OverviewViewpoint, TimelineElementViewpoint
-->

<!-- Color key: <X3dNode DEF='idName' field='value'/> matches <XmlElement DEF='idName' attribute='value'/>
(Light blue background: behavior node) (Grey background: inserted documentation) (Magenta background: X3D Extensibility)
    <Prototype name='ProtoName'> <field name='fieldName'/> </Prototype> -->

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