#VRML V2.0 utf8 # To use this zoomscript for your panorama make the following # changes: # (1) Enter filenames of cubic face images in Backgound node. # (2) Enter desired orientation in 'view1' definition (panangle 0...2pi). # (3) Enter FOV in 'zoomScript', field CFOV (0..pi). Background { frontUrl "%s" backUrl "%s" leftUrl "%s" rightUrl "%s" topUrl "%s" bottomUrl "%s" } DEF view1 Viewpoint { position 0 0 20 fieldOfView 0.7 orientation 0 1 0 %lg description "view1" } DEF init TimeSensor { cycleInterval 1 enabled TRUE loop FALSE startTime 0 stopTime 1 } Group { children [ DEF HudZoomIn Collision { collide FALSE children [ DEF HudZoomInProx ProximitySensor { center 0 1.8 30 size 200 200 200 } DEF HudZoomInXform Transform { children [ DEF InXform Transform { translation -0.03 -0.5 -1.5 children [ Shape { appearance Appearance { texture PixelTexture { image 16 16 1 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 76 76 76 76 76 76 76 76 76 76 76 76 76 76 127 127 76 76 76 76 76 76 76 76 76 76 76 76 76 76 127 127 76 76 76 76 127 255 255 255 255 127 76 76 76 76 127 127 76 76 76 178 255 64 36 36 115 255 178 76 76 76 127 127 76 76 127 255 64 36 255 255 36 115 255 127 76 76 127 127 76 76 255 64 36 36 255 255 64 64 115 255 76 76 127 127 76 76 255 36 255 255 255 255 255 255 64 255 76 76 127 127 76 76 255 36 255 255 255 255 255 255 36 255 76 76 127 127 76 76 255 115 64 64 255 255 115 36 64 255 76 76 127 127 76 76 127 255 115 64 255 255 36 64 255 127 76 76 127 127 76 76 76 178 255 115 64 36 64 255 127 76 76 76 127 127 76 76 76 76 127 255 255 255 255 127 76 76 76 76 127 127 76 76 76 76 76 76 76 76 76 76 76 76 76 76 127 127 76 76 76 76 76 76 76 76 76 76 76 76 76 76 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 repeatS FALSE repeatT FALSE } material Material { diffuseColor .8 .8 0 } } geometry Box { size .06 .06 .0001} } DEF ZoomIn TouchSensor { } ] } ] } ] } DEF HudZoomOut Collision { collide FALSE children [ DEF HudZoomOutProx ProximitySensor { center 0 1.8 30 size 200 200 200 } DEF HudZoomOutXform Transform { children [ DEF OutXform Transform { translation 0.03 -0.5 -1.5 children [ Shape { appearance Appearance { texture PixelTexture { image 16 16 1 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 76 76 76 76 76 76 76 76 76 76 76 76 76 76 127 127 76 76 76 76 76 76 76 76 76 76 76 76 76 76 127 127 76 76 76 76 127 255 255 255 255 127 76 76 76 76 127 127 76 76 76 178 255 66 33 66 117 255 178 76 76 76 127 127 76 76 127 255 66 33 33 66 66 117 255 127 76 76 127 127 76 76 255 66 33 33 66 66 66 66 117 255 76 76 127 127 76 76 255 33 255 255 255 255 255 255 66 255 76 76 127 127 76 76 255 33 255 255 255 255 255 255 33 255 76 76 127 127 76 76 255 117 66 66 66 66 117 33 66 255 76 76 127 127 76 76 127 255 117 66 117 117 33 66 255 127 76 76 127 127 76 76 76 178 255 117 66 33 66 255 127 76 76 76 127 127 76 76 76 76 127 255 255 255 255 127 76 76 76 76 127 127 76 76 76 76 76 76 76 76 76 76 76 76 76 76 127 127 76 76 76 76 76 76 76 76 76 76 76 76 76 76 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 repeatS FALSE repeatT FALSE } material Material { diffuseColor .8 .8 0 } } geometry Box { size .06 .06 .0001} } DEF ZoomOut TouchSensor { } ] } ] } ] } ] # end of Group children } DEF zoomScript Script { eventIn SFBool initialize eventIn SFBool zoomIn eventIn SFBool zoomOut eventOut SFFloat FOV eventOut SFVec3f transInZoom eventOut SFVec3f transOutZoom field SFFloat CFOV %lg field SFFloat z 1.0 url ["javascript: function zoomIn( clicked ) { if( clicked ) { CFOV = 0.95 * CFOV; FOV = CFOV; z = 0.5 / Math.tan( 0.32175 * CFOV/0.7 ); transInZoom.x = -0.03; transInZoom.y = -0.5; transInZoom.z = -z; transOutZoom.x = 0.03; transOutZoom.y = -0.5; transOutZoom.z = -z; } } function zoomOut( clicked ) { if( clicked ) { CFOV = 1.05 * CFOV; FOV = CFOV; z = 0.5 / Math.tan( 0.32175 * CFOV/0.7 ); transInZoom.x = -0.03; transInZoom.y = -0.5; transInZoom.z = -z; transOutZoom.x = 0.03; transOutZoom.y = -0.5; transOutZoom.z = -z; } } function initialize() { FOV = CFOV; z = 0.5 / Math.tan( 0.32175 * CFOV/0.7 ); transInZoom.x = -0.03; transInZoom.y = -0.5; transInZoom.z = -z; transOutZoom.x = 0.03; transOutZoom.y = -0.5; transOutZoom.z = -z; } "] } ROUTE init.isActive TO zoomScript.initialize ROUTE ZoomIn.isActive TO zoomScript.zoomIn ROUTE ZoomOut.isActive TO zoomScript.zoomOut ROUTE zoomScript.FOV TO view1.fieldOfView ROUTE HudZoomInProx.position_changed TO HudZoomInProx.center ROUTE HudZoomInProx.orientation_changed TO HudZoomInXform.rotation ROUTE HudZoomInProx.position_changed TO HudZoomInXform.translation ROUTE zoomScript.transInZoom TO InXform.translation ROUTE HudZoomOutProx.position_changed TO HudZoomOutProx.center ROUTE HudZoomOutProx.orientation_changed TO HudZoomOutXform.rotation ROUTE HudZoomOutProx.position_changed TO HudZoomOutXform.translation ROUTE zoomScript.transOutZoom TO OutXform.translation