xzw 1 vuosi sitten
vanhempi
commit
af23077f51
2 muutettua tiedostoa jossa 21 lisäystä ja 21 poistoa
  1. 3 3
      src/custom/modules/panos/Images360.js
  2. 18 18
      src/custom/viewer/ViewerNew.js

+ 3 - 3
src/custom/modules/panos/Images360.js

@@ -926,10 +926,10 @@ export class Images360 extends THREE.EventDispatcher{
                 }   
                 if(computeDirFirst){//先计算方向,防止重复计算ifBlockedByIntersect
                     if(inDirection()){
-                        ifNeighbour = !viewer.inputHandler.ifBlockedByIntersect({pos3d:pano1.position, margin,  cameraPos:pano0.position})
+                        ifNeighbour = !viewer.inputHandler.ifBlockedByIntersect({point:pano1.position, margin,  cameraPos:pano0.position})
                     }
                 }else{
-                    ifNeighbour = !viewer.inputHandler.ifBlockedByIntersect({pos3d:pano1.position, margin,  cameraPos:pano0.position})
+                    ifNeighbour = !viewer.inputHandler.ifBlockedByIntersect({point:pano1.position, margin,  cameraPos:pano0.position})
                     if(ifNeighbour && !inDirection()){
                         ifNeighbour = undefined //不确定
                     } 
@@ -1300,7 +1300,7 @@ export class Images360 extends THREE.EventDispatcher{
             (pano)=>{
                 let  score = 0;
                 if(pano.depthTex && checkIntersect){    
-                    let intersect = !!viewer.ifPointBlockedByIntersect(target, pano.id, true);       //viewer.inputHandler.ifBlockedByIntersect({pos3d:target, margin:0.1, cameraPos:pano})
+                    let intersect = !!viewer.ifPointBlockedByIntersect(target, pano.id, true);       //viewer.inputHandler.ifBlockedByIntersect({point:target, margin:0.1, cameraPos:pano})
                     if(intersect){ 
                         score = 0;
                     }else { 

+ 18 - 18
src/custom/viewer/ViewerNew.js

@@ -717,13 +717,13 @@ export class Viewer extends ViewerBase{
     
      
     
-    ifPointBlockedByIntersect(pos3d , panoId,  soon ){//点是否被遮挡
+    ifPointBlockedByIntersect(point , panoId,  soon ){//点是否被遮挡
         let ifShelter
         let now = Date.now()
         let extraPanoId = panoId != void 0 
         if(!this.shelterCount)return
         
-        let history = shelterHistory.find(e=>e.pos3d.equals(pos3d)) 
+        let history = shelterHistory.find(e=>e.point.equals(point)) 
         let cameraPos = this.mainViewport.view.position.clone()
         if(panoId == void 0){
             if(this.images360.isAtPano(0.05)){
@@ -746,7 +746,7 @@ export class Viewer extends ViewerBase{
             shelterHistory.splice(index, 1)
             
         }else{//新增
-            history = {pos3d,  panos:{}, notAtPano:{}} 
+            history = {point,  panos:{}, notAtPano:{}} 
              
             const minCount = 100
             if(shelterHistory.length > minCount){//去除最早的
@@ -770,21 +770,21 @@ export class Viewer extends ViewerBase{
             if(panoId != void 0){
                 let pano = this.images360.getPano(panoId)
                 if((soon || this.shelterCount.byTex<this.shelterCount.maxByTex) && pano.depthTex){
-                    ifShelter = !!viewer.inputHandler.ifBlockedByIntersect({pos3d, margin:Potree.config.shelterMargin, useDepthTex:true, pano }  ) 
+                    ifShelter = !!viewer.inputHandler.ifBlockedByIntersect({point, margin:Potree.config.shelterMargin, useDepthTex:true, pano }  ) 
                     history.panos[panoId] = ifShelter
                     this.shelterCount.byTex ++ ;
-                    //console.log('computeByTex direct', panoId, pos3d, ifShelter)
+                    //console.log('computeByTex direct', panoId, point, ifShelter)
                 }else{
-                    //console.log('延迟tex',panoId, pos3d )
+                    //console.log('延迟tex',panoId, point )
                     history.waitCompute = {panoId,   forceGet:extraPanoId  }
                     return useLastResult() 
                 }
             }else{ 
                 if(/* history.ifShelter == void 0 || */ this.shelterCount.byCloud<this.shelterCount.maxByCloud){//弊端:第一个总是直接计算,后面的都是延后。但无法改进,因是一个个传进来的,无法预测。 
-                    ifShelter = !!viewer.inputHandler.ifBlockedByIntersect({pos3d, margin:Potree.config.shelterMargin, pickWindowSize:3}  ) 
+                    ifShelter = !!viewer.inputHandler.ifBlockedByIntersect({point, margin:Potree.config.shelterMargin, pickWindowSize:3}  ) 
                     history.notAtPano = {cameraPos , ifShelter }
                     this.shelterCount.byCloud ++ ; 
-                    //console.log('computeByCloud direct', pos3d.toArray())
+                    //console.log('computeByCloud direct', point.toArray())
                 }else{
                     //console.log('延迟cloud' )
                     history.waitCompute = {cameraPos}
@@ -839,11 +839,11 @@ export class Viewer extends ViewerBase{
                              if(byTex >= maxTexCount)break
                              
                              byTex ++
-                             let ifShelter = !!viewer.inputHandler.ifBlockedByIntersect({pos3d:history.pos3d, margin:Potree.config.shelterMargin, useDepthTex:true }  ) 
+                             let ifShelter = !!viewer.inputHandler.ifBlockedByIntersect({point:history.point, margin:Potree.config.shelterMargin, useDepthTex:true }  ) 
                              history.panos[this.images360.currentPano.id] = ifShelter 
                              history.ifShelter = ifShelter
                              delete history.waitCompute  
-                             //console.log('补1', history.pos3d.toArray())
+                             //console.log('补1', history.point.toArray())
                          }else{
                              if(this.images360.currentPano.pointcloud.hasDepthTex){
                                  //先等待加载完深度图
@@ -882,14 +882,14 @@ export class Viewer extends ViewerBase{
             
             
             
-                let list = waitCloud2.map(e=>e.pos3d) 
+                let list = waitCloud2.map(e=>e.point) 
                 let result = Common.batchHandling.getSlice('shelterByCloud', list, {maxUseCount:maxCloudCount,useEquals:true, stopWhenAllUsed:true} ) //iphonex稳定后大概在7-10。  
                 //list.length>0 && console.log('list',list, maxCloudCount)
                 
                 result.list.forEach(e=>{
-                    let history = waitCloud2.find(a=>a.pos3d.equals(e))
+                    let history = waitCloud2.find(a=>a.point.equals(e))
                      
-                    let ifShelter = !!viewer.inputHandler.ifBlockedByIntersect({pos3d:history.pos3d, margin: Potree.config.shelterMargin , pickWindowSize:3}  ) 
+                    let ifShelter = !!viewer.inputHandler.ifBlockedByIntersect({point:history.point, margin: Potree.config.shelterMargin , pickWindowSize:3}  ) 
                     
                     if(history.waitCompute.cameraPos){
                         history.notAtPano = {cameraPos: history.waitCompute.cameraPos , ifShelter }
@@ -898,7 +898,7 @@ export class Viewer extends ViewerBase{
                     }
                     history.ifShelter = ifShelter
                     byCloud++
-                    //console.log('补2',  history.pos3d.toArray()) 
+                    //console.log('补2',  history.point.toArray()) 
                     delete history.waitCompute
                 })
             
@@ -3769,12 +3769,12 @@ export class Viewer extends ViewerBase{
                 
                 if(o.checkIntersect){
                     let checkIntersect = ( )=>{ 
-                        let intersect = this.inputHandler.ifBlockedByIntersect({pos3d:position, cameraPos: target})// 不一定准确
+                        let intersect = this.inputHandler.ifBlockedByIntersect({point:position, cameraPos: target})// 不一定准确
                         if(intersect){ 
                             let blockCount = 0, unblockCount = 0, visi;
                             for(let i=0;i<object.points.length;i++){ //如果顶点超过一半不可见,就要更改位置
                                 let p = object.points[i]
-                                let blocked = this.inputHandler.ifBlockedByIntersect({pos3d:p, margin:0.3 , cameraPos:position, pickWindowSize:4});
+                                let blocked = this.inputHandler.ifBlockedByIntersect({point:p, margin:0.3 , cameraPos:position, pickWindowSize:4});
                                 if(blocked){
                                     blockCount ++;
                                     if(blockCount / object.points.length >= 0.5){
@@ -3805,7 +3805,7 @@ export class Viewer extends ViewerBase{
                                     let position1 = position.clone()
                                     let dir = new THREE.Vector3().subVectors(position, target) 
                                     position.copy(target).sub(dir) 
-                                    let intersect2 = this.inputHandler.ifBlockedByIntersect({pos3d: position,  cameraPos:target})// 不一定准确
+                                    let intersect2 = this.inputHandler.ifBlockedByIntersect({point: position,  cameraPos:target})// 不一定准确
                                     if(intersect2){
                                         if(intersect2.distance < intersect.distance ){
                                             position.copy(position1)//恢复
@@ -3904,7 +3904,7 @@ export class Viewer extends ViewerBase{
                 
                 if(o.checkIntersect){//识别被点云遮住的话 
                     let intersect  //反向查找从target到相机的第一个intersect
-                    intersect = this.inputHandler.ifBlockedByIntersect({pos3d:position, margin:0,  cameraPos:target}   /* {pos3d:target, margin: 0.2,  cameraPos:position} */)  
+                    intersect = this.inputHandler.ifBlockedByIntersect({point:position, margin:0,  cameraPos:target}   /* {point:target, margin: 0.2,  cameraPos:position} */)  
                      
                     if(intersect){ 
                         position.copy(intersect.location)