<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><font face="Times" class="" style="widows: 1;"><span class="" style="white-space: pre-wrap;">I have taken the viewpoint tour from Joe's linked VRML below and put it into my JSON loader.  See a stripped down version of my loader at: </span></font><a href="http://coderextreme.net/X3DJSONLD/bubbles.html" class="" style="widows: 1;">http://coderextreme.net/X3DJSONLD/bubbles.html</a></div><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><h1 class="" style="line-height: normal; widows: 1;"></h1></div></div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;">"Also consider use of the ProximitySensor. For example, try using</pre></div><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;">the sensor located at the center of interest. The sensor orientation </pre></div><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;">output can tell you which way to look as you move the view.</pre></div><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;">Notice the possible relationship between the ProximitySensor</pre></div><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;">orientation_changed output and the ViewPoint orientation input. I have</pre></div><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;">an example around somewhere but also consider the Viewpoint </pre></div><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;">CenterOfRotation if the interactor can also use manual navigation.</pre></div><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;">Good Luck,</pre></div><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;">Joe</pre></div><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;"><a href="http://www.hypermultimedia.com/x3d/viewpoint/SixViewpointTour2box.x3dv" class="">http://www.hypermultimedia.com/x3d/viewpoint/SixViewpointTour2box.x3dv</a></pre></div><div class=""><pre class="" style="white-space: pre-wrap; line-height: normal; widows: 1;"><a href="http://www.hypermultimedia.com/x3d/viewpoint/SixViewpointTour2.txt" class="">http://www.hypermultimedia.com/x3d/viewpoint/SixViewpointTour2.txt</a>"</pre></div></blockquote><div class=""><br class=""></div><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><h1 class="" style="line-height: normal; widows: 1;"><font face="Times" class=""><span style="font-size: 12px; font-weight: normal; white-space: pre-wrap;" class="">Below as text is the X3D for doing a random tour based Joe’s original viewpoint tour.  I don’t have a link for this because I want people to view in on their desktop.  Note that it doesn’t do a great circle tour as I would want.  Is there something in GeoVRML or GeoX3D that does a Great Circle Interpolator?  Thanks!</span></font></h1><div class=""><font face="Times" class=""><span style="font-size: 12px; white-space: pre-wrap; font-weight: normal;" class=""><br class=""></span></font></div></div><div class=""><?xml version="1.0" encoding="UTF-8"?></div><div class=""><!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "<a href="http://www.web3d.org/specifications/x3d-3.3.dtd" class="">http://www.web3d.org/specifications/x3d-3.3.dtd</a>"></div><div class=""><X3D profile='Immersive' version='3.3' xsd:noNamespaceSchemaLocation='<a href="http://www.web3d.org/specifications/x3d-3.3.xsd'" class="">http://www.web3d.org/specifications/x3d-3.3.xsd'</a> xmlns:xsd='<a href="http://www.w3.org/2001/XMLSchema-instance'" class="">http://www.w3.org/2001/XMLSchema-instance'</a>></div><div class="">    <Scene></div><div class="">        <Viewpoint DEF='Tour' description='Tour Views'/></div><div class="">        <Viewpoint position='0 0 4' description='sphere in road'/></div><div class="">        <Background backUrl='"cubemap/BK.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/BK.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/BK.png</a>"' bottomUrl='"cubemap/BT.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/BT.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/BT.png</a>"' frontUrl='"cubemap/FR.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/FR.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/FR.png</a>"' leftUrl='"cubemap/LF.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/LF.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/LF.png</a>"' rightUrl='"cubemap/RT.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/RT.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/RT.png</a>"' topUrl='"cubemap/TP.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/TP.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/TP.png</a>"'/></div><div class="">        <Transform DEF='Rose01'></div><div class="">            <Shape></div><div class="">                <Sphere/></div><div class="">                <Appearance DEF='_01_-_Default'></div><div class="">                    <Material diffuseColor='0.7 0.7 0.7' specularColor='0.5 0.5 0.5'/></div><div class="">                    <!--ComposedCubeMapTexture containerField='texture'></div><div class="">                        <ImageTexture url='"cubemap/BK.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/BK.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/BK.png</a>"' containerField='back'/></div><div class="">                        <ImageTexture url='"cubemap/BT.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/BT.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/BT.png</a>"' containerField='bottom'/></div><div class="">                        <ImageTexture url='"cubemap/FR.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/FR.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/FR.png</a>"' containerField='front'/></div><div class="">                        <ImageTexture url='"cubemap/LF.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/LF.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/LF.png</a>"' containerField='left'/></div><div class="">                        <ImageTexture url='"cubemap/RT.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/RT.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/RT.png</a>"' containerField='right'/></div><div class="">                        <ImageTexture url='"cubemap/TP.png" "<a href="http://coderextreme.net/X3DJSONLD/cubemap/TP.png" class="">http://coderextreme.net/X3DJSONLD/cubemap/TP.png</a>"' containerField='top'/></div><div class="">                    </ComposedCubeMapTexture></div><div class="">                    <ComposedShader DEF='ComposedShader' containerField='shaders' language='GLSL'></div><div class="">                        <field name='cube' accessType='inputOutput' type='SFInt32' value='0'/></div><div class="">                        <field name='chromaticDispertion' accessType='inputOutput' type='SFVec3f' value='0.98 1 1.033'/></div><div class="">                        <field name='bias' accessType='inputOutput' type='SFFloat' value='0.5'/></div><div class="">                        <field name='scale' accessType='inputOutput' type='SFFloat' value='0.5'/></div><div class="">                        <field name='power' accessType='inputOutput' type='SFFloat' value='2'/></div><div class="">                        <ShaderPart url='"bubbles.vs" "<a href="http://coderextreme.net/X3DJSONLD/bubbles.vs" class="">http://coderextreme.net/X3DJSONLD/bubbles.vs</a>"' containerField='parts'/></div><div class="">                        <ShaderPart url='"bubbles.fs" "<a href="http://coderextreme.net/X3DJSONLD/bubbles.fs" class="">http://coderextreme.net/X3DJSONLD/bubbles.fs</a>"' containerField='parts' type='FRAGMENT'/></div><div class="">                    </ComposedShader--></div><div class="">                </Appearance></div><div class="">            </Shape></div><div class="">        </Transform></div><div class="">        <TimeSensor DEF='TourTime' cycleInterval='5' loop='true'/></div><div class="">        <PositionInterpolator DEF='TourPosition' key='0 1' keyValue='0 0 10 0 0 -10'/></div><div class="">        <OrientationInterpolator DEF='TourOrientation' key='0 1' keyValue='0 1 0 0 0 1 0 3.1416'/></div><div class="">        <Script DEF='RandomTourTime'></div><div class="">            <field accessType='inputOnly' name='set_fraction' type='SFFloat'/></div><div class="">            <!--field name='key' accessType='inputOutput' type='MFFloat'/--></div><div class="">            <field name='value_changed' accessType='inputOutput' type='SFFloat' value='0'/></div><div class="">            <field name='orientations' accessType='inputOutput' type='MFRotation' value='0,1,0,0,0,1,0,-1.57,0,1,0,3.14,0,1,0,1.57,0,1,0,0,1,0,0,-1.57,0,1,0,0,1,0,0,1.57,0,1,0,0'/></div><div class="">            <field name='positions' accessType='inputOutput' type='MFVec3f' value='0,0,10,-10,0,0,0,0,-10,10,0,0,0,0,10,0,10,0,0,0,10,0,-10,0,0,0,10'/></div><div class="">            <field name='orientation_changed' accessType='inputOutput' type='MFRotation'/></div><div class="">            <field name='position_changed' accessType='inputOutput' type='MFVec3f'/></div><div class="">            ecmascript:</div><div class="">            </div><div class="">         </div><div class="">               function set_fraction(value) {</div><div class="">                        //var positions = [[0, 0, 10], [-10, 0, 0], [0, 0, -10], [10, 0, 0], [0, 0, 10], [0, 10, 0], [0, 0, 10], [0, -10, 0], [0, 0, 10]];</div><div class="">                        //var orientations = [[0, 1, 0, 0], [0, 1, 0, -1.57], [0, 1, 0, 3.14], [0, 1, 0, 1.57], [0, 1, 0, 0] [1, 0, 0, -1.57], [0, 1, 0, 0], [1, 0, 0, 1.57], [0, 1, 0, 0]];</div><div class="">                    //Browser.println(value);</div><div class="">                        var ov = value_changed;</div><div class="">                        Browser.println(ov);      </div><div class="">                        //Browser.println(positions.length);                  </div><div class="">                        value_changed = Math.round(Math.random()*positions.length);</div><div class="">                        Browser.println(value_changed);</div><div class="">                        var vc = value_changed;</div><div class="">                        </div><div class="">                        Browser.println(orientations[ov]);</div><div class="">                        Browser.println(orientations[vc]);</div><div class="">                        orientation_changed[0] = new SFRotation(orientations[ov][0], orientations[ov][1], orientations[ov][2], orientations[ov][3]);</div><div class="">                        orientation_changed[1] = new SFRotation(orientations[vc][0], orientations[vc][1], orientations[vc][2], orientations[vc][3]);</div><div class="">                        Browser.println(positions[ov]);</div><div class="">                        Browser.println(positions[vc]);</div><div class="">                        position_changed[0] = new SFVec3f(positions[ov]);</div><div class="">                        position_changed[1] = new SF3Vecf(positions[vc]);</div><div class="">                    // }</div><div class="">               }</div><div class="">        </Script></div><div class="">        <ROUTE fromNode='TourTime' fromField='cycleTime' toNode='RandomTourTime' toField='set_fraction'/></div><div class="">        <ROUTE fromNode='RandomTourTime' fromField='orientation_changed' toNode='TourOrientation' toField='keyValue'/></div><div class="">        <ROUTE fromNode='RandomTourTime' fromField='position_changed' toNode='TourPosition' toField='keyValue'/></div><div class="">        <ROUTE fromNode='TourTime' fromField='fraction_changed' toNode='TourOrientation' toField='set_fraction'/></div><div class="">        <ROUTE fromNode='TourOrientation' fromField='value_changed' toNode='Tour' toField='set_orientation'/></div><div class="">        <ROUTE fromNode='TourTime' fromField='fraction_changed' toNode='TourPosition' toField='set_fraction'/></div><div class="">        <ROUTE fromNode='TourPosition' fromField='value_changed' toNode='Tour' toField='set_position'/></div><div class="">    </Scene></div><div class=""></X3D></div><br class=""></body></html>