xzw 2 månader sedan
förälder
incheckning
b3f86e3b44

+ 28 - 8
public/lib/potree/potree.js

@@ -50699,10 +50699,11 @@
 	        var sideVec = void 0; //该点两边对应的向量
 	        var uvX = void 0;
 	        if (i == 0 || i == count - 1) {
-	          sideVec = new Vector3().copy(math.getNormal2d({
+	          var nor = math.getNormal2d({
 	            p1: i == 0 ? B : O,
 	            p2: i == 0 ? O : A
-	          })).setZ(0).multiplyScalar(this.halfPathWidth); //垂线
+	          }) || new Vector3(1, 0, 0);
+	          sideVec = new Vector3().copy(nor).setZ(0).multiplyScalar(this.halfPathWidth); //垂线
 	          uvX = i == 0 ? 0 : 1; //percent of length 
 	        } else {
 	          var OA = new Vector3().subVectors(A, O).setZ(0).normalize(); //只保证俯视角度正确。(如果两点有高度差,该段四个点不会在同一平面,看起来有扭转,有的地方会肥大,但从俯视角度看是正确的。)
@@ -50710,10 +50711,11 @@
 	          var angle = math.getAngle(OA, OB, 'z');
 	          if (math.closeTo(angle, 0, 1e-4) || math.closeTo(angle, Math.PI, 1e-4) || math.closeTo(angle, -Math.PI, 1e-4)) {
 	            //这时候直接加两个向量算出的平分线不准,故直接找垂线
-	            sideVec = new Vector3().copy(math.getNormal2d({
+	            var _nor = math.getNormal2d({
 	              p1: O,
 	              p2: A
-	            })).setZ(0).multiplyScalar(this.halfPathWidth); //垂线
+	            }) || new Vector3(1, 0, 0);
+	            sideVec = new Vector3().copy(_nor).setZ(0).multiplyScalar(this.halfPathWidth); //垂线
 	            //console.log('接近0或180',angle, sideVec)
 	          } else {
 	            var midVecLength = this.halfPathWidth / Math.sin(angle / 2);
@@ -87718,7 +87720,7 @@
 	              this.dispatchEvent('content_changed'); //渲染 尤其vpn访问google网速慢需要
 	            }, 1000);
 	          });
