浏览代码

Merge branch 'master' of http://192.168.0.115:3000/bill/fuse-code

bill 2 年之前
父节点
当前提交
ed0a2e38ea
共有 3 个文件被更改,包括 128 次插入78 次删除
  1. 116 72
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 11 5
      src/sdk/cover/index.js

+ 116 - 72
public/lib/potree/potree.js

@@ -437,10 +437,12 @@
         
         urls:{
             //localTextures:'../resources/textures/', 
-            prefix: 'https://laser-oss.4dkankan.com',//oss
+            prefix1: 'https://laser-oss.4dkankan.com',//oss
             prefix2: 'https://testlaser.4dkankan.com',
             prefix3: 'https://4dkk.4dage.com',
-            prefix4: 'https://uat-laser.4dkankan.com/',//test.4dkankan
+            prefix4: 'https://uat-laser.4dkankan.com',//test.4dkankan
+            prefix5: 'https://laser.4dkankan.com',
+            prefix6: 'https://mix3d.4dkankan.com/backend',
             
         },
          
@@ -734,7 +736,7 @@
         number: '', //场景序号
         originDatasetId:'',//场景原本的数据集id,应该就是数据集第一个吧
         isOfficial:false,
-        webSite:'testdata',//'data', //不同环境对应的静态文件的地址不同
+        webSite:'testdata',//正式:'datav1', //不同环境对应的静态文件的地址不同
         
         isLocal:false, //是否本地 局域网版本
         libsUrl:'../libs/',
@@ -780,7 +782,9 @@
         rotAroundPoint:true,//点云模式是否能绕intersectPoint旋转
         tourTestCameraMove:false, //测试镜头时,不移动真实的镜头, 只移动frustum
         cameraAniSmoothRatio : 20, //镜头动画平滑系数,越高越平滑
-        urls  : $.extend({}, config$1.urls), 
+        urls  : $.extend({}, config$1.urls, {
+            prefix : config$1.urls.prefix4 //主要使用的 是测试环境,根据不同工程更改
+        }), 
         
         
         useDepthTex: true,//使用深度贴图,但不代表一定有(得到的intersect更快速准确和稳定)   SS-t-7DUfWAUZ3V  
