X3D Model Documentation: ComputerKeyboard.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='ComputerKeyboard.x3d'/>
  6            <meta name='descriptioncontent='A computer keyboard for the control panel in the CVN bridge control. The buttons animated to be pushed in when touched.'/>
  7            <meta name='creatorcontent='Foo Khee Loon'/>
  8            <meta name='createdcontent='17 February 2001'/>
  9            <meta name='modifiedcontent='20 October 2019'/>
 10            <meta name='identifiercontent='https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/ComputerKeyboard.x3d'/>
 11            <meta name='generatorcontent='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
 12            <meta name='licensecontent='../license.html'/>
 13       </head>
<!--

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

<!-- to top Index for DEF nodes: EscapeButton, Move, push, row, space_bar, TouchButton

Index for Viewpoint node: Viewpoint_1
-->
 14       <Scene>
 15            <WorldInfo title='ComputerKeyboard.x3d'/>
 16            <Viewpoint description='Front ViewfieldOfView='1orientation='0 1 0 1.571position='1 0.2 0.5'/>
 17            <Transform rotation='1 0 0 1.571'>
 18                 <Shape>
 19                      <Appearance>
 20                           <Material diffuseColor='0.8 0.8 0.7'/>
 21                      </Appearance>
 22                      <Extrusion ccw='falsecreaseAngle='1.75crossSection='0 0 0.025 -0.05 0.05 -0.07 0.075 -0.08 0.1 -0.09 0.35 -0.04 0.4 -0.03 0.45 -0.0275 0.45 0 0.045 -0.0275 0.045 0 0 0spine='0 0 0 0 0.98 0'/>
 23                 </Shape>
 24 
               <!-- Transform EscapeButton is a DEF node that has 57 USE nodes: USE_1, USE_2, USE_3, USE_4, USE_5, USE_6, USE_7, USE_8, USE_9, USE_10, USE_11, USE_12, USE_13, USE_14, USE_15, USE_16, USE_17, USE_18, USE_19, USE_20, USE_21, USE_22, USE_23, USE_24, USE_25, USE_26, USE_27, USE_28, USE_29, USE_30, USE_31, USE_32, USE_33, USE_34, USE_35, USE_36, USE_37, USE_38, USE_39, USE_40, USE_41, USE_42, USE_43, USE_44, USE_45, USE_46, USE_47, USE_48, USE_49, USE_50, USE_51, USE_52, USE_53, USE_54, USE_55, USE_56, USE_57
               <!-- ROUTE information for EscapeButton node:  [from Move.value_changed to set_translation ] -->
               <Transform DEF='EscapeButtonrotation='1 0 0 -1.571translation='0.1 0.95 -0.065'>
 25                      <Shape>
 26                           <Appearance>
 27                                <Material diffuseColor='0.7 0.7 0.8'/>
 28                           </Appearance>
 29                           <Extrusion creaseAngle='2crossSection='-0.02 -0.02 -0.02 0.02 0.02 0.02 0.02 -0.02 -0.02 -0.02scale='1 1 1.2 1.2 0.7 0.7spine='0 0 0 0 0.02 0 0 0.04 0'/>
 30                      </Shape>
 31 
                    <!-- ROUTE information for TouchButton node:  [from touchTime to push.set_startTime ] -->
                    <TouchSensor DEF='TouchButtondescription='touch keys to animate'/>
 32 
                    <!-- ROUTE information for push node:  [from TouchButton.touchTime to set_startTime ] [from fraction_changed to Move.set_fraction ] -->
                    <TimeSensor DEF='pushstopTime='0.5'/>
 33 
                    <!-- ROUTE information for Move node:  [from push.fraction_changed to set_fraction ] [from value_changed to EscapeButton.set_translation ] -->
                    <PositionInterpolator DEF='Movekey='0 0.5 1keyValue='0.1 0.95 -0.065 0.1 0.95 -0.05 0.1 0.95 -0.065'/>
 34                 </Transform>
 35                 <!-- first row of the keyboard -->
 36                 <Transform translation='0 -0.1 0'>
 37                      <Transform USE='EscapeButton'/>
 38                 </Transform>
 39                 <Transform translation='0 -0.1467 0'>
 40                      <Transform USE='EscapeButton'/>
 41                 </Transform>
 42                 <Transform translation='0 -0.193367 0'>
 43                      <Transform USE='EscapeButton'/>
 44                 </Transform>
 45                 <Transform translation='0 -0.240033 0'>
 46                      <Transform USE='EscapeButton'/>
 47                 </Transform>
 48                 <Transform translation='0 -0.340033 0'>
 49                      <Transform USE='EscapeButton'/>
 50                 </Transform>
 51                 <Transform translation='0 -0.386700 0'>
 52                      <Transform USE='EscapeButton'/>
 53                 </Transform>
 54                 <Transform translation='0 -0.43336700 0'>
 55                      <Transform USE='EscapeButton'/>
 56                 </Transform>
 57                 <Transform translation='0 -0.4800 0'>
 58                      <Transform USE='EscapeButton'/>
 59                 </Transform>
 60                 <Transform translation='0 -0.5800 0'>
 61                      <Transform USE='EscapeButton'/>
 62                 </Transform>
 63                 <Transform translation='0 -0.626667 0'>
 64                      <Transform USE='EscapeButton'/>
 65                 </Transform>
 66                 <Transform translation='0 -0.67333 0'>
 67                      <Transform USE='EscapeButton'/>
 68                 </Transform>
 69                 <Transform translation='0 -0.72 0'>
 70                      <Transform USE='EscapeButton'/>
 71                 </Transform>
 72                 <Transform translation='0 -0.82 0'>
 73                      <Transform USE='EscapeButton'/>
 74                 </Transform>
 75                 <Transform translation='0 -0.8667 0'>
 76                      <Transform USE='EscapeButton'/>
 77                 </Transform>
 78                 <Transform translation='0 -0.91333 0'>
 79                      <Transform USE='EscapeButton'/>
 80                 </Transform>
 81                 <!-- second row of key board -->
 82                 <Transform translation='0.1 -0.001 0.015'>
 83                      <Transform USE='EscapeButton'/>
 84                 </Transform>
 85                 <Transform translation='0.1 -0.048667 0.015'>
 86                      <Transform USE='EscapeButton'/>
 87                 </Transform>
 88                 <Transform translation='0.1 -0.0963 0.015'>
 89                      <Transform USE='EscapeButton'/>
 90                 </Transform>
 91                 <Transform translation='0.1 -0.144 0.015'>
 92                      <Transform USE='EscapeButton'/>
 93                 </Transform>
 94                 <Transform translation='0.1 -0.19167666 0.015'>
 95                      <Transform USE='EscapeButton'/>
 96                 </Transform>
 97                 <Transform translation='0.1 -0.23934 0.015'>
 98                      <Transform USE='EscapeButton'/>
 99                 </Transform>
