X3D Model Documentation: MultipleTimerExplodingBuildingPrototype.x3d

  1  <?xml version="1.0" encoding="UTF-8"?>
  2 
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
  3  <X3D profile='Immersive' version='3.0 xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='https://www.web3d.org/specifications/x3d-3.0.xsd'>
  4       <head>
  5            <meta name='titlecontent='MultipleTimerExplodingBuildingPrototype.x3d'/>
  6            <meta name='descriptioncontent='A simple exploding structure, experimenting with the "Hello World" of explosions - click on the silver chimney to trigger the explosion.'/>
  7            <meta name='creatorcontent='Don Brutzman'/>
  8            <meta name='createdcontent='1 January 2001'/>
  9            <meta name='modifiedcontent='28 November 2019'/>
 10            <meta name='Imagecontent='MultipleTimerExplodingBuildingExampleIntermediateAnimation.png'/>
 11            <meta name='MovingImagecontent='MultipleTimerExplodingBuildingVideo.mov'/>
 12            <meta name='referencecontent='Exploding building schematic layout diagram:'/>
 13            <meta name='referencecontent='ExplodingBuildingLayout.pdf'/>
 14            <meta name='referencecontent='ExplodingBuildingLargeExample.wrl'/>
 15            <meta name='referencecontent='Rotation calculations performed using the Dizzy utility from Vapour Technologies by James Smith.'/>
 16            <meta name='referencecontent='http://www.vapourtech.com'/>
 17            <meta name='referencecontent='DIS-Java-VRML Working Group'/>
 18            <meta name='referencecontent='https://www.web3d.org/WorkingGroups/vrtp/dis-java-vrml'/>
 19            <meta name='identifiercontent='https://savage.nps.edu/Savage/Tools/Explosions/MultipleTimerExplodingBuildingPrototype.x3d'/>
 20            <meta name='generatorcontent='X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit'/>
 21            <meta name='licensecontent='../../license.html'/>
 22       </head>
<!--

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

<!-- to top Index for DEF nodes: AnimatedShape, AnimatedShapeAppearance, LocationTransform, ProtoAnimationScript, ProtoOrientationInterpolatorCalculated, ProtoPositionInterpolatorCalculated, ProtoTimeSensor, RotationTransform

Index for Viewpoint node: Viewpoint_1

