Browse Source

fix: dealUrl 因为改过replace需要改一下 去掉 \\

xzw 10 months ago
parent
commit
1e5be5da17
3 changed files with 85 additions and 78 deletions
  1. 82 74
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 2 3
      src/sdk/cover/index.js

+ 82 - 74
public/lib/potree/potree.js

@@ -4605,7 +4605,7 @@
 	    }
 	  },
 	  dealURL(url) {
-	    var urlNew = this.replaceAll(url, "\\+", "%2B"); // 浏览器似乎不支持访问带+的地址
+	    var urlNew = this.replaceAll(url, "+", "%2B"); //this.replaceAll(url, "\\+", "%2B");// 浏览器似乎不支持访问带+的地址
 
 	    urlNew = this.replaceAll(urlNew, "/.//", "/"); //去除双斜杠(/.//)
 
@@ -21579,9 +21579,9 @@
 	function panoEditStart(dom, number, EditCloudsArgs) {
 	  Potree.settings.editType = 'pano';
 	  Potree.settings.number = number;
-	  Potree.settings.unableNavigate = true;
 	  Potree.settings.sizeFitToLevel = true; //当type为衰减模式时自动根据level调节大小。每长一级,大小就除以2
 
+	  var datasetData;
 	  var viewer = new Potree.Viewer(dom);
 	  var Alignment = viewer.modules.Alignment;
 	  viewer.setEDLEnabled(false);
@@ -21598,15 +21598,6 @@
 	    });
 	    Potree.settings.sizeFitToLevel = true;
 	  }
