浏览代码

Merge branch 'dev' of http://192.168.0.115:3000/bill/traffic-laser into dev

jinx 1 年之前
父节点
当前提交
769c16bf4e

+ 51 - 44
public/static/lib/potree/potree.js

@@ -75616,7 +75616,7 @@ void main()
 	    depTexLocBindDataset: true,//是否在pano模式下,使用深度图得到intersect的话,改intersect能属于该pano所在的点云。也就相当于在全景模式下intersect的点属于该全景图
 
 	    notAdditiveBlending:false, //点云是否使用普通的blend, 否则会曝光过渡
-	    precision:2,  // 两位小数 
+	    precision:0,  //  位小数 
 	    useV4url:true, //v4的全景图等路径不一样 scene_view_data
 	    
 	    useRTskybox:true,  //直接使用rtEDL绘制到屏幕,当是全景模式时. 在降4倍时能给render节省1毫秒,gpu时间未测 
@@ -82052,7 +82052,7 @@ void main()
 	            this.setEdgeLabelPos(label,p1,p2);
 	 
 	            distance = distance == void 0 ? p1.distanceTo(p2) : distance; 
-	            var text = this.labelText || viewer.unitConvert.convert(distance, 'distance', Potree.settings.precision, this.unitSystem, 0.1 , true);//distance要传0.1 这个factor
+	            var text = this.labelText || viewer.unitConvert.convert(distance, 'distance',  Potree.settings.precision , this.unitSystem, 0.001 , true, true);//distance要传0.1 这个factor
 	            label.setText(text);
 	          
 	        };