Index for ProtoDeclare definition: Exploder
-->
 23       <Scene>
 24            <WorldInfo title='MultipleTimerExplodingBuildingPrototype.x3d'/>
 25            <ProtoDeclare name='Exploderappinfo='Prototype to explode different pieces and parts in different ways.'>
 26                 <ProtoInterface>
 27                      <field name='geometrytype='SFNodeaccessType='initializeOnly'
                     appinfo='geometry node, to be used inside a Shape'>
 28                           <!-- initialization node (if any) goes here -->
 29                      </field>
 30                      <field name='materialtype='SFNodeaccessType='initializeOnly'
                     appinfo='Material node for this geometry, to be used inside a Shape'>
 31                           <!-- initialization node (if any) goes here -->
 32                      </field>
 33                      <field name='initialPositiontype='SFVec3fvalue='0 0 0accessType='initializeOnly'
                     appinfo='starting point'/>
 34                      <field name='finalPositiontype='SFVec3fvalue='0 0 0accessType='initializeOnly'
                     appinfo='finish point'/>
 35                      <field name='initialOrientationtype='SFRotationvalue='0 1 0 0accessType='initializeOnly'
                     appinfo='starting point orientation'/>
 36                      <field name='finalOrientationtype='SFRotationvalue='0 1 0 0accessType='initializeOnly'
                     appinfo='finish point orientation'/>
 37                      <field name='set_fractiontype='SFFloataccessType='inputOnly'
                     appinfo='animation input'/>
 38                      <field name='startTimetype='SFTimevalue='0accessType='inputOutput'
                     appinfo='animation trigger'/>
 39                 </ProtoInterface>
 40                 <ProtoBody>
 41 
                    <!-- ROUTE information for LocationTransform node:  [from ProtoPositionInterpolatorCalculated.value_changed to translation ] -->
                    <Transform DEF='LocationTransform'>
 42                           <IS>
 43                                <connect nodeField='translationprotoField='initialPosition'/>
 44                           </IS>
 45 
                         <!-- ROUTE information for RotationTransform node:  [from ProtoOrientationInterpolatorCalculated.value_changed to rotation ] -->
                         <Transform DEF='RotationTransform'>
 46                                <IS>
 47                                     <connect nodeField='rotationprotoField='initialOrientation'/>
 48                                </IS>
 49                                <Shape DEF='AnimatedShape'>
 50                                     <IS>
 51                                          <connect nodeField='geometryprotoField='geometry'/>
 52                                     </IS>
 53                                     <Appearance DEF='AnimatedShapeAppearance'>
 54                                          <IS>
 55                                               <connect nodeField='materialprotoField='material'/>
 56                                          </IS>
 57                                     </Appearance>
 58                                </Shape>
 59                           </Transform>
 60                      </Transform>
 61 
                    <!-- ROUTE information for ProtoAnimationScript node:  [from position_changeds to ProtoPositionInterpolatorCalculated.keyValue ] [from rotationValues to ProtoOrientationInterpolatorCalculated.keyValue ] [from runTime to ProtoTimeSensor.cycleInterval ] -->
                    <Script DEF='ProtoAnimationScript'>
 62                           <field name='initialPositiontype='SFVec3faccessType='initializeOnly'/>
 63                           <field name='finalPositiontype='SFVec3faccessType='initializeOnly'/>
 64                           <field name='initialOrientationtype='SFRotationaccessType='initializeOnly'/>
 65                           <field name='finalOrientationtype='SFRotationaccessType='initializeOnly'/>
 66                           <field name='runTimetype='SFTimeaccessType='outputOnly'/>
 67                           <field name='position_changedstype='MFVec3faccessType='outputOnly'/>
 68                           <field name='rotationValuestype='MFRotationaccessType='outputOnly'/>
 69                           <!-- <field accessType='outputOnly' name='fraction_changed' type='SFFloat'/> -->
 70                           <IS>
 71                                <connect nodeField='initialPositionprotoField='initialPosition'/>
 72                                <connect nodeField='finalPositionprotoField='finalPosition'/>
 73                                <connect nodeField='initialOrientationprotoField='initialOrientation'/>
 74                                <connect nodeField='finalOrientationprotoField='finalOrientation'/>
 75                           </IS>
  <![CDATA[
          
ecmascript:

function initialize ()
{
	dx = finalPosition.x - initialPosition.x;
	dy = finalPosition.y - initialPosition.y;
	dz = finalPosition.z - initialPosition.z;
//	Browser.println ('dx=' + dx + ', dy=' + dy + ', dz=' + dz);
	distance = Math.sqrt (dx*dx + dy*dy + dz*dz);
	runTime = distance/20;
//	Browser.println ('runTime = ' + runTime);
//	Browser.println ('distance          =' + distance);
	quarterPoint   = initialPosition.add (new SFVec3f (  dx/4,   dy/4 + 0.707*distance,     dz/4));
	halfwaypoint   = initialPosition.add (new SFVec3f (  dx/2,   dy/2 +       distance,     dz/2));
	three4thsPoint = initialPosition.add (new SFVec3f (3*dx/4, 3*dy/4 + 0.707*distance/2, 3*dz/4));
	position_changeds = new MFVec3f (initialPosition, initialPosition, quarterPoint, halfwaypoint, three4thsPoint, finalPosition);
//	Browser.println ('position_changeds    =' + position_changeds);
	rotationValues = new MFRotation (initialOrientation, finalOrientation);
//	Browser.println ('initialPosition   =' + initialPosition);
//	Browser.println ('finalPosition     =' + finalPosition);
//	Browser.println ('position_changeds    =' + position_changeds);
//	Browser.println ('initialOrientation=' + initialOrientation);
//	Browser.println ('finalOrientation  =' + finalOrientation);
//	Browser.println ('rotationValues=' + rotationValues);
}

        
]]>
 77                      </Script>
 78 
 79                           <IS>
 80                                <connect nodeField='startTimeprotoField='startTime'/>
 81                           </IS>
 82                      </TimeSensor>
 83 
                    <!-- ROUTE information for ProtoPositionInterpolatorCalculated node:  [from ProtoAnimationScript.position_changeds to keyValue ] [from ProtoTimeSensor.fraction_changed to set_fraction ] [from value_changed to LocationTransform.translation ] -->
                    <PositionInterpolator DEF='ProtoPositionInterpolatorCalculatedkey='0 0.2 0.4 0.6 0.8 1keyValue='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0'>
 84                           <IS>
 85                                <connect nodeField='set_fractionprotoField='set_fraction'/>
 86                           </IS>
 87                      </PositionInterpolator>
 88 
                    <!-- ROUTE information for ProtoOrientationInterpolatorCalculated node:  [from ProtoAnimationScript.rotationValues to keyValue ] [from ProtoTimeSensor.fraction_changed to set_fraction ] [from value_changed to RotationTransform.rotation ] -->
                    <OrientationInterpolator DEF='ProtoOrientationInterpolatorCalculatedkey='0 1keyValue='0 1 0 0 0 1 0 0'>
 89                           <IS>
 90                                <connect nodeField='set_fractionprotoField='set_fraction'/>
 91                           </IS>
 92                      </OrientationInterpolator>
 93                      < ROUTE  fromNode='ProtoPositionInterpolatorCalculated' fromField='value_changed' toNode='LocationTransform' toField='translation'/>
 94                      < ROUTE  fromNode='ProtoOrientationInterpolatorCalculated' fromField='value_changed' toNode='RotationTransform' toField='rotation'/>
 95                      < ROUTE  fromNode='ProtoAnimationScript' fromField='position_changeds' toNode='ProtoPositionInterpolatorCalculated' toField='keyValue'/>
 96                      < ROUTE  fromNode='ProtoAnimationScript' fromField='rotationValues' toNode='ProtoOrientationInterpolatorCalculated' toField='keyValue'/>
 97                      < ROUTE  fromNode='ProtoAnimationScript' fromField='runTime' toNode='ProtoTimeSensor' toField='cycleInterval'/>
 98                      < ROUTE  fromNode='ProtoTimeSensor' fromField='fraction_changed' toNode='ProtoPositionInterpolatorCalculated' toField='set_fraction'/>
 99                      < ROUTE  fromNode='ProtoTimeSensor' fromField='fraction_changed' toNode='ProtoOrientationInterpolatorCalculated' toField='set_fraction'/>
