#X3D V3.0 utf8 PROFILE Immersive # [X3D] version=3.0 # [X3D] noNamespaceSchemaLocation=https://www.web3d.org/specifications/x3d-3.0.xsd # X3D-to-ClassicVRML XSL translation autogenerated by X3dToClassicVrmlEncoding.xslt and X3dToVrml97.xslt # https://www.web3d.org/x3d/content/X3dToClassicVrmlEncoding.xslt # https://www.web3d.org/x3d/content/X3dToVrml97.xslt # Transformation using XSLT processor: Saxonica # head META "title" "FullTrack.x3d" META "description" "AAV tracks and road wheels - place mouse over geometry to make the tracks move." META "creator" "William Geissler, Jeffrey Weekley" META "created" "31 January 2001" META "modified" "20 October 2019" META "identifier" "https://savage.nps.edu/Savage/AmphibiousVehicles/AAV/FullTrack.x3d" META "generator" "X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit" META "license" "../../license.html" # [Scene] ========== ========== ========== WorldInfo { info [ "AAAV Track & Road Wheels" ] title "Track" } Transform { translation 3.5 0 4.8 children [ DEF Track Group { children [ DEF Horizontal Transform { children [ DEF SingleTrack Group { children [ Shape { geometry Box { size 1 .05 .3 } appearance Appearance { material Material { diffuseColor 0.4 0.4 0.4 } } } Transform { translation -0.25 -0.05 0.0 children [ Shape { geometry Box { size .35 .05 .2 } appearance Appearance { material Material { diffuseColor .2 .2 .2 } } } ] } Transform { translation 0.25 -0.05 0.0 children [ Shape { geometry Box { size .35 .05 .2 } appearance Appearance { material Material { diffuseColor .2 .2 .2 } } } ] } Transform { translation 0.0 0.075 0.0 children [ Shape { geometry Box { size .1 .1 .4 } appearance Appearance { material Material { diffuseColor 0.6 0.6 0.6 } } } ] } Transform { rotation 0 0 1 1.57 translation 0.0 0.075 0.2 children [ Shape { geometry Cylinder { height .12 radius .06 } appearance Appearance { material Material { diffuseColor 0.4 0.4 0.4 } } } ] } ] } Transform { translation 0.0 0.0 -0.4 children [ USE SingleTrack ] } Transform { translation 0.0 0.0 -0.8 children [ USE SingleTrack ] } Transform { translation 0.0 0.0 -1.2 children [ USE SingleTrack ] } # CLOCK TimeSensor node controls speed of all track movement. DEF CLOCK TimeSensor { cycleInterval .5 enabled FALSE loop TRUE } # TRACKPATH node moves SingleTrack along flat path. DEF TRACKPATH PositionInterpolator { key [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.99 ] keyValue [ 0.0 0.0 0.00 0.0 0.0 -0.04 0.0 0.0 -0.08 0.0 0.0 -0.12 0.0 0.0 -0.16 0.0 0.0 -0.20 0.0 0.0 -0.24 0.0 0.0 -0.28 0.0 0.0 -0.32 0.0 0.0 -0.36 0.0 0.0 -0.40 ] } Transform { translation 0.0 0.0 -1.6 children [ USE SingleTrack ] } Transform { translation 0.0 0.0 -2.0 children [ USE SingleTrack ] } ] } Transform { translation 0.0 0.0 -2.4 children [ USE Horizontal ] } Transform { translation 0.0 0.0 -4.8 children [ USE Horizontal ] } Transform { translation 0.0 0.0 -7.2 children [ USE Horizontal ] } DEF Pivot1 Transform { center 0 1 0 translation 0.0 0.0 -9.5 children [ USE SingleTrack # PIVOTPATH1 nodes moves SingleTrack along 30 deg curve. DEF PIVOTPATH1 OrientationInterpolator { key [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.99 ] keyValue [ 1 0 0 0.000 1 0 0 0.052 1 0 0 0.104 1 0 0 0.156 1 0 0 0.208 1 0 0 0.260 1 0 0 0.312 1 0 0 0.364 1 0 0 0.416 1 0 0 0.468 1 0 0 0.520 ] } ] } DEF Pivot2 Transform { center 0 1 0 children [ USE SingleTrack # PIVOTPATH2 nodes moves SingleTrack along -30 deg curve. DEF PIVOTPATH2 OrientationInterpolator { key [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.99 ] keyValue [ 1 0 0 -0.520 1 0 0 -0.468 1 0 0 -0.416 1 0 0 -0.364 1 0 0 -0.312 1 0 0 -0.260 1 0 0 -0.208 1 0 0 -0.156 1 0 0 -0.104 1 0 0 -0.052 1 0 0 0.0 ] } ] } DEF Pivot2High Transform { center 0 1 0 translation 0 0.125 1.5 children [ DEF CircleTrack Group { children [ Transform { rotation 1 0 0 -0.524 translation 0.0 0.307 0.4 children [ USE SingleTrack ] } Transform { rotation 1 0 0 -1.05 translation 0.0 0.6 0.69 children [ USE SingleTrack ] } Transform { rotation 1 0 0 -1.57 translation 0.0 1.0 0.8 children [ USE SingleTrack ] } Transform { rotation 1 0 0 -2.09 translation 0.0 1.4 0.69 children [ USE SingleTrack ] } Transform { rotation 1 0 0 -2.62 translation 0.0 1.69 0.4 children [ USE SingleTrack ] } Transform { rotation 1 0 0 -3.14 translation 0.0 1.8 0.0 children [ USE SingleTrack ] } ] } ] } # Runs the track around the rear wheel DEF Pivot1High Transform { center 0 1 0 translation 0 0.25 -11 children [ Transform { rotation 0 1 0 3.14 children [ USE CircleTrack ] } ] } Transform { rotation 0 0 1 -1.57 scale 0.7 0.7 0.7 translation 0 0.7 0 children [ DEF RoadWheel Transform { children [ Group { children [ DEF Hub Shape { geometry Cylinder { height 0.4 radius .15 } appearance Appearance { material Material { diffuseColor 0.2 0.2 0 } } } DEF Wheel Shape { geometry Cylinder { height .1 radius 0.9 side FALSE } appearance Appearance { material Material { diffuseColor 0.1 0.2 0.05 } } } DEF Rim Shape { appearance Appearance { material Material { diffuseColor 0.2 0.2 0 } } geometry Extrusion { ccw FALSE creaseAngle 0.785 crossSection [ 1.00 0.00 0.92 0.38 0.71 0.71 0.38 0.92 0.00 1.00 -0.38 0.92 -0.71 0.71 -0.92 0.38 -1.00 0.00 -0.92 -0.38 -0.71 -0.71 -0.38 -0.92 0.00 -1.00 0.38 -0.92 0.71 -0.71 0.92 -0.38 1.00 0.00 0.80 0.00 0.74 -0.31 0.57 -0.57 0.31 -0.74 0.00 -0.80 -0.31 -0.74 -0.57 -0.57 -0.74 -0.31 -0.80 0.00 -0.74 0.31 -0.57 0.57 -0.31 0.74 0.00 0.80 0.31 0.74 0.57 0.57 0.74 0.31 0.80 0.00 ] spine [ 0.0 -0.2 0.0 0.0 0.2 0.0 ] } } ] } # WHEELPATH node rotates RoadWheel 66 deg. DEF WHEELPATH OrientationInterpolator { key [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.99 ] keyValue [ 0 1 0 0.000 0 1 0 1.115 0 1 0 1.23 0 1 0 1.345 0 1 0 1.46 0 1 0 1.575 0 1 0 1.690 0 1 0 1.805 0 1 0 1.92 0 1 0 2.035 0 1 0 2.15 ] } ] } ] } DEF RoadWheels Transform { children [ Group { children [ Transform { rotation 0 0 1 -1.57 scale 0.7 0.7 0.7 translation 0 0.7 -1.6 children [ USE RoadWheel ] } Transform { rotation 0 0 1 -1.57 scale 0.7 0.7 0.7 translation 0 0.7 -3.2 children [ USE RoadWheel ] } Transform { rotation 0 0 1 -1.57 scale 0.7 0.7 0.7 translation 0 0.7 -4.8 children [ USE RoadWheel ] } Transform { rotation 0 0 1 -1.57 scale 0.7 0.7 0.7 translation 0 0.7 -6.4 children [ USE RoadWheel ] } Transform { rotation 0 0 1 -1.57 scale 0.7 0.7 0.7 translation 0 0.7 -8.0 children [ USE RoadWheel ] } Transform { rotation 0 0 1 -1.57 scale 0.7 0.7 0.7 translation 0 0.7 -9.6 children [ USE RoadWheel ] } Transform { rotation 0 0 1 -1.57 scale 0.7 0.7 0.7 translation 0 1.125 1.5 children [ USE RoadWheel ] } Transform { rotation 0 0 1 -1.57 scale 0.7 0.7 0.7 translation 0 1.25 -11 children [ USE RoadWheel ] } Transform { rotation 0 0 1 -1.57 scale 0.375 0.375 0.375 translation 0 1.45 -8.825 children [ USE RoadWheel ] } Transform { rotation 0 0 1 -1.57 scale 0.375 0.375 0.375 translation 0 1.45 -4 children [ USE RoadWheel ] } ] } ] } # TrackSensor node moves Track node if cursor over shapes. DEF TrackSensor TouchSensor { description "point to activate" } DEF ShortHorizontal Transform { children [ DEF ShortSingleTrack Group { children [ Transform { translation -0.25 -0.05 0.0 children [ Shape { geometry Box { size .35 .05 .2 } appearance Appearance { material Material { diffuseColor .2 .2 .2 } } } ] } Transform { translation 0.25 -0.05 0.0 children [ Shape { geometry Box { size .35 .05 .2 } appearance Appearance { material Material { diffuseColor .2 .2 .2 } } } ] } Transform { children [ Shape { geometry Box { size 1 .05 .3 } appearance Appearance { material Material { diffuseColor 0.4 0.4 0.4 } } } ] } Transform { translation 0.0 0.075 0.0 children [ Shape { geometry Box { size .1 .1 .4 } appearance Appearance { material Material { diffuseColor 0.6 0.6 0.6 } } } ] } Transform { rotation 0 0 1 1.57 translation 0.0 0.075 0.2 children [ Shape { geometry Cylinder { height .12 radius .06 } appearance Appearance { material Material { diffuseColor 0.4 0.4 0.4 } } } ] } ] } # CLOCK TimeSensor node controls speed of all track movement. DEF CLOCK2 TimeSensor { cycleInterval .5 enabled FALSE loop TRUE } # TRACKPATH node moves SingleTrack along flat path. DEF ShortTRACKPATH PositionInterpolator { key [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.99 ] keyValue [ 0.0 0.0 0.00 0.0 0.0 -0.04 0.0 0.0 -0.08 0.0 0.0 -0.12 0.0 0.0 -0.16 0.0 0.0 -0.20 0.0 0.0 -0.24 0.0 0.0 -0.28 0.0 0.0 -0.32 0.0 0.0 -0.36 0.0 0.0 -0.40 ] } Transform { translation 0 0 -0.4 children [ USE ShortSingleTrack ] } Transform { translation 0.0 0.0 -0.8 children [ USE ShortSingleTrack ] } Transform { translation 0.0 0.0 -1.2 children [ USE ShortSingleTrack ] } ] } DEF Front Transform { rotation 1 0 0 6.02 translation 0 0.5 2.0 children [ USE ShortHorizontal ] } DEF Rear Transform { rotation -1 0 0 6.02 translation 0 .08 -9.9 children [ USE ShortHorizontal ] } DEF TopOfTracks Group { children [ Transform { translation 0 1.875 -1.335 children [ Transform { rotation 1 0 0 3.14 translation 0.0 0 -6.8 children [ USE Horizontal ] } Transform { rotation 1 0 0 3.14 translation 0.0 0 -4.4 children [ USE Horizontal ] } Transform { rotation 1 0 0 3.14 translation 0.0 0 -2.0 children [ USE Horizontal ] } Transform { rotation 1 0 0 3.14 translation 0.0 0 -1.58 children [ USE Horizontal ] } Transform { rotation 1 0 0 3.14 translation 0.0 0 -9.2 children [ USE Horizontal ] } Transform { rotation 1 0 0 3.14 translation 0.0 0 0.4 children [ USE ShortHorizontal ] } Transform { rotation 1 0 0 3.14 translation 0 0 2 children [ DEF LastSingleTrack Transform { translation 0 0 2 children [ USE SingleTrack ] } DEF LastSingleTrackPath PositionInterpolator { key [ 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 0.99 ] keyValue [ 0.0 0.0 0.00 0.0 0.0 -0.04 0.0 0.0 -0.08 0.0 0.0 -0.12 0.0 0.0 -0.16 0.0 0.0 -0.20 0.0 0.0 -0.24 0.0 0.0 -0.28 0.0 0.0 -0.32 0.0 0.0 -0.36 0.0 0.0 -0.40 ] } DEF CLOCK3 TimeSensor { cycleInterval .5 enabled FALSE loop TRUE } ] } ] } ] } ] } ] } Transform { translation -4.75 0 4.8 children [ USE Track ] } # TrackSensor Route node sets path from TouchSensor to CLOCK. ROUTE TrackSensor.isOver TO CLOCK.set_enabled # CLOCK Route nodes sets path from TimeSensor to other ROUTES. ROUTE CLOCK.fraction_changed TO TRACKPATH.set_fraction ROUTE CLOCK.fraction_changed TO PIVOTPATH1.set_fraction ROUTE CLOCK.fraction_changed TO PIVOTPATH2.set_fraction ROUTE CLOCK.fraction_changed TO WHEELPATH.set_fraction # PATH ROUTE nodes path from TimeSensor to moving shapes. ROUTE TRACKPATH.value_changed TO Horizontal.set_translation ROUTE PIVOTPATH1.value_changed TO Pivot1.set_rotation ROUTE PIVOTPATH1.value_changed TO Pivot1High.set_rotation ROUTE PIVOTPATH2.value_changed TO Pivot2.set_rotation ROUTE PIVOTPATH2.value_changed TO Pivot2High.set_rotation ROUTE WHEELPATH.value_changed TO RoadWheel.set_rotation ROUTE CLOCK2.fraction_changed TO ShortTRACKPATH.set_fraction ROUTE ShortTRACKPATH.value_changed TO ShortHorizontal.set_translation ROUTE CLOCK.fraction_changed TO ShortTRACKPATH.set_fraction ROUTE CLOCK3.fraction_changed TO LastSingleTrackPath.set_fraction ROUTE LastSingleTrackPath.value_changed TO LastSingleTrack.set_translation ROUTE TrackSensor.isOver TO CLOCK2.set_enabled ROUTE TrackSensor.isOver TO CLOCK3.set_enabled