-	          this.map3d.sceneGroup.position.z = -20;
+	          this.map3d.sceneGroup.position.z = -0.1;
 	          this.addEventListener('setLonlat', e => {
 	            this.map3d.disabled = false;
 	            Potree.settings.cameraFar = 80000000;
@@ -93214,10 +93216,11 @@
 	              var angle = radSegments * i;
 	              circlePts.push(new Vector2(radius * Math.cos(angle), radius * Math.sin(angle)));
 	            }
-	            var mat = new MeshStandardMaterial({
+
+	            //var mat = new THREE.MeshStandardMaterial({color,   /* wireframe:true,   depthTest:false,*/  roughness:0.9,metalness:0.3}) 
+	            var mat = new DepthBasicMaterial({
 	              color,
-	              /* wireframe:true,   depthTest:false,*/roughness: 0.9,
-	              metalness: 0.3
+	              useDepth: false
 	            });
 	            var linePath = path.map(e => {
 	              e instanceof Array && (e = new Vector3().fromArray(e));
@@ -93252,6 +93255,23 @@
 	                Potree.Utils.updateVisible(mesh, 'isInEntity', e.entity && e.entity.name == visiEntity);
 	              });
 	            }
+	            {
+	              mat.defines.mapOverlay = true;
+	              var map = new TextureLoader().load(Potree.resourcePath + '/textures/rectangle.png', () => {
+	                viewer.dispatchEvent('content_changed');
+	              });
+	              mat.uniforms.mapColor.value.set('#f00');
+	              map.anisotropy = 2;
+	              map.wrapS = RepeatWrapping;
+	              map.wrapT = RepeatWrapping;
+	              /* map.repeat.set(10,1.3)  
+	              map.offset.set(0,-0.15) */
+	              mat.map = map;
+
+	              //mat.map.repeat.x = Math.round(this.totalLength / this.halfPathWidth * 0.5) * (this.reverse ? -1 : 1)
+	              mat.map.needsUpdate = true;
+	              mat.setUV();
+	            }
 	          }
 	          while (index < data.length) {
 	            addMesh(data[index]);

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1 - 1
public/lib/potree/potree.js.map


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 14450 - 0
public/lib/potree/resources/pathPoints.json


+ 87 - 10
src/sdk/cover/index.js

@@ -19,14 +19,20 @@ const ModelTypes = {
 }
 
 let satellite = true
-let defaultMapProps = [{url: `//wprd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=${satellite?6:7}&x={x}&y={y}&z={z}&layer=6&token=YOUR_API_KEY`, //style=6是卫星,7是标准
-    maximumLevel: satellite?18:19, 
+let defaultMapProps = satellite ? 
+[{url: `//wprd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=6&x={x}&y={y}&z={z}&layer=6&token=YOUR_API_KEY`, //style=6是卫星,7是标准
+    maximumLevel: 18 , 
     name:'高德baseLayer'  
 },{
     url: `//wprd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}&layer=6&token=YOUR_API_KEY`, //style=6是卫星,7是标准
     maximumLevel: 18, 
     name:'高德textLayer'  
-}] 
+}]  : [{url: `//wprd04.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}&layer=6&token=YOUR_API_KEY`, //style=6是卫星,7是标准
+    maximumLevel: 19, 
+    name:'高德baseLayer'  
+}]
+
+ 
 let cesAspect , cesImageryProvider,  mapProps = defaultMapProps 
 
 
@@ -65,7 +71,74 @@ let curSelectPath
 } 
 
 //江门本地版本
- 
+
+let addedPath
+let addPath = ()=>{//加个他们拍的路径 
+    if(addedPath)return
+    let path = viewer.scene.measurements.find(e=>e.title == '行走路径')
+    
+    if(!path)return 
+    
+    let useLonlat = !Potree.browser.urlHasValue('moveModelByUser') 
+    let spaceTime = Potree.browser.urlHasValue('spaceTime',true)
+    if(spaceTime == '') spaceTime = 40 
+    let height = 3.2
+    
+    
+    Potree.loadFile(Potree.resourcePath+'/pathPoints.json', null, (data)=>{
+        console.log(data)
+        window.pathPoints = data
+        let points = []
+        data.forEach((e,i)=>{
+            let pos 
+            if(useLonlat){
+                pos = viewer.transform.lonlatToLocal.forward([e.longitude, e.latitude, e.relativeHeight])
+                pos = new THREE.Vector3().fromArray(pos)
+            }else{
+                pos = new THREE.Vector3(e.X,-e.Y,-e.Z) 
+            }  
+            pos.z += height
+            points[points.length-1]?.equals(pos) || points.push(pos)
+        })
+        
+        path.reDraw()
+           
+        
+        if(spaceTime>0){
+            let index = 0
+            let interval = setInterval(()=>{
+                if(index == points.length) {
+                    return clearInterval(interval) 
+                }
+                path.addMarker({index,point:points[index]})
+                path.setEditEnable(false)
+                path.update()
+                
+                index++
+            },spaceTime)
+        }else{
+            points.forEach((point,index)=>{
+                path.addMarker({index,point})
+            })
+            path.dataset_points = path.points.slice()
+            path.setEditEnable(false)
+            path.update()
+            
+            
+        }  
+    
+    })
+   
+    addedPath = true
+    
+    
+}
+
+
+
+
+
+
 export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOSSRoot, panoOSSRoot,ossRoot }) => {
     
     console.warn('新的页面')
@@ -155,7 +228,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
     
     Potree.settings.unableNavigate = true 
     Potree.setLonlat(lonlat[0], lonlat[1])
-    
+     
     if(window.offline){//离线版 改目录
         viewer.images360.tileDownloader.getTiles = function(d, sceneNum, useV4url, model){ 
             let kankan = !model.isPointcloud //ModelTypes[model.props.fromType].panos4dkk  
@@ -509,7 +582,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
 
 
 
-    let sdk = {
+    let sdk = Potree.sdk = {
         sceneBus, mapBus,
         
         
@@ -843,7 +916,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
         changeMapTile(urls){
             //'http:/a.xxx.com/{x}/{y}/{z}.png'
             console.log('changeMapTile', urls ) 
-            
+        
             mapProps = urls.map(e=>{
                 return {
                     maximumLevel : e.maximumLevel,
@@ -1874,7 +1947,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
         
             let path
             let info = {type : 'Path', minMarkers : 2, title:props.name, lineHeight : props.line.altitudeAboveGround }
-           
+            
             if(props.points.length == 0){
                 path = viewer.measuringTool.startInsertion( info, () => { 
                     bus.emit("drawed" ); //完成   
@@ -2015,7 +2088,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 },
                 createAni(tension){
                     let distance = path.totalLength
-                    let pathPoints = path.points.map(e=>e.clone().add(new THREE.Vector3(0,0,2))) //在地面之上一定高度
+                    let pathPoints = path.points.map(e=>e.clone().add(new THREE.Vector3(0,0,0.5))) //在地面之上一定高度
                     if(path.reverse)    pathPoints.reverse() 
                     
                     
@@ -2136,7 +2209,11 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
             path.functions = functions
             
             props.line && functions.changeLine(props.line)
-             
+            
+            
+            setTimeout(()=>{
+                addPath()
+            },100) 
             
             return functions
          

+ 2 - 2
vite.config.ts

@@ -6,7 +6,7 @@ import mkcert from 'vite-plugin-mkcert'
 import { resolve } from 'path'
 
 // const ip = `http://192.168.0.25`
-const ip = `https://test-mix3d.4dkankan.com`
+const ip = `https://mix3d.4dkankan.com`
 const proxy = {
   '/offlineData': {
     target: 'http://192.168.9.66:9000/',
@@ -14,7 +14,7 @@ const proxy = {
     rewrite: path => path.replace(/^\/offlineData/, '')
   },
   '/fusion/ws': {
-    target: 'wss://test-mix3d.4dkankan.com/',
+    target: 'wss://mix3d.4dkankan.com/',
     ws: true,
     rewriteWsOrigin: true,
   },