100                 <Transform translation='0.1 -0.2871 0.015'>
101                      <Transform USE='EscapeButton'/>
102                 </Transform>
103                 <Transform translation='0.1 -0.33466 0.015'>
104                      <Transform USE='EscapeButton'/>
105                 </Transform>
106                 <Transform translation='0.1 -0.382333 0.015'>
107                      <Transform USE='EscapeButton'/>
108                 </Transform>
109                 <Transform translation='0.1 -0.43 0.015'>
110                      <Transform USE='EscapeButton'/>
111                 </Transform>
112                 <Transform translation='0.1 -0.477 0.015'>
113                      <Transform USE='EscapeButton'/>
114                 </Transform>
115                 <Transform translation='0.1 -0.525333 0.015'>
116                      <Transform USE='EscapeButton'/>
117                 </Transform>
118                 <Transform translation='0.1 -0.57 0.015'>
119                      <Transform USE='EscapeButton'/>
120                 </Transform>
121                 <Transform translation='0.1 -0.62066 0.015'>
122                      <Transform USE='EscapeButton'/>
123                 </Transform>
124                 <Transform translation='0.1 -0.66833 0.015'>
125                      <Transform USE='EscapeButton'/>
126                 </Transform>
127                 <Transform translation='0.1 -0.716 0.015'>
128                      <Transform USE='EscapeButton'/>
129                 </Transform>
130                 <Transform translation='0.1 -0.763666 0.015'>
131                      <Transform USE='EscapeButton'/>
132                 </Transform>
133                 <Transform translation='0.1 -0.811333 0.015'>
134                      <Transform USE='EscapeButton'/>
135                 </Transform>
136                 <Transform translation='0.1 -0.859 0.015'>
137                      <Transform USE='EscapeButton'/>
138                 </Transform>
139                 <Transform translation='0.1 -0.9066 0.015'>
140                      <Transform USE='EscapeButton'/>
141                 </Transform>
142                 <!-- third row of key board -->
143 
               <!-- Group row is a DEF node that has 2 USE nodes: USE_1, USE_2 -->
               <Group DEF='row'>