-	  EditCloudsArgs.forEach((e, i) => {
-	    //加载点云和漫游点
-	    if (e.datasetId == void 0) {
-	      console.error('没有datasetId '); // 看看和看见没有
-	      e.datasetId = i; //经常没有datasetId所以自己加
-	    }
-	    Potree.settings.datasetsPanos[e.datasetId] = null;
-	    Potree.loadPanosDone(e.datasetId, e.clouds);
-	  });
 	  var pointcloudLoadDone = function pointcloudLoadDone() {
 	    //所有点云cloud.js加载完毕后 
 
@@ -21657,6 +21648,7 @@
 	    var panoCount = panoData.length;
 	    var pointcloudLoaded = 0;
 	    var datasetsCount = Object.keys(Potree.settings.datasetsPanos).length;
+	    var datasetData = Potree.datasetData.find(e => e.datasetId = datasetId);
 	    panoData.forEach((pano, index) => {
 	      //let cloudPath = `${Potree.scriptPath}/data/panoEdit/uuidcloud/${pano.uuid}/cloud.js` 
 	      var cloudPath = "".concat(Potree.settings.urls.prefix1, "/").concat(Potree.settings.webSite, "/").concat(Potree.settings.number, "/data/bundle_").concat(Potree.settings.number, "/building/uuidcloud/").concat(pano.uuid, "/cloud.js");
@@ -21671,7 +21663,7 @@
 	      var timeStamp = 0;
 	      pano.index = index; //注意:index不等于uuid,因为有的uuid缺失。但是visibles中存的是下标! 
 
-	      Potree.loadPointCloud(cloudPath, name, name, timeStamp, e => {
+	      Potree.loadPointCloud(cloudPath, name, number, timeStamp, e => {
 	        //开始加载点云
 	        var scene = viewer.scene;
 	        var pointcloud = e.pointcloud;
@@ -21687,6 +21679,8 @@
 	        pointcloud.dataset_id = datasetId; //多个点云指向一个datasetId
 	        pointcloud.panoUuid = pano.uuid;
 	        pointcloud.timeStamp = timeStamp;
+	        pointcloud.datasetData = datasetData;
+	        pointcloud.hasDepthTex = Potree.settings.useDepthTex && !!datasetData.has_depth;
 
 	        //transformPointcloud(pointcloud, pano)
 	        scene.addPointCloud(pointcloud);
@@ -21708,6 +21702,20 @@
 	    Potree.loadPanosInfo(data => {
 	      loadPanosDone('testDataset', data.sweepLocations);
 	    });
+	  } else {
+	    Potree.loadDatasets(datasets => {
+	      Potree.datasetData = datasets;
+	      if (!(EditCloudsArgs instanceof Array)) EditCloudsArgs = [EditCloudsArgs];
+	      EditCloudsArgs.forEach((e, i) => {
+	        //加载点云和漫游点
+	        if (e.datasetId == void 0) {
+	          console.error('没有datasetId '); // 看看和看见没有
+	          e.datasetId = i; //经常没有datasetId所以自己加
+	        }
+	        Potree.settings.datasetsPanos[e.datasetId] = null;
+	        Potree.loadPanosDone(e.datasetId, e.clouds);
+	      });
+	    }, number);
 	  }
 	}
 	function mergeEditStart(dom, mapDom) {
@@ -26714,7 +26722,11 @@
 	      //因为位置朝向随着点云位置改变,所以直接运用到点云上,这里清零
 	      this.originPosition = new Vector3(); //{x: 0, y: 0, z: 0}
 	      this.quaternion = new Quaternion(); //{w: 0, x: 0, y: 0, z: 1}
-	      //this.quaternion4dkk = math.convertVisionQuaternion(this.quaternion)//4dkk内使用的quaternion 
+	      this.quaternion4dkk = math.convertVisionQuaternion(this.quaternion); //4dkk内使用的quaternion
+
+	      this.quaternion2 = this.quaternion.clone();
+	      this.quaternion = new Quaternion().multiplyQuaternions(this.quaternion, rot90); //全景图和Cube的水平采样起始坐标相差90度,cubeTex转90度
+
 	      this.visibles = o.visibles;
 	      this.rtkState = o.has_rtk ? o.use_rtk : null;
 	      var height = 1.4; //相机高度
@@ -26769,9 +26781,8 @@
 
 	      //let xy = this.transform.forward([this.longitude, this.latitude]);  
 	      //this.file = `https://4dkk.4dage.com/images/images${Potree.settings.number}/pan/high/${this.id}.jpg`
-
-	      this.neighbours = [];
 	    }
+	    this.neighbours = [];
 	    this.rotation = new Euler().setFromQuaternion(this.quaternion);
 	    this.build();
 	    this.transformByPointcloud(); //初始化位移
@@ -30342,7 +30353,7 @@
 	    var click = e => {
 	      //不用"mouseup" 是因为 mouseup有drag object时也会触发 
 	      if (e.clickElement || Potree.settings.unableNavigate || this.flying || !e.isTouch && e.button != MOUSE.LEFT || e.drag && e.drag.object //拖拽结束时不算
-	      || Potree.settings.editType == 'pano' && viewer.modules.PanoEditor.activeViewName != 'mainView'
+	      /*  || Potree.settings.editType == 'pano' && viewer.modules.PanoEditor.entered */
 	      //||   Potree.settings.editType == 'merge' && !e.intersectPoint || viewer.inputHandler.hoveredElements[0] && viewer.inputHandler.hoveredElements[0].isModel && e.intersectPoint.distance > viewer.inputHandler.hoveredElements[0].distance
 	      || Potree.settings.editType == 'merge' && !Potree.settings.mergeType2
 	      //|| Potree.settings.mergeType2 && Potree.settings.displayMode == 'showPointCloud' 
@@ -71858,7 +71869,7 @@
 	var images360, Alignment$1, SiteModel$1, suggestCircleMat;
 	var texLoader$c = new TextureLoader();
 	texLoader$c.crossOrigin = "anonymous";
-	var rotQua = new Quaternion().setFromAxisAngle(new Vector3(0, 0, 1), Math.PI);
+	var rotQua = new Quaternion().setFromAxisAngle(new Vector3(0, 0, 1), Math.PI / 2 /* Math.PI */);
 	var lineMats$3 = {};
 	var circleMats = {};
 	var renderOrders$1 = {
@@ -71968,7 +71979,6 @@
 	      viewer.scene.scene.add(this.panoMeshs);
 	      this.lineMeshes.name = 'lineMeshes';
 	      viewer.scene.scene.add(this.lineMeshes);
-	      Potree.settings.ifShowMarker = false;
 	      {
 	        this.transformControls = new TransformControls(viewer.mainViewport.camera, viewer.renderArea, {
 	          dontHideWhenFaceCamera: true,
@@ -72024,42 +72034,9 @@
 	      viewer.setEDLEnabled(true); //为了降一倍的绘制. 同时用描边增强立体感,弥补点云稀疏
 	      viewer.setEDLRadius(3);
 	      viewer.setEDLStrength(0.02);
-	      this.switchView('top');
-	      {
-	        //默认选择一个楼层
-	        var panoVisiReady, siteModelReady;
-	        var floorInit = () => {
-	          if (!panoVisiReady || !siteModelReady) return;
-	          setTimeout(() => {
-	            if (this.currentFloor == 'all') {
-	              //还未选择楼层的话
-	              var floor = SiteModel$1.entities.find(e => e.buildType == 'floor' && e.panos.length); //选择有漫游点的一层
-	              if (!floor) {
-	                floor = 'all'; //SiteModel.entities.find(e=>e.buildType == 'floor')
-	                console.log('没有一层有漫游点?!');
-	              }
-	              console.log('initDataDone');
-	              console.log('gotoFloor 1');
-	              this.gotoFloor(floor);
-	            }
-	          }, 1); //2d那边用了nextTick ,so setTimeout here
-	        };
-	        SiteModel$1.bus.addEventListener('initDataDone', () => {
-	          siteModelReady = true;
-	          floorInit();
-	        }, {
-	          once: true
-	        });
-	        this.addEventListener('panoVisiReady', () => {
-	          //2d初始化完成,才可以由3d修改pano显示 (因为在之前2d会给每个pano传来显示的消息,在这之前的修改都会别覆盖)
-	          panoVisiReady = true;
-	          floorInit();
-	        }, {
-	          once: true
-	        });
-	      }
 	      Alignment$1.bus.addEventListener('switchHandle', this.updateCursor.bind(this));
 	      viewer.addEventListener('global_click', e => {
+	        if (this.entered) return;
 	        if (e.button === MOUSE.RIGHT) {
 	          //取消旋转和平移
 	          //console.log('right click',e)
@@ -72124,35 +72101,63 @@
 	          viewer.dispatchEvent('content_changed');
 	        };
 	        viewer.addEventListener('global_mousemove', e => {
-	          update(e);
+	          if (this.entered) update(e);
 	        });
 
 	        //this.addEventListener('updateLinkGuideLine', update)
 	      }
-
-	      /* 
-	      viewer.inputHandler.addEventListener('keydown', (e)=>{
-	          if(e.event.key == "r" ){ 
-	              this.setTranMode('rotate') 
-	          }else if(e.event.key == "t"){
-	              this.setTranMode('translate') 
-	          }
-	      }) */
-	      /* { 
-	          viewer.addEventListener('camera_changed', (e)=>{ 
-	              Common.intervalTool.isWaiting('updatePointLevels', ()=>{  
-	                  this.updatePointLevels()
-	              }, 1050)
-	          })
-	            setTimeout(()=>{ 
-	              this.updatePointLevels()
-	          }, viewer.scene.pointclouds.length*150)  //等待差不多updat出了正确的visibleNode时                
-	      } */
-
 	      this.panoReposCallback = () => {
 	        viewer.controls.setTarget(this.selectedPano.position); //3d时绕其为中心转动
 	      };
 	    });
+	    this.leave();
+	    this.inited = true;
+	  }
+	  enter() {
+	    Potree.settings.display = 'showPointCloud';
+	    Potree.settings.ifShowMarker = false;
+	    Potree.Utils.updateVisible(this.panoMeshs, 'entered', true);
+	    Potree.Utils.updateVisible(this.lineMeshes, 'entered', true);
+	    Potree.settings.unableNavigate = true;
+	    this.switchView('top');
+
+	    //过后恢复  
+	    /* {//默认选择一个楼层
+	        let panoVisiReady, siteModelReady;
+	        let floorInit = ()=>{
+	            if(!panoVisiReady || !siteModelReady || !this.entered  )return
+	            setTimeout(()=>{
+	                if(this.currentFloor == 'all'){//还未选择楼层的话
+	                    let floor = SiteModel.entities.find(e=>e.buildType == 'floor' && e.panos.length) //选择有漫游点的一层
+	                    if(!floor){
+	                        floor = 'all'  //SiteModel.entities.find(e=>e.buildType == 'floor')
+	                        console.log('没有一层有漫游点?!')
+	                    }
+	                    console.log('initDataDone') 
+	                
+	                    console.log('gotoFloor 1') 
+	                    this.gotoFloor(floor)
+	                }
+	            },1) //2d那边用了nextTick ,so setTimeout here
+	        }
+	        
+	        SiteModel.bus.addEventListener('initDataDone',()=>{ 
+	            siteModelReady = true;
+	            floorInit() 
+	        },{once:true})
+	        this.addEventListener('panoVisiReady',()=>{//2d初始化完成,才可以由3d修改pano显示 (因为在之前2d会给每个pano传来显示的消息,在这之前的修改都会别覆盖)
+	            panoVisiReady = true 
+	            floorInit()
+	        },{once:true})   
+	    } */
+	  }
+	  leave() {
+	    Potree.settings.display = 'showPanos';
+	    Potree.settings.ifShowMarker = true;
+	    Potree.Utils.updateVisible(this.panoMeshs, 'entered', false);
+	    Potree.Utils.updateVisible(this.lineMeshes, 'entered', false);
+	    Potree.settings.unableNavigate = false;
+	    this.inited && this.switchView('mainView');
 	  }
 	  setTranMode(mode) {
 	    //rotate or translate 
@@ -73217,6 +73222,9 @@
 	    
 	    如果未全部相连,不能保存
 	    
+	    
+	    点位编辑页加载的漫游点坐标朝向和4dkk与主页的都不一样,是单独的一套。 
+	    
 	 */
 
 	var PanoEditor$1 = new PanoEditor();
@@ -78518,12 +78526,12 @@
 	        SiteModel,
 	        volumeComputer: new VolumeComputer() //暂时
 	      };
-	      Potree.settings.useDepthTex = Potree.settings.mergeType2;
 	      if (Potree.settings.editType == "pano") {
 	        this.modules.PanoEditor = PanoEditor$1;
 	      } else if (Potree.settings.editType == "merge") {
 	        this.modules.MergeEditor = MergeEditor;
 	        this.modules.CamAniEditor = CamAniEditor;
+	        Potree.settings.useDepthTex = Potree.settings.mergeType2;
 	      }
 	    } else {
 	      this.modules = {

File diff suppressed because it is too large
+ 1 - 1
public/lib/potree/potree.js.map


+ 2 - 3
src/sdk/cover/index.js

@@ -1345,7 +1345,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
                 baseLayerPicker: false,
                 fullscreenButton: false,
                 geocoder: false,
-                homeButton: false,
+                homeButton: false, 
                 infoBox: false,
                 sceneModePicker: false,
                 selectionIndicator: false,
@@ -1367,8 +1367,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
 
                 terrainShadows: Cesium.ShadowMode.DISABLED, //terrain地形
             });
-
-            
+             
             //lonlat = [113.595236803415,22.3665168584444]//[113.600356,22.364093]
             Potree.setLonlat(lonlat[0], lonlat[1])