xzw 1 year ago
parent
commit
796e7e48c0
3 changed files with 28 additions and 10 deletions
  1. 1 0
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 26 9
      src/sdk/cover/index.js

+ 1 - 0
public/lib/potree/potree.js

@@ -30397,6 +30397,7 @@
 	          });
 	          });
 	          this.addEventListener('flyToPanoDone', e => {
 	          this.addEventListener('flyToPanoDone', e => {
 	            //漫游到另一个模型就要选中这个模型
 	            //漫游到另一个模型就要选中这个模型
+	            if (!e.makeIt) return;
 	            var model = this.currentPano.pointcloud;
 	            var model = this.currentPano.pointcloud;
 	            if (model != lastModel) {
 	            if (model != lastModel) {
 	              this.changeModelMat(lastModel);
 	              this.changeModelMat(lastModel);

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


+ 26 - 9
src/sdk/cover/index.js

@@ -30,7 +30,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
     Potree.settings.mergeType2 = true //标识新版
     Potree.settings.mergeType2 = true //标识新版
     Potree.settings.modelSkybox = true //是否将全景图贴在模型上(会导致卡顿)。若不显示模型将不显示Reticule
     Potree.settings.modelSkybox = true //是否将全景图贴在模型上(会导致卡顿)。若不显示模型将不显示Reticule
     Potree.settings.tiles3DMaxMemory = 300 //稍微增加点
     Potree.settings.tiles3DMaxMemory = 300 //稍微增加点
-    Potree.settings.mergeTransCtlOnClick = true
+    //Potree.settings.mergeTransCtlOnClick = true
     Potree.settings.canWalkThroughModel = true
     Potree.settings.canWalkThroughModel = true
     
     
     let { THREE } = Potree.mergeEditStart(dom, mapDom)
     let { THREE } = Potree.mergeEditStart(dom, mapDom)
@@ -484,8 +484,8 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
                 pose.panoId = viewer.images360.currentPano.originID 
                 pose.panoId = viewer.images360.currentPano.originID 
                 pose.model = viewer.images360.currentPano.pointcloud.result_
                 pose.model = viewer.images360.currentPano.pointcloud.result_
                  
                  
-                pose.posInModel = Potree.Utils.datasetPosTransform({ toDataset: true, position: camera.position.clone(), model:pose.model })
-                pose.rotInModel = Potree.Utils.datasetRotTransform({ toDataset: true, quaternion: camera.position.clone(), getQuaternion: true, model:pose.model }) //拿第一个数据集
+                pose.posInModel = Potree.Utils.datasetPosTransform({ toDataset: true, position: camera.position.clone(), object:pose.model })
+                pose.rotInModel = Potree.Utils.datasetRotTransform({ toDataset: true, quaternion: camera.position.clone(), getQuaternion: true, object:pose.model }) //拿第一个数据集
  
  
             }
             }
             
             
@@ -495,19 +495,36 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
         comeTo(o = {}) {
         comeTo(o = {}) {
             //console.log('comeTo',o.position, o.target)
             //console.log('comeTo',o.position, o.target)
             //飞到某个点  
             //飞到某个点  
-            if (o.modelId) {
+            /* if (o.modelId) {
                 ['position', 'target'].forEach(e => {
                 ['position', 'target'].forEach(e => {
                     if (o[e]) {
                     if (o[e]) {
                         o[e] = Potree.Utils.datasetPosTransform({ fromDataset: true, datasetId: o.modelId, position: o[e] })
                         o[e] = Potree.Utils.datasetPosTransform({ fromDataset: true, datasetId: o.modelId, position: o[e] })
                     }
                     }
                 })
                 })
+            } */
+            let deferred = $.Deferred()
+            if(o.displayMode == 'showPanos'){
+                let pano = o.model.panos.find(a=>a.originID == e.panoId)
+                if(pano){
+                    let quaternion = Potree.Utils.datasetRotTransform({ fromDataset: true, quaternion: o.rotInModel, getQuaternion: true, object:o.model })  
+
+                    o.model.result_.flyInPano(pano, {quaternion, callback(){
+                        o.callback && o.callback()
+                        deferred.resolve(true)
+                    }})
+                    return deferred.promise()
+                    
+                }else{
+                    console.warn('没有找到漫游点',o)
+                }
             }
             }
+            
 
 
             if (o.distance) {
             if (o.distance) {
                 let position = o.target || o.position
                 let position = o.target || o.position
                 return viewer.focusOnObject({ position }, 'tag', null, { distance: o.distance }).promise
                 return viewer.focusOnObject({ position }, 'tag', null, { distance: o.distance }).promise
             }
             }
-            let deferred = $.Deferred()
+            
 
 
             viewer.scene.view.setView($.extend({}, o, {
             viewer.scene.view.setView($.extend({}, o, {
                 duration: o.dur,
                 duration: o.dur,
@@ -737,9 +754,9 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
                 })
                 })
                 spliceFromArr(model, props, true)
                 spliceFromArr(model, props, true)
  
  
-                model.addEventListener('changeSelect', (e) => {
+                /* model.addEventListener('changeSelect', (e) => {
                     e.selected ? MergeEditor.transformControls.attach(model, e.clickPos) : MergeEditor.transformControls.detach()
                     e.selected ? MergeEditor.transformControls.attach(model, e.clickPos) : MergeEditor.transformControls.detach()
-                })
+                }) */
 
 
 
 
                 if (props.mode == 'single') {//模型查看页
                 if (props.mode == 'single') {//模型查看页
@@ -794,7 +811,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
                 supportPano() {  //是否支持全景图
                 supportPano() {  //是否支持全景图
                     return model.panos && model.panos.length > 0
                     return model.panos && model.panos.length > 0
                 },
                 },
-                flyInPano(pano, {dontFly}={}) {//  飞入全景图
+                flyInPano(pano, {dontFly, quaternion}={}) {//  飞入全景图
                     requestInPano = model
                     requestInPano = model
                     pano = pano || viewer.images360.findNearestPano(null, model.panos)
                     pano = pano || viewer.images360.findNearestPano(null, model.panos)
                     if (pano) {
                     if (pano) {
@@ -820,7 +837,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
                             }
                             }
                         }, { once: true })
                         }, { once: true })
 
 
-                        dontFly || viewer.images360.flyToPano({ pano, canCancelLast: true })
+                        dontFly || viewer.images360.flyToPano({ pano, canCancelLast: true, quaternion })
                         Potree.settings.displayMode = 'showPanos' 
                         Potree.settings.displayMode = 'showPanos'