Monterey Peninsula College (MPC) swimming pool, built several different ways, author can choose one by Switch node selection
The following image test snapshots show inconsistent support by X3D players. Xj3D did not render the textures, SwirlX3D player did not render the scene.
This scene includes trace diagnostic for changing user navigation from EXAMINE to FLY when binding/unbinding the initial overhead-perspective Viewpoint
document how to adjust Viewpoint centerOfRotation
X3D-Edit, https://www.web3d.org/x3d/tools/X3D-Edit
"../../Tools/Authoring/CoordinateAxes.x3d" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/CoordinateAxes.x3d" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter03Grouping/CoordinateAxes.x3d" "../../Tools/Authoring/CoordinateAxes.wrl" "https://www.web3d.org/x3d/content/examples/Savage/Tools/Authoring/CoordinateAxes.wrl" "https://www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter03Grouping/CoordinateAxes.wrl"
High above pool, long-ways across, from 100 feet
High above pool, long-ways up, from 120 feet
ecmascript: function set_traceValue (eventValue, timeStamp) { Browser.println ('Script method set_traceValue invoked, which is now handing off to traceValueHandler()...'); traceValueHandler (eventValue, timeStamp); } function traceValue (eventValue, timeStamp) { Browser.println ('Script method traceValue invoked, which is now handing off to traceValueHandler()...'); traceValueHandler (eventValue, timeStamp); } function traceValueHandler (eventValue, timeStamp) { // input eventValue received for trace field if (timeStamp - timeStampPreviousReport >= reportInterval) { Browser.println ('Trace_ROUTE_ViewOverhead_isBound_TO_NavigationExamineMode_set_bind type=SFBool value=' + eventValue); timeStampPreviousReport = timeStamp; if (eventValue == true) Browser.println ('User navigation should be EXAMINE'); else Browser.println ('User navigation should be FLY'); } } function timeOfDay (someTime) { hh = Math.floor (someTime /(60*60)) % 24; mm = Math.floor (someTime / 60) % 60; ss = Math.floor (someTime) % 60; if (hh < 9) hour = '0' + hh; else hour = hh; if (mm < 9) minute = '0' + mm; else minute = mm; if (ss < 9) second = '0' + ss; else second = ss; return '(' + hour + ':' + minute + ':' + second + ' GMT)'; }
Sampling frequency in seconds (0 means all values)
"PoolMontereyPeninsulaCollegeDiagram.png" "https://www.web3d.org/x3d/content/examples/Savage/Locations/PoolMontereyPeninsulaCollegeDiagram.png"