xzw 2 年之前
父節點
當前提交
c38a521e2b

+ 2 - 2
libs/three.js/lines/LineMaterial.js

@@ -858,7 +858,7 @@ class LineMaterial extends ShaderMaterial {
                 this.uniforms.resolution.value.copy(viewport.resolution)  
                 this.uniforms.devicePixelRatio.value = window.devicePixelRatio 
                 this.lineWidth = this.lineWidth_ //update
-                if(!this.useDepth || !e.viewport.camera.isPerspectiveCamera || !e.viewport)return
+                if(!this.useDepth /* || !e.viewport.camera.isPerspectiveCamera  */|| !e.viewport)return
                 let viewportOffset = viewport.offset || new THREE.Vector2() 
                 this.uniforms.viewportOffset.value.copy(viewportOffset)
                 
@@ -929,7 +929,7 @@ class LineMaterial extends ShaderMaterial {
         var viewport = e.viewport || viewer.mainViewport;
         var camera = viewport.camera;
         
-        let hasDepth = this.useDepth && camera.isPerspectiveCamera && 
+        let hasDepth = this.useDepth/*  && camera.isPerspectiveCamera */ && 
                 (Potree.settings.pointEnableRT || Potree.settings.displayMode == 'showPanos' || viewer.useEDL)
         
         this.setRealDepth(hasDepth)

+ 1 - 1
src/Potree.js

@@ -183,7 +183,7 @@ export async function loadPanos( callback){
     if(Potree.fileServer){ 
         path = '/vision.json'
     }else{
-        path = '/floor_0_webcloud/floor_0_vision.txt'   //`${Potree.settings.urls.prefix1}/vision.json` 
+        path = `${Potree.settings.urls.prefix1}/floor_0_webcloud/floor_0_vision.txt` //'/floor_0_webcloud/floor_0_vision.txt'   //`${Potree.settings.urls.prefix1}/vision.json` 
     }
     return Potree.getRealUrl(path, (path)=>{
         loadFile(path, {  }, callback, )  

+ 2 - 2
src/custom/materials/DepthBasicMaterial.js

@@ -41,7 +41,7 @@ export default class DepthBasicMaterial extends THREE.ShaderMaterial{
         
         this.events = {
             setSize:(e)=>{//如果出现横条状的异常,往往是viewportOffset出错  //地图不需要
-                if(!this.useDepth || !e.viewport.camera.isPerspectiveCamera || !e.viewport)return
+                if(!this.useDepth /* || !e.viewport.camera.isPerspectiveCamera  */|| !e.viewport)return
                 let viewport = e.viewport
                 let viewportOffset = viewport.offset || new THREE.Vector2() 
                 
@@ -169,7 +169,7 @@ export default class DepthBasicMaterial extends THREE.ShaderMaterial{
         var viewport = e.viewport || viewer.mainViewport;
         var camera = viewport.camera;
         
-        let hasDepth = this.useDepth && camera.isPerspectiveCamera && 
+        let hasDepth = this.useDepth /* && camera.isPerspectiveCamera */ && 
                 (Potree.settings.pointEnableRT || Potree.settings.displayMode == 'showPanos' || viewer.useEDL)
         
         this.setRealDepth(hasDepth)

+ 2 - 2
src/custom/objects/Sprite.js

@@ -90,8 +90,8 @@ export default class Sprite extends THREE.Mesh{
         return v;
     }
     
-    update(e){
-        if(!e){
+    update(e={}){
+        if(!e.viewport){
             let viewports = this.viewports || viewer.viewports
             if(!viewports)return
             viewports.forEach(view=>{

+ 17 - 9
src/custom/objects/tool/MeasuringTool.js

@@ -3,9 +3,8 @@ import {Measure} from "./Measure.js";
 import {Utils} from "../../../utils.js"; 
 import math from "../../utils/math.js";
 import {CameraMode} from "../../../defines.js"; 
-import {TextSprite} from '../TextSprite.js'
- 
- 
+import {TextSprite} from '../TextSprite.js'; 
+import  browser  from "../../utils/browser.js"; 
  
  
  
@@ -450,7 +449,7 @@ export class MeasuringTool extends THREE.EventDispatcher{
             });
             
             viewer.inputHandler.dispatchEvent({type:'isMeasuring',  v:false, cause:'stopInsertion'}  ) 
-            
+            viewer.controls.setEnable(true) 
             
             //var isIntersectSelf = measure.atPlane && measure.closed && !measure.isRect && measure.point2dInfo && measure.intersectSelf(measure.point2dInfo.points2d.slice(0,measure.point2dInfo.points2d.length-1))//检测除了最后一个点的相交情况
             var isIntersectSelf = measure.atPlane && measure.closed && !measure.isRect && measure.point2dInfo && measure.intersectSelf(measure.point2dInfo.points2d)
@@ -519,7 +518,7 @@ export class MeasuringTool extends THREE.EventDispatcher{
         let mouseleave = (e) => { 
             measure.setMarkerSelected(e.object, 'unhover', 'single'); 
         }  
-          
+        let isMobile = browser.isMobile()  
                  
         let click = (e)=>{//一旦点击就立刻增加两marker  
          
@@ -529,6 +528,10 @@ export class MeasuringTool extends THREE.EventDispatcher{
             
             if(e.button === THREE.MOUSE.RIGHT)return 
             
+            if(isMobile){
+                viewer.controls.setEnable(false)
+            }
+            
             //console.log('measure clicked33', !!e.intersectPoint)
              
             //var I = e.intersectPoint && (e.intersectPoint.orthoIntersect || e.intersectPoint.location)
@@ -545,10 +548,10 @@ export class MeasuringTool extends THREE.EventDispatcher{
              
             var marker = measure.addMarker({point:I})
             marker.isDragging = true 
-            this.viewer.inputHandler.startDragging(marker , {endDragFun, notPressMouse:true} ); //notPressMouse代表不是通过按下鼠标来拖拽
+            this.viewer.inputHandler.startDragging(marker , {endDragFun, notPressMouse:!isMobile} ); //notPressMouse代表不是通过按下鼠标来拖拽
             e.drag = this.viewer.inputHandler.drag
             e.drag.endDragFun = endDragFun
-            e.drag.notPressMouse = true
+            e.drag.notPressMouse = !isMobile
             
             //if(!measure.dragMarker(e) || !measure.dropMarker(e))return
              
@@ -567,7 +570,7 @@ export class MeasuringTool extends THREE.EventDispatcher{
             
             
             this.viewer.removeEventListener('global_click', click)///* global_drop */
-            
+            this.viewer.removeEventListener('global_touchstart', click )//add  importance
             measure.dispatchEvent('firstClick')
             
             //console.log('measure clicked')
@@ -580,7 +583,12 @@ export class MeasuringTool extends THREE.EventDispatcher{
         
         viewer.inputHandler.dispatchEvent({type: 'isMeasuring', v: true, cause:'startInsertion'})
         
-        this.viewer.addEventListener('global_click', click, {importance:10})//add  importance
+            
+        if( isMobile ){
+            this.viewer.addEventListener('global_touchstart', click, {importance:10})//add  importance
+        }else{
+            this.viewer.addEventListener('global_click', click, {importance:10})//add  importance
+        } 
             
         let ifAtWrongPlace = (e)=>{
             if(measure.unableDragAtMap && e.hoverViewport.name == 'mapViewport' ){ 

+ 2 - 2
src/custom/objects/tool/ctrlPolygon.js

@@ -1,7 +1,7 @@
 import * as THREE from "../../../../libs/three.js/build/three.module.js";
 import {LineDraw, MeshDraw} from "../../utils/DrawUtil.js";
 import math from "../../utils/math.js";
-
+import browser from "../../utils/browser.js";
 
 
 
@@ -407,7 +407,7 @@ export class ctrlPolygon extends THREE.Object3D {
     
     dropMarker(e){
         //console.log('dropMarker')
-        if (this.isNew && e.pressDistance>Potree.config.clickMaxDragDis){//拖拽的话返回
+        if (this.isNew && !browser.isMobile() && e.pressDistance>Potree.config.clickMaxDragDis){//拖拽的话返回
             return this.continueDrag(null,e)   
         } 
          

+ 1 - 1
src/viewer/EDLRendererNew.js

@@ -192,7 +192,7 @@ export class EDLRenderer{//Eye-Dome Lighting 眼罩照明
         const viewer = this.viewer; 
 		let camera = params.camera ? params.camera : viewer.scene.getActiveCamera();
         let rtEDL = (Potree.settings.pointEnableRT || Potree.settings.displayMode == 'showPanos' || viewer.useEDL) && 
-                    Features.EXT_DEPTH.isSupported() && camera.type != "OrthographicCamera" && !params.dontRenderRtEDL && (params.rtEDL || this.getRtEDL(params.viewport))  // 平面相机不用depthTex直接打开depthTest?且不使用edl
+                    Features.EXT_DEPTH.isSupported() /* && camera.type != "OrthographicCamera"  */&& !params.dontRenderRtEDL && (params.rtEDL || this.getRtEDL(params.viewport))  // 平面相机不用depthTex直接打开depthTest?且不使用edl
         let useEDL = viewer.useEDL && rtEDL && Potree.settings.displayMode != 'showPanos'
         
         let target = params.target || null

+ 8 - 5
src/viewer/ExtendView.js

@@ -418,7 +418,7 @@ class ExtendView extends View {
         viewport.camera = info.midCamera
         //viewport.camera.matrixWorld = info.endCamera.matrixWorld
         
-        
+         
         //viewer.setCameraMode(CameraMode.ORTHOGRAPHIC) 
         info.midCamera.projectionMatrix.copy(info.startCamera.projectionMatrix)
         
@@ -434,10 +434,13 @@ class ExtendView extends View {
         
         let callback = info.callback
         info.callback = ()=>{ 
-            viewport.camera = info.endCamera 
-            viewer.scene.measurements.forEach((e)=>{
-                Potree.Utils.updateVisible(e, 'tranCamera', true)  
-            })
+            viewport.camera = info.endCamera  
+            viewer.scene.measurements.forEach((e)=>{ 
+                Potree.Utils.updateVisible(e, 'tranCamera', true) 
+            }) 
+            viewer.dispatchEvent({type:'camera_changed', viewport:viewer.mainViewport, changeInfo:{}})//update sprite
+       
+            
             callback && callback()
         } 
         

+ 3 - 2
src/viewer/NavigationCube.js

@@ -826,7 +826,7 @@ class NavCubeViewer extends ViewerBase{
             viewer.focusOnObject(viewer.bound, 'boundingBox', 1000, {
                 endPitch: pitch, endYaw: yaw , dir,  startCamera, endCamera
             }).promise.done(()=>{  
-                
+                viewer.dispatchEvent('reachTopView')
                 done && done()
                 navCubeViewer.dispatchEvent('content_changed')
             })
@@ -850,10 +850,11 @@ class NavCubeViewer extends ViewerBase{
                 let position = new THREE.Vector3().copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis)); 
                 //view.position.copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis)); 
                 this.controls.setEnable(true)
-
+                viewer.dispatchEvent('leaveTopView')
 
                 view.tranCamera(viewer.mainViewport,  { position ,   
                     callback:()=>{ 
+                        
                     }, startCamera:viewer.scene.cameraO, endCamera:viewer.scene.cameraP, midCamera:viewer.scene.cameraBasic
                 }, 500)