xzw 3 vuotta sitten
vanhempi
commit
52e0ef626a

BIN
resources/textures/explode.png


BIN
resources/textures/fire.png


BIN
resources/textures/pic_point_s32.png


BIN
resources/textures/smokeparticle.png


+ 1 - 1
src/PointCloudOctree.js

@@ -1392,7 +1392,7 @@ export class PointCloudOctree extends PointCloudTree {
 
 		let getVal = (a, b) => a !== undefined ? a : b;
 
-		let pickWindowSize = getVal(params.pickWindowSize, 5/* 65 */);  //拾取像素边长
+		let pickWindowSize = getVal(params.pickWindowSize,  5  /* 65 */);  //拾取像素边长,越小越精准,但点云稀疏的话可能容易出现识别不到的情况
 		let pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false);
 
 		let size = renderer.getSize(new THREE.Vector2());

+ 2 - 2
src/Potree.js

@@ -185,7 +185,7 @@ export async function loadMapEntity(){
     }
     if(Potree.fileServer){
         if(!Potree.settings.floorplanType || !Potree.settings.floorplanEnable)return /* 等待平面图类型定义好会加载 */
-        path = `/laser/tiledMap/${Potree.settings.number}/tiledMap/${Potree.settings.floorplanType}` 
+        path = `/laser/tiledMap/${Potree.settings.number}/tiledMap/${Potree.settings.floorplanType}/${Potree.settings.originDatasetId}` 
     }else{
         path = `https://${Potree.config.urls.prefix2}/indoor/${Potree.settings.number}/api/tiled_maps`
         
@@ -197,7 +197,7 @@ export async function loadMapEntity(){
  
 export async function loadPanos(center, callback){
     var path 
-    let query = ''//`?lat=${center.lat}&lon=${center.lon}&radius=200000`
+    let query = `?datasetId=${Potree.settings.originDatasetId}`                  //`?lat=${center.lat}&lon=${center.lon}&radius=200000`
     if(Potree.fileServer){
         path = `/laser/filter/${Potree.settings.number}/query` + query
     }else{ 

+ 1 - 1
src/modules/Images360/Images360.js

@@ -1683,7 +1683,7 @@ export class Images360Loader{
         Potree.loadPanos(center,(data)=>{
             //data[0].file_id = '00019'
              
-            
+            if(data.data) data = data.data
             if(data.length == 0)console.error('没有漫游点')
             
             let images360 = new Images360(viewer, params);

+ 3 - 3
src/navigation/InputHandler.js

@@ -690,7 +690,7 @@ export class InputHandler extends EventDispatcher {
         }
     }
 
-    getIntersect(viewport,camera,onlyGetIntersect){
+    getIntersect(viewport,camera,onlyGetIntersect, pickWindowSize){
         //add
         let intersectPoint = viewport.noPointcloud? null : Utils.getMousePointCloudIntersection(
             viewport,
@@ -699,7 +699,7 @@ export class InputHandler extends EventDispatcher {
             camera, 
             this.viewer, 
             this.viewer.scene.pointclouds,
-            {pickClipped: true, isMeasuring: this.isMeasuring}
+            {pickClipped: true, isMeasuring: this.isMeasuring, pickWindowSize}
         );
             
         
@@ -765,7 +765,7 @@ export class InputHandler extends EventDispatcher {
         if(!viewport)return//刚变化viewport时会找不到
          
 		
-        let intersectPoint = this.getIntersect(viewport,camera,e.onlyGetIntersect)
+        let intersectPoint = this.getIntersect(viewport,camera,e.onlyGetIntersect, e.pickWindowSize)
         if(e.onlyGetIntersect){ 
             return intersectPoint
         }

+ 1 - 0
src/settings.js

@@ -315,6 +315,7 @@ function getPrefix(){
  
 let settings = {//设置   可修改
     number: '', //场景序号
+    originDatasetId:'',//场景原本的数据集id
     isOfficial:false,
     webSite:'data', //不同环境对应的静态文件的地址不同
     displayMode:'',

+ 5 - 12
src/utils.js

@@ -396,19 +396,12 @@ export class Utils {
 		return texture;
 	}
 
-	static getMousePointCloudIntersection (viewport, mouse, pointer, camera, viewer, pointclouds, params = {}) {
+	static getMousePointCloudIntersection (viewport, mouse, pointer, camera, viewer, pointclouds, pickParams = {}) {
 		if(!pointclouds)return
         
 		let renderer = viewer.renderer;
 		
-		 
-		let pickParams = {};
-
-		if(params.pickClipped){
-			pickParams.pickClipped = params.pickClipped;
-		}
-        
-        
+		  
         if(viewport){ //转换到类似整个画面时
             pickParams.x = mouse.x / viewport.width;
             pickParams.y = renderer.domElement.clientHeight - mouse.y / viewport.height; 
@@ -431,7 +424,7 @@ export class Utils {
         
         let density
         let sizeType
-        if(params.isMeasuring || Potree.settings.displayMode == 'showPanos'){ //测量或全景模式提高精准度
+        if(pickParams.isMeasuring || Potree.settings.displayMode == 'showPanos'){ //测量或全景模式提高精准度
             density = Potree.settings.pointDensity 
             Potree.settings.pointDensity = 'magnifier' 
              
@@ -444,7 +437,7 @@ export class Utils {
         
 		for(let pointcloud of pointclouds){ 
             
-			let point = pointcloud.pick(viewer, camera, ray, pickParams);
+			let point = pointcloud.pick(viewer, camera, ray, pickParams );
 			
             viewport.afterRender
             
@@ -463,7 +456,7 @@ export class Utils {
 		}
 
 
-        if(params.isMeasuring || Potree.settings.displayMode == 'showPanos'){
+        if(pickParams.isMeasuring || Potree.settings.displayMode == 'showPanos'){
             Potree.settings.pointDensity = density
             
             pointclouds.forEach(e=>{