xzw 2 lat temu
rodzic
commit
5ebbf2d24a

Plik diff jest za duży
+ 14705 - 14037
public/static/lib/potree/potree.js


Plik diff jest za duży
+ 1 - 1
public/static/lib/potree/potree.js.map


BIN
public/static/lib/potree/resources/textures/navigation/Back.png


BIN
public/static/lib/potree/resources/textures/navigation/Bottom.png


BIN
public/static/lib/potree/resources/textures/navigation/Front.png


BIN
public/static/lib/potree/resources/textures/navigation/Left.png


BIN
public/static/lib/potree/resources/textures/navigation/Right.png


BIN
public/static/lib/potree/resources/textures/navigation/Top.png


Plik diff jest za duży
+ 1 - 1
server/test/SS-t-P1d6CwREny2/attach/sceneStore


+ 51 - 417
src/sdk/laser/core/enter.js

@@ -217,6 +217,12 @@ var enter = ({
         measure.addEventListener("highlight", (e) => {
             bus.emit("highlight", e.state);
         });
+        
+        measure.addEventListener("selected", (e) => {
+            bus.emit("selected", e.state);
+        });
+        
+        
         return {
             quit: () => {
                 Potree.Log("quit结束且删除: " + measure.id, {
@@ -396,146 +402,7 @@ var enter = ({
                     dataset_location */
                 };
             }, //全景模式一直获取会很卡
-
-            /* getPose(o = {}) {
-                //获取相对于第一个数据集的初始画面。(当数据集校准后,如果初始画面设置在被修改的数据集上,且该数据集非初始数据集的话,还是会偏移的)
-                var deferred = o.deferred || $.Deferred();
-                console.log("getPose,转换前:", viewer.mainViewport.view.clone());
-                if (viewer.mainViewport.view.isFlying()) {
-                    let f = () => {
-                        this.getPose(o);
-                        viewer.mainViewport.view.removeEventListener("flyingDone", f);
-                    };
-                    viewer.mainViewport.view.addEventListener("flyingDone", f); //once
-                    o.deferred = deferred;
-                    return deferred.promise();
-                }
-
-                var camera = viewer.scene.getActiveCamera();
-                var rotation = camera.rotation;
-                var pos_In_dataset = Potree.Utils.datasetPosTransform({
-                        toDataset: true,
-                        position: camera.position.clone(),
-                        datasetId: Potree.settings.originDatasetId,
-                    });
-                var rot_In_dataset = Potree.Utils.datasetRotTransform({
-                        toDataset: true,
-                        rotation,
-                        getRotation: true,
-                        datasetId: Potree.settings.originDatasetId,
-                    }); //拿第一个数据集
-
-                var view = viewer.scene.view.clone();
-
-                view.rotation = rot_In_dataset; //获取yaw pitch
-
-                var pose = {
-                    position: pos_In_dataset,
-                    yaw: view.yaw,
-                    pitch: view.pitch,
-                    displayMode: Potree.settings.displayMode,
-                };
-
-                if (viewer.images360.isAtPano()) {
-                    pose.panoSid = viewer.images360.currentPano.sid;
-                }
-
-                setTimeout(() => {
-                    deferred.resolve(pose);
-                    console.log("getPose resolve", pose);
-                }, 1);
-
-                return deferred.promise();
-            },
-
-            setPose(o = {}, duration = 0) {
-                //设置相机位置和朝向
-                var deferred = o.deferred || $.Deferred();
-                console.warn("setPose 初始画面", o);
-                var quaternion;
-                let view = viewer.scene.view.clone();
-
-                if (viewer.mainViewport.view.isFlying()) {
-                    let f = () => {
-                        this.setPose(o, duration);
-                        viewer.mainViewport.view.removeEventListener("flyingDone", f);
-                    };
-                    viewer.mainViewport.view.addEventListener("flyingDone", f); //once
-                    o.deferred = deferred;
-                    return deferred.promise();
-                }
-
-                var getQuaternion = () => {
-                    view.pitch = o.pitch;
-                    view.yaw = o.yaw; 
-                    quaternion = Potree.Utils.datasetRotTransform({
-                            fromDataset: true,
-                            rotation: view.rotation,
-                            getQuaternion: true,
-                            datasetId: Potree.settings.originDatasetId,
-                        }); //拿第一个数据集
-                };
-
-               
-
-                viewer.images360.cancelFlyToPano(); //防止旧的在之后继续执行
-                let pano;
-                if (o.panoSid != void 0) {
-                    //好像都不存这个
-                    pano = viewer.images360.panos.find((e) => e.sid == o.panoSid);
-                    if (pano == void 0)
-                        return deferred.reject(ui18n.t("scene.pose.unSid")).promise();
-                    getQuaternion();
-                    viewer.images360.flyToPano({
-                        pano,
-                        duration,
-                        quaternion
-                    }, () => {
-                        deferred.resolve();
-                    });
-                } else {
-                    if (Potree.settings.displayMode == "showPanos") {
-                        return deferred.reject(ui18n.t("scene.pose.unImage")).promise();
-                    }
-
-                    let position = Potree.Utils.datasetPosTransform({
-                            fromDataset: true,
-                            position: o.position,
-                            datasetId: Potree.settings.originDatasetId,
-                        });
-                    //view.position.copy(position)
-                    getQuaternion();
-
-                    pano = viewer.images360.panos.find((e) =>
-                            Potree.math.closeTo(e.position, position));
-
-                    if (pano) {
-                        //如果原来在某pano上最好也使currentPano为此pano,否则isAtPano会返回false
-                        viewer.images360.flyToPano({
-                            pano,
-                            duration,
-                            quaternion
-                        }, () => {
-                            deferred.resolve();
-                        });
-                    } else {
-                        viewer.scene.view.setView({
-                            position,
-                            quaternion,
-                            duration,
-                            callback: () => {
-                                //setTimeout(()=>{
-                                deferred.resolve();
-                                console.log("setPose resolve");
-                                //},1)
-                            },
-                        });
-                         
-                    }
-                }
-
-                return deferred.promise();
-            }, */
+ 
 
             getPose2() {
                 const camera = viewer.scene.getActiveCamera();
@@ -850,7 +717,49 @@ var enter = ({
                 }
                 //poschange后会调用这个,如果返回false会变为点云模式,且不会自动变回原先的模式
             },
-            ...parameter.sceneBus,
+            
+            
+            /* 
+            添加一个方法  单击场景某个位置 返回当前三维坐标,   调用时场景不能漫游与选择直到获取完成
+            sdk.scene.trackScenePos()
+            返回
+            {
+              promise: Promise<Pos3D>,   //获取的promise, 获取到了返回三维坐标,没获取到返回null
+              quit: function()  //取消获取 
+            }志彬5月15日 14:46 */
+  
+            trackScenePos(){
+                let deferred = $.Deferred();
+                let quit = ()=>{ //取消获取 
+                    viewer.removeEventListener('global_click',gotIntersect)
+                    Potree.settings.unableNavigate = false 
+                    viewer.controls.setEnable(true) 
+                }
+                
+                let gotIntersect = (e)=>{
+                    if(e.intersect){ 
+                        console.log('quit', e.intersect.location)
+                        quit()
+                        deferred.resolve(e.intersect.location)
+                    } 
+                }
+                
+                viewer.addEventListener('global_click',gotIntersect) 
+                Potree.settings.unableNavigate = true
+                viewer.controls.setEnable(false)
+                
+                return {
+                    promise: deferred.promise() ,   //获取的promise, 获取到了返回三维坐标,没获取到返回null
+                    quit 
+                }
+                
+            },
+            
+            
+            
+            
+            ...parameter.sceneBus, 
+            
         },
 
          
@@ -976,179 +885,7 @@ var enter = ({
 
             return pos;
         },
-
-        
-         
-        /*
-
-        createNavigation() {
-            let RouteGuider = viewer.modules.RouteGuider;
-            let routeStart,
-            routeEnd; //这和RouteGuider中的不一定一致,因为返回数据后会修改起点和终点
-            const bus = mitt();
-            let generateDeferred;
-            RouteGuider.bus = bus;
-
-            bus.on("gotResult", (e) => {
-                //发送获得的结果
-                generateDeferred.resolve(e);
-                generateDeferred = null;
-            });
-
-            //this.bus.emit('gotResult', {dis:this.routeLength})
-
-            return {
-                bus,
-                setStartPoint: function (pos, dealZ, datasetId) {
-                    if (routeStart && pos && routeStart.equals(pos))
-                        return; //在删除其中一个后重新设置,另一个也会重新执行此函数,直接返回。
-                    routeStart = pos && new THREE.Vector3().copy(pos);
-                    RouteGuider.setRouteStart(routeStart, dealZ, datasetId);
-                },
-                setEndPoint: function (pos, dealZ, datasetId) {
-                    if (routeEnd && pos && routeEnd.equals(pos))
-                        return;
-                    routeEnd = pos && new THREE.Vector3().copy(pos);
-                    RouteGuider.setRouteEnd(routeEnd, dealZ, datasetId);
-                },
-
-                generate: function () {
-                    generateDeferred = $.Deferred();
-                    return generateDeferred.promise();
  
-                },
-                destroy: function () {
-                    //点击删除起点或终点时执行destroy。 (在退出时会自动删除起点和终点)
-                    RouteGuider.clearRoute(); // 隐藏路线
-                },
-            };
-        },
-
-         enterAlignment() {
-            let Alignment = viewer.modules.Alignment;
-            Alignment.enter();
-
-            //let selectedDatasets = []
-            var applyToPointcloud = (fun, value) => {
-                //var selectedDatasets = viewer.scene.pointclouds.filter(e => Potree.Utils.getObjVisiByReason(e, 'datasetSelection')) //$('#alignment li[name="selectPointCloud"] input:checked' )
-                 
-                Alignment.selectedClouds.forEach((pointcloud) => {
-                    fun(pointcloud, value);
-                });
-            };
-            let bus = mitt();
-            let changed = false;
-
-            Alignment.bus.removeEventListeners("forbitMoveOriginDataset"); //移除旧的
-            Alignment.bus.addEventListener("forbitMoveOriginDataset", () => {
-                bus.emit("moveInitialDataset");
-            });
-            Alignment.changeCallBack = () => {
-                bus.emit("changed");
-                changed = true;
-            };
-
-            return {
-                bus,
-                //全屏漫游视图
-                fullRoamView() {
-                    Alignment.SplitScreen.focusOnViewport("MainView");
-                },
-                // 全屏顶视图
-                fullTopView() {
-                    Alignment.SplitScreen.focusOnViewport("mapViewport");
-                },
-                //
-                fullLeftSideView() {
-                    Alignment.SplitScreen.focusOnViewport("back");
-                },
-                //
-                fullRightSideView() {
-                    Alignment.SplitScreen.focusOnViewport("right");
-                },
-                // 退出全屏
-                quitFull() {
-                    Alignment.SplitScreen.unfocusViewport();
-                },
-                enableTopMap(enable) {
-                    Alignment.SplitScreen.enableMap(enable);
-                },
-                enableTopFloorPan(enable) {
-                    Alignment.SplitScreen.enableFloorplan(enable);
-                },
-
-                clear() {
-                    //退出
-                    Alignment.leave();
-                },
-                //切换操作  'translate'|'rotate'
-                switchHandle: Alignment.switchHandle.bind(Alignment),
-
-                rotate(deg) {
-                    //逆时针是正数
-                    applyToPointcloud(Alignment.rotate, deg);
-                },
-
-                translate(str) {
-                    //str: '+x''-x'等
-                    const vectors = {
-                        "+x": new THREE.Vector3(1, 0, 0),
-                        "-x": new THREE.Vector3(-1, 0, 0),
-                        "+y": new THREE.Vector3(0, 1, 0),
-                        "-y": new THREE.Vector3(0, -1, 0),
-                        "+z": new THREE.Vector3(0, 0, 1),
-                        "-z": new THREE.Vector3(0, 0, -1),
-                    };
-                    var moveVec = vectors[str];
-                    applyToPointcloud(Alignment.translate, moveVec);
-                },
-
-                selectDatasets(datasets) {
-                    //selectedDatasets = datasets
-                    Alignment.selectedClouds = datasets.map((e) =>  viewer.scene.pointclouds.find((p) => p.dataset_id == e.id));
-                },
-                focusOnDataset(id) {
-                    let pointcloud = viewer.scene.pointclouds.find(
-                            (p) => p.dataset_id == id);
-                    Alignment.SplitScreen.focusOnPointCloud(pointcloud);
-                },
-
-                save() {
-                    let deferred = $.Deferred();
-
-                    if (changed) {
-                        let {
-                            data,
-                            callback
-                        } = Alignment.save();
-
-                        axios
-                        .put(`/laser/dataset/${Potree.settings.number}/calibration`, data)
-                        .then((e) => {
-                            //成功后:
-                            //if (e.code == 200) {
-                            callback();
-                            if (lastSiteModelData) {
-                                sdk.setSiteModelInfo(lastSiteModelData); // 空间模型的点也要变化
-                                sdk.refreshFloorPan();
-                            }
-
-                            bus.emit("saveSuccess"); //需要修改所有热点position 且更新测量线数据
-                             
-                            deferred.resolve(1);
-                        });
-                    } else {
-                        deferred.resolve(ui18n.t("sys.unUpdate"));
-                        bus.emit("saveSuccess");
-                    }  
-
-                    return deferred.promise();
-                },
-            };
-        },
-        */
-   
-   
         enterMeasurement() {
             //进入测量模块
             viewer.setLimitFar(false); 
@@ -1167,110 +904,7 @@ var enter = ({
  
  
  
- 
-        enterEditCrop() {
-            //实时剪裁编辑模块
-            const bus = mitt();
-            let clipping = viewer.modules.clipping;
-            let addingBox; //正在添加的box
-
-            if (cropArgs) {
-                //加载剪裁数据
-                clipping.loadFromData(cropArgs);
-                viewer.scene.volumes.forEach((box) =>
-                    Potree.Utils.updateVisible(box, "hidden", false));
-            }
-            clipping.enter();
-
-            let volumeBind = (volumeBox) => {
-                volumeBox.addEventListener("select", () => {
-                    bus.emit("selectShape", {
-                        EditCrop,
-                        delete () {
-                            viewer.scene.removeVolume(volumeBox);
-                        },
-                    });
-                });
-                volumeBox.addEventListener("deselect", () => {
-                    bus.emit("unSelectShape", {
-                        EditCrop
-                    });
-                });
-                volumeBox.addEventListener("createFinish", (e) => {
-                    //确定好放置位置
-                    if (addingBox == volumeBox) {
-                        bus.emit("cancelExclude"); //停止
-                        bus.emit("cancelIntersect"); //停止
-                        addingBox = null;
-                    }
-                });
-            };
-            {
-                //初始化加载的volumeBox
-                viewer.scene.volumes.forEach((v) => {
-                    volumeBind(v);
-                });
-                addingBox = null;
-            }
-            viewer.volumeTool.addEventListener(
-                "start_inserting_volume",
-                (e) => {
-                addingBox = e.volume;
-            },
-                10);
-
-            let cancel = (volume) => {
-                //volume代表指定的
-                if (!volume || volume.isNew)
-                    viewer.dispatchEvent("cancel_insertions"); //停止当前的添加
-            };
-
-            let EditCrop = {
-                bus,
-                excludeMode() {
-                    let volumeBox = viewer.volumeTool.startInsertion({
-                            clipTask: Potree.ClipTask.SHOW_OUTSIDE,
-                        }); //注:没加完前不要clip效果
-                    volumeBind(volumeBox);
-                    return cancel.bind(this, volumeBox);
-                },
-                intersectMode() {
-                    let volumeBox = viewer.volumeTool.startInsertion({
-                            clipTask: Potree.ClipTask.SHOW_INSIDE,
-                        });
-                    volumeBind(volumeBox);
-                    return cancel.bind(this, volumeBox);
-                },
-                moveMode() {
-                    clipping.setTranMode("translation");
-                },
-                rotateMode() {
-                    clipping.setTranMode("rotation");
-                },
-                scaleMode() {
-                    clipping.setTranMode("scale");
-                },
-                clearAll() {
-                    cancel();
-                    viewer.scene.volumes
-                    .slice(0)
-                    .forEach((e) => viewer.scene.removeVolume(e));
-                },
-                save() {
-                    let data = clipping.saveClipData();
-                    return data;
-                },
-
-                calc() {
-                    return clipping.getCalcData();
-                },
-
-                switchViewMode(mode) {
-                    clipping.switchView(mode == "top" ? "top" : "mainView");
-                },
-            };
-            return EditCrop;
-        },
+        
  
     };
     Potree.sdk = sdk;