xzw hace 7 meses
padre
commit
0e66df57cc

+ 19 - 14
examples/4dkk.html

@@ -21,14 +21,13 @@
 	<script src="../../libs/other/BinaryHeap.js"></script>
 	<script src="../../libs/tween/tween.min.js"></script>
 	<script src="../../libs/d3/d3.js"></script>
-	<script src="../../libs/proj4/proj4.js"></script> 
-	
-    
+	<script src="../../libs/proj4/proj4.js"></script>  
 	<script src="../../libs/openlayers3/ol.js"></script>
 	<script src="../../libs/i18next/i18next.js"></script>
 	<script src="../../libs/jstree/jstree.js"></script>
 	<script src="../../build/potree/potree.js"></script>
 	<script src="../../libs/plasio/js/laslaz.js"></script>
+    
 	
 	<!-- <script src="../../libs/stats.js/stats.js"></script> -->
 	<div class="potree_container" style="position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; ">
@@ -40,21 +39,27 @@
     <!-- <script src="https://webapi.amap.com/maps?v=2.0&key=4578048f6e03386759d5609401e738d3"></script> -->
 	<script type="module">
 
-	import * as THREE from "../libs/three.js/build/three.module.js";
-    import browser from '../src/custom/utils/browser.js' //这里必须加.js
-     
-        /*var number = window.location.href.substring(window.location.href.indexOf("=") + 1);
-        if (number.indexOf("&") != -1) {
-            number = number.substring(0, number.indexOf("&"));
-        }
-        if (number.indexOf("#") != -1) {
-            number = number.substring(0, number.indexOf("#"));
-        }*/ 
-        
+        import * as THREE from "../libs/three.js/build/three.module.js";
+        import browser from '../src/custom/utils/browser.js' //这里必须加.js
+        //import ThreeGlobe from 'http://esm.sh/three-globe';
+ 
         var number = browser.urlHasValue('m',true);
         console.log(number)
+        
+        
+        
         Potree.start(document.getElementById("potree_render_area"),null, number);
         
+        
+        
+        /*window.ThreeGlobe = ThreeGlobe
+        
+        const Globe = new ThreeGlobe().globeTileEngineUrl((x, y, l) => `https://tile.openstreetmap.org/${l}/${x}/${y}.png`);
+        viewer.scene.scene.add(Globe)
+        viewer.addEventListener('camera_changed',(e)=>{
+            Globe.setPointOfView(viewer.mainViewport.camera);
+        })
+        */
            
 		/*
         数据集校准 平移后

+ 3 - 2
src/custom/modules/mergeModel/MergeEditor.js

@@ -257,6 +257,7 @@ let MergeEditor = {
                             //if(this.selected.isPointcloud){ 
                                 viewer.outlinePass.edgeStrength = 0//暂时消失线
                             //} 
+                            this.history.beforeChange(this.selected)
                         }  
                     }
                          
@@ -332,7 +333,7 @@ let MergeEditor = {
             viewer.addEventListener('global_drop', (e)=>{
                 dragInfo = null
                 this.clearTranCursor()
-                  
+                this.history.afterChange(this.selected)  
                 //this.updateEdgeStrength()
                 viewer.outlinePass.edgeStrength = oriEdgeStrength  
                 
@@ -372,7 +373,7 @@ let MergeEditor = {
         if(this.selected) this.SplitScreen.focusCenter = this.selected.boundCenter //旋转中心。注意 boundCenter不能直接赋值,否则改变后focusCenter也要改
         else this.SplitScreen.focusCenter = null
         
-        this.SplitScreen.splitStart(viewportProps)
+        this.SplitScreen.splitStart(viewportProps, this.selected?.bound, this.selected?.boundCenter)
         
         this.beforeSplit = {
             pointDensity: Potree.settings.pointDensity,

+ 3 - 2
src/custom/utils/SplitScreen.js

@@ -14,7 +14,7 @@ class SplitScreen extends THREE.EventDispatcher{
         viewport.shiftTarget  // camera的位置project在targetPlane上的位置
         这两个参数的主要目的是为了getPosOutOfModel,以及rotateSideCamera时保持相对位置
     */
-    splitStart(cameraProps){ 
+    splitStart(cameraProps, bound = viewer.bound.boundingBox, center = viewer.bound.center  ){ 
         this.splited = true
         let viewports = []
       
@@ -53,9 +53,10 @@ class SplitScreen extends THREE.EventDispatcher{
         } 
         viewer.viewports = viewports;
         viewer.updateScreenSize({forceUpdateSize:true})
+        
         viewports.forEach(viewport=>{
             if(viewport.name == 'MainView')return
-            this.viewportFitBound(viewport, viewer.bound.boundingBox , viewer.bound.center , 0, viewport.fitMargin)
+            this.viewportFitBound(viewport, bound, center, 0, viewport.fitMargin)
         }) 
         return viewports
     } 

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

@@ -31,7 +31,7 @@ import {Renderer} from "../../PotreeRendererNew.js";
 import {EDLRenderer} from "../../viewer/EDLRendererNew.js";
 import {HQSplatRenderer} from "../../viewer/HQSplatRenderer.js";
 import {MapViewer} from "./map/MapViewer.js";     
-//import {MapLayer} from "./map/Map3D.js"     
+import {MapLayer} from "./map/Map3D.js"     
       
 import {NavigationCube} from '../../viewer/NavigationCube.js'
    
@@ -567,14 +567,14 @@ export class Viewer extends ViewerBase{
                     
                     
                 }
-                /* {//test
+                /*  {//test
                     this.map3d = new MapLayer(this,this.mainViewport)//new Map3D(this)
                     this.scene.scene.add(this.map3d.sceneGroup)
                     this.map3d.addEventListener('loadDone',()=>{
                         this.dispatchEvent('content_changed')
                     })
-                }
-                 */
+                } */
+                 
                 
                 this.inputHandler = new InputHandler(this, this.scene.scene);
                 this.inputHandler.containsMouse = true//初始化,使键盘事件在mainViewer有效