@@ -96318,24 +96318,32 @@ ENDSEC
 	    getCeilHeight(){//天花板高度值   (假设不存在depth为0的点,所有为0的要么是在盲区,要么是无穷远。)
 	         
 	        if(this.ceilZ == void 0){
-	            const depthTiming = Potree.timeCollect.depthSampler.median;    //pc firefox达到4.  chrome为0.01
+	            //const depthTiming = Potree.timeCollect.depthSampler.median    //pc firefox达到4.  chrome为0.01
 	                     
 	            
 	            //用三个间隔120度散开,和中心垂直线成一定夹角的三个向量去求 最高高度 (不求平均的原因:万一是0不好算)
 	            
 	            let rotMat = new Matrix4().makeRotationX((Potree.config.depthTexUVyLimit+0.01)*Math.PI);// 角度不能小于天花板中空的半径 
 	            
+	            let dir0 = new Vector3(0,0,1).applyMatrix4(rotMat);
 	            
 	            
-	            let dirs = [new Vector3(0,0,1).applyMatrix4(rotMat)];
-	            if(depthTiming < 1){
-	                let rotMat1 = new Matrix4().makeRotationZ(Math.PI*2 / 3);
-	                dirs.push(dirs[0].clone().applyMatrix4(rotMat1));
+	            let dirs = [
+	                dir0, 
+	                dir0.clone().applyMatrix4(new Matrix4().makeRotationZ(Math.PI*2 / 3)),
+	                dir0.clone().applyMatrix4(new Matrix4().makeRotationZ(-Math.PI*2 / 3))
+	            ];
+	             
+	            
+	            /* if(depthTiming < 1){
+	                let rotMat1 = new THREE.Matrix4().makeRotationZ(Math.PI*2 / 3);
+	                dirs.push(dirs[0].clone().applyMatrix4(rotMat1))
 	            }
 	            if(depthTiming < 0.3){
-	                let rotMat2 = new Matrix4().makeRotationZ(-Math.PI*2 / 3);
+	                let rotMat2 = new THREE.Matrix4().makeRotationZ(-Math.PI*2 / 3);
 	                dirs.push(dirs[0].clone().applyMatrix4(rotMat2)); 
-	            }
+	            } */
+	             
 	             
 	            let zs = dirs.map(dir_=>{ 
 	                let dir = dir_.clone().applyMatrix4(this.panoMatrix2);  //pano不一定是垂直的, 需要把之前的dirInPano先转成真实的dir,防止超出角度限制
@@ -97444,7 +97452,7 @@ ENDSEC
 	  
 
 
-	    isNeighbour(pano0, pano1, dontCompute, onlyUseTex,  computeDirFirst){//是否之间没有遮挡(在加载visibles之前,自己算) 最好pano0是currentPano
+	    isNeighbour(pano0, pano1, {dontCompute, onlyUseTex,  computeDirFirst, computeTwoDir}={}){//是否之间没有遮挡(在加载visibles之前,自己算) 最好pano0是currentPano
 	         
 	        if(!pano0 || !pano1 )return
 	        
@@ -97489,7 +97497,7 @@ ENDSEC
 	            }
 	        }; 
 	           
-	        if( map0[pano1.id] == void 0 && !ifNeighbour ) {//主方向为空且不为邻居
+	        if(!ifNeighbour && (map0[pano1.id] == void 0 || (computeTwoDir && map1[pano0.id] == void 0))) {//主方向为空且不为邻居
 	            let simpleJudge = pano0.position.distanceToSquared(pano1.position) > 300; //在远处去掉对floorPosition的判断
 	            if(pano0.depthTex || pano1.depthTex){
 	                             
@@ -98154,10 +98162,13 @@ ENDSEC
 	             
 	            for(let a=0, b=g.length; a<b; a++){
 	                let item = g[a];
-	                if(this.isNeighbour(pano, item.item,  true) != void 0) continue
+	                if(item.item == pano)continue  
+	                if(this.isNeighbour(pano,item.item,{dontCompute:true}) || this.neighbourMap[pano.id][item.item.id]!= void 0 && this.neighbourMap[item.item.id][pano.id]!= void 0)continue //为true或两个方向都算了的
 	                
+	                //console.log('check isNeighbour', pano.id, item.item.id)
+	                 
 	                let byCloud = !pano.pointcloud.hasDepthTex;
-	                let result = this.isNeighbour(pano, item.item,  false, !byCloud, true);//计算 
+	                let result = this.isNeighbour(pano, item.item,  {onlyUseTex: !byCloud, computeDirFirst:true, computeTwoDir:true});//计算 
 	                
 	                if(result != void 0){//计算了 
 	                    //console.log('提前计算neighbor', pano.id,  item.item.id)
@@ -102924,9 +102935,9 @@ ENDSEC
 	        return  this.convert(t, n, precision, r, minFactor)
 	    }
 	    
-	    convert(number, domain, precision = 2, system, minFactor, ifEighths = !1) { 
+	    convert(number, domain, precision = 2, system, minFactor, ifEighths = !1, ifRestrictFactor) { 
 	        if (!number) return "";
-	        var s = this.getMostRelevantMeasurement(domain, system || this.UnitService.currentSystem, number, minFactor);
+	        var s = this.getMostRelevantMeasurement(domain, system || this.UnitService.currentSystem, number, minFactor, ifRestrictFactor);
 	        return this.getFormattedMeasurementString(s[0], s[1], precision, ifEighths)
 	    }
 	    
@@ -102976,7 +102987,7 @@ ENDSEC
 	        return  0 !== r ? r + "' " + s + a + '"' : "" + s + a + '"'
 	    }
 	    
-	    getMostRelevantMeasurement(domain, system, number, minFactor=0) {
+	    getMostRelevantMeasurement(domain, system, number, minFactor=0, ifRestrictFactor) {
 	        /* var a = r.values(UnitsOfMeasurement.getUnitsOfMeasurementByDomainAndSystem(domain, system))
 	          , s = r.filter(a, function(t) {  
 	            return t.factor >= i
@@ -102988,9 +102999,12 @@ ENDSEC
 	        let u = UnitsOfMeasurement.getUnitsOfMeasurementByDomainAndSystem(domain, system);
 	        for(let i in u){a.push(u[i]);}
 	         
-	        let s = a.filter(m=>m.factor >= minFactor); 
-	         
-	        
+	        let s;   
+	        if(ifRestrictFactor){
+	            s = a.filter(m=>m.factor == minFactor);  
+	        }else {
+	            s = a.filter(m=>m.factor >= minFactor);
+	        } 
 	       
 	        let c = s.reduce(function(prev, currentValue) {//reduce最终值是最后一次return的值 ( 没看懂这句话作用) 
 	            return currentValue.fromBase(number) < prev.fromBase(number) && currentValue.fromBase(number) >= 1 ? currentValue : prev
@@ -103474,17 +103488,15 @@ ENDSEC
 	            }
 	        }) */
 	        //viewer.setControls(viewer.orbitControls);
-	        viewer.setLimitFar(false); 
+	        //viewer.setLimitFar(false) 
 	          
-	        /* 
-	        Potree.settings.unableNavigate = true
-	        Potree.settings.ifShowMarker = false
-	        Potree.Utils.updateVisible(viewer.measuringTool.scene, 'clipModel', false)   
-	        //Potree.Utils.updateVisible(viewer.mapViewer.cursor, 'clipModel', false)//隐藏地图游标
-	        viewer.inputHandler.toggleSelection(this.box);
-	        viewer.inputHandler.fixSelection = true
-	        viewer.transformationTool.frame.material.color.set(Potree.config.clip.color)//navvis 15899953 
-	        viewer.setPointStandardMat(true)  */
+	         
+	        //Potree.settings.unableNavigate = true
+	        //Potree.settings.ifShowMarker = false
+	        Potree.Utils.updateVisible(viewer.measuringTool.scene, 'clipModel', false);   
+	         
+	        
+	        //viewer.setPointStandardMat(true)   
 	        
 	        {  
 	            this.events = {
@@ -103521,13 +103533,13 @@ ENDSEC
 	        
 	        //viewer.setControls(viewer.fpControls);
 	        
-	        Potree.settings.unableNavigate = false;
-	        Potree.settings.ifShowMarker = this.previousView.ifShowMarker;
+	        //Potree.settings.unableNavigate = false
+	        //Potree.settings.ifShowMarker = this.previousView.ifShowMarker
 	        Potree.Utils.updateVisible(viewer.measuringTool.scene, 'clipModel', true);  
 	        //Potree.Utils.updateVisible(viewer.mapViewer.cursor, 'clipModel', true) 
-	        viewer.setView(this.previousView); 
+	        //viewer.setView(this.previousView) 
 	        //viewer.setClipState(true)
-	        viewer.controls.setTarget(null);
+	        //viewer.controls.setTarget(null)
 	         
 	        this.editing = false;
 	    },
@@ -133599,17 +133611,12 @@ ENDSEC
 	                depthSampler : {minCount:400, median: 25}, //median预置一个中等值,以防止cpu过低的设备首次卡顿  
 	                 
 	            };
+	            for(let i in Potree.timeCollect){
+	                Potree.timeCollect[i].measures = [];
+	                Potree.timeCollect[i].sum = 0;
+	                Potree.timeCollect[i].start = true;                
+	            }
 	            
-	            setTimeout(()=>{
-	                for(let i in Potree.timeCollect){
-	                    Potree.timeCollect[i].measures = [];
-	                    Potree.timeCollect[i].sum = 0;
-	                    Potree.timeCollect[i].start = true;
-	                }
-	                /* setTimeout(()=>{
-	                    console.log('timeCollect', Potree.timeCollect.depthSampler.median, Potree.timeCollect.depthSampler.ave, Potree.timeCollect.depthSampler.measures.length)
-	                },10000) */
-	            },2000);
 	        }
 	         
 	  
@@ -134301,7 +134308,7 @@ ENDSEC
 	    computeShelter(){
 	        //先算用深度图的,然后再点云;
 	        
-	        let depthTiming = Potree.timeCollect.depthSampler.median; 
+	        //let depthTiming = Potree.timeCollect.depthSampler.median 
 	        let byTex=0,  byCloud=0;
 	        let len = shelterHistory.length;
 	        let waitCloud = [];

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


+ 14 - 13
src/graphic/Renderer/Draw.js

@@ -10,14 +10,18 @@ import Settings from "@/graphic/Settings.js";
 import SVGIcons from "../CanvasStyle/ImageLabels/SVGIcons";
 import VectorStyle from "@/graphic/enum/VectorStyle.js";
 import VectorWeight from "@/graphic/enum/VectorWeight.js";
+import router from "@/router/index";
+
+const isScreenStyle = () =>
+  Settings.screenMode && router.currentRoute.value.params.mode === "0";
 
 const imgCache = {};
 export const help = {
   getVectorStyle(vector, geoType = vector.geoType) {
     const geoId = vector?.vectorId;
-    if (!geoId || Settings.screenMode) {
+    if (!geoId || isScreenStyle()) {
       return [
-        Settings.screenMode && Style["Screen"][geoType]
+        isScreenStyle() && Style["Screen"][geoType]
           ? Style["Screen"][geoType]
           : Style[geoType],
         undefined,
@@ -201,7 +205,7 @@ export const help = {
     ctx.font = `${fontSize}px Microsoft YaHei`;
     const textCenter = help.getTextCenter(ctx, text);
     ctx.fillStyle = style.backColor;
-    if (!Settings.screenMode) {
+    if (!isScreenStyle()) {
       // const padding = style.padding;
       // help.roundRect(
       //   ctx,
@@ -594,7 +598,7 @@ export default class Draw {
       const [style] = help.setVectorStyle(this.context, vector, ["NormalLine"]);
       help.drawStyleLine(this.context, [start, end]);
       help.drawLineText(this.context, start, end, width, {
-        fillColor: Settings.screenMode ? "#000" : "#fff",
+        fillColor: isScreenStyle() ? "#000" : "#fff",
         padding: 6,
         fontSize: 12,
         backColor: style.strokeStyle,
@@ -756,7 +760,7 @@ export default class Draw {
     ctx.save();
     help.setVectorStyle(ctx, vector);
     ctx.beginPath();
-    if (!Settings.screenMode) {
+    if (!isScreenStyle()) {
       ctx.arc(
         extremePoint.x,
         extremePoint.y,
@@ -1114,7 +1118,7 @@ export default class Draw {
     const screenNotDrawTypes = [VectorCategory.Point.NormalPoint];
     if (!screenSave) {
       if (
-        (Settings.screenMode &&
+        (isScreenStyle() &&
           (!vector.category || screenNotDrawTypes.includes(vector.category))) ||
         vector.category === VectorCategory.Point.TestBasePoint
       ) {
@@ -1150,8 +1154,8 @@ export default class Draw {
       if (text) {
         style = {
           ...style,
-          fillStyle: Settings.screenMode ? "#000" : text.color,
-          strokeStyle: Settings.screenMode ? "#000" : text.color,
+          fillStyle: isScreenStyle() ? "#000" : text.color,
+          strokeStyle: isScreenStyle() ? "#000" : text.color,
         };
       }
     }
@@ -1180,10 +1184,7 @@ export default class Draw {
       ctx.restore();
     };
 
-    if (
-      Settings.selectBasePointId === vector.vectorId &&
-      !Settings.screenMode
-    ) {
+    if (Settings.selectBasePointId === vector.vectorId && !isScreenStyle()) {
       style = {
         ...style,
         fillStyle: "rgba(255, 143, 40, 1)",
@@ -1276,7 +1277,7 @@ export default class Draw {
     }
     this.context.save();
     const [_, foo] = help.setVectorStyle(this.context, vector);
-    const color = Settings.screenMode ? "#000" : vector.color;
+    const color = isScreenStyle() ? "#000" : vector.color;
     this.context.fillStyle = color;
     this.context.textBaseline = "bottom";
     this.context.font = `${

+ 1 - 1
src/main.ts

@@ -15,7 +15,7 @@ import { router, setupRouter } from "@/router";
 import appConfig from "./appConfig";
 import { currentApp, setCurrentApp } from "@/store/app";
 import App from "./main.vue";
-import 'swiper/swiper.min.css';
+import "swiper/swiper.min.css";
 const app = createApp(App);
 
 setCurrentApp(appConfig);

+ 1 - 0
src/views/graphic/geos/roadEdge.vue

@@ -67,6 +67,7 @@ const lineTypeMenu = reactive([
   {
     key: VectorStyle.RoadSide,
     icon: "stone",
+    hide: vector.value.geoType === "CurveRoadEdge",
     text: "路缘线",
     onClick: () => {
       clickHandlerFactory(VectorStyle.RoadSide)();

+ 14 - 15
src/views/scene/container.vue

@@ -52,22 +52,21 @@ onMounted(async () => {
       : null;
   });
 
+  if (!sceneSeting.value) {
+    const setting = sdk.scene.getSceneCropSetting();
+    sceneSeting.value = {
+      top: setting.top.value,
+      rotate: setting.rotate.value,
+      scale: setting.scale.value,
+    };
+  }
   watchEffect(() => {
-    if (sceneSeting.value) {
-      sdk.scene.setSceneCropSetting({
-        top: { value: sceneSeting.value.top },
-        rotate: { value: sceneSeting.value.rotate },
-        scale: { value: sceneSeting.value.scale },
-      });
-    } else {
-      const setting = sdk.scene.getSceneCropSetting();
-      console.log(setting);
-      sceneSeting.value = {
-        top: setting.top.value,
-        rotate: setting.rotate.value,
-        scale: setting.scale.value,
-      };
-    }
+    console.log("setSceneCropSetting");
+    sdk.scene.setSceneCropSetting({
+      top: { value: sceneSeting.value.top },
+      rotate: { value: sceneSeting.value.rotate },
+      scale: { value: sceneSeting.value.scale },
+    });
   });
 
   // 156  170

+ 2 - 2
src/views/scene/covers/basePoints.vue

@@ -33,7 +33,6 @@ import ActionsPanel from "@/views/scene/covers/actions.vue";
 import { customMap, useSDK } from "@/hook";
 import ActionMenus from "@/components/group-button/index.vue";
 
-
 const activeActionMenus = [
   {
     key: "delete",
@@ -53,7 +52,7 @@ const activeActionMenus = [
 ];
 </script>
 
-<style scoped>
+<style scoped lang="scss">
 .action-menus {
   position: absolute;
   bottom: var(--boundMargin);
@@ -61,6 +60,7 @@ const activeActionMenus = [
   transform: translateX(-50%);
   display: flex;
   z-index: 2;
+
   .menus {
     position: static;
   }

+ 8 - 1
src/views/scene/covers/range.vue

@@ -47,7 +47,7 @@
 import { Pos, SDK } from "@/sdk";
 import { computed, onMounted, onUnmounted, ref, watchEffect } from "vue";
 import { sceneSeting } from "@/store/sceneSeting";
-import { useSDK } from "@/hook";
+import { disabledMap, modeDisabled, useSDK } from "@/hook";
 
 const props = defineProps<{ rangeKey: string }>();
 const topSetting = useSDK().scene.getSceneCropSetting().top;
@@ -82,17 +82,24 @@ watchEffect((onCleanup) => {
   if (props.rangeKey && cropApi.value) {
     const name = `${props.rangeKey[0].toUpperCase()}${props.rangeKey.substring(1)}`;
     cropApi.value[`enterSet${name}`]();
+    console.log(`enterSet${name}`)
     onCleanup(() => {
       cropApi.value[`leaveSet${name}`]();
+      console.log(`leaveSet${name}`)
     });
   }
 });
 
+let pop;
 onMounted(() => {
+  console.log("enterCropSetting")
   cropApi.value = useSDK().scene.enterCropSetting();
+  pop = modeDisabled.push(ref(true));
 });
 onUnmounted(() => {
+  console.log("quit")
   cropApi.value && cropApi.value.quit();
+  modeDisabled.pop();
 });
 </script>