xzw 3 anni fa
parent
commit
647ef5871f
3 ha cambiato i file con 36 aggiunte e 24 eliminazioni
  1. 16 18
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 19 5
      src/sdk/cover/index.js

+ 16 - 18
public/lib/potree/potree.js

@@ -63766,7 +63766,7 @@ void main() {
              modelEditing.updateMatrixWorld()   
             let boundCenter = modelEditing.boundingBox.getCenter(new THREE.Vector3).applyMatrix4(modelEditing.matrixWorld);
              */
-            MergeEditor.moveBoundCenterTo(new Vector2$1(x,y));  //使模型中心在鼠标所在位置
+            MergeEditor.moveBoundCenter(new Vector2$1(x,y, model.boundCenter.z));  //使模型中心的xy在鼠标所在位置
             
             
             model.dispatchEvent("position_changed");
@@ -63814,7 +63814,7 @@ void main() {
                         updateBound();
                     };
                     model.addEventListener('position_changed', ()=>{
-                        MergeEditor.getBoundCenterXY(model);//更新boundcenter
+                        MergeEditor.getBoundCenter(model);//更新boundcenter
                         updateBound();
                     }); 
                     model.addEventListener("orientation_changed", maintainBtmZAndCenter );
@@ -63825,7 +63825,7 @@ void main() {
                 model.updateMatrixWorld();
                 viewer.updateModelBound();
                 
-                MergeEditor.getBoundCenterXY(model); //初始化
+                MergeEditor.getBoundCenter(model); //初始化
                 
                 done(model);
             };
@@ -103278,8 +103278,8 @@ ENDSEC
     			let panDistance = progression * view.radius * 3; */
                 let camera = this.scene.getActiveCamera();
                 let panDistance = 2 * view.radius * Math.tan(MathUtils.degToRad(camera.fov / 2));//参照4dkk。 平移target(也就是平移镜头位置),但还是难以保证跟手(navvis也不一定跟手,但是很奇怪在居中时中心点居然是跟手的,可能计算方式不同)
+                //计算了下确实是这么算的。 平移pivot。 
                 
-
     			let px = -this.panDelta.x * panDistance;
     			let py = this.panDelta.y * panDistance;
 
@@ -114959,11 +114959,11 @@ ENDSEC
         init(){
             
             {
-                let ground = this.ground = new InfiniteGridHelper(1, 1000, new Color('#fff'), 1000, 0.2, 0.3);
+                let ground = this.ground = new InfiniteGridHelper(1, 10000, new Color('#fff'), 10000, 0.2, 0.3);
                 viewer.scene.scene.add(ground); 
                 //再加两条线否则在正侧边看不到
-                let line1 = LineDraw.createLine([new Vector3(-1000, 0, 0),new Vector3(1000, 0, 0) ], {color:'#666'});
-                let line2 = LineDraw.createLine([new Vector3(0, -1000, 0),new Vector3(0, 1000, 0) ], {color:'#666'});
+                let line1 = LineDraw.createLine([new Vector3(-10000, 0, 0),new Vector3(10000, 0, 0) ], {color:'#666'});
+                let line2 = LineDraw.createLine([new Vector3(0, -10000, 0),new Vector3(0, 10000, 0) ], {color:'#666'});
                 ground.renderOrder = line1.renderOrder + 1;
                 ground.add(line1);
                 ground.add(line2);
@@ -115105,26 +115105,24 @@ ENDSEC
         maintainBoundXY(model){ //在旋转和缩放后,立即执行这个函数,使boundCenter保持原位
              
             model.updateMatrixWorld();
-            let center1 = model.boundCenterXY.clone();//还未更新的 
-            this.getBoundCenterXY(model);//更新
-            let center2 = model.boundCenterXY.clone();
+            let center1 = model.boundCenter.clone();//还未更新的 
+            this.getBoundCenter(model);//更新
+            let center2 = model.boundCenter.clone();
             let diff = new Vector2$1().subVectors(center1,center2); 
             model.position.x += diff.x;
             model.position.y += diff.y;
             /* model.updateMatrixWorld()
             this.getBoundCenterXY(model)//再次更新,它需要和center1相同 */
-            model.boundCenterXY = center1;
+            model.boundCenter = center1;
         },
         
-        moveBoundCenterTo(model,pos){ //水平移动,使boundCenter在所要的位置
-            let diff = new Vector2$1().subVectors(pos, model.boundCenterXY); 
-            model.position.x += diff.x;
-            model.position.y += diff.y; 
+        moveBoundCenterTo(model,pos){ //使boundCenter在所要的位置 
+            let diff = new Vector3().subVectors(pos, model.boundCenter); 
+            model.position.add(diff); 
         },
         
-        getBoundCenterXY(model){
-            let boundCenter = model.boundingBox.getCenter(new Vector3).applyMatrix4(model.matrixWorld);
-            model.boundCenterXY = new Vector2$1().copy(boundCenter);
+        getBoundCenter(model){
+            model.boundCenter = model.boundingBox.getCenter(new Vector3).applyMatrix4(model.matrixWorld);
         }
         
     };

File diff suppressed because it is too large
+ 1 - 1
public/lib/potree/potree.js.map


+ 19 - 5
src/sdk/cover/index.js

@@ -12,9 +12,21 @@ export const enter = (dom) => {
     
     let {THREE} = Potree.mergeEditStart(dom)
     let MergeEditor = viewer.modules.MergeEditor
+    let sceneBus = mitt()
     
+    viewer.addEventListener('camera_changed', e => {
+        var camera = e.viewport.camera
+        var pos = camera.position
+        if (e.viewport.name == 'MainView') {
+            sceneBus.emit('cameraChange', { x: pos.x, y: pos.y, z: pos.z, rotate: camera.rotation })
+        } 
+    })
+    
+    
+     
   
     let sdk = {
+        sceneBus,
         getPositionByScreen(pos2d, mustModelId ){//通过屏幕坐标获取真实坐标 . mustModelId: 如果指定了模型,modelId必须为mustModelId才有效
             let worldPos, localPos, modelId,  intersect
             let Handler = viewer.inputHandler
@@ -96,7 +108,9 @@ export const enter = (dom) => {
         comeTo(o = {}) {
             //飞到某个点   
             let deferred = $.Deferred()
-             
+            if(o.modelId){
+                o.position = Potree.Utils.datasetPosTransform({ fromDataset: true, datasetId: o.modelId, position:o.position})
+            }
             viewer.scene.view.setView($.extend({},o, {
                 duration: o.dur,
                 callback:()=>{
@@ -251,14 +265,14 @@ export const enter = (dom) => {
             
             
             let editor = viewer.modules.CamAniEditor
-            let posTran = function (position, target) {
+            /* let posTran = function (position, target) {
                 position = Potree.Utils.datasetPosTransform({ fromDataset: true, position: position, datasetId: Potree.settings.originDatasetId })
                 target = Potree.Utils.datasetPosTransform({ fromDataset: true, position: target, datasetId: Potree.settings.originDatasetId })
                 return { position, target }
-            }
+            } */
             if (data) {
                 data.points.forEach(e => {
-                    let { position, target } = posTran(e.position, e.target)
+                    //let { position, target } = posTran(e.position, e.target)
                     e.position = position
                     e.target = target
                 })
@@ -351,7 +365,7 @@ export const enter = (dom) => {
                 },
                 changeSelect(state){
                     if(model){
-                        MergeEditor.selectModel(model, state, false, true)
+                        MergeEditor.selectModel(model, state, true, true)
                         if(state && viewer.inputHandler.selection[0]){
                             viewer.transformObject(model); //交换
                         }