144                      <Transform translation='0.146667 -0.001 0.025'>
145                           <Transform USE='EscapeButton'/>
146                      </Transform>
147                      <Transform translation='0.1467 -0.04866671 0.025'>
148                           <Transform USE='EscapeButton'/>
149                      </Transform>
150                      <Transform translation='0.1467 -0.096331 0.025'>
151                           <Transform USE='EscapeButton'/>
152                      </Transform>
153                      <Transform translation='0.1467 -0.144 0.025'>
154                           <Transform USE='EscapeButton'/>
155                      </Transform>
156                      <Transform translation='0.1467 -0.191664 0.025'>
157                           <Transform USE='EscapeButton'/>
158                      </Transform>
159                      <Transform translation='0.1467 -0.2393664 0.025'>
160                           <Transform USE='EscapeButton'/>
161                      </Transform>
162                      <Transform translation='0.1467 -0.287 0.025'>
163                           <Transform USE='EscapeButton'/>
164                      </Transform>
165                      <Transform translation='0.1467 -0.3346677 0.025'>
166                           <Transform USE='EscapeButton'/>
167                      </Transform>
168                      <Transform translation='0.1467 -0.38236677 0.025'>
169                           <Transform USE='EscapeButton'/>
170                      </Transform>
171                      <Transform translation='0.1467 -0.437 0.025'>
172                           <Transform USE='EscapeButton'/>
173                      </Transform>
174                      <Transform translation='0.1467 -0.4776 0.025'>
175                           <Transform USE='EscapeButton'/>
176                      </Transform>
177                      <Transform translation='0.1467 -0.525334776 0.025'>
178                           <Transform USE='EscapeButton'/>
179                      </Transform>
180                      <Transform translation='0.1467 -0.57376 0.025'>
181                           <Transform USE='EscapeButton'/>
182                      </Transform>
183                      <Transform translation='0.1467 -0.62057376 0.025'>
184                           <Transform USE='EscapeButton'/>
185                      </Transform>
186                      <Transform translation='0.1467 -0.66832057376 0.025'>
187                           <Transform USE='EscapeButton'/>
188                      </Transform>
189                      <Transform translation='0.1467 -0.716 0.025'>
190                           <Transform USE='EscapeButton'/>
191                      </Transform>
192                      <Transform translation='0.1467 -0.7636 0.025'>
193                           <Transform USE='EscapeButton'/>
194                      </Transform>
195                      <Transform translation='0.1467 -0.8113336 0.025'>
196                           <Transform USE='EscapeButton'/>
197                      </Transform>
198                      <Transform translation='0.1467 -0.859 0.025'>
199                           <Transform USE='EscapeButton'/>
200                      </Transform>
201                      <Transform translation='0.1467 -0.90667859 0.025'>
202                           <Transform USE='EscapeButton'/>
203                      </Transform>
204                 </Group>
205                 <!-- Fourth row of key board -->
206                 <Transform translation='0.04667 0 0.01'>
207                      <Group USE='row'/>
208                 </Transform>
209                 <!-- Fifth row of key board -->
210                 <Transform translation='0.093347 0 0.02'>
211                      <Group USE='row'/>
212                 </Transform>
213                 <!-- sixth row of key board -->
214                 <Transform scale='1 2 1translation='0.286667 -1 0.055'>
215                      <Transform USE='EscapeButton'/>
216                 </Transform>
217                 <Transform DEF='space_barrotation='0 0 1 1.571translation='0.3902677 0.5 -0.045'>
218                      <Transform rotation='1 0 0 1.571'>
219                           <Shape>
220                                <Appearance>
221                                     <Material diffuseColor='0.7 0.7 0.8'/>
222                                </Appearance>
223                                <Extrusion creaseAngle='2crossSection='-0.25 -0.02 -0.25 0.02 0.25 0.02 0.25 -0.02 -0.25 -0.02scale='1 1 1.2 1.2 0.7 0.7spine='0 0 0 0 0.02 0 0 0.04 0'/>
224                           </Shape>
225                      </Transform>
226                 </Transform>
227                 <Transform USE='EscapeButton'/>
228            </Transform>
229            < ROUTE  fromNode='TouchButton' fromField='touchTime' toNode='push' toField='set_startTime'/>
230            < ROUTE  fromNode='push' fromField='fraction_changed' toNode='Move' toField='set_fraction'/>
231            < ROUTE  fromNode='Move' fromField='value_changed' toNode='EscapeButton' toField='set_translation'/>
232       </Scene>
233  </X3D>
<!--

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

<!-- to top Index for DEF nodes: EscapeButton, Move, push, row, space_bar, TouchButton

Index for Viewpoint node: Viewpoint_1
-->
X3D Tooltips element index: Appearance, Extrusion, Group, head, Material, meta, PositionInterpolator, ROUTE, Scene, Shape, TimeSensor, TouchSensor, Transform, Viewpoint, WorldInfo, X3D, accessType and type, XML data types, field types

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

TouchButton
TouchSensor
touchTime
SFTime

ROUTE
event to
(1)
push
TimeSensor
set_startTime
SFTime
then
 
 
 
push
TimeSensor
fraction_changed
SFFloat

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

ROUTE
event to
(3)
EscapeButton
Transform
set_translation
SFVec3f

Additional guidance on X3D animation can be found in the 10-Step Animation Design Process and Event Tracing hint sheets. Have fun with X3D! 😀

-->
<!-- Online at
https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/ComputerKeyboardIndex.html -->
<!-- Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/StudentProjects/ComputerKeyboard.x3d -->

<!-- Color legend: X3D terminology <X3dNode DEF='idName' field='value'/> matches XML terminology <XmlElement DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement) (Grey background inside box: inserted documentation) (Magenta background: X3D Extensibility)
-->

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