xzw 10 月之前
父节点
当前提交
c95b9c252d
共有 3 个文件被更改,包括 58 次插入29 次删除
  1. 6 3
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 51 25
      src/sdk/cover/index.js

+ 6 - 3
public/lib/potree/potree.js

@@ -22217,7 +22217,7 @@
 	  },
 	  minNodeSize: 30,
 	  // perspectiveCamera允许加载的node的最小可见像素宽度。越大越省性能
-	  tiles3DMaxMemory: 300,
+	  tiles3DMaxMemory: 200,
 	  //M. 最大支持3dTiles的内存大小 超出会崩溃。  改太小太大都会卡,太大崩溃
 	  pointDensity: {
 	    magnifier: {
@@ -26628,7 +26628,7 @@
 	var markerTex;
 
 	//显示全景图时marker没有被遮挡,如果需要,要换成depthBasicMaterial  或者直接把skybox的深度修改(拿到深度贴图后更如此)
-	var planeGeo = new PlaneBufferGeometry(0.2, 0.2);
+	var planeGeo = new PlaneBufferGeometry(0.4, 0.4);
 	var sg = new SphereGeometry(0.1, 8, 8);
 	var smHovered = new MeshBasicMaterial({
 	  /* side: THREE.BackSide,  */color: 0xff0000
@@ -26863,7 +26863,7 @@
 	        marker.scale.set(2,2,2)  */
 
 	    var marker = new Mesh(planeGeo, this.getMarkerMat()); //new Sprite({mat:this.getMarkerMat(), dontFixOrient:true })
-	    marker.scale.set(2, 2, 2); //marker.scale.set(0.4,0.4,0.4)
+
 	    marker.name = 'marker_' + this.id;
 	    marker.up.set(0, 0, 1);
 	    this.addEventListener('changeMarkerTex', e => {
@@ -69058,6 +69058,9 @@
 	    if (model.panos) {
 	      model.transformInvMatrix.copy(model.transformMatrix).invert();
 	      model.rotateInvMatrix.copy(model.rotateMatrix).invert();
+	      model.panos.forEach(e => {
+	        e.marker.scale.copy(model.scale);
+	      });
 	    }
 	    model.lastMatrixWorld = model.matrixWorld.clone();
 	    viewer.dispatchEvent('content_changed');

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


+ 51 - 25
src/sdk/cover/index.js

@@ -14,7 +14,7 @@ const ModelTypes = {
     5 : {name:'深光点云' },
     6 : {name:'深光mesh',panos4dkk:true, rot90:true},//3dtiles
 }
-
+let cesAspect
 
 export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
     console.warn('新的页面')
@@ -456,18 +456,18 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
             var deferred = $.Deferred();
             finishPromise.done(({ dataUrl }) => {
                 if(Potree.settings.displayMode != 'showPanos' && Potree.settings.showCesium){//need map background
-                    let mapBGurl = Potree.cesScreenshot(width, height)
-                    let img = new Image(); img.src = dataUrl
-                    let imgBG = new Image(); imgBG.src = mapBGurl
-                    let loadCount = 0
-                    img.onload = imgBG.onload = ()=>{
-                        loadCount++;
-                        if(loadCount == 2){
-                            let url = Potree.Common.imgAddLabel(imgBG,img,{leftRatioToImg:0,topRatioToImg:0})
-                            deferred.resolve(url)
-                        }
-                    }
-                    
+                    Potree.cesScreenshot(width, height).done((mapBGurl)=>{ 
+                        let img = new Image(); img.src = dataUrl
+                        let imgBG = new Image(); imgBG.src = mapBGurl
+                        let loadCount = 0
+                        img.onload = imgBG.onload = ()=>{
+                            loadCount++;
+                            if(loadCount == 2){
+                                let url = Potree.Common.imgAddLabel(imgBG,img,{leftRatioToImg:0,topRatioToImg:0})
+                                deferred.resolve(url)
+                            }
+                        } 
+                    })  
                 }else{
                     deferred.resolve(dataUrl)
                 }
@@ -899,6 +899,8 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
                         model.isPointcloud && model.changePointSize(Potree.config.material.realPointSize * s)
 
                         model.dispatchEvent("scale_changed")
+                        
+
                     }
                 },
                 changeOpacity(opacity) { //见笔记:透明物体的材质设置
@@ -1363,21 +1365,40 @@ 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])
             
             Potree.cesScreenshot = (w,h)=>{
                 console.log('cesScreenshot',w,h)
                 cesiumViewer.scene.canvas.style.width = w+'px'
                 cesiumViewer.scene.canvas.style.height = h+'px'
+                cesiumViewer.scene.canvas.style.visibility = 'hidden'
                 cesiumViewer.resize()
-                updateMap(w/h) //hfov可能改变了需要update
+                cesAspect = w/h 
+                let deferred = $.Deferred();
                 
-                let dataUrl = window.cesiumViewer.scene.canvas.toDataURL('image/png')
-                //Potree.Common.downloadFile(dataUrl,  'screenshot.png')   
-                cesiumViewer.scene.canvas.style.width = ''
-                cesiumViewer.scene.canvas.style.height = '' 
-                return dataUrl
+                updateMap(w/h)//hfov可能改变了需要update。 
+                   
+                setTimeout(()=>{ //延迟是似乎还要做别的处理,否则立即截图的话可能得到绿色底图(俯视状态容易触发)
+                    let oldMode = window.cesiumViewer._cesiumWidget._scene.requestRenderMode
+                    window.cesiumViewer._cesiumWidget._scene.requestRenderMode = 0  //强制render,否则会黑屏
+                    cesiumViewer.render();
+                    let dataUrl = window.cesiumViewer.scene.canvas.toDataURL('image/png')
+                    window.cesiumViewer._cesiumWidget._scene.requestRenderMode = oldMode
+                    
+                    //Potree.Common.downloadFile(dataUrl,  'screenshot.png')   
+                    cesAspect = null
+                    cesiumViewer.scene.canvas.style.width = ''
+                    cesiumViewer.scene.canvas.style.height = '' 
+                    cesiumViewer.scene.canvas.style.visibility = ''
+                    
+                    deferred.resolve(dataUrl)
+                },200) //时间短了容易黑屏
+                    
+                
+                return deferred.promise()
+                 
             }
         }
         updateMap()
@@ -1387,7 +1408,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
 
 
 
-    function updateMap(aspect_){
+    function updateMap( ){
+        
+        
+        
         if (Potree.settings.showCesium && Potree.settings.displayMode == 'showPointCloud') {
             let camera = viewer.mainViewport.camera
             let pPos = new THREE.Vector3(0, 0, 0).applyMatrix4(camera.matrixWorld);
@@ -1413,7 +1437,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
 
             cDir = Cesium.Cartesian3.normalize(cDir, new Cesium.Cartesian3());
             cUp = Cesium.Cartesian3.normalize(cUp, new Cesium.Cartesian3());
-
+ 
             cesiumViewer.camera.setView({
                 destination: cPos,
                 orientation: {
@@ -1424,7 +1448,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
 
 
 
-            let aspect = aspect_ || viewer.scene.getActiveCamera().aspect;
+            let aspect = cesAspect || viewer.scene.getActiveCamera().aspect;
+            
+            console.log('updateMap', aspect)
+            
             if (aspect < 1) {
                 let fovy = Math.PI * (viewer.scene.getActiveCamera().fov / 180);
                 cesiumViewer.camera.frustum.fov = fovy;
@@ -1433,8 +1460,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
                 let fovx = Math.atan(Math.tan(0.5 * fovy) * aspect) * 2
                 cesiumViewer.camera.frustum.fov = fovx;
             }
-
-
+ 
             cesiumViewer.render(); //立即render,否则会和点云render不同步而错位
         }
     }