xzw преди 1 година
родител
ревизия
5168c88adb
променени са 4 файла, в които са добавени 78 реда и са изтрити 65 реда
  1. 1 1
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 2 2
      public/test-case/model-list - 副本.json
  4. 74 61
      src/sdk/cover/index.js

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

@@ -30858,7 +30858,7 @@
 	    if (!toPano.pano.enabled) return done(false, true);
 	    //Potree.Log('hope flyToPano: '+toPano.pano.id, toPano.pano.position.toArray() )
 
-	    if (this.latestToPano && this.latestToPano != toPano && (
+	    if (!toPano.canCancelLast && this.latestToPano && this.latestToPano != toPano && (
 	    //还在飞
 	    this.latestToPano.pano != this.currentPano || !this.isAtPano())) {
 	      //如果旧的toPano只在pano旋转镜头,就直接取消旧的,继续执行 

Файловите разлики са ограничени, защото са твърде много
+ 1 - 1
public/lib/potree/potree.js.map


+ 2 - 2
public/test-case/model-list - 副本.json

@@ -195,8 +195,8 @@
                     100.0
                 ],
                 "position": {
-                    "x": -57.43192,
-                    "y": -25.28869,
+                    "x": -11.43192,
+                    "y": -17.28869,
                     "z": 2.31154
                 },
                 "rotation": {

+ 74 - 61
src/sdk/cover/index.js

@@ -44,6 +44,7 @@ export const enter = ({dom, mapDom, isLocal, lonlat, scenes }) => {
         
         viewer.backgroundOpacity = 0 
         
+        Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2ZGM2YzY0ZC1kNWE0LTRiYTgtYTkwNS1kYmJiODRjMWUwMmQiLCJpZCI6MjMzMTQ1LCJpYXQiOjE3MjI5OTUwNTB9.niqpkl6xOkQ2KeJjelyDDDydmSGqKXKb5cX2NyxSNAw'
         window.cesiumViewer = new Cesium.Viewer('app', {
             useDefaultRenderLoop: true,
             requestRenderMode:true, //add 只有需要render时才会render,如tile加载完后、镜头移动后
@@ -64,11 +65,10 @@ export const enter = ({dom, mapDom, isLocal, lonlat, scenes }) => {
                 maximumLevel : 19
             }),
             //高德秘钥版 imageryProvider: new Cesium.AmapImageryProvider({key, mapStyle: 'normal'})
-            
+            //报错 401 (Unauthorized) 的方法 https://blog.csdn.net/LBY_XK/article/details/121992641
             
             terrainShadows: Cesium.ShadowMode.DISABLED, //terrain地形
         }); 
-         
         
         proj4.defs("LOCAL", "+proj=tmerc +ellps=WGS84 +lon_0=" + lonlat[0].toPrecision(15) + " +lat_0=" + lonlat[1].toPrecision(15)); //高德坐标系
         proj4.defs("LOCAL_MAP", "+proj=tmerc +ellps=WGS84 +lon_0=" + lonlat[0].toPrecision(15) + " +lat_0=" + lonlat[1].toPrecision(15)); //地图和本地一样
@@ -90,7 +90,7 @@ export const enter = ({dom, mapDom, isLocal, lonlat, scenes }) => {
         var pos = camera.position
         if (e.viewport.name == 'MainView') {
             sceneBus.emit('cameraChange', { x: pos.x, y: pos.y, z: pos.z, rotate: camera.rotation })
-        
+          
             if(Potree.settings.showCesium){
                   
                 let pPos    = new THREE.Vector3(0, 0, 0).applyMatrix4(camera.matrixWorld);
@@ -142,6 +142,9 @@ export const enter = ({dom, mapDom, isLocal, lonlat, scenes }) => {
             }
         }   
     })
+    
+    
+    
     viewer.addEventListener('webglError', e => {
         console.error('viewer webglError: ' + e)
         sceneBus.emit('webglError', { msg: e.msg })
@@ -329,7 +332,14 @@ export const enter = ({dom, mapDom, isLocal, lonlat, scenes }) => {
         }
     }
      
-    
+    let camera_changed = (e)=>{
+        if (e.viewport.name == 'MainView' && e.changeInfo.positionChanged ) {
+            //viewer.mainViewport.camera.position
+            viewer.mainViewport.view.radius = 0.1 //使pivot在面前一丢丢距离
+            viewer.setControls(viewer.orbitControls)
+            viewer.removeEventListener('camera_changed', camera_changed)
+        }
+    }
     
     
     
@@ -473,7 +483,7 @@ export const enter = ({dom, mapDom, isLocal, lonlat, scenes }) => {
  
         setBackdrop(sky, type, {scale,rotate}){//天空盒背景
             //console.log('天空盒背景',  sky,type)
-            
+             
             let setGroundAndText = (color)=>{
                 MergeEditor.secondCompass.dom.find(".dirText").css({'color':color})
                 viewer.compass.dom.find(".dirText").css({'color':color})
@@ -765,10 +775,61 @@ export const enter = ({dom, mapDom, isLocal, lonlat, scenes }) => {
                     
             }
             
-            let scaleMeasure
+            let scaleMeasure 
             let result = {  
                 bus,
                 getDefaultRotation,
+                
+                supportPano(){  //是否支持全景图
+                    return model.panos && model.panos.length > 0 
+                },
+                flyInPano(){//  飞入全景图
+                    let pano = viewer.images360.findNearestPano(null,model.panos)
+                    if(pano){
+                        viewer.removeEventListener('camera_changed', camera_changed)
+                        viewer.images360.panos.forEach(pano=>{
+                            pano.setEnable(pano.pointcloud == model )
+                        })
+                        viewer.setControls(viewer.fpControls)
+                        viewer.images360.flyToPano({pano, canCancelLast:true}) 
+                        
+                        let changeVisi = (object)=>{
+                            Potree.Utils.updateVisible(object, 'showPanos', object == model)
+                        }
+                        
+                         
+                        Potree.settings.displayMode = 'showPanos' 
+                        MergeEditor.transformControls.detach(model)
+                        Potree.Utils.updateVisible(MergeEditor.boxHelper,'showPanos',false)
+                        
+                        
+                        viewer.images360.addEventListener('endChangeMode',()=>{ 
+                            //Potree.Utils.updateVisible(viewer.objs, 'showPanos', false)
+                            viewer.objs.children.forEach(changeVisi)
+                        },{once:true})  
+                        
+                    }
+                },
+                flyOutPano(){//  飞出全景图(就是切换到正常融合视角)
+                    let panoPos = viewer.images360.position.clone()
+                    //Potree.Utils.updateVisible(viewer.objs, 'showPanos', true)
+                    let changeVisi = (object)=>{
+                        Potree.Utils.updateVisible(object, 'showPanos', true)
+                    }
+                    viewer.objs.children.forEach(changeVisi)
+                    viewer.images360.panos.forEach(pano=>{
+                        pano.setEnable(true)
+                    })
+                     
+                    Potree.settings.displayMode = 'showPointCloud'
+                    Potree.Utils.updateVisible(MergeEditor.boxHelper,'showPanos',true)
+                     
+                    
+                    viewer.addEventListener('camera_changed', camera_changed) 
+                },
+                
+                
+                
                 changeShow(show){ 
                     props.show = show  //for autoLoads show model
                     if(model){  
@@ -776,12 +837,17 @@ export const enter = ({dom, mapDom, isLocal, lonlat, scenes }) => {
                         if(model.panos){
                             model.panos.forEach(e=>e.setEnable(show))
                         }
+                        
+                         
                         viewer.dispatchEvent('content_changed')
                     } 
                 },
                 changeSelect(state){
                     if(model){
-                        MergeEditor.selectModel(model, state, true, true)
+                        let fly = viewer.images360.latestRequestMode != 'showPanos'
+                        MergeEditor.selectModel(model, state, fly, true)
+                         
+                        
                         if(state && viewer.inputHandler.selection[0]){
                             MergeEditor.transformControls.attach(model) //viewer.transformObject(model); //交换
                         }
@@ -967,60 +1033,7 @@ export const enter = ({dom, mapDom, isLocal, lonlat, scenes }) => {
                     })
                 },
 
-                supportPano(){  //是否支持全景图
-                    return model.panos && model.panos.length > 0 
-                },
-                flyInPano(){//  飞入全景图
-                    let pano = viewer.images360.findNearestPano(null,model.panos)
-                    if(pano){
-                        viewer.images360.panos.forEach(pano=>{
-                            pano.setEnable(pano.pointcloud == model )
-                        })
-                        viewer.setControls(viewer.fpControls)
-                        viewer.images360.flyToPano(pano) 
-                        /* viewer.images360.addEventListener('endChangeMode',()=>{ 
-                            Potree.Utils.updateVisible(viewer.objs, 'showPanos', false)
-                        },{once:true}) */
-                        let changeVisi = (object)=>{
-                            Potree.Utils.updateVisible(object, 'showPanos', object == model)
-                        }
-                        viewer.objs.children.forEach(changeVisi)
-                        
-                        
-                        Potree.settings.displayMode = 'showPanos' 
-                        MergeEditor.transformControls.detach(model)
-                        Potree.Utils.updateVisible(MergeEditor.boxHelper,'showPanos',false)
-                        viewer.removeEventListener('camera_changed', this.camera_changed)
-                        
-                    }
-                },
-                flyOutPano(){//  飞出全景图(就是切换到正常融合视角)
-                    let panoPos = viewer.images360.position.clone()
-                    //Potree.Utils.updateVisible(viewer.objs, 'showPanos', true)
-                    let changeVisi = (object)=>{
-                        Potree.Utils.updateVisible(object, 'showPanos', true)
-                    }
-                    viewer.objs.children.forEach(changeVisi)
-                    viewer.images360.panos.forEach(pano=>{
-                        pano.setEnable(true)
-                    })
-                    setTimeout(()=>{//在下一帧再变,因为3dtiles需要更新一下才会显示tiles
-                        Potree.settings.displayMode = 'showPointCloud'
-                        Potree.Utils.updateVisible(MergeEditor.boxHelper,'showPanos',true)
-                    },20) 
-                    this.camera_changed = (e)=>{
-                        if (e.viewport.name == 'MainView' && e.changeInfo.positionChanged ) {
-                            //viewer.mainViewport.camera.position
-                            viewer.mainViewport.view.radius = 0.1 //使pivot在面前一丢丢距离
-                            viewer.setControls(viewer.orbitControls)
-                            viewer.removeEventListener('camera_changed', this.camera_changed)
-                        }
-                    }
-                    viewer.addEventListener('camera_changed', this.camera_changed)
-                        
-                   
-                    
-                },
+                
                 destroy(){
                     model && MergeEditor.removeModel(model) 
                     viewer.dispatchEvent('content_changed')