@@ -63457,7 +63461,7 @@ void main() {
             data.forEach((dataset,index)=>{  
                 if(!ifReload){
                     var datasetCode = dataset.sceneCode || dataset.name; //对应4dkk的场景码
-                    var cloudPath = `${Potree.settings.urls.prefix}/${Potree.settings.webSite}/${datasetCode}/data/${datasetCode}/webcloud/cloud.js`; 
+                    var cloudPath = `${Potree.settings.urls.prefix1}/${Potree.settings.webSite}/${datasetCode}/data/${datasetCode}/webcloud/cloud.js`; 
                     var timeStamp = dataset.createTime ? dataset.createTime.replace(/[^0-9]/ig,'') : '';  //每重算一次后缀随createTime更新一次 
                     //console.warn(dataset.name, 'timeStamp', timeStamp)
                     Potree.loadPointCloud(cloudPath, dataset.name ,datasetCode, timeStamp, e => {
@@ -63478,9 +63482,18 @@ void main() {
                         pointcloud.timeStamp = timeStamp; 
                         transformPointcloud(pointcloud,dataset);
                         scene.addPointCloud(pointcloud);
+                        
+                        if(!Potree.settings.isOfficial){ 
+                            Potree.settings.floorplanEnables[dataset.id] = true;
+                            Potree.settings.floorplanType[dataset.id] = 'default';
+                        }
+                        
+                        
                         pointcloudLoaded ++;
                         if(pointcloudLoaded == datasetLength)pointcloudLoadDone();
-                            
+                        
+                        
+                    
                         Potree.loadPanos(dataset.id, (data) => { 
                             //console.log('loadPanos',dataset.sceneCode, dataset.id, data)
                             viewer.images360.addPanoData(data, dataset.id );
@@ -63811,7 +63824,7 @@ void main() {
                 Potree.loadDatasets((data)=>{
                     let originDataset = data.find(e=>e.sceneCode == sceneCode);//只加载初始数据集  
                     let timeStamp = originDataset.createTime ? originDataset.createTime.replace(/[^0-9]/ig,'') : '';  //每重算一次后缀随createTime更新一次 
-                    let cloudPath = `${Potree.settings.urls.prefix}/${Potree.settings.webSite}/${sceneCode}/data/${sceneCode}/webcloud/cloud.js`; 
+                    let cloudPath = `${Potree.settings.urls.prefix1}/${Potree.settings.webSite}/${sceneCode}/data/${sceneCode}/webcloud/cloud.js`; 
                     loadCloud(cloudPath, originDataset.sceneName, sceneCode, timeStamp, originDataset.color);
                 }, sceneCode, onError);
             
@@ -75039,7 +75052,7 @@ void main() {
                     percent = 0;
                     hasPlayedTime += e.delta;
                     transitionRatio = startTransitionRatio;
-                    console.log('延迟开始'); 
+                    //console.log('延迟开始') 
                     if(hasPlayedTime > startDelay){
                         tStart = performance.now(); 
                     }
@@ -75074,7 +75087,7 @@ void main() {
                         this.pause();
                     }else { 
                         hasStoppedTime += e.delta;
-                        console.log('延迟结束'); 
+                        //console.log('延迟结束') 
                     }
                     
     			}
@@ -78495,7 +78508,7 @@ void main() {
             
             viewer.setCameraLayers(o.camera, ['measure']);
     		
-            if(o.screenshot){ //抗锯齿
+            if(o.screenshot && this.viewer.ssaaRenderPass.enabled){ //抗锯齿
                 this.viewer.ssaaRenderPass.sampleLevel = 4;
                 this.viewer.composer.render(this.scene, o.camera );  
                 /* viewer.scene.measurements.forEach(e=>{ //隐藏除了label以外的
@@ -80272,7 +80285,7 @@ void main() {
                 set(1,color1); set(5,color1);set(6,color1);
                 set(2,mid); set(3,mid);set(7,mid);
                 set(4,color2); set(8,color2);set(9,color2);
-                geometry.addAttribute("color", new BufferAttribute(new Float32Array(colors), 3));  
+                geometry.setAttribute("color", new BufferAttribute(new Float32Array(colors), 3));  
             };
             var blue1 = [1/255,238/255,245/255]; //逐渐变深
             var blue2 = [20/255,146/255,170/255];
@@ -83806,14 +83819,14 @@ void main() {
             data.id = e.id;
             data.globalLocation = Potree.Utils.VectorFactory.fromArray3(e.location),
             data.orientation = Potree.Utils.QuaternionFactory.fromArray(e.orientation); 
-            if(Potree.fileServer){
-                data.filePath = `${Potree.settings.urls.prefix}${e.file_path}`;
-            }else {
-                data.filePath = `${Potree.settings.urls.prefix}/data/${Potree.settings.number}/${e.file_path}`;
-            }
+            //if(Potree.fileServer){
+                data.filePath = `${Potree.settings.urls.prefix1}${e.file_path}`;
+            //}else{
+            //    data.filePath = `${Potree.settings.urls.prefix}/data/${Potree.settings.number}/${e.file_path}`
+            //}
              
             //if(!data.filePath.includes('building_1'))data.filePath = data.filePath.replace('building','building_1')//暂时
-            data.fileName = '$DEPTH/$X/$Y.png',//e.file_name,
+            data.fileName = '$DEPTH/$X/$Y.png'; //e.file_name,
             data.type = e.type,
             data.mapSizeM = e.map_size_m,
             data.tileSizePx = e.tile_size_px,
@@ -85732,7 +85745,7 @@ void main() {
                 
                 // check for a click  
                 
-                if(pressDistance < Potree.config.clickMaxDragDis && pressTime<Potree.config.clickMaxPressTime){
+                if(pressDistance < Potree.config.clickMaxDragDis && pressTime<Potree.config.clickMaxPressTime && !e.unableClick){
                     let clickElement;
                     if(this.hoveredElements){
                         clickElement = this.hoveredElements.find(e=>e.object._listeners['click']); 
@@ -85906,12 +85919,15 @@ void main() {
             //点云模式,对没加载出的点云不准确。 尤其是需要修改相机位置时,因临时修改并不能使点云加载。
         }
 
-        getIntersect(viewport,   onlyGetIntersect, pickWindowSize, dontIntersect, usePointcloud, prop={}){
+
+
+        getIntersect(viewport,   onlyGetIntersect, pickWindowSize, dontIntersect, usePointcloud, prop={}){// usePointcloud:必须使用点云
             let intersectPoint;  
             let camera = viewport.camera;
             let raycaster; 
-            if(Potree.settings.displayMode == 'showPanos' && viewer.images360.currentPano.pointcloud.hasDepthTex && !usePointcloud && !this.isMeasuring && viewport == viewer.mainViewport ){
-                
+            
+            
+            let getByDepthTex = ()=>{
                 /* if(prop.point){
                     raycaster = new THREE.Raycaster() 
                     var dir = new THREE.Vector3().subVectors(prop.point, camera.position).normalize()
@@ -85926,8 +85942,9 @@ void main() {
                     intersect = Utils.getIntersect(camera, [viewer.images360.cube], this.pointer, raycaster); 
                 } 
                 intersectPoint = viewer.images360.depthSampler.sample(intersect, prop.pano, !!prop.point);  //可能不准确, 因pano可能未加载depthTex
-                 
-            }else {
+            };
+            
+            let getByCloud = ()=>{
                 if(prop.point){ 
                     prop.cameraPos && camera.position.copy(prop.cameraPos);
                     camera.lookAt(prop.point);
@@ -85954,6 +85971,19 @@ void main() {
                     this.pointer.copy(prop.pointer);
                     this.mouse.copy(prop.mouse);
                 } 
+                
+                
+            };
+            
+            let canUseDepthTex = Potree.settings.displayMode == 'showPanos' && viewer.images360.currentPano.pointcloud.hasDepthTex  && viewport == viewer.mainViewport && !usePointcloud; 
+            
+            if(canUseDepthTex && !this.isMeasuring){
+                getByDepthTex();
+            }else {
+                getByCloud(); 
+                if(!intersectPoint && canUseDepthTex  ){//得不到的话再使用 getByDepthTex 得一次
+                    getByDepthTex();
+                }
             }
               
             //console.log(viewport.name , intersectPoint &&  intersectPoint.location )
@@ -86113,9 +86143,7 @@ void main() {
                     
                     
                 } else {
-                    
-                    
-                    
+                     
                     if (this.logMessages) console.log(this.constructor.name + ': drag: ');
 
                     let dragConsumed = false; 
@@ -91772,7 +91800,7 @@ void main() {
                     },
                     set:  (mode)=> {
                         latestRequestMode = mode;
-                        console.warn('Request setMode: ' + mode);  
+                        //console.warn('Request setMode: ' + mode)  
                                        
                         if(mode != displayMode){ 
                             let config = Potree.config.displayMode[mode];
@@ -91940,7 +91968,7 @@ void main() {
                              
                              
                             this.dispatchEvent({type:'endChangeMode',mode});  
-                            console.log('setModeSuccess: ' + mode);       
+                            //console.log('setModeSuccess: ' + mode)       
                         }else {
                             
                             //this.dispatchEvent({type:'endChangeMode',mode})    
@@ -118509,7 +118537,7 @@ ENDSEC
     let w$2 = 200/1.43;
     let maxPX = 1366*1024; //ipad pro.  大于这个分辨率的就直接用devicePixelRatio, 如macbook也是
     const width2dPX = Math.round(window.devicePixelRatio >= 2 ? ( window.screen.width * window.screen.height >= maxPX ? window.devicePixelRatio/1.2 : window.devicePixelRatio/1.5)*w$2 : w$2);  //触屏或高分辨率的可能要放大些。但在手机上不能太大
-    console.log('width2dPX', width2dPX);
+    //console.log('width2dPX', width2dPX)
 
 
 
@@ -126496,7 +126524,7 @@ ENDSEC
            
             
              
-            console.log('create viewer');
+            //console.log('create viewer')
             
             this.navigateMode = 'free'; // 'panorama'; 'free'自由模式是只显示点云或者未进入到漫游点, 
             this.isEdit = true;
@@ -129235,31 +129263,33 @@ ENDSEC
                     }));
                 }
 
-                
-                view.render || this.clear(params);  
-                pRenderer.clearTargets(params);
-
-
-                //先渲染不透明的model:
-                /* if(this.objs.children.length){
-                    this.renderer.setRenderTarget(params.target||null)
-                    this.setCameraLayers(params.camera,  ['model'] )//先渲染模型后渲染点云,否则半透明的点云的blend没有混合模型的部分(但模型为何可以混合点云的部分?估计还是PotreeRenderer有问题)
+                if(!view.render){
+                    this.clear(params); 
+                    pRenderer.clearTargets(params);
+                    
+                    
+                    //先渲染不透明的model:
+                    /* if(this.objs.children.length){
+                        this.renderer.setRenderTarget(params.target||null)
+                        this.setCameraLayers(params.camera,  ['model'] )//先渲染模型后渲染点云,否则半透明的点云的blend没有混合模型的部分(但模型为何可以混合点云的部分?估计还是PotreeRenderer有问题)
+                        
+                        this.renderer.render(this.scene.scene, params.camera); 
+                    }  */
+                        
                     
-                    this.renderer.render(this.scene.scene, params.camera); 
-                }  */
-               
-               
-                if(Potree.settings.notAdditiveBlending){
-                    params.renderBeforeCloud = true;
-                    this.renderOverlay1(params);   
-                    //view.render || this.renderOverlay(params)  
-                } 
-               
-                
-               
-               
-                if(!view.noPointcloud ){
                     
+                    if(Potree.settings.notAdditiveBlending){
+                        params.renderBeforeCloud = true;
+                        this.renderOverlay1(params);   
+                        //view.render || this.renderOverlay(params)  
+                    }   
+                    
+                }
+                /* view.render || this.clear(params)  
+                pRenderer.clearTargets(params); */
+
+     
+                if(!view.noPointcloud ){ 
                     //if(!params.target){ 
                         //params.width = width; params.height = height;
                         
@@ -129267,8 +129297,7 @@ ENDSEC
                     if(view.render){
                         params.noBG = true;
                     }
-                    
-                    
+                     
                     
                     view.beforeRender && view.beforeRender();
                     
@@ -129282,17 +129311,23 @@ ENDSEC
                     pRenderer.render(params); 
                     
                 } 
-                
+                    
 
+                if(!view.render){     
+                    //view.render || this.renderOverlay(params) 
+                    if(Potree.settings.notAdditiveBlending){
+                        params.renderBeforeCloud = false;
+                        this.renderOverlay1(params); 
+                        this.renderOverlay2(params);  
+                    }else { 
+                        /* view.render ||  */this.renderOverlay(params);                 
+                    }
+                        
+                }    
+                     
+               
                  
-                //view.render || this.renderOverlay(params) 
-                if(Potree.settings.notAdditiveBlending){
-                    params.renderBeforeCloud = false;
-                    this.renderOverlay1(params); 
-                    this.renderOverlay2(params);  
-                }else { 
-                    view.render || this.renderOverlay(params);                 
-                }
+               
                 
                   
                 
@@ -131661,7 +131696,10 @@ ENDSEC
 
     async function loadFile(path, callback, onError){
         if(Potree.fileServer){
+             
             Potree.fileServer.get(path).then(data=>{ 
+                if(data.data)data = data.data;
+                if(data.data)data = data.data; //融合页面getdataset需要查找两次data
                 callback && callback(data);
             }).catch(onError); 
         }else {
@@ -131690,7 +131728,7 @@ ENDSEC
             
             //path = `${Potree.settings.urls.prefix2}/indoor/${Potree.settings.number}/api/datasets`
             //现在只能加载得了本地的了
-            path = `${Potree.settings.urls.prefix4}laser/dataset/${sceneCode}/getDataSet`;
+            path = `${Potree.settings.urls.prefix}/laser/dataset/${sceneCode}/getDataSet`;
             //path = `${Potree.scriptPath}/data/${sceneCode}/getDataSet.json`
             
         }
@@ -131703,6 +131741,7 @@ ENDSEC
     async function loadMapEntity(datasetId, force){ 
         if(!Potree.settings.floorplanEnable && !force && Potree.fileServer  )return /* 等待平面图类型定义好会加载 */
          
+        
         let loaded = 0;
         
         let needLoads = datasetId == 'all' ? viewer.scene.pointclouds.map(e=>e.dataset_id) : [datasetId];
@@ -131726,15 +131765,20 @@ ENDSEC
         }; 
         
         needLoads.forEach(dataset_id=>{
-            let floorplanType = Potree.settings.floorplanType[dataset_id];
+            let floorplanType = Potree.settings.floorplanType[dataset_id],  prefix = '';
+            if(!Potree.fileServer){   
+                prefix = Potree.settings.urls.prefix;
+            }
             if(!floorplanType)return
             var path; 
-            if(Potree.fileServer){ 
-                path = `/laser/tiledMap/${Potree.settings.number}/tiledMap/${floorplanType}/${dataset_id}`; 
-            }else {
-                path = `${Potree.settings.urls.prefix2}/indoor/${Potree.settings.number}/api/tiled_maps`;
+            /* if(Potree.fileServer){ 
+                path = `/laser/tiledMap/${Potree.settings.number}/tiledMap/${floorplanType}/${dataset_id}` 
+            }else{
+                path = `${Potree.settings.urls.prefix2}/indoor/${Potree.settings.number}/api/tiled_maps`
                 
-            }
+            } */
+            path = `${prefix}/laser/tiledMap/${Potree.settings.number}/tiledMap/${floorplanType}/${dataset_id}`; 
+            
             Potree.settings.floorplanRequests[dataset_id] = true; //开始加载了
             return loadFile(path, callback.bind(this,  dataset_id, floorplanType)  )
         });
@@ -131751,7 +131795,7 @@ ENDSEC
         }else {
             //path = `${Potree.settings.urls.prefix2}/indoor/${Potree.settings.number}/api/images/filter` + query
             //path = `${Potree.scriptPath}/data/${Potree.settings.number}/panos-${datasetId}.json`
-            path = `${Potree.settings.urls.prefix4}laser/filter/${Potree.settings.number}/query` + query;
+            path = `${Potree.settings.urls.prefix}/laser/filter/${Potree.settings.number}/query` + query;
            
              
         }

文件差异内容过多而无法显示
+ 1 - 1
public/lib/potree/potree.js.map


+ 11 - 5
src/sdk/cover/index.js

@@ -9,6 +9,12 @@ export const enter = (dom, isLocal) => {
     //Potree.fileServer = axios 
     Potree.settings.libsUrl = './lib/'
     
+    if(location.host === 'mix3d.4dkankan.com' ){//正式环境
+        Potree.settings.urls.prefix = Potree.settings.urls.prefix6  
+        Potree.settings.webSite = 'datav1' 
+    }
+    
+    
     Potree.settings.notAdditiveBlending = true
     
     const tagLimitDis = 8;
@@ -252,11 +258,11 @@ export const enter = (dom, isLocal) => {
             const camera = viewer.scene.getActiveCamera()
             const target = viewer.scene.view.getPivot().clone()
             const position = viewer.scene.view.position.clone() 
-            console.log('getPose',position, target)
+            //console.log('getPose',position, target)
             return { position, target }
         }, 
         comeTo(o = {}) {
-            console.log('comeTo',o.position, o.target)
+            //console.log('comeTo',o.position, o.target)
             //飞到某个点  
             if(o.modelId){ 
                 ['position','target'].forEach(e=>{
@@ -413,7 +419,7 @@ export const enter = (dom, isLocal) => {
             } 
             */
             
-            console.log('enterSceneGuide',pathArr)
+            //console.log('enterSceneGuide',pathArr)
             
             let data = {
                 duration: pathArr.slice(0,pathArr.length-1).reduce(function(total, currentValue ){return total+currentValue.time}, 0), //总时长(要去掉最后一个,因为已到终点,该点time无意义)
@@ -477,7 +483,7 @@ export const enter = (dom, isLocal) => {
  
             let bus = mitt()  
             //console.log('addModel',props)
-            props.isFirstLoad = isLocal ? props.bottom == void 0 : (props.isDynamicAdded || props.mode == 'query')  // 在编辑时用户添加的 或 展示单个模型 (props.mode='single'模型展示页, props.mode='many'融合页)
+            props.isFirstLoad = isLocal ? props.bottom == void 0 : (props.isDynamicAdded || props.mode == 'single')  // 在编辑时用户添加的 或 展示单个模型 (props.mode='single'模型展示页, props.mode='many'融合页)
             if(props.opacity == void 0)  props.opacity = 1 
             if(props.type == 'obj') props.type = 'glb'
             props.scale /= 100
@@ -1031,7 +1037,7 @@ export const enter = (dom, isLocal) => {
     }
      
     
-    console.log('版本: 2022.8.29-1')
+    console.log('版本: 2022.9.20-1')
      
     return sdk 
 }