100                 </ProtoBody>
101            </ProtoDeclare>
102            <!-- ==================== -->
103            <Viewpoint description='Multiple Timer Exploding Buildingposition='0 0 12'/>
104            <Background groundAngle='1.57groundColor='0.6 0.9 0.6 0.6 0.9 0.6skyColor='0.6 0.6 0.9'/>
105            <Anchor description='MultipleTimerExplodingBuildingExampleparameter='"target=_blank"'   url=' "MultipleTimerExplodingBuildingExample.x3d" "https://savage.nps.edu/Savage/Tools/Explosions/MultipleTimerExplodingBuildingExample.x3d" "MultipleTimerExplodingBuildingExample.wrl" "https://savage.nps.edu/Savage/Tools/Explosions/MultipleTimerExplodingBuildingExample.wrl" '>
106                 <Shape>
107                      <Text string='"MultipleTimerExplodingBuildingPrototype" "is a prototype definition file" "" "Click this text to see" "MultipleTimerExplodingBuildingExample"'>
108                           <FontStyle justify='"MIDDLE" "MIDDLE"'/>
109                      </Text>
110                      <Appearance>
111                           <Material diffuseColor='0.2 0.2 0.8'/>
112                      </Appearance>
113                 </Shape>
114            </Anchor>
115       </Scene>
116  </X3D>
<!--

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

<!-- to top Index for DEF nodes: AnimatedShape, AnimatedShapeAppearance, LocationTransform, ProtoAnimationScript, ProtoOrientationInterpolatorCalculated, ProtoPositionInterpolatorCalculated, ProtoTimeSensor, RotationTransform

Index for Viewpoint node: Viewpoint_1

Index for ProtoDeclare definition: Exploder
-->
X3D Tooltips element index: Anchor, Appearance, Background, connect, field, FontStyle, head, IS, Material, meta, OrientationInterpolator, PositionInterpolator, ProtoBody, ProtoDeclare, ProtoInterface, ROUTE, Scene, Script, Shape, Text, TimeSensor, 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.

ProtoAnimationScript
Script
position_changeds
MFVec3f

ROUTE
event to
(1)
ProtoPositionInterpolatorCalculated
PositionInterpolator
keyValue
MFVec3f
then
 
 
 
ProtoPositionInterpolatorCalculated
PositionInterpolator
value_changed
SFVec3f

ROUTE
event to
(2)
LocationTransform
Transform
translation
SFVec3f
ProtoAnimationScript
Script
rotationValues
MFRotation

ROUTE
event to
(1)
ProtoOrientationInterpolatorCalculated
OrientationInterpolator
keyValue
MFRotation
then
 
 
 
ProtoOrientationInterpolatorCalculated
OrientationInterpolator
value_changed
SFRotation

ROUTE
event to
(2)
RotationTransform
Transform
rotation
SFRotation
ProtoAnimationScript
Script
runTime
SFTime

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

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

ROUTE
event to
(3)
LocationTransform
Transform
translation
SFVec3f
  then
 
 
 
ProtoTimeSensor
TimeSensor
fraction_changed
SFFloat

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

ROUTE
event to
(3)
RotationTransform
Transform
rotation
SFRotation


Anchor
description='MultipleTimerExplodingBuildingExample' 
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://savage.nps.edu/Savage/Tools/Explosions/MultipleTimerExplodingBuildingPrototypeIndex.html -->
<!-- Version control at
https://gitlab.nps.edu/Savage/Savage/Tools/Explosions/MultipleTimerExplodingBuildingPrototype.x3d -->

<!-- Color 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)
    <ProtoDeclare name='ProtoName'> <field name='fieldName'/> ProtoDeclare> -->

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