xzw 8 月之前
父节点
当前提交
6ab32658f0
共有 3 个文件被更改,包括 91 次插入53 次删除
  1. 42 23
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 48 29
      src/sdk/cover/index.js

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


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


+ 48 - 29
src/sdk/cover/index.js

@@ -919,6 +919,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
 
             }
 
+            let updateFar = ()=>{
+                Potree.settings.cameraFar = Math.max(result.oldFar, viewer.scene.view.position.distanceTo(model.boundCenter) + model.boundingBox.clone().applyMatrix4(model.matrixWorld).getSize(new THREE.Vector3).length())
+            }
+
             let scaleMeasure
             let result = {
                 bus,
@@ -966,7 +970,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                     }
                 },
                 changeSelect(state) {
-                    console.error('select', state)
+                    //console.error('select', state)
                     if (model) {
                         let fly = viewer.images360.latestRequestMode != 'showPanos'
                         MergeEditor.selectModel(model, state, fly, true)
@@ -1083,7 +1087,9 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                     MergeEditor.getAllObjects().forEach(m => {//隐藏其他的模型
                         if (m != model) Potree.Utils.updateVisible(m, 'enterScaleSet', false)
                     })
-
+                    result.oldFar = Potree.settings.cameraFar
+                    
+                    
                     let setScale = () => {
                         if (length == void 0 || !measureBuilded) return
 
@@ -1100,10 +1106,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                         viewer.scene.view.setView({
                             position: newCamPos, target: scaleMeasure.getCenter(), duration: 0, callback: () => {
                                 //更改target到measure中心的好处就是可以让相机绕measure中心转,坏处是每次更改都会变一下画面
-
+                                updateFar()
                             }
-                        })
-
+                        }) 
+                           
                     }
 
                     return {
@@ -1155,6 +1161,12 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                     MergeEditor.getAllObjects().forEach(m => {//恢复其他的模型
                         if (m != model) Potree.Utils.updateVisible(m, 'enterScaleSet', true)
                     })
+                
+                    setTimeout(()=>{//可能还原了
+                        Potree.settings.cameraFar = Math.max(result.oldFar, viewer.scene.view.position.distanceTo(model.boundCenter) + model.boundingBox.getSize(new THREE.Vector3).length())
+                    },10)
+                    
+                     
                 },
 
 
@@ -1326,19 +1338,12 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 viewer.dispatchEvent({ type: 'cancel_insertions', dontRemove: true, measure:path }) //要等进入编辑才能继续编辑
             }else{
                 info.points_datasets = props.points.map(e=> e.modelId == Id_noIntersect ? null : e.modelId)
-                info.dataset_points = info.points = props.points.map(e=>e.position)
+                info.dataset_points = info.points = props.points.map(e=>e.position)//当该点不在任何模型上时,记录的是世界坐标,所以两个都赋值,过后根据有无datasetID选择
                 path = viewer.measuringTool.createMeasureFromData(info);
-                
-                /* path.points_datasets.forEach((id,i)=>{
-                    if(id == void 0){ //当该点不在任何模型上时,dataset_point记录的其实是point,现在还原
-                        path.points[i] = new THREE.Vector3().copy(info.dataset_points[i])
-                        path.dataset_points[i] = null 
-                    }
-                }) */
-                //path.update({ifUpdateMarkers:true})
-                
-                if(props.line.position) {
-                    let pos = Potree.Utils.datasetPosTransform({fromDataset:true, position: props.line.position,  datasetId: props.line.modelId })
+            
+                if(props.line.position) { 
+                    let pos = props.line.modelId == Id_noIntersect ? new THREE.Vector3().copy(props.line.position) : 
+                              Potree.Utils.datasetPosTransform({fromDataset:true, position: props.line.position,  datasetId: props.line.modelId })
                     path.updateTitlePos(pos) 
                 }
                  
@@ -1357,10 +1362,10 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                     msg != void 0 && bus.emit('activePoint', msg )
                 }) 
                 path.addEventListener('titlePosChanged',(e)=>{
-                    console.log('titlePosChanged',path.title,e.position.clone())
+                    //console.log('titlePosChanged',path.title, e.position.clone())
                     bus.emit('linePositionChange', {
-                        modelId: e.root.dataset_id, 
-                        pos:  Potree.Utils.datasetPosTransform({toDataset:true, position: e.position.clone(),  datasetId: e.root.dataset_id })
+                        modelId: e.root ? e.root.dataset_id : Id_noIntersect, 
+                        pos:  e.root ? Potree.Utils.datasetPosTransform({toDataset:true, position: e.position.clone(),  datasetId: e.root.dataset_id  }) : e.position.clone()
                     }) 
                 })
                 path.addEventListener('click',(e)=>{
@@ -1427,7 +1432,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 changeVisibilityRange(far){//设置消失距离
                     //fadeFar = far 
                     //path.setFadeFar(( far== -1 || path.editEnable) ? null : far) //注意:编辑时显示全部
-                    path.setFadeFar(far== -1 ? null : far) 
+                    path.setFadeFar(far== -1 ? 0 : far) 
                 },
                 focus(){//highlight
                     
@@ -1559,13 +1564,19 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
 
 
 
-
- 
+        startAddSth(){//开始添加热点
+            Potree.settings.disableClick = true  //禁止点击事件,尤其是全景模式下,否则会走到下一个点
+            viewer.dispatchEvent('start_inserting_tag')
+        },
+        endAddSth(){
+            Potree.settings.disableClick = false 
+            viewer.dispatchEvent('endTagMove')
+        }, 
 
         createTagging(props){
             let bus = mitt()
             
-            console.warn('createTagging', props)
+            //console.warn('createTagging', props)
             let root = viewer.scene.pointclouds.concat(viewer.objs.children).find(e=>e.dataset_id == props.modelId)
             if(!root){
                 return console.error('热点没有找到该modelId,模型是否已经删除?')
@@ -1575,8 +1586,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 position: new THREE.Vector3().copy(props.position), //局部坐标
                 normal: new THREE.Vector3().copy(props.normal), 
                 root,   lineLength: props.altitudeAboveGround,
-                title: props.title,  fontsize: props.fontSize,
-                spotUrl: props.image
+                title: props.title,  fontsize: props.fontSize  
             }    
             let tag = viewer.tagTool.createTagFromData(info)
             
@@ -1603,14 +1613,16 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
             tag.functions = {
                 bus, 
                 changeType(type){
-                    console.log('changeType', tag.title, type)
+                    //console.log('changeType', tag.title, type)
                     let onMesh = type == '3d'
                     if(tag.onMesh != onMesh){
                         tag.changeOnMesh(onMesh) 
                     }
                 },
                 visibility(v){// 标注可见性
+                    //console.log('visibility', tag.title, v)
                     Potree.Utils.updateVisible(tag,'user', v)
+                    viewer.dispatchEvent('content_changed')
                 },
                 visibilityTitle(v){ 
                     tag.setTitleVisi(v, 'user')
@@ -1637,6 +1649,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                     tag.changeLineLen(height)
                 }, 
                 changeCanMove(canMove){
+                    //console.log('changeCanMove', tag.title,  canMove)
                     tag.dragEnable = canMove
                 },
                 
@@ -1666,11 +1679,11 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
                 },
                 
             }
-            
+            tag.functions.changeImage(props.image)
             /* 
             
             tag.functions.changeType(props.type) 
-            tag.functions.changeImage(props.image)
+            
              */
             
             
@@ -1966,6 +1979,12 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
         
     } 
 
+
+    function updateCamFar(){ 
+    
+    }
+
+
     function updateMap( ){