xzw 2 gadi atpakaļ
vecāks
revīzija
4d19eb5105

+ 11 - 11
src/ExtendPointCloudOctree.js

@@ -198,7 +198,7 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
         material.resolution = resolution
         
         
-		//material.spacing = this.pcoGeometry.spacing; // * Math.max(this.scale.x, this.scale.y, this.scale.z);  //应该不需要
+        material.spacing = this.pcoGeometry.spacing; // * Math.max(this.scale.x, this.scale.y, this.scale.z);  //应该不需要
 		material.near = camera.near;
 		material.far = camera.far;
 		material.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;
@@ -213,7 +213,7 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
 
 		let getVal = (a, b) => a != void 0 ? a : b;
         
-        
+       
       
         let pickWindowSize_ = THREE.Math.clamp( Math.round((1.1-this.maxLevel/this.nodeMaxLevel)*80),  5, 100)
 		let pickWindowSize = getVal(params.pickWindowSize, pickWindowSize_    ); /* 65 */ //拾取像素边长,越小越精准,但点云稀疏的话可能容易出现识别不到的情况。 另外左下侧会有缝隙无法识别到,缝隙大小和这个值有关//突然发现pickWindowSize在一百以内的变化对pick费时影响甚微,1和100差1毫秒不到,但400时会多4毫秒
@@ -233,12 +233,10 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
                 window.testScreen = 0
             } 
         }
-        
-      
-
+     
 		let pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType);
 		let pointSize = getVal(params.pointSize, this.material.size);
- 
+   
 		let nodes = this.nodesOnRay(this.visibleNodes, ray);
  
 		if (nodes.length === 0) { 
@@ -271,8 +269,8 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
 
 		{ // update pick material
 			pickMaterial.pointSizeType = pointSizeType;
-			//pickMaterial.shape = this.material.shape;
-			pickMaterial.shape = Potree.PointShape.PARABOLOID;
+			 pickMaterial.shape = this.material.shape;
+		//	pickMaterial.shape = Potree.PointShape.PARABOLOID;
 
 			pickMaterial.uniforms.uFilterReturnNumberRange.value = this.material.uniforms.uFilterReturnNumberRange.value;
 			pickMaterial.uniforms.uFilterNumberOfReturnsRange.value = this.material.uniforms.uFilterNumberOfReturnsRange.value;
@@ -286,7 +284,9 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
 			pickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value;
 			pickMaterial.classification = this.material.classification;
 			pickMaterial.recomputeClassification();
- 
+            
+            
+            
             //pickClipped判断转移到上一层函数 
             let {bigClipInBox,clipBoxes_in,clipBoxes_out} = this.material
             pickMaterial.setClipBoxes(bigClipInBox, clipBoxes_in, clipBoxes_out, []) 
@@ -304,7 +304,7 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
 			parseInt(pixelPos.x - (pickWindowSize - 1) / 2),
 			parseInt(pixelPos.y - (pickWindowSize - 1) / 2),
 			parseInt(pickWindowSize), parseInt(pickWindowSize));
-
+ 
 
 		renderer.state.buffers.depth.setTest(pickMaterial.depthTest);
 		renderer.state.buffers.depth.setMask(pickMaterial.depthWrite);
@@ -346,7 +346,7 @@ export class ExtendPointCloudOctree extends PointCloudOctree{
 
 		let pixels = buffer;
 		let ibuffer = new Uint32Array(buffer.buffer); //四个数整合成一个
-
+console.log(pixels.join(','))
 		// find closest hit inside pixelWindow boundaries
 		let min = Number.MAX_VALUE;
 		let hits = [], hits2 = [], rSquare;

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

@@ -3622,7 +3622,7 @@ export class Viewer extends ViewerBase{
             if(Potree.settings.displayMode == 'showPointCloud'){  //点云 
                 let minDis = 0.3;
                 
-                //if(o.checkIntersect){
+                if(o.checkIntersect){
                     let checkIntersect = ( )=>{ 
                         let intersect = this.inputHandler.ifBlockedByIntersect({pos3d:position, cameraPos: target})// 不一定准确
                         if(intersect){ 
@@ -3676,7 +3676,7 @@ export class Viewer extends ViewerBase{
                     
                     checkIntersect() 
                     //多折线没有areaPlane 有时候会看向空白区域 - -
-                //}      
+                }      
             }else if(Potree.settings.displayMode == 'showPanos'){//全景 (比较难校准)
                 let target2, dir
                 if( object.measureType.includes('MulDistance')){//因为该线不闭合,可能看向target的方向会没有线,所以换一个target

+ 4 - 1
src/navigation/InputHandlerNew.js

@@ -779,7 +779,7 @@ export class InputHandler extends THREE.EventDispatcher {
         let raycaster 
         
         viewer.addTimeMark('getIntersect','start')
-
+ 
         let getByDepthTex = ()=>{ 
             let intersect
             if(prop.pos3d){
@@ -817,6 +817,9 @@ export class InputHandler extends THREE.EventDispatcher {
                 {pickClipped: true, isMeasuring: this.isMeasuring, pickWindowSize, cameraChanged: !!prop.pos3d }  
                 
             );
+            
+       console.log('intersectPoint', intersectPoint)     
+            
             //恢复
             if(prop.pos3d){
                 viewport.view.applyToCamera(camera)

+ 5 - 1
src/viewer/EDLRendererNew.js

@@ -266,7 +266,11 @@ export class EDLRenderer{//Eye-Dome Lighting 眼罩照明
                 material.near = camera.near;
                 material.far = camera.far;
                 material.uniforms.octreeSize.value = octreeSize
-	
+                
+                
+              
+	//material.shape = Potree.PointShape.PARABOLOID;
+
                 if(useEDL ){  
                     material.useEDL = true;
                     //material.fakeEDL = false; //add

+ 1 - 0
src/viewer/ExtendView.js

@@ -428,6 +428,7 @@ class ExtendView extends View {
             viewer.scene.measurements.forEach((e)=>{ 
                 Potree.Utils.updateVisible(e, 'tranCamera', true) 
             }) 
+            this.applyToCamera(viewport.camera)
             viewer.dispatchEvent({type:'camera_changed', viewport:viewer.mainViewport, changeInfo:{}})//update sprite
             
             console.log('tranCamera end')