xzw 3 lat temu
rodzic
commit
c2e38876b3
3 zmienionych plików z 240 dodań i 92 usunięć
  1. 218 83
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 21 8
      src/sdk/cover/index.js

+ 218 - 83
public/lib/potree/potree.js

@@ -597,6 +597,10 @@
             siteModeOnlyMapVisi:12,//只能mapViewer可见
             siteModelMapUnvisi:13,//只有mapViewer不可见
             siteModeSideVisi:14,//只有侧面可见
+            
+            
+            layer1: 10,// 备用1
+            layer2: 15,// 备用2
         },
         
         renderOrders:{ //会影响到绘制、pick时的顺序。
@@ -63878,11 +63882,11 @@ void main() {
                 
                 if(prop.isFirstLoad){
                     modelEditing = model;
-                    MergeEditor.setModelBtmHeight(model, 0); //默认离地高度为0
+                    //MergeEditor.setModelBtmHeight(model, 0) //默认离地高度为0
                     viewer.addEventListener('global_mousemove', moveModel); 
                     viewer.addEventListener('global_click', confirmPos, 3);
                 }else {
-                    MergeEditor.setModelBtmHeight(model, prop.bottom || 0); //默认离地高度为0
+                    //MergeEditor.setModelBtmHeight(model, prop.bottom || 0) //默认离地高度为0
                     modelEditing = null;
                 }
                 
@@ -63892,35 +63896,61 @@ void main() {
                 }
                 
                 
-                {//transform
+                /* {//transform --------维持离地高度和中心点的版本
+                    let updateBound = ()=>{ 
+                        model.updateMatrixWorld()
+                        viewer.updateModelBound() 
+                    }  
+                    let maintainBtmZAndCenter = ()=>{ 
+                        MergeEditor.maintainBoundXY(model)
+                        MergeEditor.setModelBtmHeight(model) 
+                        updateBound()
+                        model.dispatchEvent('transformChanged')  
+                    }
+                    model.addEventListener('position_changed', ()=>{
+                        updateBound()
+                        MergeEditor.getBoundCenter(model);//更新boundcenter
+                        MergeEditor.computeBtmHeight(model)
+                        if(prop.bottomRange && (model.btmHeight > prop.bottomRange.max || model.btmHeight < prop.bottomRange.min)){
+                            model.btmHeight = THREE.Math.clamp(model.btmHeight, prop.bottomRange.min, prop.bottomRange.max)
+                            MergeEditor.setModelBtmHeight(model)
+                            updateBound()
+                        }  
+                        model.dispatchEvent('transformChanged') 
+                    })
+                    model.addEventListener("rotation_changed", maintainBtmZAndCenter )
+                    model.addEventListener("scale_changed", maintainBtmZAndCenter )
+                    model.addEventListener('transformChanged', ()=>{
+                        MergeEditor.modelTransformCallback(model)
+                    })
+                    //离地高度只是boundingbox在transform后的最低点的高度,而非模型transform后的最低点的高度,所以旋转过后看起来不太准确
+                } */
+                
+                {//transform --------维持中心点的版本
                     let updateBound = ()=>{ 
                         model.updateMatrixWorld();
                         viewer.updateModelBound(); 
                     };  
-                    let maintainBtmZAndCenter = ()=>{ 
-                        MergeEditor.maintainBoundXY(model);
-                        MergeEditor.setModelBtmHeight(model); 
+                    let maintainCenter = ()=>{ 
+                        //MergeEditor.maintainBoundXY(model) 
+                        MergeEditor.maintainBoundCenter(model); 
                         updateBound();
                         model.dispatchEvent('transformChanged');  
                     };
                     model.addEventListener('position_changed', ()=>{
                         updateBound();
                         MergeEditor.getBoundCenter(model);//更新boundcenter
-                        MergeEditor.computeBtmHeight(model);
-                        if(prop.bottomRange && (model.btmHeight > prop.bottomRange.max || model.btmHeight < prop.bottomRange.min)){
-                            model.btmHeight = MathUtils.clamp(model.btmHeight, prop.bottomRange.min, prop.bottomRange.max);
-                            MergeEditor.setModelBtmHeight(model);
-                            updateBound();
-                        }  
+                
                         model.dispatchEvent('transformChanged'); 
                     });
-                    model.addEventListener("rotation_changed", maintainBtmZAndCenter );
-                    model.addEventListener("scale_changed", maintainBtmZAndCenter );
+                    model.addEventListener("rotation_changed", maintainCenter );
+                    model.addEventListener("scale_changed", maintainCenter );
                     model.addEventListener('transformChanged', ()=>{
                         MergeEditor.modelTransformCallback(model);
                     });
                 
-                }
+                } 
+                
                 model.updateMatrixWorld();
                 viewer.updateModelBound();
                 
@@ -86091,7 +86121,7 @@ void main() {
                 ['sceneObjects','mapObjects','measure',  'transformationTool', 'model'],
                 this.hoverViewport && this.hoverViewport.extraEnableLayers
             );
-            
+            //this.hoverViewport.beforeRender && this.hoverViewport.beforeRender()
             
             viewer.dispatchEvent( {type:'raycaster',  viewport: this.hoverViewport});//add
     		let intersections = raycaster.intersectObjects(interactables.filter(o => o.visible), true); //原本是false 检测不到children
@@ -115664,11 +115694,14 @@ ENDSEC
 
     	Object3D.call( this );
 
+        
     	this.visible = false;
     	this.domElement = domElement;
 
     	var _gizmo = new TransformControlsGizmo(options);
     	this.add( _gizmo );
+        this._gizmo = _gizmo;
+
 
     	var _plane = new TransformControlsPlane(options);
     	this.add( _plane );
@@ -115832,6 +115865,22 @@ ENDSEC
     		return this;
 
     	};
+        
+        
+        /* this.hideAxis = function ( mode, axis=[] ) {//xzw add 设置不可见的axis
+
+            var handles = [];
+    		handles = handles.concat( this._gizmo.picker[ mode ].children );
+    		handles = handles.concat( this._gizmo.gizmo[ mode ].children );
+    		handles = handles.concat( this._gizmo.helper[ mode ].children );
+            handles.forEach(e=>e.visible = false)
+            axis.forEach(name=>{
+                handles.filter(handle =>!handle.name.includes(name))
+            })
+            handles.forEach(e=>e.visible = true)
+    	}; */
+
+
 
     	// Defined getter, setter and store for a property
     	function defineProperty( propName, defaultValue ) {
@@ -115889,7 +115938,15 @@ ENDSEC
     		this.camera.updateMatrixWorld();
     		this.camera.matrixWorld.decompose( cameraPosition, cameraQuaternion, cameraScale );
 
-    		eye.copy( cameraPosition ).sub( worldPosition ).normalize();
+
+            
+            
+            if(this.camera.type == "OrthographicCamera"){//xzw add
+                eye.copy( this.view.direction);
+            }else {
+                eye.copy( cameraPosition ).sub( worldPosition ).normalize();
+            }
+    		
 
     		Object3D.prototype.updateMatrixWorld.call( this );
 
@@ -115908,7 +115965,11 @@ ENDSEC
                 //ray.setFromCamera( pointer, this.camera ); //这句会在floorplan模式get不到intersect
                 let {origin, direction} = viewer.inputHandler.getMouseDirection();  
                 ray.set(origin,  direction);
-               
+                
+                viewer.setCameraLayers(ray,   //设置能识别到的layers 
+                    ['sceneObjects','mapObjects','measure',  'transformationTool', 'model'],
+                    viewer.inputHandler.hoverViewport && viewer.inputHandler.hoverViewport.extraEnableLayers
+                );
 
 
                 var intersect = ray.intersectObjects( _gizmo.picker[ this.mode ].children, true )[ 0 ] || false;
@@ -115937,6 +115998,14 @@ ENDSEC
     			//ray.setFromCamera( pointer, this.camera ); //这句会在floorplan模式get不到intersect
     			let {origin, direction} = viewer.inputHandler.getMouseDirection();  
                 ray.set(origin,  direction);
+                
+                viewer.setCameraLayers(ray,   //设置能识别到的layers 
+                    ['sceneObjects','mapObjects','measure',  'transformationTool', 'model'],
+                    viewer.inputHandler.hoverViewport && viewer.inputHandler.hoverViewport.extraEnableLayers
+                );
+                
+                
+                
     			var planeIntersect = ray.intersectObjects( [ _plane ], true )[ 0 ] || false;
 
     			if ( planeIntersect ) {
@@ -116015,6 +116084,13 @@ ENDSEC
             let {origin, direction} = viewer.inputHandler.getMouseDirection();  
     		ray.set(origin,  direction);
 
+            viewer.setCameraLayers(ray,   //设置能识别到的layers 
+                ['sceneObjects','mapObjects','measure',  'transformationTool', 'model'],
+                viewer.inputHandler.hoverViewport && viewer.inputHandler.hoverViewport.extraEnableLayers
+            );
+
+
+
     		var planeIntersect = ray.intersectObjects( [ _plane ], true )[ 0 ] || false;
 
     		if ( planeIntersect === false ) return;
@@ -116450,7 +116526,7 @@ ENDSEC
     	this.type = 'TransformControlsGizmo';
 
     	// shared materials
-
+        this.hideAxis = {};
     	var gizmoMaterial = new MeshBasicMaterial( {
     		depthTest: false,
     		depthWrite: false,
@@ -116472,7 +116548,7 @@ ENDSEC
     	matInvisible.opacity = 0.15;
          
     	var matHelper = gizmoMaterial.clone();
-    	matHelper.opacity = 0.33;
+    	matHelper.opacity = 0.1;
 
     	var matRed = gizmoMaterial.clone();
     	matRed.color.set( 0xff0000 );
@@ -116905,24 +116981,26 @@ ENDSEC
     		for ( var i = 0; i < handles.length; i ++ ) {
 
     			var handle = handles[ i ];
+                //add
+                if(this.hideAxis[this.mode] && this.hideAxis[this.mode].some(e=>handle.name.includes(e.toUpperCase()))){
+                    viewer.updateVisible(handle, 'hidden', false);
+                    continue 
+                }   
+                
                 let visible = true;
     			// hide aligned to camera
-
-    			 
+                
                 
     			handle.rotation.set( 0, 0, 0 );
     			handle.position.copy( this.worldPosition );
 
-    			var eyeDistance = this.worldPosition.distanceTo( this.cameraPosition );
-    			
-    			//俯视图的透视和距离无关,因此在两种相机切换切换时大小过渡比较困难
-    			/* if(player.mode == "transitioning" && (player.modeTran.split('-')[0] == "floorplan" || player.modeTran.split('-')[1] == "floorplan")){
-     				eyeDistance = Math.min(eyeDistance, 6.5)//从一开始很小的距离过渡到俯视图50的高度,会变得很大。
-     			}else if(player.mode == "floorplan"){
-    				var flcamera = player.cameraControls.cameras.floorplan; 
-    				eyeDistance = (flcamera.right - flcamera.left ) / flcamera.aspect ;
-     			}
-    			 */
+
+                if(this.camera.type == "OrthographicCamera"){
+                    var eyeDistance = 800 / this.camera.zoom;
+                }else {
+                    var eyeDistance = this.worldPosition.distanceTo( this.cameraPosition );
+                }
+     
     			
     			handle.scale.set( 1, 1, 1 ).multiplyScalar( eyeDistance * this.size / 7 );
 
@@ -117505,7 +117583,10 @@ ENDSEC
     const texLoader$8 = new TextureLoader(); 
           texLoader$8.crossOrigin = "anonymous"; 
       
-
+    const edgeStrengths = {
+        pointcloud: 4,
+        glb: 100
+    };
     const viewportProps$1 = [{
         left:0,
         bottom:0,
@@ -117568,7 +117649,7 @@ ENDSEC
                 
                 this.transformControls = new TransformControls(viewer.mainViewport.camera, viewer.renderArea,{
                     
-                    dontHideWhenFaceCamera: true,
+                    //dontHideWhenFaceCamera: true,
                     /* scaleAxis: ["x", "y"],
                     //隐藏了z轴。虽然参数没用上
                     NoScaleZ: true //整体缩放时只缩放xy轴。 */ 
@@ -117577,6 +117658,28 @@ ENDSEC
                 this.transformControls.setSize(1.5);
                 viewer.scene.scene.add(this.transformControls);
                 
+                //右屏
+                this.transformControls2 = new TransformControls(viewer.mainViewport.camera, viewer.renderArea,{ 
+                }); 
+                this.transformControls.setSize(1.5);
+                viewer.scene.scene.add(this.transformControls2); 
+                viewer.setObjectLayers(this.transformControls2, 'layer2' );  
+                
+                let mouseDown = (e)=>{//暂时消失
+                    if(this.split && this.selected.isPointcloud){ 
+                        viewer.outlinePass.edgeStrength = 0;
+                    }
+                };
+                let mouseUp = (e)=>{
+                    if(this.split && this.selected.isPointcloud){ 
+                        viewer.outlinePass.edgeStrength = edgeStrengths.pointcloud;
+                    }
+                };
+                this.transformControls.addEventListener('mouseDown',mouseDown);
+                this.transformControls2.addEventListener('mouseDown',mouseDown);
+                this.transformControls.addEventListener('mouseUp',mouseUp);
+                this.transformControls2.addEventListener('mouseUp',mouseUp);
+                
                 
             }
             
@@ -117683,7 +117786,17 @@ ENDSEC
                 viewer.addEventListener('global_mousedown',  drag); 
                 viewer.addEventListener('global_drag', drag, 10);
                 viewer.addEventListener('global_mousemove', (e)=>{
-                    if(this.split &&   this.transformState && !e.drag && (e.hoverViewport.name == 'top' ||  this.transformState == 'translate')){
+                    if(this.split && this.transformState && !e.drag && (e.hoverViewport.name == 'top' ||  this.transformState == 'translate')){
+                        
+                        /* if(this.lastHoverViewport != e.hoverViewport){
+                            this.lastHoverViewport = e.hoverViewport
+                            this.transformControls.view = e.hoverViewport.view
+                            this.transformControls.camera = e.hoverViewport.camera
+                            this.transformControls.hideAxis( this.transformState, e.hoverViewport.name == 'top' ? [z] : [x,y]);
+                        } */
+                        
+                        
+                        
                         
                         let mouseover =  e.intersect.pointclouds.includes(this.selected) || e.intersect.allElements.some(e=>e.object == this.selected);
                         //let mouseover = (e.intersect.object || e.intersect.pointcloud) == this.selected
@@ -117699,8 +117812,9 @@ ENDSEC
                             }
                         }else {
                             this.clearTranCursor();
-                        } 
-                    }  
+                        }
+                        
+                    } 
                 });
                 
                 viewer.addEventListener('global_drop', (e)=>{
@@ -117747,6 +117861,19 @@ ENDSEC
             viewer.setControls(viewer.fpControls);  
             viewer.viewports.find(e=>e.name == 'right').rotateSide = true; 
             viewer.viewports.find(e=>e.name == 'top').alignment = true;
+           
+             
+            viewer.viewports[1].layersAdd('layer2'); 
+            viewer.viewports[0].layersAdd('layer1'); 
+            viewer.setObjectLayers(this.transformControls, 'layer1' ); 
+            this.transformControls.view = viewer.viewports[0].view;
+            this.transformControls.camera = viewer.viewports[0].camera;
+            this.transformControls._gizmo.hideAxis = {translate:['z'], rotate:['x','y','z'] };
+            this.transformControls2.view = viewer.viewports[1].view;
+            this.transformControls2.camera = viewer.viewports[1].camera;
+            this.transformControls2._gizmo.hideAxis = {translate:['x','y'], rotate:['x','y','z'] };
+            
+
             
         },
         
@@ -117760,6 +117887,13 @@ ENDSEC
                 this.showModelOutline(this.selected, true) 
                 this.selected.material.activeAttributeName = "rgba"  
             } */
+            this.transformControls.camera = viewer.viewports[0].camera;
+            this.transformControls.view = viewer.viewports[0].view; 
+            this.transformControls._gizmo.hideAxis = {};
+            viewer.setObjectLayers(this.transformControls, 'sceneObjects' );  //恢复
+            
+            
+             
         },
         
         rotateSideCamera(angle){
@@ -117827,9 +117961,9 @@ ENDSEC
                 this.showModelOutline(model);
                 
                 if(model.isPointcloud){
-                    viewer.outlinePass.edgeStrength = 4;
+                    viewer.outlinePass.edgeStrength = edgeStrengths.pointcloud;
                 }else {
-                    viewer.outlinePass.edgeStrength = 100;
+                    viewer.outlinePass.edgeStrength = edgeStrengths.glb;
                 }
                 //console.log('selectModel', model)
                 
@@ -117875,26 +118009,7 @@ ENDSEC
             }
         },
         
-        /* focusOn(object, duration = 400){  
-            let boundingBox = object.boundingBox.clone().applyMatrix4(object.matrixWorld)
-            let center = boundingBox.getCenter(new THREE.Vector3)
-            let size = boundingBox.getSize(new THREE.Vector3) 
-            let maxSize = size.length() //对角线长度
-            
-            if(object.isPointcloud){
-                maxSize /= 2
-            }
-            
-            let hfov = cameraLight.getHFOVForCamera(viewer.mainViewport.camera,true)
-            let minRadius = maxSize  / Math.tan(hfov/2)
-            //viewer.mainViewport.view.lookAt(center)
-            viewer.mainViewport.view.setView({  
-                position: center.clone().sub(viewer.mainViewport.view.direction.clone().multiplyScalar(minRadius)),
-                target: center,
-                duration 
-            })  //setView can cancel bump
-             
-        }, */
+        
         focusOn(objects, duration = 400, fitBound=true, dontLookUp){  
             if(!(objects instanceof Array)){
                 objects = [objects];
@@ -117926,9 +118041,18 @@ ENDSEC
                 
                 viewer.mainViewport.view.radius = viewer.mainViewport.camera.position.distanceTo(position);
                 //为了不改画面,不调节方向了,只能调调radius,一定程度将target靠近model
-            }
-               
-             
+            }  
+        },
+        
+        
+        moveBoundCenterTo(model,pos){ //使boundCenter在所要的位置 
+            let diff = new Vector3().subVectors(pos, model.boundCenter); 
+            model.position.add(diff); 
+        },
+        
+        getBoundCenter(model){
+            if(!model.boundCenter) model.boundCenter = new Vector3;
+            model.boundingBox.getCenter(model.boundCenter).applyMatrix4(model.matrixWorld); 
         },
         
         setModelBtmHeight(model, z ){  
@@ -117953,6 +118077,7 @@ ENDSEC
             model.btmHeight = center.z - size.z / 2; 
         },
         
+        
         maintainBoundXY(model){ //在旋转和缩放后,立即执行这个函数,使boundCenter保持原位
              
             model.updateMatrixWorld();
@@ -117962,23 +118087,21 @@ ENDSEC
             let diff = new Vector2$1().subVectors(center1,center2); 
             model.position.x += diff.x;
             model.position.y += diff.y;
-            /* model.updateMatrixWorld()
-            this.getBoundCenter(model)//再次更新,它需要和center1相同 */
             model.boundCenter.copy(center1);
-        },
+        }, 
+         
         
-        moveBoundCenterTo(model,pos){ //使boundCenter在所要的位置 
-            let diff = new Vector3().subVectors(pos, model.boundCenter); 
-            model.position.add(diff); 
-        },
         
-        getBoundCenter(model){
-            if(!model.boundCenter) model.boundCenter = new Vector3;
-            model.boundingBox.getCenter(model.boundCenter).applyMatrix4(model.matrixWorld); 
+        maintainBoundCenter(model){
+            model.updateMatrixWorld();
+            let center1 = model.boundCenter.clone();//还未更新的 
+            this.getBoundCenter(model);//更新
+            let center2 = model.boundCenter.clone();
+            let diff = new Vector3().subVectors(center1,center2); 
+            model.position.add(diff);
+            model.boundCenter.copy(center1);
         },
         
-        
-        
         modelTransformCallback(model){
             
             model.updateMatrixWorld(); 
@@ -125523,7 +125646,12 @@ ENDSEC
 
     	render: function (scenes, camera, viewports,  renderer, writeBuffer, readBuffer,  maskActive, renderFun ) {
             if(!(scenes instanceof Array))scenes = [scenes];
-    		if ( this.selectedObjects.length > 0 ) {
+            
+            if(this.edgeStrength == 0){
+                console.log('this.edgeStrength == 0');
+            }
+            
+    		if ( this.selectedObjects.length > 0 && this.edgeStrength > 0) {
                 
                 let render2 = (target, dontRenderRtEDL=true)=>{
                     if(renderFun){
@@ -125534,8 +125662,12 @@ ENDSEC
                         scenes.forEach(scene=>renderer.render( scene, camera)); 
                     }
                 };
-                viewports.forEach(e=>  e.beforeRender = ()=>{ 
-                    this.replaceDepthToViewZ( e.camera   );
+                viewports.forEach(e=>{ 
+                    e.oldBeforeRender = e.beforeRender;
+                    e.beforeRender = ()=>{ 
+                        e.oldBeforeRender && e.oldBeforeRender();
+                        this.replaceDepthToViewZ( e.camera );
+                    };
                 });
                 
     	   
@@ -125570,10 +125702,13 @@ ENDSEC
     			this.changeVisibilityOfSelectedObjects( true );
 
         
-                viewports.forEach(e=>  e.beforeRender = ()=>{ 
-                    // Update Texture Matrix for Depth compare
-                    this.updateTextureMatrix(e.camera);
-                    this.prepareMaskMaterial.uniforms[ "cameraNearFar" ].value = new Vector2$1( e.camera.near, e.camera.far );
+                viewports.forEach(e=>{
+                    e.beforeRender = ()=>{ 
+                        e.oldBeforeRender && e.oldBeforeRender();
+                        // Update Texture Matrix for Depth compare
+                        this.updateTextureMatrix(e.camera);
+                        this.prepareMaskMaterial.uniforms[ "cameraNearFar" ].value = new Vector2$1( e.camera.near, e.camera.far );
+                    };
                 });
 
 
@@ -125596,7 +125731,7 @@ ENDSEC
                 //renderer.render( scene, camera/* , this.renderTargetMaskBuffer, true */ );
                 render2(this.renderTargetMaskBuffer);
                 
-                viewports.forEach((e)=>{e.beforeRender = null;});  
+                viewports.forEach((e)=>{e.beforeRender = e.oldBeforeRender;});  
                 
     			this.changeVisibilityOfNonSelectedObjects( true , scenes);
                 
@@ -129046,7 +129181,7 @@ ENDSEC
          
     	render(params={}){//add params
     		if(Potree.measureTimings) performance.mark("render-start");
-            if(this.outlinePass.selectedObjects.length && !params.screenshot){  
+            if(this.outlinePass.selectedObjects.length && this.outlinePass.edgeStrength > 0 && !params.screenshot){  
                 this.composer.render(this.inputHandler.interactiveScenes.concat(this.scene.scene).concat(viewer.scene.scenePointCloud), null, this.viewports, this.renderDefault.bind(this));  
             }else {  
                 this.renderDefault(params);

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


+ 21 - 8
src/sdk/cover/index.js

@@ -650,8 +650,8 @@ export const enter = (dom, isLocal) => {
                      
                 },
                 changeBottom(z){
-                    model && MergeEditor.setModelBtmHeight(model,z)
-                    model.dispatchEvent('transformChanged') //改了position
+                    /* model && MergeEditor.setModelBtmHeight(model,z)
+                    model.dispatchEvent('transformChanged') //改了position */
                 },
                 changePosition(pos){//校准取消时执行
                     //if(MergeEditor.selected == model){
@@ -673,20 +673,26 @@ export const enter = (dom, isLocal) => {
                     if(model){
                         if(MergeEditor.split){//分屏校准
                             MergeEditor.setTransformState('rotate')
-                        }else{
-                            MergeEditor.transformControls.attach(model)
-                            MergeEditor.transformControls.mode = 'rotate'
+                            MergeEditor.transformControls2.attach(model)
+                            MergeEditor.transformControls2.mode = 'rotate'
                         } 
+                         
+                        
+                        MergeEditor.transformControls.attach(model)
+                        MergeEditor.transformControls.mode = 'rotate'
+                         
                     }
                 }, 
                 enterMoveMode(){
                     if(model){ 
                         if(MergeEditor.split){//分屏校准
                             MergeEditor.setTransformState('translate')
-                        }else{
-                            MergeEditor.transformControls.attach(model)
-                            MergeEditor.transformControls.mode = 'translate'
+                            MergeEditor.transformControls2.attach(model)
+                            MergeEditor.transformControls2.mode = 'translate'
                         } 
+                        MergeEditor.transformControls.attach(model)
+                        MergeEditor.transformControls.mode = 'translate'
+                         
                     }
                 },
                 leaveTransform(){
@@ -696,15 +702,20 @@ export const enter = (dom, isLocal) => {
                         MergeEditor.setTransformState(null)
                     }else{ 
                         MergeEditor.transformControls.detach()
+                        MergeEditor.transformControls2.detach()
                     }
                 },
                 
                 enterAlignment(){//开始校准
                     MergeEditor.enterSplit()
+                    
                     result.leaveTransform()
                     //console.log('enterAlignment',model.position, model.rotation)
                     let bus = new mitt()
                     
+                    /* MergeEditor.transformControls.attach(model)
+                    MergeEditor.transformControls.mode = 'translate' */
+                    
                     return { 
                         bus  
                     } 
@@ -712,6 +723,8 @@ export const enter = (dom, isLocal) => {
                 leaveAlignment(){
                     //console.log('leaveAlignment',model.position, model.rotation)
                     MergeEditor.leaveSplit() 
+                    
+                    MergeEditor.transformControls.detach()
                 },
                 
                 enterScaleSet(){//设置比例