Skip to content

Instantly share code, notes, and snippets.

@andreasplesch
Last active February 1, 2025 20:29
Show Gist options
  • Save andreasplesch/6fd2fd0b0f745b3549b74150b7752d89 to your computer and use it in GitHub Desktop.
Save andreasplesch/6fd2fd0b0f745b3549b74150b7752d89 to your computer and use it in GitHub Desktop.
X3D toggle button
<X3D profile='Full' version='4.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-4.0.xsd ' >
<head>
<meta name='title' content='toggleButtonExample.x3d '/>
<meta name='description' content='nine individual toggles'/>
<meta name='creator' content='Andreas Plesch'/>
<meta name='created' content='December 2024'/>
<meta name='subject' content='event utilities, no scripts'/>
<meta name='generator' content='https://andreasplesch.github.io/Library/Viewer/index.html'/>
<meta name='license' content='MIT'/>
</head>
<Scene>
<MetadataString name='children' reference='X3DNodeExtension'
value='"&lt;Environment gammaCorrectionDefault=&apos;none&apos;&gt;&lt;/Environment&gt;"'
>
<MetadataString name='comment' value='"Environment is a x3dom node. It is inserted here via a special Metadata node which is recognized by x3dom."'></MetadataString>
</MetadataString>
<NavigationInfo type='NONE' headlight='true'/>
<ProtoDeclare name='toggleButtonTransform'>
<ProtoInterface>
<field name='translation' type='SFVec3f' value='0 0 0' accessType='inputOutput'
appinfo='default value 0 0 0'/>
<field name='scale' type='SFVec3f' value='0.99 0.99 0.99' accessType='inputOutput'
appinfo='default value 0.99 0.99 0.99'/>
<field name='toggledOn' type='SFBool' value='false' accessType='outputOnly'
appinfo='default value false'/>
<field name='toggledOnTime' type='SFTime' value='0' accessType='outputOnly'
appinfo='default value 0'/>
<field name='toggledOffTime' type='SFTime' value='0' accessType='outputOnly'
appinfo='default value 0'/>
</ProtoInterface>
<ProtoBody>
<Transform>
<IS>
<connect nodeField='translation' protoField='translation'/>
<connect nodeField='scale' protoField='scale'/>
</IS>
<TouchSensor DEF='buttonTS'></TouchSensor>
<Switch DEF='bluegreenPlane' whichChoice='1'>
<Transform>
<Shape>
<Appearance DEF='green'>
<Material diffuseColor='0 1 0'/>
</Appearance>
<Rectangle2D/>
</Shape>
</Transform>
<Transform>
<Shape>
<Appearance DEF='blue'>
<Material diffuseColor='0 0 1'/>
</Appearance>
<Rectangle2D/>
</Shape>
</Transform>
</Switch>
<IntegerSequencer DEF='chooser' key='0 1' keyValue='0 1' />
<ROUTE fromNode='buttonTS' fromField='isActive' toNode='chooser' toField='next'></ROUTE>
<ROUTE fromNode='chooser' fromField='value_changed' toNode='bluegreenPlane' toField='whichChoice'></ROUTE>
<BooleanSequencer DEF='tracker' key='0 1' keyValue='true false' />
<ROUTE fromNode='buttonTS' fromField='isActive' toNode='tracker' toField='next'></ROUTE>
<TimeTrigger DEF='onTime'>
<IS>
<connect nodeField='triggerTime' protoField='toggledOnTime'/>
</IS>
</TimeTrigger>
<TimeTrigger DEF='offTime'>
<IS>
<connect nodeField='triggerTime' protoField='toggledOffTime'/>
</IS>
</TimeTrigger>
<BooleanFilter DEF='onlyTrue'>
<IS>
<connect nodeField='inputTrue' protoField='toggledOn'/>
</IS>
</BooleanFilter>
<BooleanFilter DEF='onlyFalse' />
<ROUTE fromNode='tracker' fromField='value_changed' toNode='onlyTrue' toField='set_boolean'></ROUTE>
<ROUTE fromNode='onlyTrue' fromField='inputTrue' toNode='onTime' toField='set_boolean'></ROUTE>
<ROUTE fromNode='tracker' fromField='value_changed' toNode='onlyFalse' toField='set_boolean'></ROUTE>
<ROUTE fromNode='onlyFalse' fromField='inputFalse' toNode='offTime' toField='set_boolean'></ROUTE>
</Transform>
</ProtoBody>
</ProtoDeclare>
<Transform DEF='controlPanel' translation='3 0 0'>
<ProtoInstance DEF='centerBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='0 0 0'/>
</ProtoInstance>
<ProtoInstance DEF='centerRightBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='2 0 0'/>
</ProtoInstance>
<ProtoInstance DEF='centerLeftBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='-2 0 0'/>
</ProtoInstance>
<ProtoInstance DEF='topBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='0 2 0'/>
</ProtoInstance>
<ProtoInstance DEF='topRightBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='2 2 0'/>
</ProtoInstance>
<ProtoInstance DEF='topLeftBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='-2 2 0'/>
</ProtoInstance>
<ProtoInstance DEF='bottomBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='0 -2 0'/>
</ProtoInstance>
<ProtoInstance DEF='bottomRightBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='2 -2 0'/>
</ProtoInstance>
<ProtoInstance DEF='bottomLeftBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='-2 -2 0'/>
</ProtoInstance>
</Transform>
<!-- controlee setup -->
<ProtoDeclare name='animatedBlob'>
<ProtoInterface>
<field name='enabled' type='SFBool' value='false' accessType='inputOnly'
appinfo='default value false'/>
<field name='resumeTime' type='SFTime' value='0' accessType='inputOnly'
appinfo='default value 0'/>
<field name='pauseTime' type='SFTime' value='0' accessType='inputOnly'
appinfo='default value 0'/>
</ProtoInterface>
<ProtoBody>
<Transform DEF='sphereTrafo'>
<Shape>
<Appearance DEF='purple'>
<Material diffuseColor='1 0 1' transparency='0.2'/>
</Appearance>
<Sphere radius='1.8'/>
</Shape>
</Transform>
<TimeSensor DEF='clock' enabled='false' cycleInterval='5' loop='true'>
<IS>
<connect nodeField='enabled' protoField='enabled'/>
<connect nodeField='resumeTime' protoField='resumeTime'/>
<connect nodeField='pauseTime' protoField='pauseTime'/>
</IS>
</TimeSensor>
<PositionInterpolator DEF='scaler' key='0 0.5 1' keyValue='1,1,1 0.9,0.5,0.9 1,1,1'/>
<ROUTE fromNode='clock' fromField='fraction_changed' toNode='scaler' toField='set_fraction'/>
<ROUTE fromNode='scaler' fromField='value_changed' toNode='sphereTrafo' toField='set_scale'/>
</ProtoBody>
</ProtoDeclare>
<Transform DEF='bloboid' translation='-3 0 0'>
<Transform DEF='centerSph'>
<ProtoInstance DEF='centerBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='centerBt' fromField='toggledOn' toNode='centerBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='centerBt' fromField='toggledOnTime' toNode='centerBlob' toField='resumeTime' />
<ROUTE fromNode='centerBt' fromField='toggledOffTime' toNode='centerBlob' toField='pauseTime'/>
<Transform DEF='centerRightSph' translation='2 0 0'>
<ProtoInstance DEF='centerRightBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='centerRightBt' fromField='toggledOn' toNode='centerRightBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='centerRightBt' fromField='toggledOnTime' toNode='centerRightBlob' toField='resumeTime' />
<ROUTE fromNode='centerRightBt' fromField='toggledOffTime' toNode='centerRightBlob' toField='pauseTime'/>
<Transform DEF='centerLeftSph' translation='-2 0 0'>
<ProtoInstance DEF='centerLeftBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='centerLeftBt' fromField='toggledOn' toNode='centerLeftBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='centerLeftBt' fromField='toggledOnTime' toNode='centerLeftBlob' toField='resumeTime' />
<ROUTE fromNode='centerLeftBt' fromField='toggledOffTime' toNode='centerLeftBlob' toField='pauseTime'/>
<Transform DEF='topSph' translation='0 2 0'>
<ProtoInstance DEF='topBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='topBt' fromField='toggledOn' toNode='topBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='topBt' fromField='toggledOnTime' toNode='topBlob' toField='resumeTime' />
<ROUTE fromNode='topBt' fromField='toggledOffTime' toNode='topBlob' toField='pauseTime'/>
<Transform DEF='topRightSph' translation='2 2 0'>
<ProtoInstance DEF='topRightBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='topRightBt' fromField='toggledOn' toNode='topRightBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='topRightBt' fromField='toggledOnTime' toNode='topRightBlob' toField='resumeTime' />
<ROUTE fromNode='topRightBt' fromField='toggledOffTime' toNode='topRightBlob' toField='pauseTime'/>
<Transform DEF='topLeftSph' translation='-2 2 0'>
<ProtoInstance DEF='topLeftBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='topLeftBt' fromField='toggledOn' toNode='topLeftBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='topLeftBt' fromField='toggledOnTime' toNode='topLeftBlob' toField='resumeTime' />
<ROUTE fromNode='topLeftBt' fromField='toggledOffTime' toNode='topLeftBlob' toField='pauseTime'/>
<Transform DEF='bottomSph' translation='0 -2 0'>
<ProtoInstance DEF='bottomBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='bottomBt' fromField='toggledOn' toNode='bottomBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='bottomBt' fromField='toggledOnTime' toNode='bottomBlob' toField='resumeTime' />
<ROUTE fromNode='bottomBt' fromField='toggledOffTime' toNode='bottomBlob' toField='pauseTime'/>
<Transform DEF='bottomRightSph' translation='2 -2 0'>
<ProtoInstance DEF='bottomRightBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='bottomRightBt' fromField='toggledOn' toNode='bottomRightBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='bottomRightBt' fromField='toggledOnTime' toNode='bottomRightBlob' toField='resumeTime' />
<ROUTE fromNode='bottomRightBt' fromField='toggledOffTime' toNode='bottomRightBlob' toField='pauseTime'/>
<Transform DEF='bottomLeftSph' translation='-2 -2 0'>
<ProtoInstance DEF='bottomLeftBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='bottomLeftBt' fromField='toggledOn' toNode='bottomLeftBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='bottomLeftBt' fromField='toggledOnTime' toNode='bottomLeftBlob' toField='resumeTime' />
<ROUTE fromNode='bottomLeftBt' fromField='toggledOffTime' toNode='bottomLeftBlob' toField='pauseTime'/>
</Transform>
</Scene>
</X3D>
<X3D profile='Full' version='4.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-4.0.xsd ' >
<head>
<meta name='title' content='toggleButtonExample.x3d '/>
<meta name='description' content='nine individual toggles'/>
<meta name='creator' content='Andreas Plesch'/>
<meta name='created' content='December 2024'/>
<meta name='subject' content='event utilities, no scripts'/>
<meta name='generator' content='https://andreasplesch.github.io/Library/Viewer/index.html'/>
<meta name='license' content='MIT'/>
</head>
<Scene>
<MetadataString name='children' reference='X3DNodeExtension'
value='"&lt;Environment gammaCorrectionDefault=&apos;none&apos;&gt;&lt;/Environment&gt;"'
>
<MetadataString name='comment' value='"Environment is a x3dom node. It is inserted here via a special Metadata node which is recognized by x3dom."'></MetadataString>
</MetadataString>
<NavigationInfo type='NONE' headlight='true'/>
<ProtoDeclare name='toggleButtonTransform'>
<ProtoInterface>
<field name='translation' type='SFVec3f' value='0 0 0' accessType='inputOutput'
appinfo='default value 0 0 0'/>
<field name='scale' type='SFVec3f' value='0.99 0.99 0.99' accessType='inputOutput'
appinfo='default value 0.99 0.99 0.99'/>
<field name='toggledOn' type='SFBool' value='false' accessType='outputOnly'
appinfo='default value false'/>
<field name='toggledOnTime' type='SFTime' value='0' accessType='outputOnly'
appinfo='default value 0'/>
<field name='toggledOffTime' type='SFTime' value='0' accessType='outputOnly'
appinfo='default value 0'/>
</ProtoInterface>
<ProtoBody>
<Transform>
<IS>
<connect nodeField='translation' protoField='translation'/>
<connect nodeField='scale' protoField='scale'/>
</IS>
<TouchSensor DEF='buttonTS'></TouchSensor>
<Switch DEF='bluegreenPlane' whichChoice='1'>
<Transform>
<Shape>
<Appearance DEF='green'>
<Material diffuseColor='0 1 0'/>
</Appearance>
<Rectangle2D/>
</Shape>
</Transform>
<Transform>
<Shape>
<Appearance DEF='blue'>
<Material diffuseColor='0 0 1'/>
</Appearance>
<Rectangle2D/>
</Shape>
</Transform>
</Switch>
<IntegerSequencer DEF='chooser' key='0 1' keyValue='0 1' />
<ROUTE fromNode='buttonTS' fromField='isActive' toNode='chooser' toField='next'></ROUTE>
<ROUTE fromNode='chooser' fromField='value_changed' toNode='bluegreenPlane' toField='whichChoice'></ROUTE>
<BooleanSequencer DEF='tracker' key='0 1' keyValue='true false' />
<ROUTE fromNode='buttonTS' fromField='isActive' toNode='tracker' toField='next'></ROUTE>
<TimeTrigger DEF='onTime'>
<IS>
<connect nodeField='triggerTime' protoField='toggledOnTime'/>
</IS>
</TimeTrigger>
<TimeTrigger DEF='offTime'>
<IS>
<connect nodeField='triggerTime' protoField='toggledOffTime'/>
</IS>
</TimeTrigger>
<BooleanFilter DEF='onlyTrue'>
<IS>
<connect nodeField='inputTrue' protoField='toggledOn'/>
</IS>
</BooleanFilter>
<BooleanFilter DEF='onlyFalse' />
<ROUTE fromNode='tracker' fromField='value_changed' toNode='onlyTrue' toField='set_boolean'></ROUTE>
<ROUTE fromNode='onlyTrue' fromField='inputTrue' toNode='onTime' toField='set_boolean'></ROUTE>
<ROUTE fromNode='tracker' fromField='value_changed' toNode='onlyFalse' toField='set_boolean'></ROUTE>
<ROUTE fromNode='onlyFalse' fromField='inputFalse' toNode='offTime' toField='set_boolean'></ROUTE>
</Transform>
</ProtoBody>
</ProtoDeclare>
<Transform DEF='controlPanel' translation='3 0 0'>
<ProtoInstance DEF='centerBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='0 0 0'/>
</ProtoInstance>
<ProtoInstance DEF='centerRightBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='2 0 0'/>
</ProtoInstance>
<ProtoInstance DEF='centerLeftBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='-2 0 0'/>
</ProtoInstance>
<ProtoInstance DEF='topBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='0 2 0'/>
</ProtoInstance>
<ProtoInstance DEF='topRightBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='2 2 0'/>
</ProtoInstance>
<ProtoInstance DEF='topLeftBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='-2 2 0'/>
</ProtoInstance>
<ProtoInstance DEF='bottomBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='0 -2 0'/>
</ProtoInstance>
<ProtoInstance DEF='bottomRightBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='2 -2 0'/>
</ProtoInstance>
<ProtoInstance DEF='bottomLeftBt' name='toggleButtonTransform'>
<fieldValue name='translation' value='-2 -2 0'/>
</ProtoInstance>
</Transform>
<!-- controlee setup -->
<ProtoDeclare name='animatedBlob'>
<ProtoInterface>
<field name='enabled' type='SFBool' value='false' accessType='inputOnly'
appinfo='default value false'/>
<field name='resumeTime' type='SFTime' value='0' accessType='inputOnly'
appinfo='default value 0'/>
<field name='pauseTime' type='SFTime' value='0' accessType='inputOnly'
appinfo='default value 0'/>
<field name='startTime' type='SFTime' value='0' accessType='inputOnly'
appinfo='default value 0'/>
<field name='stopTime' type='SFTime' value='0' accessType='inputOnly'
appinfo='default value 0'/>
</ProtoInterface>
<ProtoBody>
<Transform DEF='sphereTrafo'>
<Shape>
<Appearance DEF='purple'>
<Material diffuseColor='1 0 1' transparency='0.8'/>
</Appearance>
<Sphere radius='1.8'/>
</Shape>
</Transform>
<TimeSensor DEF='clock' enabled='false' cycleInterval='5' loop='true'>
<IS>
<connect nodeField='enabled' protoField='enabled'/>
<connect nodeField='resumeTime' protoField='resumeTime'/>
<connect nodeField='pauseTime' protoField='pauseTime'/>
<connect nodeField='startTime' protoField='startTime'/>
<connect nodeField='stopTime' protoField='stopTime'/>
</IS>
</TimeSensor>
<PositionInterpolator DEF='scaler' key='0 0.5 1' keyValue='1,1,1 0.9,0.5,0.9 1,1,1'/>
<ROUTE fromNode='clock' fromField='fraction_changed' toNode='scaler' toField='set_fraction'/>
<ROUTE fromNode='scaler' fromField='value_changed' toNode='sphereTrafo' toField='set_scale'/>
</ProtoBody>
</ProtoDeclare>
<Transform DEF='bloboid' translation='-3 0 0'>
<Transform DEF='centerSph'>
<ProtoInstance DEF='centerBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='centerBt' fromField='toggledOn' toNode='centerBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='centerBt' fromField='toggledOnTime' toNode='centerBlob' toField='startTime' />
<ROUTE fromNode='centerBt' fromField='toggledOffTime' toNode='centerBlob' toField='stopTime'/>
<Transform DEF='centerRightSph' translation='2 0 0'>
<ProtoInstance DEF='centerRightBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='centerRightBt' fromField='toggledOn' toNode='centerRightBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='centerRightBt' fromField='toggledOnTime' toNode='centerRightBlob' toField='startTime' />
<ROUTE fromNode='centerRightBt' fromField='toggledOffTime' toNode='centerRightBlob' toField='stopTime'/>
<Transform DEF='centerLeftSph' translation='-2 0 0'>
<ProtoInstance DEF='centerLeftBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='centerLeftBt' fromField='toggledOn' toNode='centerLeftBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='centerLeftBt' fromField='toggledOnTime' toNode='centerLeftBlob' toField='startTime' />
<ROUTE fromNode='centerLeftBt' fromField='toggledOffTime' toNode='centerLeftBlob' toField='stopTime'/>
<Transform DEF='topSph' translation='0 2 0'>
<ProtoInstance DEF='topBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='topBt' fromField='toggledOn' toNode='topBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='topBt' fromField='toggledOnTime' toNode='topBlob' toField='startTime' />
<ROUTE fromNode='topBt' fromField='toggledOffTime' toNode='topBlob' toField='stopTime'/>
<Transform DEF='topRightSph' translation='2 2 0'>
<ProtoInstance DEF='topRightBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='topRightBt' fromField='toggledOn' toNode='topRightBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='topRightBt' fromField='toggledOnTime' toNode='topRightBlob' toField='startTime' />
<ROUTE fromNode='topRightBt' fromField='toggledOffTime' toNode='topRightBlob' toField='stopTime'/>
<Transform DEF='topLeftSph' translation='-2 2 0'>
<ProtoInstance DEF='topLeftBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='topLeftBt' fromField='toggledOn' toNode='topLeftBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='topLeftBt' fromField='toggledOnTime' toNode='topLeftBlob' toField='startTime' />
<ROUTE fromNode='topLeftBt' fromField='toggledOffTime' toNode='topLeftBlob' toField='stopTime'/>
<Transform DEF='bottomSph' translation='0 -2 0'>
<ProtoInstance DEF='bottomBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='bottomBt' fromField='toggledOn' toNode='bottomBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='bottomBt' fromField='toggledOnTime' toNode='bottomBlob' toField='startTime' />
<ROUTE fromNode='bottomBt' fromField='toggledOffTime' toNode='bottomBlob' toField='stopTime'/>
<Transform DEF='bottomRightSph' translation='2 -2 0'>
<ProtoInstance DEF='bottomRightBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='bottomRightBt' fromField='toggledOn' toNode='bottomRightBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='bottomRightBt' fromField='toggledOnTime' toNode='bottomRightBlob' toField='startTime' />
<ROUTE fromNode='bottomRightBt' fromField='toggledOffTime' toNode='bottomRightBlob' toField='stopTime'/>
<Transform DEF='bottomLeftSph' translation='-2 -2 0'>
<ProtoInstance DEF='bottomLeftBlob' name='animatedBlob'/>
</Transform>
<ROUTE fromNode='bottomLeftBt' fromField='toggledOn' toNode='bottomLeftBlob' toField='enabled' /> <!-- for first time enabling -->
<ROUTE fromNode='bottomLeftBt' fromField='toggledOnTime' toNode='bottomLeftBlob' toField='startTime' />
<ROUTE fromNode='bottomLeftBt' fromField='toggledOffTime' toNode='bottomLeftBlob' toField='stopTime'/>
</Transform>
</Scene>
</X3D>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment