Loading js/x3dom_functions.js +35 −3 Original line number Original line Diff line number Diff line Loading @@ -60,6 +60,10 @@ function x3dom_getXYPosOr(cnvx,cnvy,round){ //console.log("That event:"); //console.log("That event:"); //console.log(Scene._stored_x3dom_event); //console.log(Scene._stored_x3dom_event); var campos = x3dom_getCameraPosOr(); var xc = campos.x; var yc = campos.y; var zc = campos.z; var shootRay = elem.runtime.shootRay(cnvx,cnvy); var shootRay = elem.runtime.shootRay(cnvx,cnvy); Loading Loading @@ -89,7 +93,13 @@ function x3dom_getXYPosOr(cnvx,cnvy,round){ y = shootRay.pickPosition.y; y = shootRay.pickPosition.y; z = shootRay.pickPosition.z; z = shootRay.pickPosition.z; dist_xz = Math.sqrt(x*x+z*z); var xyz = zNear_bug_correction([x,y,z]); x = xyz[0]; y = xyz[1]; z = xyz[2]; dist_xz = Math.sqrt(Math.pow(x-xc,2)+Math.pow(z-zc,2)); }else{ }else{ Loading @@ -99,11 +109,11 @@ function x3dom_getXYPosOr(cnvx,cnvy,round){ dist_xz = Data.markers[index].d_x3d; dist_xz = Data.markers[index].d_x3d; if (isNaN(dist_xz)){ if (isNaN(dist_xz)){ dist_xz = Math.sqrt(x*x+z*z); dist_xz = Math.sqrt(Math.pow(x-xc,2)+Math.pow(z-zc,2));; } } } } dist_xyz = Math.sqrt(y*y+dist_xz*dist_xz); dist_xyz = Math.sqrt(Math.pow(y-yc,2)+Math.pow(dist_xz,2)); id = $(shootRay.pickObject).attr("id"); id = $(shootRay.pickObject).attr("id"); Loading Loading @@ -214,6 +224,28 @@ function x3dom_getCameraPosOr(round){ } } /** * Fix a bug with zNear in x3dom 1.7.2 */ function zNear_bug_correction(xyz){ var zNear = Scene.element.runtime.viewpoint().getNear(); var x = xyz[0]; var y = xyz[1]; var z = xyz[2]; var z1 = z + zNear; var zratio = z1/z; x = zratio*x; y = zratio*y; z = z1; return [x,y,z]; } // this upright is for world coordinates, not the camera's // this upright is for world coordinates, not the camera's // the up vector should be taken from the initial camera orientation in kml. // the up vector should be taken from the initial camera orientation in kml. function x3dom_setUpRight(){ function x3dom_setUpRight(){ Loading js/x3dom_init.js +18 −2 Original line number Original line Diff line number Diff line Loading @@ -305,6 +305,12 @@ X3DOMObject.Shape.prototype._registerEvents = function(){ var y = e.originalEvent.worldY; var y = e.originalEvent.worldY; var z = e.originalEvent.worldZ; var z = e.originalEvent.worldZ; var xyz = zNear_bug_correction([x,y,z]); x = xyz[0]; y = xyz[1]; z = xyz[2]; // (not used atm) store x3dom event to use in normal events // (not used atm) store x3dom event to use in normal events self._stored_x3dom_event = e.originalEvent; self._stored_x3dom_event = e.originalEvent; Loading Loading @@ -547,6 +553,13 @@ X3DOMObject.Marker.prototype.init = function(){ x = sr.pickPosition.x; x = sr.pickPosition.x; y = sr.pickPosition.y; y = sr.pickPosition.y; z = sr.pickPosition.z; z = sr.pickPosition.z; var xyz = zNear_bug_correction([x,y,z]); x = xyz[0]; y = xyz[1]; z = xyz[2]; d1 = Math.sqrt(x*x+z*z); d1 = Math.sqrt(x*x+z*z); if ((d1-d0)<0.1){ if ((d1-d0)<0.1){ Loading Loading @@ -879,10 +892,13 @@ X3DOMObject.Marker.mouseMove = function(event){ var sphere = Scene.draggedTransformNode.parent().parent(); var sphere = Scene.draggedTransformNode.parent().parent(); var index = parseInt(sphere.attr("id").substr(7)); var index = parseInt(sphere.attr("id").substr(7)); X3DOMObject.Marker.place(sr.pickPosition.x,sr.pickPosition.y,sr.pickPosition.z,"my-sph-"+index); var xyz = [sr.pickPosition.x,sr.pickPosition.y,sr.pickPosition.z]; xyz = zNear_bug_correction(xyz); X3DOMObject.Marker.place(xyz[0],xyz[1],xyz[2],"my-sph-"+index); //console.log("got shape"); //console.log("got shape"); //Scene.draggedTransformNode //Scene.draggedTransformNode X3DOMObject.Marker.slide(index,sr.pickPosition.x,sr.pickPosition.y,sr.pickPosition.z); X3DOMObject.Marker.slide(index,xyz[0],xyz[1],xyz[2]); X3DOMObject.displayInfo(event); X3DOMObject.displayInfo(event); X3DOMObject.displayViewInfo(event); X3DOMObject.displayViewInfo(event); Loading viewer.html +3 −1 Original line number Original line Diff line number Diff line Loading @@ -56,6 +56,8 @@ <scene> <scene> <navigationInfo id="navInfo" type='"examine"' speed='0.01'></navigationInfo> <navigationInfo id="navInfo" type='"examine"' speed='0.01'></navigationInfo> <Viewpoint fieldOfView='1' position='0 0 0' orientation='0 0 1 0' ></Viewpoint> <Viewpoint fieldOfView='1' position='0 0 0' orientation='0 0 1 0' ></Viewpoint> <!-- in x3dom 1.7.2 - big zNear does not work properly --> <!--<Viewpoint fieldOfView='1' position='0 0 0' orientation='0 0 1 0' zNear='2'></Viewpoint>--> <!-- <group> <!-- <group> <inline name="back" namespacename="back" url="models/m1/v1/background.x3d"/> <inline name="back" namespacename="back" url="models/m1/v1/background.x3d"/> </group>--> </group>--> Loading Loading
js/x3dom_functions.js +35 −3 Original line number Original line Diff line number Diff line Loading @@ -60,6 +60,10 @@ function x3dom_getXYPosOr(cnvx,cnvy,round){ //console.log("That event:"); //console.log("That event:"); //console.log(Scene._stored_x3dom_event); //console.log(Scene._stored_x3dom_event); var campos = x3dom_getCameraPosOr(); var xc = campos.x; var yc = campos.y; var zc = campos.z; var shootRay = elem.runtime.shootRay(cnvx,cnvy); var shootRay = elem.runtime.shootRay(cnvx,cnvy); Loading Loading @@ -89,7 +93,13 @@ function x3dom_getXYPosOr(cnvx,cnvy,round){ y = shootRay.pickPosition.y; y = shootRay.pickPosition.y; z = shootRay.pickPosition.z; z = shootRay.pickPosition.z; dist_xz = Math.sqrt(x*x+z*z); var xyz = zNear_bug_correction([x,y,z]); x = xyz[0]; y = xyz[1]; z = xyz[2]; dist_xz = Math.sqrt(Math.pow(x-xc,2)+Math.pow(z-zc,2)); }else{ }else{ Loading @@ -99,11 +109,11 @@ function x3dom_getXYPosOr(cnvx,cnvy,round){ dist_xz = Data.markers[index].d_x3d; dist_xz = Data.markers[index].d_x3d; if (isNaN(dist_xz)){ if (isNaN(dist_xz)){ dist_xz = Math.sqrt(x*x+z*z); dist_xz = Math.sqrt(Math.pow(x-xc,2)+Math.pow(z-zc,2));; } } } } dist_xyz = Math.sqrt(y*y+dist_xz*dist_xz); dist_xyz = Math.sqrt(Math.pow(y-yc,2)+Math.pow(dist_xz,2)); id = $(shootRay.pickObject).attr("id"); id = $(shootRay.pickObject).attr("id"); Loading Loading @@ -214,6 +224,28 @@ function x3dom_getCameraPosOr(round){ } } /** * Fix a bug with zNear in x3dom 1.7.2 */ function zNear_bug_correction(xyz){ var zNear = Scene.element.runtime.viewpoint().getNear(); var x = xyz[0]; var y = xyz[1]; var z = xyz[2]; var z1 = z + zNear; var zratio = z1/z; x = zratio*x; y = zratio*y; z = z1; return [x,y,z]; } // this upright is for world coordinates, not the camera's // this upright is for world coordinates, not the camera's // the up vector should be taken from the initial camera orientation in kml. // the up vector should be taken from the initial camera orientation in kml. function x3dom_setUpRight(){ function x3dom_setUpRight(){ Loading
js/x3dom_init.js +18 −2 Original line number Original line Diff line number Diff line Loading @@ -305,6 +305,12 @@ X3DOMObject.Shape.prototype._registerEvents = function(){ var y = e.originalEvent.worldY; var y = e.originalEvent.worldY; var z = e.originalEvent.worldZ; var z = e.originalEvent.worldZ; var xyz = zNear_bug_correction([x,y,z]); x = xyz[0]; y = xyz[1]; z = xyz[2]; // (not used atm) store x3dom event to use in normal events // (not used atm) store x3dom event to use in normal events self._stored_x3dom_event = e.originalEvent; self._stored_x3dom_event = e.originalEvent; Loading Loading @@ -547,6 +553,13 @@ X3DOMObject.Marker.prototype.init = function(){ x = sr.pickPosition.x; x = sr.pickPosition.x; y = sr.pickPosition.y; y = sr.pickPosition.y; z = sr.pickPosition.z; z = sr.pickPosition.z; var xyz = zNear_bug_correction([x,y,z]); x = xyz[0]; y = xyz[1]; z = xyz[2]; d1 = Math.sqrt(x*x+z*z); d1 = Math.sqrt(x*x+z*z); if ((d1-d0)<0.1){ if ((d1-d0)<0.1){ Loading Loading @@ -879,10 +892,13 @@ X3DOMObject.Marker.mouseMove = function(event){ var sphere = Scene.draggedTransformNode.parent().parent(); var sphere = Scene.draggedTransformNode.parent().parent(); var index = parseInt(sphere.attr("id").substr(7)); var index = parseInt(sphere.attr("id").substr(7)); X3DOMObject.Marker.place(sr.pickPosition.x,sr.pickPosition.y,sr.pickPosition.z,"my-sph-"+index); var xyz = [sr.pickPosition.x,sr.pickPosition.y,sr.pickPosition.z]; xyz = zNear_bug_correction(xyz); X3DOMObject.Marker.place(xyz[0],xyz[1],xyz[2],"my-sph-"+index); //console.log("got shape"); //console.log("got shape"); //Scene.draggedTransformNode //Scene.draggedTransformNode X3DOMObject.Marker.slide(index,sr.pickPosition.x,sr.pickPosition.y,sr.pickPosition.z); X3DOMObject.Marker.slide(index,xyz[0],xyz[1],xyz[2]); X3DOMObject.displayInfo(event); X3DOMObject.displayInfo(event); X3DOMObject.displayViewInfo(event); X3DOMObject.displayViewInfo(event); Loading
viewer.html +3 −1 Original line number Original line Diff line number Diff line Loading @@ -56,6 +56,8 @@ <scene> <scene> <navigationInfo id="navInfo" type='"examine"' speed='0.01'></navigationInfo> <navigationInfo id="navInfo" type='"examine"' speed='0.01'></navigationInfo> <Viewpoint fieldOfView='1' position='0 0 0' orientation='0 0 1 0' ></Viewpoint> <Viewpoint fieldOfView='1' position='0 0 0' orientation='0 0 1 0' ></Viewpoint> <!-- in x3dom 1.7.2 - big zNear does not work properly --> <!--<Viewpoint fieldOfView='1' position='0 0 0' orientation='0 0 1 0' zNear='2'></Viewpoint>--> <!-- <group> <!-- <group> <inline name="back" namespacename="back" url="models/m1/v1/background.x3d"/> <inline name="back" namespacename="back" url="models/m1/v1/background.x3d"/> </group>--> </group>--> Loading